Changelog
All notable changes to this project will be documented in this file.
[1.25.1] - 2026-06-16
Fixed
- Local LLM guide: corrected Gemma model IDs to
gemma4:26b/gemma4:12b(were incorrectly usinggemma3tags) - Local LLM guide: removed outdated Deepseek R1 reasoning recommendation
[1.25.0] - 2026-06-16
Added
- New MDN MCP Server guide: explains Mozilla's official MCP server for live browser compatibility data and MDN documentation, with setup instructions for Claude Code, VS Code, Cursor, Zed, and Claude Desktop
- Contextual MDN MCP server references added to the Semantic HTML, Modern CSS Features, Web Performance, and DOM guides so readers can check browser support without leaving their editor
Fixed
- Removed stray double dashes in docs content
[1.24.0] - 2026-06-16
Added
- E-Mail guide: new "Properties-file template + StringSubstitutor" pattern, including loading templates from the JCR, the
Properties.loadISO-8859-1/UTF-8 gotcha, and combining a metadata properties file with a separate.htmlbody that carries placeholders - E-Mail guide: new "Sending to AEM Users and Groups" section covering
Authorizableaddress resolution, group expansion, and the per-recipient send loop - E-Mail guide: config-driven, reusable workflow step parameterized via
PROCESS_ARGS, plus a note on triggering e-mails from group-membership changes
[1.23.1] - 2026-06-16
Fixed
- E-Mail guide: corrected the HTL-rendered template example to use the Sling request
BuildersAPI instead of the deprecatedRequestResponseFactoryand non-existent request/response wrappers - E-Mail guide: added the missing
EmailExceptionimport, aligned the template path with the/appsrecommendation, repaired the Advanced Networking table, and normalized dashes and spelling
[1.23.0] - 2026-06-16
Added
- E-Mail guide: new step-by-step section on managing HTML e-mail templates with placeholders - where to store templates (
ui.apps,ui.content, or bundle resources), theMailTemplateheader/placeholder format, deployment, rendering, and local testing
Fixed
- Corrected the
MailTemplateusage in the e-mail templating examples (theMap-basedgetEmailsignature) and completed the reusableEmailService.sendTemplatedimplementation
[1.22.0] - 2026-06-16
Added
- New Decoration Tag (cq:htmlTag) page: explains the AEM component decoration wrapper, the
_cq_htmlTagnode structure, controlling the tag name and CSS classes, overriding classes inherited from a supertype, and per-include decoration overrides
Fixed
- Broken changelog links to the Simplified Index Management and Search & Indexing pages now use absolute routes
[1.21.0] - 2026-06-15
Added
- New Simplified Index Management page: covers diff-based custom index definitions,
diff.jsondeltas, and how to let the platform merge and version indexes without copying full OOTB definitions - Cross-reference and tip callout in Search & Indexing pointing to Simplified Index Management
Changed
- Bumped React to 19.2.7 and
@types/reactto 19.2.17
[1.20.1] - 2026-06-15
Fixed
- Groovy Console: the activate/deactivate example now matches on the Boolean
hideInNavproperty instead of the string'true', so it actually selects hidden pages - Groovy Console: the CSV export reads
jcr:title/cq:templatefrom each page'sjcr:contentnode rather than selecting unsupported relative properties in JCR-SQL2, so the exported columns are no longer empty - Groovy Console: the orphaned-component scan now resolves
sling:resourceTypevia the Sling search paths, handling absolute resource types correctly
Changed
- Groovy Console: the baseline SQL2 template now saves per batch (matching the "Batch your saves" guidance) to avoid
OutOfMemoryErroron large datasets - Groovy Console: removed unused imports and dead code from examples, corrected the "find pages by template" description, and clarified that the DAM metadata update processes direct children only
- Groovy Console: bumped the recommended Orbinson dependency to 19.1.0
[1.20.0] - 2026-06-05
Added
- Eight new AI section pages for product and operations topics, with cross-links and glossary entries:
- Cost, Latency & Model Routing - token economics, model tiers, routing, and caching
- Structured Outputs - JSON schemas, validation, and repair loops
- AI in Products - UX patterns, streaming, when not to use AI, graceful degradation
- Privacy & Data Handling - PII, logging, residency, and minimization
- Project Memory & Rules - AGENTS.md, CLAUDE.md, and Cursor rules vs skills
- Human-in-the-Loop - approval gates, maker-checker, and audit trails
- Which Pattern When? - capstone decision guide for RAG, agents, skills, and related patterns
- Debugging LLM Apps - production troubleshooting runbook
- New glossary terms: graceful degradation, human-in-the-loop, model routing, prompt caching, structured output, fallback chain, semantic cache
Changed
- Expanded the AI category index description and cross-linked the new pages from existing AI topics
[1.19.0] - 2026-06-05
Added
- New Agent Skills page in the AI section - multi-tool guide to the
SKILL.mdstandard (Cursor, Claude Code, Claude.ai, Codex, Gemini CLI, Copilot CLI), including how skills differ from rules and project memory, how to use and author them, common patterns, and a worked commit-message example - Added Agent skill to the AI Glossary and cross-linked the page from AI-Assisted Development, Context & Prompt Engineering, and Knowledge Management with LLMs
[1.18.1] - 2026-06-05
Changed
- Splitter: the expense cascade when removing a person now has a single definition shared by the reducer and the removal confirmation, and the bill-split math is centralized behind one
fairSharesfunction (behaviour unchanged) - Moved the client redirects out of
docusaurus.config.tsinto a dedicatedredirects.tsmodule with a build-time guard that fails on a duplicate source path
[1.18.0] - 2026-06-05
Added
- New Build a Local LLM App guide - run a model locally with Ollama or LM Studio and connect a simple app you write yourself, with copy-paste examples for a zero-dependency Node.js CLI, a single-file browser app, and the OpenAI SDK, plus streaming, CORS guidance, and troubleshooting
Changed
- Cross-linked the new local-app guide from Cloud vs Local Models and the local coding-assistant guide, and fixed the coding-assistant page title
[1.17.0] - 2026-06-05
Added
- Expanded the AI section with six new topic pages, cross-linked into the existing pages and glossary:
- Embeddings Deep Dive - model landscape, dimensions and Matryoshka, vector quantization, domain adaptation, hybrid retrieval, and production pitfalls
- Context & Prompt Engineering - the context window as a budget, context rot, and long-horizon techniques (compaction, note-taking, sub-agents, just-in-time)
- Evaluation & LLMOps - testing non-deterministic systems with datasets/scorers/LLM-as-judge, harness engineering, and operating them in production
- AI Safety & Guardrails - guardrails and their limits, prompt injection and jailbreaking, red-teaming, and defense in depth
- Knowledge Management with LLMs - RAG vs just-in-time vs the LLM-wiki pattern vs llms.txt
- AI-Assisted Software Development - SPDD, architect-as-orchestrator, and AI-friendly architecture patterns
- Added 19 new AI Glossary terms (context rot, just-in-time context, sub-agents, red-teaming, prompt injection, LLM-as-judge, groundedness, harness engineering, LLM-wiki, llms.txt, SPDD, vector quantization, and more), cross-linked to the topic pages
[1.16.0] - 2026-06-05
Added
- New AI section introducing the core topics, with an inter-linked glossary:
- Large Language Models - how an LLM produces text, the three training stages, strengths and limits, hallucination, and the model landscape
- AI Agents - tool use/function calling, the multi-agent patterns, and the MCP and A2A connectivity protocols
- RAG - retrieval-augmented generation with embeddings and vector databases, RAG vs fine-tuning, and production levers
- Tooling and Frameworks - orchestration frameworks, vector DBs, evaluation/observability, and LLMOps
- Cloud vs Local Models - enterprise platforms (Bedrock, SageMaker, Azure Foundry, Vertex AI) vs local open-weights models (Ollama, LM Studio, llama.cpp, vLLM)
- AI Glossary - plain-English definitions of the core AI terms, cross-linked to the topic pages
Changed
- Surfaced the AI section across the site: a navbar entry (green accent), a footer link, a homepage section, and first placement in the sidebar after the intro
[1.15.1] - 2026-06-05
Changed
- Splitter app: refactored internals for testability with no change to behaviour - state transitions, the settlement summary, URL persistence, and person-name lookup each now live behind a single dedicated module
- Moved the sidebar ordering algorithm next to its order constants in
sidebar-order.tsso the Docusaurus config just calls one entry point
[1.15.0] - 2026-06-05
Added
- AEM: new AEMaaCS vs AEM 6.5 reference page comparing deployment, repository mutability, replication vs content distribution, asset processing, indexing, Dispatcher, and security
- AEM: new Glossary of core AEM, Sling, OSGi, and Oak terms, cross-linked to the deep-dive pages
- AEM: new Recipes - task-oriented how-to checklists (build a component, deliver headless content, make a query fast, publish, secure, debug, translate)
Fixed
- Corrected ~60 broken Adobe Experience League documentation links across the AEM docs (Experience League taxonomy changes and dropped
.htmlsuffixes); all external Adobe links now resolve - Corrected technical errors in code examples: Groovy
Authorizable.getID(), JCRPropertyiteration in the broken-link finder, the orphaned-asset reference search, the Content Fragmentcq:modelOak (Lucene) index, and a dialog checkbox value type
Changed
- Tuned Vale prose linting with an AEM vocabulary so technical terms (OSGi, repoinit, ACLs, clientlib, etc.) are no longer flagged as misspellings; synced Vale style packages are now git-ignored
[1.14.0] - 2026-06-05
Added
- AEM beginners guide: new Servlets & Request Handling chapter - resource-type vs path-bound servlets,
SlingSafeMethodsServletvsSlingAllMethodsServlet, validated POST handling, JSON endpoints, and when to prefer a Sling Model Exporter - AEM beginners guide: new Search & Indexing chapter, plus a Search & Indexing reference page - QueryBuilder vs JCR-SQL2, why unindexed traversals are dangerous, Oak property and Lucene index definitions, AEMaaCS/6.5 deployment, reindexing, and the Explain Query tool
- Component Dialogs: a dialog cookbook (teaser dialog, composite card-list multifield, link-type switch) and a full datasource servlet example for dynamic selects
- Groovy Console: a maintenance recipes library - broken internal-link finder, orphaned-asset finder, permission report, version purge, and replication-queue report
- Content Fragments: an end-to-end headless walkthrough (persisted GraphQL query to frontend
fetchwith CORS/referrer/caching notes) and a "models as code" section for versioning/confmodels
Changed
- Renumbered the AEM beginners guide to 22 chapters to slot in the new Servlets (08) and Search & Indexing (14) chapters; page URLs are unchanged because chapter slugs are explicit
[1.13.3] - 2026-06-05
Fixed
- Docker: install
curlin the runtime image so the Coolify container healthcheck passes (Alpine ships nocurl, and busyboxwgetcould not reach the IPv4-bound static server)
[1.13.2] - 2026-06-05
Fixed
- Corrected beginners-guide category index page slugs to use descriptive names instead of generic identifiers
Changed
- Expanded AEM beginners guide and reference content
- Switched static site serving from Caddy to Node +
serve - Updated pnpm lockfile
[1.13.1] - 2026-06-04
Changed
- AEM Omnisearch Selection Bar Actions: added callout documenting the source of the DM/Scene7 feature flag identifiers and links to the Granite UI
featurerendercondition API reference (AEM 6.5 + Cloud Service)
[1.13.0] - 2026-06-03
Added
- AEM guide: Omnisearch Selection Bar Actions - explains why Granite UI render conditions cannot be used for per-asset checks in the omnisearch selection bar, and how to implement a two-layer solution (DM feature flag render condition + custom JSON check servlet + client-side
foundation-selections-changeactivator)
Changed
- Updated
@types/reactto19.2.15 - Added
pullfrog.ymlworkflow
Fixed
shell-setup: restrictcdalias to interactive shells only
[1.12.1] - 2026-05-18
Fixed
- Splitter: expense description is now optional - the form submits without one
- Splitter: tab focus is now trapped within the expense form so rapid keyboard entry (description → amount → paid by → Add → repeat) no longer escapes to the footer
- Splitter: adding an expense with an empty description no longer silently no-ops (the reducer guard was still requiring a non-empty description)
- Splitter: people chips are now rendered inline with the name input in a tag-input style instead of awkwardly below it
Changed
- Splitter: removed multi-currency support; EUR is the only currency (simplifies the UI)
- Splitter: all formatting and sorting now uses the
IntlAPI -Intl.NumberFormat(cached),Intl.Collatorfor deterministic ID sorting,Intl.PluralRulesfor "expense/expenses" copy
[1.12.0] - 2026-05-18
Added
- New
/apps/section with a self-contained Splitter app (/apps/splitter/) - add people, log shared expenses, and get the minimum settlement transactions. All state is encoded in the URL hash so sessions are shareable by copying the link. Landing page at/apps/lists all available apps.
[1.11.3] - 2026-05-17
Fixed
dialog-validation.mdx: Corrected 14 CSS attribute selectors from exact=to word~=match - exact match silently fails when a field carries multiple space-separated validatorscomponent-dialogs.mdx: FixedrootPathattribute casing on Coral 3 pathfield examples (rootpath→rootPath)externalized-value-map-value.mdx: Fixed annotation default value (StringUtils.EMPTY→""); rewrote injectorgetValue()to use standard Java type-checking and proper adaptable resolution instead of undefinedReflectionUtil/InjectorUtilhelpers that would cause compile errorscore-components.mdx: Corrected Core Components install path (/libs/wcm/core→/apps/core/wcm/components/); updated example version from2.15.2(2021) to2.27.0; added tip linking to the GitHub releases page
[1.11.2] - 2026-05-17
Fixed
- Corrected
docker_run.shcommand in the Dispatcher deployment guide - removed spurious extra path arguments; correct form is./bin/docker_run.sh dispatcher/src host.docker.internal:4503 8080 - Fixed inconsistent
srcpath in Dispatcher SDK validation commands table (src→dispatcher/src) - Updated 31 Adobe Experience League URLs from the deprecated
/docs/path to the canonical/en/docs/format across 14 AEM guide files
Changed
- Added 114 official documentation links (Apache Sling, OSGi specification, Apache Felix, Jackrabbit Oak, Adobe Experience League, aem.live, wcm.io, web.dev, OWASP) to 21 previously link-free files across the AEM guide - including backend, beginners-guide, content, components, edge-delivery, infrastructure, and UI sections
[1.11.1] - 2026-05-03
Fixed
- Removed redundant "Edge Delivery Services - " prefix from all 14 chapter page titles in the new
docs/aem/edge-delivery/section
[1.11.0] - 2026-05-03
Added
- New AEM Edge Delivery Services section under
docs/aem/edge-delivery/- 14 chapters replacing the previous single-page treatment: Overview, Architecture, Authoring models, Blocks (the component model), Customizing, Universal Editor, Development workflow, Sidekick & Sidekick Library, Admin API (helix5), Experimentation, Performance, Forms, Commerce Storefront, and Best practices - Blocks deep-dive - decoration lifecycle (eager / lazy / delayed phases driven by
aem.js), reading rows and cells from the table-derived DOM, thereadBlockConfighelper, block variations, key-value options, auto-blocks, accessing section / page metadata, common patterns and anti-patterns - Customizing chapter -
scripts/scripts.jsorchestration,aem.jsdecoration override hooks (decorateMain,decorateButtons,decorateIcons,decorateSections,decorateBlocks,buildAutoBlocks),delayed.jspatterns,head.htmlresource hints, theme tokens instyles/styles.css, font self-hosting,paths.yamlrewrites,helix-config.yamlresponse headers (CSP, HSTS, Permissions-Policy), bring-your-own-CDN setup, and the/plugins/directory - Admin API (helix5) reference - full
admin.hlx.pagedocumentation with API-key auth, endpoint catalogue (/status,/preview,/live,/code,/index,/cache,/log,/profile,/sitemap,/snapshot,/job,/config), webhooks, common workflows (sitemap-driven bulk republish, scheduled GitHub Actions cron, source-vs-live drift audit, surrogate-key purges), error and rate-limit guidance, and a security checklist - Universal Editor chapter - the three JSON config files (
component-definition.json,component-models.json,component-filters.json),data-aue-*instrumentation attributes, and the decoration pattern that preserves them by re-parenting nodes instead of cloning - Sidekick chapter - core extension actions plus the Sidekick Library (block library and tag library plugins),
tools/sidekick/config.jsonplugin manifest, and a worked example of building a custom Sidekick plugin - EDS for Forms chapter - document-based and AEM Forms authoring paths, the
formblock and its helper modules, submission targets (AEM Forms, REST, SharePoint, email, webhooks), client-side validation with ARIA wiring, spam mitigation, accessibility invariants, and patterns for multi-step forms, asset uploads, and draft persistence - EDS Commerce Storefront chapter - render-time vs run-time data flows, the storefront block library (PLP, PDP, cart, checkout, account, search, recommendations), Adobe Commerce GraphQL integration, surrogate-key caching strategy, customer auth, SEO, performance pitfalls, and adapter strategies for commercetools / Shopify / custom backends
- Experimentation chapter - experiments and audiences sheets, edge-side resolution (no client-side flicker), multivariate setup, sticky cookie assignment, analytics wiring in
delayed.js, and concluding-an-experiment patterns
Changed
- Sidebar -
edge-deliveryinserted betweenarchitectureand the legacy AEM topic groups insidebar-order.ts; newaem/edge-deliveryordering key arranges chapters in reading order (overview → architecture → authoring → blocks → customizing → universal-editor → development → sidekick → admin-api → experimentation → performance → forms → commerce → best-practices) - Five sibling docs repointed from the old
helix.mdxlocation to../edge-delivery/overview.mdx: SPA Editor, GraphQL, AIO App Builder, Dispatcher Configuration, AEM as a Cloud Service - Overview page preserves the
/aem/edge-delivery-services/slug so the existing/aem/helix/redirect (and any external bookmarks) keep resolving
Removed
docs/aem/infrastructure/helix.mdx- fully migrated into the newdocs/aem/edge-delivery/section
[1.10.0] - 2026-05-02
Added
- New "Building for the Web" sidebar category - groups Content Modeling, Semantic HTML, Web Performance, Build a Simple Blog Page, and the Web Content section under one parent, replacing five separate top-level entries
- Web Content section split into eight focused chapters (Overview, Readability & Typography, Structure & Hierarchy, Forms & Interactions, Microcopy & Error States, Color & Contrast, Images & Media, Information Architecture) instead of a single 746-line monolith
- New "Microcopy and Error States" chapter - buttons and primary actions, helper text and field hints, validation errors with inline
aria-describedbypatterns, empty states (including filtered variants), loading states with skeletons and progress bars, success confirmations, destructive confirmation dialogs, 404 and 5xx error pages, voice consistency, and a quick-reference table - New "Information Architecture" chapter - primary / utility / footer navigation patterns,
aria-current="page"active state, breadcrumbs, taxonomies and label-drift, faceted filtering, search UX (typo recovery, recent and suggested queries), URL slug design rules, localised URLs, hub pages versus alphabetical dumps, and an IA audit checklist - Web Content guide expanded across the existing sections with extensive Do / Don't code examples covering language and tone, microcopy, typography and measure (CSS), heading hierarchy, lists versus paragraphs, primary CTAs, progressive disclosure, link text, form labels and inline errors, mobile-first DOM order, color tokens, dark-mode token redefinition, link underlines, alt text, and video captions (#52)
- Cursor Cloud specific instructions in
AGENTS.md(#50) - Initial Web Content section for readability, UX, focus, and visual design (#49)
Changed
- 22 client-side redirects added in
docusaurus.config.tsto catch URLs constructed from the new file paths (e.g./building-for-the-web/content-modeling/→/content-modeling/) and likely shortened guesses (e.g./web-content/microcopy/→/web-content/microcopy-and-error-states/); all original canonical URLs remain stable via explicitslug:frontmatter - Removed the standalone GitHub link from the site
[1.9.2] - 2026-04-22
Fixed
- Component Dialogs - restored three in-page anchor links (
#empty-dialog--starting-point,#layout--read-only,#msm--live-copy-considerations) whose double-dash segments were inadvertently collapsed by the v1.9.1 typography sweep, breaking the Docusaurus build
[1.9.1] - 2026-04-22
Changed
- Docs-wide typography cleanup - replaced the
--em-dash substitute with a single-across 217 docs files, while preserving frontmatter delimiters, fenced code blocks (including mermaid arrows and CLI flags), inline code spans, table separators, and HTML comment delimiters
[1.9.0] - 2026-04-21
Added
- Build a Simple Blog Page - new "Before you start - what the pieces are" section orienting absolute beginners (what a website actually is, what HTML / CSS / JS each do, per-OS instructions for creating a folder and blank files in Finder / File Explorer / Linux file managers, why a word processor will not work, and what the
file://URL prefix means), plus a new Step 6 - Get this live on the internet with two full deployment walkthroughs: Option A AWS S3 static hosting (free-tier account, bucket creation with public-access block unchecked, file upload, static-website-hosting toggle, public-read bucket-policy JSON snippet, bucket-website endpoint) with caveats on HTTPS via CloudFront / billing / Netlify-Pages alternatives; Option B VPS + nginx (ssh in,apt install nginx,scpthe files up, move to/var/www/blog, minimalserver {}block at/etc/nginx/sites-available/blog, symlink intosites-enabled,nginx -tandsystemctl reload nginx) linking to the deeper VPS + nginx chapter for hardening and HTTPS; closes with an "S3 vs VPS vs Netlify" decision table
Changed
- Build a Simple Blog Page - plain-English glosses added on first use for semantic HTML, the DOM, CSS custom properties, localStorage, media query, and
<script type="module">; VS Code recommendation now explains why (syntax highlighting, not a word processor); Summary gained a deployment bullet
[1.8.0] - 2026-04-20
Added
- Build a Simple Blog Page - new Step 4 "Responsive header and footer" covering a mobile nav toggle with
aria-expanded/aria-controls+.visually-hiddenutility, a@media (max-width: 40rem)query, the adjacent-sibling combinator pattern ([aria-expanded="true"] + nav) for CSS-driven disclosure, and a multi-column footer that stacks via the samerepeat(auto-fit, minmax())trick - plus a decision table contrastingauto-fit/minmax()against@mediaqueries
Changed
- Build a Simple Blog Page - cross-reference links threaded through every step: Step 2 links to the CSS beginners' chapters on box model / colors & typography / Flexbox, plus CSS Grid / Responsive Design / CSS Custom Properties for the "two things worth understanding" notes; Step 3 links to DOM and Events chapters; the relative-dates row links to the Intl API Formatting guide; Step 5 (fetch) links to Working with Data and the Async/Await guide; Vite section links to the VPS deploy chapter; Next steps expanded with targeted chapter links plus Web Performance. Summary and "What you will build" updated to mention the responsive header and multi-column footer; previous "Step 4 - load posts from a JSON file" renumbered to Step 5 (optional)
[1.7.0] - 2026-04-20
Added
- Build a Simple Blog Page guide - a standalone, super-beginner start-to-finish tutorial for building a working blog page with only HTML, CSS, and vanilla JavaScript (semantic markup, CSS Grid layout with
auto-fit/minmax, CSS custom properties driving adata-themedark-mode toggle,Intl.RelativeTimeFormatfor human-readable dates,localStoragepersistence, click-to-filter tags), plus an optional Step 4 that moves posts intoposts.jsonviafetchwith atype="module"/ top-level-awaitvariant, and a bonus section on when and how to adopt Vite (dev server, HMR, production build, "when is Vite worth it?" decision table) - sits at/build-a-blog, linked from the sidebar after Semantic HTML and from the home page under More Topics
[1.6.0] - 2026-04-20
Added
- Changelog page at
/changelog, rendered directly from the rootCHANGELOG.mdso the release history is browsable on the site
Changed
- Footer restructured from four thin columns (Content / Legal / Socials / Tech) into four balanced columns: Docs (AEM, Strapi, JavaScript, Java, Design Patterns), Guides (Docker, Linux, Git, Testing), More (Projects, Other, Changelog, Imprint), and Connect (LinkedIn, Xing, GitHub, Gitlab) - surfaces top content hubs, mirrors the navbar, and merges profile + repo links
- Copyright line hyphen upgraded to an em-dash
[1.5.0] - 2026-04-20
Added
- AEM Dispatcher Configuration guide - AEMaaCS vs AEM 6.5 comparison, two-layer Virtual Host Matching (Apache vhost + Dispatcher
virtualhosts.anywith farm ordering andlocalhostpitfall), Cache Warming (sitemap-driven, post-deploy, targeted), Debugging Toolkit (DISP_LOG_LEVELlevels, "why didn't this cache?" 7-step decision tree, inspection commands), Security Headers placement (CDN / Apache / Sling filter decision table), Health Check Endpoints (Dispatcher-only vs end-to-end, Kubernetes liveness/readiness split) - AEM Testing guide - expanded from stub into a full reference: test pyramid, tooling choices table, AEM Mocks vs Sling Mocks distinction,
AemContextAPI reference,ResourceResolverTypematrix (RESOURCERESOLVER_MOCK / JCR_MOCK / JCR_OAK / JCR_JACKRABBIT trade-offs), content loading patterns (JSON, Filevault XML, binary), eight concrete test patterns (Sling Model, request-adaptable model, OSGi service, service-user resolver, servlet, JCR-SQL2 query, Context-Aware Config, WireMock external HTTP), UI.tests module with WebdriverIO, Dispatcher validation CI gate, JaCoCo setup, smoke checklist, and common pitfalls
Changed
/llms.txt- added the five new beginner guides (TypeScript, Docker, Git, Testing, Linux), added links to Dialog Validation, JCR Queries and API, Context-Aware Configuration, Testing, and Security basics, fixed the broken/aem/infrastructure/dispatcher/URL to point at/aem/infrastructure/dispatcher-configuration/, removed the stale/git/entry now that the Git beginners guide is in the top section
[1.4.0] - 2026-04-20
Added
- AEM Dialog Validation guide -
validate()trigger table with.checkValidity()imperative example, "Two ways to declare a validator" subsection (validationattribute vsgranite:data/foundation-validationchild node), per-item multifield validation with partner-field revalidation, async/server-side validation with debounced fetch and cached results, expanded built-in validators split into field-level attributes and registeredfoundation.*validators, "Styling the invalid state" CSS section, and a 5-step debugging checklist - AEM Touch UI Component Dialogs - Adobe's native
cq-dialog-dropdown-showhide/cq-dialog-checkbox-showhidepattern, FieldSet grouping widget with persistence explanation (Well vs FieldSet vs Multifield comparison), fullcq:editConfigreference (drop targets, inline editors, refresh listeners, disabling default toolbar actions), link-tuple pattern (label + URL + target) with a security-awarerelSling Model
Changed
- AEM Dialog Validation guide - template validator now null-safe (
var value = (raw == null ? "" : String(raw)).trim()), selectors updated to~=space-separated-word match so fields with multiple validators still trigger - AEM Touch UI Component Dialogs -
cq-msm-lockablesection expanded from a passing mention to a full explanation (mechanics, pitfalls, composite-multifield example), Tags field extended withrootPathscoping and aTagManager-based Sling Model reader - AEM Touch UI Component Dialogs - Validation section trimmed to a declarative quick-reference that links to the dedicated Dialog Validation page, removing duplicated content
[1.3.2] - 2026-04-20
Fixed
- AEM JCR guide - SQL2 example no longer teaches query injection via user-controlled locale concatenation; now shows an allowlist pattern for caller-supplied values
- AEM JCR guide - Session API example rewritten to use
getServiceResourceResolverwith a sub-service; removed hardcodedadmin:admincredentials, fixed wrong port (4503→4502for author), dropped unusedTransientRepositoryimport, moved credentials warning out of the code fence into a:::dangeradmonition - AEM JCR guide - Groovy queries migrated from the deprecated
'sql'language to'JCR-SQL2'; xpath cleanup example rewritten as JCR-SQL2; added dev-only console warning - AEM JCR guide - fixed stray footnote marker (
>) and an orphan comment line that rendered outside its code fence; dropped obsoletejackrabbit-standalone-2.4.0.jarversion reference - AEM Context-Aware Configuration guide - HTL
<script>interpolation now uses explicit@ context="scriptString"to defend against XSS if HTL's auto-context misfires;HeaderModelnull-checks the config returned from.as(...) - AEM Security basics - service-user mapping section now distinguishes AEMaaCS (repoinit +
ui.config) from 6.5 (OSGi Console / Users admin UI) delivery
Changed
- AEM Architecture - moved
WCMUsePojoout of the Sling Models comparison table into a dedicated "legacy" aside to avoid implying it is still a current choice - AEM curl examples across Architecture, Groovy Console, Content Fragments, GraphQL, and Servlets guides now carry a consistent "Local SDK / dev only" note above every
admin:adminblock
[1.3.1] - 2026-04-20
Fixed
- Removed duplicate "Git" entry in the sidebar caused by a standalone
docs/git.mdcolliding with thedocs/git/beginners-guide category (both claimed slug/git); standalone reference removed and intro link updated to point at the beginners guide
[1.3.0] - 2026-04-20
Added
- Enabled Umami session replay by default via
recorder.jswithdata-sample-rate="0.25",data-mask-level="moderate", anddata-max-duration="300000"attributes
Changed
- Migrated Umami script host to
umami.lucanerlich.com
[1.2.1] - 2026-04-18
Fixed
- Removed
sitemap.lastmod: 'date'which caused Docker production builds to fail because the build container has no git worktree
[1.2.0] - 2026-04-18
Added
- TypeScript beginner guide (12 chapters) - basic types through advanced mapped types, utility types, and real-world usage with React and Node.js
- Docker beginner guide (12 chapters) - first container through multi-stage builds, Docker Compose, secrets, registries, and production hardening
- Git beginner guide (12 chapters) - first commit through rebasing, collaborative workflows (GitHub Flow, GitFlow, trunk-based), and hooks
- Testing beginner guide (12 chapters) - Jest/Vitest and JUnit 5, mocking with Mockito, TDD, React Testing Library, Playwright e2e, and coverage
- Linux beginner guide (12 chapters) - filesystem navigation through bash scripting, networking, package management, and VPS hardening
- Navbar restructured into Language and Guides dropdowns to accommodate the expanded content
Fixed
- Quoted
@-prefixed YAML keywords in testing and TypeScript frontmatter that caused build failures
[1.1.2] - 2026-04-18
Added
- GitHub Actions CI workflow - builds on every PR and push to
main, catching broken links before deployment - Projects and Other sections added to the top navbar for direct discoverability
- Preconnect hints for Algolia DocSearch domains to reduce search latency
- Frontmatter (title, description, tags, keywords, sidebar position) added to all four project pages
- Description added to the Projects category generated-index page
- Content column added to the footer with links to Projects and Other
Changed
- Twitter card type upgraded to
summary_large_imagefor full-width social share previews - OG image (
avatar-ai.jpg) compressed from 404 KB to 120 KB at 1200×1200 - Navbar logo alt text corrected from the Docusaurus placeholder to "Luca Nerlich logo"
- Purple accent colour in light mode adjusted to
#2d2aa8to pass WCAG AA contrast future.experimental_fasterconfig key renamed tofuture.fasterfor Docusaurus 3.10.0/projects/and/other/category slugs made explicit so navbar links resolve correctly- Node.js version in
.nvmrccorrected fromv16.15.0tov22 engines.npminpackage.jsoncorrected toengines.pnpm- Image alt text on GoAccess and Discord Analyzer pages made descriptive
Removed
- Unused
blog/authors.ymland emptyblog/directory - Dead
.font-greenCSS rule - Dead
"className": "archive"attribute from the Other category config
[1.1.1] - 2026-04-13
Fixed
- Fixed missing closing quotes in QueryBuilder predicates code example
- Fixed Groovy closure arrow syntax and incorrect
slingRequestbinding in JCR guide - Updated Groovy Console GitHub link to current
orbinson/aem-groovy-consolerepository - Fixed outdated file upload component path in practice projects
- Added security warning for hardcoded credentials in client-side JavaScript example
- Clarified RTE sanitization vs HTL escaping layers in HTL Templates chapter
- Marked
currentDesignas deprecated in AEMaaCS - Corrected Dispatcher filter matching to explain last-match-wins semantics
- Added authentication headers to GraphQL curl examples
Added
- Introduced
sling:resourceSuperTypeand proxy component inheritance in JCR & Sling chapter - Added
@Referencecardinality and target filter examples in OSGi Fundamentals - Added
@Defaulttype-specific annotation variants table in Sling Models chapter - Added multifield
compositevs non-composite explanation in Component Dialogs - Added file upload Sling Model reading example in Component Dialogs
- Documented
customheaderlibs.htmllookup mechanism and breakpoint customization in Templates chapter - Added GraphQL field name case sensitivity note and field name mapping explanation
- Expanded Dispatcher stat file mechanics with flush action explanation and query string caching behavior
- Added
.cfg.jsonformat requirement and AEMaaCS-only note for environment variable placeholders - Added
@ObjectClassDefinitionconfig interface example in Deployment chapter - Added warning about not closing request-scoped resolvers in Architecture reference
[1.1.0] - 2026-04-13
Added
- Added
/llms.txtroute following the llmstxt.org proposal, providing LLM-friendly site information with curated links to all documentation sections