18 KiB
author, title
author | title |
---|---|
SchrodingersGat | 1.0.0 Release |
1.0.0 Release
The 1.0.0 release marks a major milestone for the InvenTree project. Not only does it represent an important step in the evolution of the software, but it also introduces a host of new features and improvements that enhance the user experience.
This release includes significant updates to the user interface, performance optimizations, and a range of new functionalities that have been requested by our community.
With over 550 closed issues, this release is a testament to the hard work and dedication of our contributors. We are excited to see how these changes will benefit users and help them manage their inventories more effectively.
Changelog
For a full list of changes made in this release, please see the release notes on GitHub. The major changes are documented below, but there are many other improvements and bug fixes that have been implemented as well.
You can also view a full changelog between 0.17.0 and 1.0.0
Update Procedure
To update to the latest version of InvenTree, please follow the updating instructions provided in the InvenTree documentation. Note that the particular update procedure may vary depending on your installation method.
Breaking Changes
User Interface Overhaul
By far the largest change introduced in this release is the new user interface. The UI has been completely refactored to use a modern javascript / React framework, which allows for a more responsive and dynamic user experience. This change not only improves the performance of the application but also makes it easier to maintain and extend in the future.
The new UI is now available at the /web/
endpoint - and the old UI has been removed entirely.
Note that old URLs have been remapped to the new UI, so users should not experience any issues with bookmarks or links that point to the old interface.
The general "look and feel" of the InvenTree UI remains consistent with previous versions, but the underlying technology has been updated to provide a more robust and flexible foundation for future development.
While we have made every effort to ensure that the new UI is compatible with existing data and functionality, there may be some edge cases where users encounter issues. We encourage users to report any problems they encounter so that we can address them promptly. In particular, if there are any features that are missing or not functioning as expected, please let us know via GitHub issues.
Plugin System Enhancements
The plugin system has received significat attention in this release. In particular, the plugin system now provides a mechanism for plugins to render their own user interface componenents within the new UI framework.
To this end, we have released an npm package that provides an interface layer for plugins looking to render custom components within the InvenTree UI.
Additionally, we now have a plugin creation tool which allows users to quickly scaffold InvenTree plugins.
User Interface Plugins
This change may require some adjustments for users who have customized their InvenTree installation, particularly if they have created custom templates or plugins that rely on the old UI structure.
Any plugins which have not been updated to work with the new UI will not function correctly, and will need to be adjusted to work with the new interface. This is after we removed the old PanelMixin class. This means that any plugins which inherit from the PanelMixin class will now throw an error when loaded.
The new UI plugin system provides a significant amount of context information to the plugins at render time. This means that plugins can now access information about the current user, the current page, and other relevant data when rendering their components.
Additionally, the plugins can access the API directly from the UI, allowing for more dynamic interactions and data retrieval, without the plugin needing to authenticate separately.
This plugin context system was introduced in #9439, but further additions and improvements have been made in subsequent pull requests.
The @inventreedb/ui npm package provides full type definitions for the plugin context, making it easier for developers to create plugins that integrate seamlessly with the new UI.
Further, the npm package provieds a set of pre-defined react components which can be reused by plugins.
Scaffolding a UI plugin from scratch represents a significant amount of work, so we have created a plugin creation tool which generates all of the necessary boilerplate code to get started quickly. This tool can be used to create a new plugin that is ready to be extended with custom functionality.
To integrate seamlessly with the UI, plugin developers should be aware that some core libraries (such as react / mantine / lingui) must be externalized, as they are already provided by the InvenTree UI. This means that plugins should not include their own versions of these libraries, as this can lead to conflicts and unexpected behavior.
Note that this is all handled automatically by the plugin creation tool, so developers should not need to worry about this unless they are creating plugins manually.
Builtin Plugins
The InvenTree project now includes a number of builtin plugins that provide additional functionality and features. These plugins are designed to work seamlessly with the new UI and provide a range of enhancements to the core InvenTree functionality.
Some of these plugins are mandatory - as they are required for the core functionality of InvenTree. These mandatory plugins are installed automatically when InvenTree is installed, and cannot be disabled.
Docker Changes
We have updated the supported postgres version in our docker image from version 13 to version 17.
For new installations, this should not cause any issues, as the docker image will automatically pull the latest version of postgres.
For existing installations, this will only make a difference if you wish to update your existing database. Note that our docker image will still support connection to older versions of postgres, so users can continue to use their existing database without any issues.
API Changes
There have been a significant number of changes to the InvenTree API in this release, although the majority of these changes are backwards compatible.
All API changes are documented in the source code, and users can refer to this file to see the specific changes that have been made.
Additionally, the API schema is documented and provides a comprehensive overview of the available endpoints and their parameters.
Auth Changes
We have refactored our authentication framework significantly, both to support the new UI and also to align with modern best practices.
These changes should not affect most users, as we have endeavored to maintain compatibility with existing authentication methods. However, users who have implemented custom authentication mechanisms may need to review their code to ensure compatibility with the new framework.
In particular we have updated our django-allauth framework to align with changes to that library.
Bulk Update Mixin
In PR #9313 we introduced a "BulkUpdateMixin" class which allows some API endpoints to support bulk updates. This mixin can be used to extend existing API endpoints to allow for bulk updates of objects, which can significantly improve performance when updating large datasets.
Part Scheduling
The existing "Part Scheduling" feature has been removed in this release, and replaced with a plugin-based solution. This change was made to allow for greater flexibility and customization of the scheduling functionality, as well as to improve performance and maintainability.
Refer to the InvenTree Stock Forecasting plugin to replace the old part scheduling functionality.
Auto-Create Child Builds
The "auto-creation of child builds" feature has been removed from the core functionality, as it was not configurable and too narrowly scoped to be useful for most users. This feature has been replaced with a more flexible plugin-based solution, which allows users to create custom logic for automatically creating child builds based on their specific requirements.
Refer to PR #9574 for more information.
Remove django-import-export
In #8685 we removed the django-import-export framework, which is what was previously used for data import and export. This has been replaced with a custom API driven solution which is more flexible and easier to use. Our new framework runs in the background worker, allowing for processing of large datasets without blocking the user interface (or causing the web server to timeout).
New Features / Improvements
There are a number of new features and improvements in this release, many of which have been requested by our community. Some of the most notable changes include:
Performance Improvements
We have made significant performance improvements across the board, particularly in areas such as data loading and rendering. The new UI framework is designed to be more efficient, which should result in a smoother experience for users, especially when dealing with large datasets.
The API has also been optimized to reduce response times and improve overall performance.
Dashboard
The new user interface now includes a customizable dashboard that allows users to add, remove, and rearrange widgets according to their preferences. This feature provides a more personalized experience and enables users to focus on the information that is most relevant to them.
This dashboard can be extended with custom widgets provided by plugins, allowing for even greater flexibility and customization.
Data Import and Export
Our data import and export framework has been completely rewritten, and replaced with a custom API driven solution.
Order Calendar Views
We have reimplemented calendar views for purchase orders, sales orders, and build orders. These calendar views allow users to see their orders in a calendar format, making it easier to visualize and manage their order schedules.
Email Enhancements
PR #9608 enhances email support capabilities, including plugin support for sending and receiving emails.
Order Start Dates
In #PR 8966 we introduced a new "start date" field for purchase orders and sales orders. This field allows users to specify the date when the order is expected to start processing, which can be useful for planning and scheduling purposes. In #8915 the "start date" field was also added for build orders.
Reporting Printing
Printing of reports and labels is now offloaded to the background worker, allowing for more efficient processing of large reports without blocking the user interface. This change also introduces progress tracking for report generation, so users can see the status of their report as it is being generated.
Additionally, reports and labels can now be generated programatically from plugins, allowing for greater flexibility and customization of report generation.
Report Merging
PR #9532 introduces a new feature that allows users to merge multiple items into a single report. When generating reports against multiple items, users can now select to render the report as a single document, rather than generating separate reports for each item.
This is selected as an option against a particular report template. Note that it requires the report template to be designed to support merging, as not all templates will be suitable for this feature.
Part Parameter Tracking
PR #10023 tracks the user who last modified a part parameter, and when it was last modified. This change provides greater visibility into changes made to part parameters.
External Build Orders
In PR #9312 we introduced support for external build orders, allowing users to manage build orders that are fulfilled by external suppliers. This feature is particularly useful for users who need to manage builds that are outsourced to third-party manufacturers or suppliers.
BOM Enhancements
Added support for greater flexibility in managing Bills of Materials (BOMs) - refer to #10042 for details.
Serial Number Navigation
PR #9505 adds the ability to navigate between serial numbers in the user interface.
Bug Fixes
There have been a significant number of bug fixes in this release, with over 150 tagged PRs.
Note that many of these bug fixes are related to implementation of the new interface, and may not represent issues present in previous versions of the InvenTree software.
Contributing
As always, we would like to extend our heartfelt thanks to all of the contributors who have worked tirelessly to make this release possible. The InvenTree project is a community-driven effort, and it is only through the contributions of our users that we are able to continue improving and evolving the software.
There are now over 100 contributors to the InvenTree project, and we are grateful for each and every one of you. Whether you have contributed code, reported bugs, provided feedback, or simply used the software, your support is invaluable to us.
New Contributors
The following developers made their first contributions to the InvenTree project in this release:
- @gunstr made their first contribution in https://github.com/inventree/InvenTree/pull/9274
- @reilly-callaway made their first contribution in https://github.com/inventree/InvenTree/pull/9575
- @aluminum-ice made their first contribution in https://github.com/inventree/InvenTree/pull/9638
- @cbenhagen made their first contribution in https://github.com/inventree/InvenTree/pull/9641
- @GoryMoon made their first contribution in https://github.com/inventree/InvenTree/pull/9704
- @willbicks made their first contribution in https://github.com/inventree/InvenTree/pull/9655
- @gitbock made their first contribution in https://github.com/inventree/InvenTree/pull/9775
- @RedEchidnaUK made their first contribution in https://github.com/inventree/InvenTree/pull/9400
- @tristanle22 made their first contribution in https://github.com/inventree/InvenTree/pull/9532
- @sufyan-mukadam made their first contribution in https://github.com/inventree/InvenTree/pull/9673
Translation
Our translation efforts continue to grow, with coverage increasing across a wide range of languages. We are grateful to all of our translators who have contributed to making InvenTree accessible to users around the world.
If you are interested in contributing to the translation efforts, please visit our Crowdin project and join the community of translators.
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.
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.
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.
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!
If you are using InvenTree in a commercial setting, please consider sponsoring the project to help support ongoing development and maintenance. Your support is greatly appreciated and helps to ensure that InvenTree remains a viable and sustainable project for years to come.
Future Plans
Our focus over the last year has been on the new user interface, and we are excited to see it finally come to fruition in this release. However, there is still much work to be done, and we have a number of plans for future development.
Check out our GitHub issues page for a list of outstanding issues and feature requests. We are always looking for help to improve the project, and we welcome contributions from the community.