---
title: "ChangeLog"
manual: "TextDB"
version: "4.1"
permalink: "https://docs.typo3.org/permalink/netresearch/nr-textdb:changelog@4.1"
source: "ChangeLog/Index.rst"
rendered: "2026-10-31T14:42:22+00:00"
---

# ChangeLog {#changelog}

## Version 4.1.0 {#version-4-1-0}

**Features:**

-   ✨ `textdb:textdb` and `textdb:translate` fall back along the site
    language's fallback chain, then the default language, before they render
    the key ([#194](https://github.com/netresearch/t3x-nr-textdb/pull/194))
-   ✨ The backend import and `nr_textdb:import` name the XLIFF units they
    leave out or shorten ([#193](https://github.com/netresearch/t3x-nr-textdb/pull/193))

**Fixes:**

-   🐛 Lookups made by the backend module follow the `createIfMissing`
    extension setting ([#172](https://github.com/netresearch/t3x-nr-textdb/pull/172))
-   🐛 A hidden TextDB entry is not rendered in the frontend ([#206](https://github.com/netresearch/t3x-nr-textdb/pull/206))
-   🐛 An import writes a file in one database transaction and rolls back the
    whole file on any error, on every supported database ([#189](https://github.com/netresearch/t3x-nr-textdb/pull/189), [#211](https://github.com/netresearch/t3x-nr-textdb/pull/211), [#215](https://github.com/netresearch/t3x-nr-textdb/pull/215))
-   🐛 A unit marked unused imports under its own placeholder ([#191](https://github.com/netresearch/t3x-nr-textdb/pull/191))
-   🐛 The backend upload reads files with `XliffLoader` and shows an error
    for a malformed file; multi-line values survive export and re-import
    ([#186](https://github.com/netresearch/t3x-nr-textdb/pull/186))
-   🐛 The module, the export and the imports use the languages of the site
    that holds the storage page ([#188](https://github.com/netresearch/t3x-nr-textdb/pull/188))
-   🐛 The translation list and the default-language export contain
    default-language records only ([#187](https://github.com/netresearch/t3x-nr-textdb/pull/187))
-   🐛 A malformed `translateRecord` request shows an error, and the dialog
    saves only the record it was opened for and its translations ([#182](https://github.com/netresearch/t3x-nr-textdb/pull/182))
-   🐛 Saving from the list view shows the save messages, on every TYPO3 14.3
    release, and a double-click opens a translation row once ([#185](https://github.com/netresearch/t3x-nr-textdb/pull/185),
    [#202](https://github.com/netresearch/t3x-nr-textdb/pull/202))
-   🐛 The filter reset clears the stored filter ([#181](https://github.com/netresearch/t3x-nr-textdb/pull/181))
-   🐛 An export that matches no record shows an error instead of HTTP 500 and
    leaves no working directory behind ([#180](https://github.com/netresearch/t3x-nr-textdb/pull/180))

**Changes:**

-   The export reads and writes 1,000 records at a time, which lowers its
    memory use, and the import writes new entries in bulk, which lowers its
    run time ([#204](https://github.com/netresearch/t3x-nr-textdb/pull/204), [#216](https://github.com/netresearch/t3x-nr-textdb/pull/216))
-   One extension title in `ext_emconf.php` and `composer.json` ([#169](https://github.com/netresearch/t3x-nr-textdb/pull/169))

## Version 4.0.2 {#version-4-0-2}

**Fixes:**

-   🐛 Every action of the backend module checks the backend user's table
    rights and page permissions before it reads or writes TextDB records, and
    the write actions also check excluded fields, allowed languages and the
    live workspace; the list and the export show non-admins only the records of
    the configured storage page, and a record opened by its uid is checked
    against the permissions of the page it is stored on. See
    [Backend Module Configuration](https://docs.typo3.org/permalink/netresearch/nr-textdb:backend-module-configuration@4.1) for the permissions each action needs
    ([#170](https://github.com/netresearch/t3x-nr-textdb/pull/170))
-   🐛 The import view shows its error list again instead of failing ([#170](https://github.com/netresearch/t3x-nr-textdb/pull/170))

## Version 4.0.1 {#version-4-0-1}

**Fixes:**

-   🐛 `<nrtextdb:translate>` resolves translation domain keys such as
    `nr_textdb.messages:some.label` through LocalizationUtility when TextDB
    holds no value, instead of rendering the raw key ([#161](https://github.com/netresearch/t3x-nr-textdb/pull/161))
-   🐛 The Netresearch group icon and the record icons draw their glyph in the
    backend text colour and stay legible in the light and the dark scheme; the
    backend module views use core markup with accessible names and headings
    ([#157](https://github.com/netresearch/t3x-nr-textdb/pull/157))
-   🐛 The group and module icons are registered against the right SVG files
    again ([#148](https://github.com/netresearch/t3x-nr-textdb/pull/148))
-   🐛 Saving translations in the backend module rejects malformed input and
    unconfigured languages instead of crashing or persisting an unreachable
    record ([#129](https://github.com/netresearch/t3x-nr-textdb/issues/129))
-   🐛 The backend module works for users without a stored module config, and
    the export no longer runs unfiltered when no filter is selected ([#130](https://github.com/netresearch/t3x-nr-textdb/pull/130))
-   🐛 `nr_textdb:import <extension>` imports only the requested extension
    ([#119](https://github.com/netresearch/t3x-nr-textdb/pull/119))

## Version 4.0.0 {#version-4-0-0}

**Breaking Changes:**

-   ⚠️  TYPO3 14.3 minimum requirement, support for TYPO3 13 dropped
-   ⚠️  The default-language XLIFF export no longer emits a `target-language`
    attribute, so the file is recognised as a source-only template

**Features:**

-   ✨ TYPO3 14.3 LTS compatibility
-   ✨ PHP 8.2, 8.3, 8.4, 8.5 support

**Fixes:**

-   🐛 Saving a translation in the backend module updates the existing record
    instead of inserting a duplicate, skips empty values and reports a
    persistence error as a flash message ([#100](https://github.com/netresearch/t3x-nr-textdb/issues/100))

## Version 3.0.3 {#version-3-0-3}

Released: 2024-11-27

**Changes:**

-   Use `$_EXTKEY` in ext_emconf.php and sanitize TER comment
-   Documentation improvements with GitHub integration for docs.typo3.org
-   Changed license to Creative Commons BY 4.0 for documentation
-   Fixed guides.xml schemaLocation and added theme attribute

## Version 3.0.1 {#version-3-0-1}

Released: 2024-11-07

**Changes:**

-   Documentation improvements
-   Minor bug fixes
-   Updated GitHub Actions CI

## Version 3.0.0 {#version-3-0-0}

Released: 2024-11-07

**Breaking Changes:**

-   ⚠️  PHP 8.2 minimum requirement
-   ⚠️  TYPO3 13.4 minimum requirement
-   ⚠️  Removed support for TYPO3 12 and earlier

**Features:**

-   ✨ TYPO3 13.4 LTS compatibility
-   ✨ PHP 8.2, 8.3, 8.4 support
-   ✨ Modern dependency injection patterns
-   ✨ Updated to PHPUnit 10+
-   ✨ Symfony Console 7.0 support
-   ✨ Improved DDEV development environment

**Improvements:**

-   🔧 Modernized codebase architecture
-   🔧 Enhanced code quality tooling
-   🔧 Updated testing framework
-   🔧 Improved CI/CD pipeline
-   🔧 Better error handling and logging

**Migration Guide:**

See [Upgrade Instructions](https://docs.typo3.org/permalink/netresearch/nr-textdb:upgrade@4.1) in the Installation section.

## Version 2.x {#version-2-x}

### TYPO3 12 LTS Support {#typo3-12-lts-support}

Version 2.x series supports TYPO3 12 LTS.

For details, see the [2.x branch](https://github.com/netresearch/t3x-nr-textdb/tree/2.x).

## Version 1.x {#version-1-x}

### Legacy Versions {#legacy-versions}

Version 1.x series supports TYPO3 10-11.

**Note:** No longer maintained. Upgrade to 3.x recommended.

## Detailed Change History {#detailed-changelog}

For complete commit history and detailed changes:

[https://github.com/netresearch/t3x-nr-textdb/commits/main](https://github.com/netresearch/t3x-nr-textdb/commits/main)

## Release Notes {#release-notes}

### 3.0.x Series {#3-0-x-series}

**Focus:** TYPO3 13 LTS support and modernization

**Key Improvements:**

-   Modern PHP 8.2+ features
-   Enhanced type safety with strict types
-   Improved dependency injection
-   Better test coverage
-   Updated quality tooling (PHPStan, Rector, Fractor)
-   DDEV-based development workflow

**Deprecations:**

None in 3.0.x series.

**Removed Features:**

-   TYPO3 12 and earlier support
-   PHP 8.1 and earlier support

### 2.0.x Series {#2-0-x-series}

**Focus:** TYPO3 12 LTS support

**Key Features:**

-   TYPO3 12 LTS compatibility
-   PHP 8.1+ support
-   Modern Extbase patterns
-   Backend module improvements

### 1.0.x Series {#1-0-x-series}

**Focus:** Initial release and TYPO3 10-11 support

**Key Features:**

-   Translation database management
-   Import/Export functionality
-   Backend module
-   ViewHelper integration

## Upgrade Path {#upgrade-path}

### From 2.x to 3.x {#from-2-x-to-3-x}

**Prerequisites:**

-   PHP 8.2 or higher installed
-   TYPO3 13.4 or higher

**Steps:**

1.  Backup your database and translations
1.  Update composer.json:

    ```bash
    composer require netresearch/nr-textdb:^3.0
    ```
1.  Update database schema:

    ```bash
    vendor/bin/typo3 database:updateschema
    ```
1.  Clear all caches:

    ```bash
    vendor/bin/typo3 cache:flush
    ```
1.  Test functionality thoroughly

**Breaking Changes:**

-   PHP 8.2 minimum (check your PHP version)
-   TYPO3 13.4 minimum (upgrade TYPO3 first if needed)
-   Some internal APIs may have changed (check custom code)

### From 1.x to 3.x {#from-1-x-to-3-x}

**Not Directly Supported**

Upgrade path:
1\. Upgrade to 2.x first
2\. Test thoroughly
3\. Then upgrade to 3.x

## Security Updates {#security-updates}

### Version 3.0.1 {#version-3-0-1-2}

-   No security issues

### Version 3.0.0 {#version-3-0-0-2}

-   Updated dependencies to address known vulnerabilities
-   Enhanced input validation
-   Improved file upload security

> [!NOTE]
> Always keep your TYPO3 installation and extensions up to date
> to benefit from the latest security fixes.

## Backwards Compatibility {#backwards-compatibility}

### 3.0.x Series {#3-0-x-series-1}

**BC Breaks:**

-   PHP 8.2 minimum
-   TYPO3 13.4 minimum

**API Stability:**

Public APIs (ViewHelpers, Services) maintain backwards compatibility
within the 3.x series.

**Database Schema:**

Database schema is compatible between 2.x and 3.x (with updates).

## Contributing {#contribution-guidelines}

Contributions are welcome! Please:

1.  Fork the repository
1.  Create a feature branch
1.  Make your changes
1.  Add/update tests
1.  Ensure CI passes
1.  Submit pull request

**Development Setup:**

```bash
# Clone repository
git clone https://github.com/netresearch/t3x-nr-textdb.git
cd t3x-nr-textdb

# Install dependencies
composer install

# Start DDEV
ddev start
ddev install-v14

# Run quality checks
composer ci:test
```

**Code Standards:**

-   PSR-12 code style
-   PHPStan level 7+
-   100% test coverage for new features
-   Rector/Fractor compliance

## Acknowledgments {#acknowledgments}

Thanks to all contributors who have helped improve this extension!

**Major Contributors:**

-   Thomas Schöne
-   Axel Seemann
-   Tobias Hein
-   Rico Sonntag

**Community:**

Thanks to the TYPO3 community for feedback and bug reports.

**Netresearch DTT GmbH:**

For continued development and maintenance support.

## License {#license}

This extension is licensed under GPL-3.0-or-later.

See [LICENSE](https://github.com/netresearch/t3x-nr-textdb/blob/main/LICENSE)
file for details.
