GitHub
04/10/2026, 11:16 PMlatest* tags on Docker Hub, which inadvertently were reverted to use Meltano v3 with the v3.9.2 release and now run on v4 again.
• Miscellaneous improvements to the State Backend interface.
---
✨ New
• #9948 Create .gitignore automatically in the .meltano directory
• #9946 Avoid setting a global UV_NO_CACHE=1 in the Docker image
• #9901 Add CACHEDIR.TAG file automatically to .meltano directory
• #9849 Show required setting indicators in meltano config list -- Thanks @mahangu!
• #9843 Print stderr from extractor's discover call at default log level -- Thanks @mahangu!
• #9822 Added StateStoreManager.migrate() interface which state backend implementations can override to provide a state migration mechanism
• #9819 Make StateStoreManager a context manager with a default no-op .close() method
🐛 Fixes
• #9949 Avoid emitting an Unknown setting ... warning when setting a nested "extra" setting like _metadata.*.replication-method
• #9922 Do not swallow state backend persistence errors in BookmarkWriter -- Thanks @awohletz-pm!
• #9921 Update the type annotation of retry_seconds in the state backend acquire_lock method to allow float values
• #9877 Add warning when using ephemeral state ID in el/elt commands -- Thanks @stbiadmin!
• #9858 Do not disable existing loggers when passing logging configuration to SDK-based plugins
• #9825 Drop None values coming from .env -- Thanks @RamiNoodle733!
• #9804 Make meltano state set --input-file ... work with click 8.1
⚙️ Under the Hood
• #9936 Updated some plugin-related types
• #9909 Centralize virtualenv management into a new VirtualEnvService and delegate to VenvBackend implementations
• Move logging frame number to constants _FRAMES_DEBUG and _FRAMES_DEFAULT
• #9883 Use ProjectDirsService in all remaining places
• #9880 Ensure custom click.ParamType implementations correctly override their parent methods
• #9879 Added reason keyword argument to PluginInstaller callable protocol
• #9870 Add more type-annotations for SettingDefinition attributes
• #9841 Use Project.dirs API in more places
• #9840 Use the --clear flag of virtualenv and uv to recreate the venv instead of removing it preemptively
• #9817 Bump Ruff to 0.15 and update code to the 2026 style guide
📚 Documentation Improvements
• #9939 Fixed some broken links in the environments page
• #9906 Added examples for overriding key-properties and replication-key in metadata -- Thanks @alexchenai!
• #9908 Update our AI guidelines
• Hide video links since they are no longer available
• #9868 Use uv in the "complete tutorial"
• #9860 Add architecture diagram to docs home page
• #9855 Fix broken image link.
• #9856 Fix copyright and images in footer
• #9468 Updated production.md to reflect it is not possible to set Airflow's core.executor configuration value with meltano config set -- Thanks @Rodeoclash!
• #9839 Add a section about AI coding agents to the contribution guide
• #9833 Fix typo 'the the' -> 'the' in manifest.py docstring -- Thanks @RamiNoodle733!
• #9827 Fix typos in DataHub tutorial documentation -- Thanks @RamiNoodle733!
📦 Packaging changes
• #9887 Allow virtualenv 21
• #9854 Require click 8.2.0+
• #9823 Remove upper constraint for uv dependency
• #9806 Bump upper constraint for boto3 in the S3 state backend extension
meltano/meltano