go back Back

0.17.0 Stable Release

17 Dec 2024 Oliver

The InvenTree team is proud to announce the release of InvenTree version 0.17.0! This is the most significant release of InvenTree to date, with a huge number of new features, bug fixes, and improvements. We have closed out over 400 pull requests against this release milestone, and received contributions from multiple developers including seven new contributors.

Release Notes

For a full list of changes made in this release, please see the release notes on GitHub.

Breaking Changes

The following “breaking” changes have been made in this release. Some of these changes will require manual intervention if you are upgrading from a previous version of InvenTree.

Some changes to the underlying Django project have changed the way that samesite cookies are handled. This change illuminated an issue with the way that InvenTree was handling cookies, and this has been fixed in this release.

For existing installs, this change may require intervention from a system administrator to ensure that cookies are handled correctly. Refer to the pull request for further guidance.

Background Worker and Global Cache

The background worker process is now forced to use a single worker thread if global caching (i.e. via Redis) is not enabled. This is to prevent multiple background workers from running concurrently and causing issues with the background task queue. This prevents issues with undefined behavior due to race conditions, but may come with a performance penalty for some installations. Refer to the pull request for further details.

Test Statistics

The “Test Statistics” panel has now been removed from the core InvenTree code, and is now available as a separate plugin. This change was made to reduce the complexity of the core InvenTree codebase, and to allow for more flexibility in the way that plugins are managed. Refer to the pull request for more information.

Plugin Installation Improvements

PR 8503 provides a significant improvement to how plugin installation is synchronized when running InvenTree as a containerized application. Additional checksums are now used to ensure that the plugin installation process is more robust. While this change should be transparent to most users, it is a significant change to the way that plugins are installed and managed.

Security Patches

The following security patches have been applied in this release:

Dependency Updates

A number of core dependencies have been updated to the latest versions to ensure that InvenTree is running the most secure versions of the software. This includes updates to the Django framework, as well as other core dependencies.

XSS Vulnerability via Malicious Barcodes

PR 8286 fixes an issue where a malicious user could craft a custom barcode which could be used to execute a cross-site scripting (XSS) attack. This fix ensures that barcodes are correctly sanitized before being rendered in the InvenTree UI.

All Security Patches

Refer to our GitHub page for a complete list of security patches in this release.

Bug Fixes

Null Location

PR 8565 ensures that the location field of a StockItem is nullified when the item is consumed by a build order or shipped to a customer.

Chinese Language Support

PR 7878 fixes an issue with the Chinese language support in InvenTree.

Part Pricing Fix

PR 8090 fixes a bug which prevented automatic updates of part pricing calculations from working correctly.

Other Bug Fixes

Refer to our GitHub page for a complete list of bug fixes in this release.

New Features

Some of the headline features in this release include:

Order Hold

In PR 7807 we added the ability to mark orders as on hold. This additional status enhances the flexibility of the order management system in InvenTree.

Testable Parts

PR 7888 allows parts to be independently marked as testable. Parts with this flag can have tests associated with them, and can be tested as part of the build process. Note that this flag was previously inherent to the trackable flag, which also allowed parts to be allocated with a serial number. This change separates the two flags, allowing for more flexibility in the way that parts are managed.

User Defined States

Custom “states” can now be defined for a number of different objects in InvenTree. This feature was added in PR 7862 and allows for user defined states to be used in place of some of the default object states. This will open up new possibilities for customizing the way that InvenTree is used.

Sales Order Shipments

We have had a major overhaul in how sales order shipments are managed. When allocating stock against a sales order, the allocation no longer needs to point to a particular shipment. Additionally, the new user interface provides a detailed view for each shipment.

Date Filtering

PR 8544 implements API support for date filtering against different endpoints, in addition to UI elements for the new React interface.

Failed Task Logging

Background task failures are now logged to the database, ensuring that administrators can track the status of background tasks more effectively. This feature was added in PR 8333

Dashboard

The new user interface now supports a configurable dashboard, with multiple widgets that can be added, removed, and re-arranged. This feature was added in PR 8278, and also allows plugins to define custom widgets which can be added to the dashboard.

Translations

The InvenTree translation project has now received contributions from over 450 community members! This is a phenomenal achievement, and we are grateful to all of our contributors who have helped to make InvenTree available in multiple languages.

New Contributors

As always, we are grateful to all of our contributors who have helped to make this release possible. In particular, we would like to thank the following new contributors:

1.0.0 Release Target

This release marks our last minor release before our 1.0.0 release target. In the coming months we will be making some major changes to the InvenTree codebase to prepare for the 1.0.0 release. In particular, this will include a major overhaul of the frontend codebase - you can read more about that here.

Our major immediate goals for the project are to ensure that the new user interface is feature complete. This will include ensuring that all existing features are available in the new UI, and that the new UI is fully functional.

Support the Project

InvenTree is an open-source project, and we rely on the support of our community to keep the project running. There are many ways that you can support the project, including:

Code Contributions

Check out our GitHub page for a list of outstanding issues and feature requests. If you are a developer, you can help to contribute to the project by submitting a pull request.

In particular, we are looking for assistance with frontend development, as we work to complete the new user interface and improve the overall UI/UX of the project.

Documentation / Technical Writing

If you have experience with technical writing, you can help to improve the InvenTree documentation. We are always looking for help to improve the documentation and make it more accessible to new users.

Translation

We are always looking for help with translations. If you are fluent in a language other than English, you can help to translate InvenTree into your language. Checkout our Crowdin project to get started.

Report Bugs

If you encounter a bug in InvenTree, please report it on our GitHub issues page. Please ensure that you provide as much information as possible to help us diagnose and fix the issue.

Financial Support

Sponsorships help to keep this project sustainable, and buys time for the core developers to commit to the project. A recurring or one off sponsorship is a great way to help InvenTree development to continue at full steam!

The work undertaken to keep InvenTree running is done by a very small group of core developers, who do so in their spare time (and are not sponsored by their employers to work on InvenTree). If you benefit from the InvenTree project, please consider contributing to maintain vibrant development of this software!