Changelog 

All notable changes to the TYPO3 LLM Extension are documented here.

The format follows Keep a Changelog and the project adheres to Semantic Versioning.

Version 0.6.0 (2026-03-24) 

Added 

  • DocumentCapableInterface: providers can now advertise PDF/document support; ChatCapabilitiesInterface exposes this via getProviderCapabilities().
  • Multimodal content arrays in chatCompletion: pass images, PDFs, and text blocks as structured content arrays alongside regular string messages.
  • Tool message conversion: tool_result blocks are now mapped correctly when assembling provider payloads.

Changed 

  • Migrated CI infrastructure to netresearch/typo3-ci-workflows shared workflows (PHP tests, docs, E2E).
  • Replaced GrumPHP with CaptainHook for pre-commit hooks.

Fixed 

  • PHPStan baseline regenerated; ignoreErrors patterns broadened for deprecation and array function rules to handle phpstan-typo3 v2/v3 parameter name differences.
  • E2E tests stabilised: heading verification added, module overview landing page assertions updated.

Version 0.5.0 (2026-03-09) 

Added 

  • AI-powered full-chain task wizard: describe a task in plain language, AI generates task + configuration + model recommendation in one step.
  • AI-powered configuration wizard: generate configurations with system prompts, parameters, and model selection.
  • Custom TCA ModelIdElement: input field with "Fetch Models" button that populates from provider API, auto-fills capabilities and pricing.
  • ModelConstraintsWizard: field wizard that loads parameter constraint bounds per model.
  • Dashboard improvements: side-by-side wizard callouts, fixed headline from "LLM Providers" to "LLM Integration".
  • Task execution UI: collapsible prompt details, improved result display.
  • Enhanced model discovery: better Anthropic, Google, DeepSeek, Mistral support.
  • TER publish workflow.
  • Documentation: wizards guide with screenshots, tasks section, updated configuration reference.

Changed 

  • Renamed SafeCastTrait extracted from duplicated helpers in TaskController and WizardGeneratorService.
  • SQL injection defense: regex whitelist validation for table/column names in FetchRecordsRequest and LoadRecordDataRequest.

Fixed 

  • Restored method_exists() guards for setShortcutContext() (TYPO3 v13 compatibility).
  • PHPUnit 12: replaced createStub with createMock to fix deprecation warnings.

Version 0.4.8 (2026-03-07) 

Changed 

  • Rewritten introduction with value-oriented positioning.
  • Restructured README around value proposition and audience segments.
  • Updated package metadata with value-oriented descriptions.
  • Added integration guide for extension developers.

Version 0.4.7 (2026-03-07) 

Added 

  • Help page in the LLM backend module.
  • Setup wizard links on empty-state list pages.

Fixed 

  • Use canonical endpoint URLs for known providers in setup wizard.
  • Remove container class from backend module templates.

Version 0.4.6 (2026-03-06) 

Fixed 

  • Add Fluid-compatible getHasApiKey() getter for {provider.hasApiKey} in templates.

Version 0.4.5 (2026-03-06) 

Fixed 

  • Use GET /v1/models for Anthropic connection test.

Version 0.4.4 (2026-03-06) 

Fixed 

  • Use table-specific connection and simplify column checks.
  • Wrap test cleanup in try/finally and assert labelField.

Version 0.4.3 (2026-03-06) 

Fixed 

  • Handle tables without uid column in TCA utilities.
  • Remove hardcoded temperature from chat completions.

Version 0.4.2 (2026-03-06) 

Fixed 

  • Add rootLevel to provider, configuration, and model TCA definitions.

Version 0.4.1 (2026-03-06) 

Fixed 

  • Use max_completion_tokens instead of max_tokens for OpenAI chat completions.

Version 0.4.0 (2026-03-06) 

Breaking 

  • Prevent plaintext API key storage via setup wizard; keys now require vault encryption.

Fixed 

  • Cast ExtensionConfiguration timeout values to integer.

Changed 

  • Use Symfony Uuid::v7() instead of manual UUID generation.

Version 0.3.2 (2026-03-04) 

Added 

  • Extract thinking blocks from LLM responses (<think> tag support).

Fixed 

  • Preserve newlines in extractThinkingBlocks.
  • Restrict CI push trigger to main branch only.
  • Add merge_group trigger to CI workflow.

Version 0.3.1 (2026-03-02) 

Fixed 

  • Add Overview submodule for TYPO3 v13 module overview compatibility.

Version 0.3.0 (2026-03-01) 

Added 

  • Expose chatWithConfiguration and streamChatWithConfiguration on LlmServiceManagerInterface.

Fixed 

  • Use integer values for f:be.infobox state attribute for TYPO3 v13 compatibility.
  • Explicitly enable fuzz and mutation tests.

Version 0.2.2 (2026-03-01) 

Fixed 

  • Use tools parent for TYPO3 v13 module compatibility.

Changed 

  • Consolidate caller workflows into 4 grouped files.
  • Fix documentation issues found by analysis.

Version 0.2.1 (2026-02-28) 

Changed 

  • Require netresearch/nr-vault ^0.4.0 for API key encryption.

Version 0.2.0 (2026-02-28) 

Added 

  • PHP 8.2+ and TYPO3 v13.4+ compatibility.
  • TYPO3 v13.4 ddev install command.
  • Coverage uploads and fuzz/mutation CI workflow.
  • Unit tests for enums, WizardResult DTO, providers, services, and specialized classes.
  • Coverage tests for PromptTemplateService and TranslationService.

Changed 

  • Moved phpunit.xml and phpstan-baseline.neon into Build/ directory.
  • Expanded CI matrix to PHP 8.2-8.5 and TYPO3 v13.4/v14.
  • Replaced TYPO3 v14-only APIs with v13-compatible equivalents.
  • Narrowed testing-framework to ^9.0 for PHPUnit 12 compatibility.
  • Removed dead ProviderRegistry class and orphaned phpstan baseline file.
  • Removed 55 dead translation keys.
  • Harmonized composer script naming to ci:test:php:* convention.
  • Migrated CI to centralized workflows.
  • Added SPDX copyright and license headers.
  • Replaced generic emails with GitHub references.

Fixed 

  • Resolved CI failures for PHP 8.2 and TYPO3 v13 compatibility.
  • Resolved PHPStan failures for dual TYPO3 v13/v14 support.
  • Fixed PHPUnit deprecation warnings.
  • Used CoversNothing for excluded exception and enum test classes.
  • Localized user-facing hardcoded strings in controllers.
  • Disabled functional tests in CI (environment-specific).
  • Fixed direct php-cs-fixer call in ci:test:php:cgl script.

Version 0.1.2 (2026-01-11) 

Fixed 

  • Fixed CI: use correct org secret name for TER token.
  • Simplified TER upload workflow.

Version 0.1.1 (2026-01-11) 

Fixed 

  • Fixed CI: create zip archive for TER upload.

Version 0.1.0 (2026-01-11) 

Initial release of the TYPO3 LLM Extension.

Added 

Core Features

  • Multi-provider support (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Mistral, Groq).
  • Unified API via LlmServiceManager.
  • Provider abstraction layer with capability interfaces.
  • Typed response objects (CompletionResponse, EmbeddingResponse).
  • Three-tier configuration architecture (Providers, Models, Configurations).
  • Encrypted API key storage using sodium_crypto_secretbox.

Feature Services

  • CompletionService: Text completion with format control (JSON, Markdown).
  • EmbeddingService: Vector generation with caching and similarity calculations.
  • VisionService: Image analysis with alt-text, title, description generation.
  • TranslationService: Translation with formality control and glossary support.
  • PromptTemplateService: Centralized prompt management with database-driven templates.

Specialized Services

  • Image generation (DALL-E).
  • Text-to-speech (TTS) and speech transcription (Whisper).
  • DeepL translation integration.

Provider Capabilities

  • Chat completions across all providers.
  • Embeddings (OpenAI, Gemini).
  • Vision/image analysis (all providers).
  • Streaming responses (all providers).
  • Tool/function calling (all providers).

Infrastructure

  • TYPO3 caching framework integration.
  • Backend module for provider management and testing.
  • Prompt template management with versioning and performance tracking.
  • Comprehensive exception hierarchy.
  • Type-safe enums and DTOs for domain constants.

Developer Experience

  • Option objects with factory presets (ChatOptions).
  • Full backwards compatibility with array options.
  • Extensive PHPDoc documentation.
  • Type-safe method signatures.

Security

  • Enterprise readiness security workflows and supply chain controls.
  • SLSA Level 3 provenance, Cosign signatures, and SBOM generation.
  • OpenSSF Scorecard and Best Practices compliance.

Testing

  • Comprehensive unit and integration tests.
  • E2E testing with Playwright.
  • Property-based (fuzz) testing support.

Upgrade Guides 

Upgrading from Pre-Release 

If you used a pre-release version:

  1. Remove old extension

    Remove old extension
    composer remove netresearch/nr-llm
    Copied!
  2. Clear caches

    Clear caches
    vendor/bin/typo3 cache:flush
    Copied!
  3. Install current version

    Install current version
    composer require netresearch/nr-llm:^0.2
    Copied!
  4. Run database migrations

    Run database migrations
    vendor/bin/typo3 database:updateschema
    Copied!
  5. Update configuration

    Review your TypoScript and extension configuration for any changed keys or deprecated options.

Breaking Changes Policy 

This extension follows semantic versioning:

  • Major versions (x.0.0): May contain breaking changes
  • Minor versions (0.x.0): New features, backwards compatible
  • Patch versions (0.0.x): Bug fixes only

Breaking Changes Documentation 

Each major version will document:

  1. Removed or changed public APIs
  2. Migration steps with code examples
  3. Compatibility layer availability
  4. Deprecation timeline for removed features

Deprecation Policy 

  1. Features are marked deprecated in minor versions
  2. Deprecated features remain functional for one major version
  3. Deprecated features are removed in the next major version
  4. Migration documentation provided before removal