mirror of
https://github.com/inventree/inventree-website.git
synced 2025-04-28 13:36:47 +00:00
1050 lines
84 KiB
XML
1050 lines
84 KiB
XML
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator><link href="/blog/feed.atom" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2024-09-30T09:12:39+00:00</updated><id>/blog/feed.atom</id><title type="html">InvenTree</title><subtitle>InvenTree is an open-source inventory management system which provides intuitive parts management and stock control. It is at the center of an ecosystem of addins for EDA tools, API wrapper, deeply integrated plugins and 3rd party tools.</subtitle><entry><title type="html">UI Roadmap - going 1.0</title><link href="/blog/2024/09/23/ui-roadmap" rel="alternate" type="text/html" title="UI Roadmap - going 1.0" /><published>2024-09-23T00:00:00+00:00</published><updated>2024-09-23T00:00:00+00:00</updated><id>/blog/2024/09/23/ui-roadmap</id><content type="html" xml:base="/blog/2024/09/23/ui-roadmap"><![CDATA[<p>In August 2023 we announced <a href="/blog/2023/08/28/react">in a blog post</a> that we are working on a new user interface for InvenTree. This post is a follow-up to that announcement and provides an overview of the progress we have made so far and what we are planning to do next.
|
||
The most important information for you: the next release (0.17.0) will be the last with the old interface (CUI) as the default. The new interface (PUI) will be the default starting with the 0.18.0 release.<br />
|
||
The plan is to release 1.0 once PUI has all features ported, that will probably be the release after 0.18.0. 1.0 will not include CUI or the needed front- and backend code to support it.</p>
|
||
|
||
<p>Most of this article is probably only interesting for (plugin) developers, but we hope it gives you a good overview of what is happening.</p>
|
||
|
||
<h2 id="pui--cui---a-short-overview">PUI / CUI - A short overview</h2>
|
||
|
||
<p>The new interface is called PUI (Platform User Interface) and the old one CUI (Classic User Interface). PUI is built with React and is a single-page application. CUI is built with Django templates and uses a mixture of jQuery, templated JS and some libraries.
|
||
PUI is designed to be more consistent, use the API everywhere and support better testing (end-to-end, typing). The original blog post has more information on the <a href="/blog/2023/08/28/react#design-goals">design goals</a>.</p>
|
||
|
||
<h2 id="why-remove-cui">Why remove CUI?</h2>
|
||
|
||
<p>CUI has proven to be hard to understand for new contributors and hard to maintain in a consistent quality. Some common issues like cache invalidation, inconsistent rendering and hard-to-enforce permissions are easier to solve in PUI.
|
||
Therefore 1.0 will be PUI only. The compiled javascript, CSS and html files will be removed from the repository. CUI-only endpoints/tags will also be removed. Some HTML rendering will be kept as the report/label generation uses that.</p>
|
||
|
||
<p>This will probably remove around 2k files from the repo, around 370k lines. As of writing, we have 4.4k files and 2.4M lines in the repo.</p>
|
||
|
||
<h2 id="effect-on-plugins">Effect on plugins</h2>
|
||
|
||
<p>Plugins that render into the UI will need to be updated to work with PUI. This could affect you if your plugins use the mixins <code class="language-plaintext highlighter-rouge">PanelMixin</code>, <code class="language-plaintext highlighter-rouge">SettingsContentMixin</code>, <code class="language-plaintext highlighter-rouge">NavigationMixin</code> or <code class="language-plaintext highlighter-rouge">UrlsMixin</code>. Rendering into PUI is best done with <code class="language-plaintext highlighter-rouge">UserInterfaceMixin</code> (available in 0.17.0) - which is actively expanded to support rendering more tightly integrated than <code class="language-plaintext highlighter-rouge">PanelMixin</code> and CUI. For example <a href="https://github.com/inventree/InvenTree/pull/8137">#8137</a> supports rendering custom template editors in PUI.</p>
|
||
|
||
<p>We will issue guidance regarding the transition of plugins into the new mechanisms before 1.0 goes to production.</p>
|
||
|
||
<h2 id="how-can-you-help">How can you help?</h2>
|
||
|
||
<ul>
|
||
<li>Use the new UI - if you are on the 0.16.x release train your instance should already be serving it</li>
|
||
<li>Report bugs - if you find something that is not working as expected please report it</li>
|
||
<li>Report missing features - if you are missing something from CUI please report it (we have an EPIC<a href="https://github.com/inventree/InvenTree/issues/5212"> that tracks them</a>)</li>
|
||
<li>Start looking into developing PUI and contributing - we use React and Mantine, widely used technologies</li>
|
||
<li>Support the development - we have been developing PUI for over a year with more or less 3 people. Donations could help us spend more time or awarding bounties for features/design improvements.</li>
|
||
</ul>
|
||
|
||
<h2 id="the-big-10">The big 1.0</h2>
|
||
|
||
<p>1.0 will be a big milestone for InvenTree. InvenTree has been running in the heart of many companies for years. The switch to PUI enables much safer work on the UI. The release number 1.0 signals that the last part of the system is now modernised and ready for the future. We are looking forward to it and hope you are too.</p>
|
||
|
||
<p>Switching to 1.0 will also mean that we will follow SemVer fully. Big breaking changes will only be in major releases, feature releases (1.0, 1.1, 1.2) will follow the SemVer rules. This will make it easier for some of our enterprise users who face backlash or difficulty because of the below 1.0 version number.</p>
|
||
|
||
<p>We are discussing a few more breaking changes in 1.0 - feel free to chime in on the dedicated issue <a href="https://github.com/inventree/InvenTree/issues/6417">#6417</a>.</p>]]></content><author><name>matmair</name></author><summary type="html"><![CDATA[In August 2023 we announced in a blog post that we are working on a new user interface for InvenTree. This post is a follow-up to that announcement and provides an overview of the progress we have made so far and what we are planning to do next. The most important information for you: the next release (0.17.0) will be the last with the old interface (CUI) as the default. The new interface (PUI) will be the default starting with the 0.18.0 release. The plan is to release 1.0 once PUI has all features ported, that will probably be the release after 0.18.0. 1.0 will not include CUI or the needed front- and backend code to support it.]]></summary></entry><entry><title type="html">0.16.0 Stable Release</title><link href="/blog/2024/08/25/0.16.0" rel="alternate" type="text/html" title="0.16.0 Stable Release" /><published>2024-08-25T00:00:00+00:00</published><updated>2024-08-25T00:00:00+00:00</updated><id>/blog/2024/08/25/0.16.0</id><content type="html" xml:base="/blog/2024/08/25/0.16.0"><![CDATA[<p>The InvenTree development team is pleased to announce the release of InvenTree stable version 0.16.0. This release once again includes a wide range of new features, bug fixes, and improvements. We have closed out over <a href="https://github.com/inventree/InvenTree/pulls?q=is%3Apr+is%3Aclosed+milestone%3A0.16.0">250 pull requests</a> against this release target!</p>
|
||
|
||
<h2 id="release-notes">Release Notes</h2>
|
||
|
||
<p>For a full list of changes made in this release, please see the <a href="https://github.com/inventree/InvenTree/releases/tag/0.16.0">release notes on GitHub</a>.</p>
|
||
|
||
<h2 id="breaking-changes">Breaking Changes</h2>
|
||
|
||
<p>This release includes a number of changes which adjust existing APIs and may require updates to custom code or scripts.</p>
|
||
|
||
<p>View a full list of breaking changes on our <a href="https://github.com/inventree/InvenTree/pulls?q=is%3Apr+is%3Aclosed+milestone%3A0.16.0+label%3Abreaking">GitHub page</a>.</p>
|
||
|
||
<h3 id="report-printing-refactor">Report Printing Refactor</h3>
|
||
|
||
<p>In <a href="https://github.com/inventree/InvenTree/pull/7074">PR #7074</a>, the report printing system has received a major refactor. This change has been a long time coming, and we are excited to see it finally merged into the main branch.</p>
|
||
|
||
<p>Previously, each report template type was stored in a separate database table. All reports have now been consolidated into a single table, which simplifies the codebase and makes it easier to manage report templates.</p>
|
||
|
||
<p>A similar single table has been implemented for label templates.</p>
|
||
|
||
<p>Additionally, the report template live editor has received some improvements, making it easier to create and edit report templates directly within the InvenTree interface.</p>
|
||
|
||
<p>This change has removed a number of existing API endpoints, as all report functionality is consolidated to a smaller set of API commands. Refer to the InvenTree API documentation for more information.</p>
|
||
|
||
<h3 id="attachment-refactor">Attachment Refactor</h3>
|
||
|
||
<p>In <a href="https://github.com/inventree/InvenTree/pull/7420">PR #7420</a>, all attachment tables have been consolidated into a single table. This code change results in a large number of redundant API endpoints being removed, and simplifies the codebase. As all attachments are now stored in a single table, any custom plugins which interact with attachments will need to be updated to reflect this change.</p>
|
||
|
||
<h3 id="plugin-static-file-management">Plugin Static File Management</h3>
|
||
|
||
<p>We have changed the way that static files for plugins are handled. Previously only plugins which used the “app mixin” system could include static files. Now, all plugins can include static files, which are automatically loaded by the InvenTree system.</p>
|
||
|
||
<p>Refer to <a href="https://github.com/inventree/InvenTree/pull/7763">PR #7763</a> for more information.</p>
|
||
|
||
<h3 id="plugin-api-lookup">Plugin API Lookup</h3>
|
||
|
||
<p>In <a href="https://github.com/inventree/InvenTree/pull/7224">PR #7224</a> the plugin API was changed to use the “slug” of the plugin as the primary lookup, rather than the unique ID in the database. This change simplifies the plugin API and makes it easier to manage plugins, allowing consistent access to plugin data.</p>
|
||
|
||
<h2 id="security-patches">Security Patches</h2>
|
||
|
||
<p>A number of critical security updates have been made. For a full list, refer to the <a href="https://github.com/inventree/InvenTree/pulls?q=is%3Apr+is%3Aclosed+milestone%3A0.16.0+label%3Asecurity">GitHub project page</a>.</p>
|
||
|
||
<h3 id="dependency-updates">Dependency Updates</h3>
|
||
|
||
<p>We have updated a number of dependencies to address security vulnerabilities. These updates are part of our ongoing commitment to security and privacy. While there have been a significant number of dependency updates in this release cycle, below is a list of PRs which address security vulnerabilities:</p>
|
||
|
||
<ul>
|
||
<li>https://github.com/inventree/InvenTree/pull/7839</li>
|
||
<li>https://github.com/inventree/InvenTree/pull/7827</li>
|
||
<li>https://github.com/inventree/InvenTree/pull/7620</li>
|
||
<li>https://github.com/inventree/InvenTree/pull/7430</li>
|
||
</ul>
|
||
|
||
<h3 id="2fa-login-fix">2FA Login Fix</h3>
|
||
|
||
<p>2FA authentication for the new React frontend has been fixed in <a href="https://github.com/inventree/InvenTree/pull/7469">PR #7469</a>.</p>
|
||
|
||
<h3 id="frontend-sboms">Frontend SBOMs</h3>
|
||
|
||
<p><a href="https://github.com/inventree/InvenTree/pull/7784">PR #7784</a> generates SBOMs for the frontend, providing detailed information on the dependencies used in the frontend codebase.</p>
|
||
|
||
<h2 id="new-features">New Features</h2>
|
||
|
||
<p>This has been a significant release cycle for new features, with a number of exciting additions to the InvenTree codebase. There are so many new updates here that we can’t list them all, some of the highlights include:</p>
|
||
|
||
<h3 id="user-interface-improvements">User Interface Improvements</h3>
|
||
|
||
<p>Major improvements have been made to the new React frontend, with a number of new features and enhancements. The new frontend is now the primary focus of development, and we are working to migrate all frontend code to React. From this point onwards, major bug fixes and security patches will still be applied to the old frontend, but new features will only be added to the React frontend.</p>
|
||
|
||
<h3 id="data-import--export">Data Import / Export</h3>
|
||
|
||
<p>We have been working on an entire rewrite of the data import and export system. This new system is more robust and flexible, and allows for more complex data import and export operations. This system is now live in the new React frontend, and we are excited to see it in action.</p>
|
||
|
||
<p>Future work will focus on bringing all import/export functionality across to the new system, and removing the old import/export system entirely.</p>
|
||
|
||
<h3 id="validation-plugin-enhancements">Validation Plugin Enhancements</h3>
|
||
|
||
<p>The validation plugin system has been significantly enhanced to provide greater flexibility for custom validation options.</p>
|
||
|
||
<h3 id="api-documentation">API Documentation</h3>
|
||
|
||
<p>The API documentation has been enhanced, and is now built automatically from the InvenTree codebase and included in the <a href="https://docs.inventree.org">InvenTree documentation</a>.</p>
|
||
|
||
<h2 id="bug-fixes">Bug Fixes</h2>
|
||
|
||
<p>Our commitment to bug fixes continues, with a number of issues resolved in this release cycle. For a full list of bug fixes, refer to the <a href="https://github.com/inventree/InvenTree/pulls?q=is%3Apr+is%3Aclosed+milestone%3A0.16.0+label%3Abug">GitHub project page</a>.</p>
|
||
|
||
<p>Many of these bugs have been identified and fixed by our community of users, and we are grateful for their ongoing support! If you identify a bug in InvenTree, please report it to us on our <a href="https://github.com/inventree/inventree/issues">GitHub issues page</a>.</p>
|
||
|
||
<h2 id="translation-support">Translation Support</h2>
|
||
|
||
<p>Our support for multiple languages continues to grow, and we are grateful to the many contributors who have helped us add new languages to InvenTree. To contribute to the translation effort, please refer our <a href="https://crowdin.com/project/inventree">Crowdin page</a>.</p>
|
||
|
||
<h2 id="new-contributors">New Contributors</h2>
|
||
|
||
<p>Once again, we are excited to welcome a number of new contributors to the InvenTree project. We are grateful for the time and effort that these contributors have put into the project, and we look forward to working with them in the future.</p>
|
||
|
||
<ul>
|
||
<li><a href="https://github.com/tsimonq2">@tsimonq2</a> made their first contribution in <a href="https://github.com/inventree/InvenTree/pull/6449">#6449</a></li>
|
||
<li><a href="https://github.com/zanieb">@zanieb</a> made their first contribution in <a href="https://github.com/inventree/InvenTree/pull/7317">#7317</a></li>
|
||
<li><a href="https://github.com/Gigahawk">@Gigahawk</a> made their first contribution in <a href="https://github.com/inventree/InvenTree/pull/7480">#7480</a></li>
|
||
<li><a href="https://github.com/mp-strachan">@mp-strachan</a> made their first contribution in <a href="https://github.com/inventree/InvenTree/pull/7488">#7488</a></li>
|
||
<li><a href="https://github.com/tomvaneyck">@tomvaneyck</a> made their first contribution in <a href="https://github.com/inventree/InvenTree/pull/7610">#7610</a></li>
|
||
<li><a href="https://github.com/lifeisafractal">@lifeisafractal</a> made their first contribution in <a href="https://github.com/inventree/InvenTree/pull/7651">#7651</a></li>
|
||
<li><a href="https://github.com/mredpath2">@mredpath2</a> made their first contribution in <a href="https://github.com/inventree/InvenTree/pull/7563">#7563</a></li>
|
||
<li><a href="https://github.com/medo64">@medo64</a> made their first contribution in <a href="https://github.com/inventree/InvenTree/pull/7760">#7760</a></li>
|
||
<li><a href="https://github.com/niclash">@niclash</a> made their first contribution in <a href="https://github.com/inventree/InvenTree/pull/7801">#7801</a></li>
|
||
</ul>
|
||
|
||
<p>We welcome any new contributors to the project, and we are always looking for new people to help us improve InvenTree. If you are interested in contributing to the project, please refer to our <a href="/contribute.html">Contributing Guidelines</a>.</p>
|
||
|
||
<h2 id="100-release">1.0.0 Release</h2>
|
||
|
||
<p>We continue to push hard to reach the 1.0.0 release milestone. This release will mark a significant milestone in the InvenTree project, and we are excited to see it come to fruition. Fingers crossed that the next minor release will be the last one before our 1.0.0 release!</p>
|
||
|
||
<h3 id="user-interface-improvements-1">User Interface Improvements</h3>
|
||
|
||
<p>The new React interface remains a major hurdle to overcome before the 1.0.0 release. We are working hard to migrate all frontend code to React, and would greatly appreciate any help from the community in this effort. Any assistance with frontend development, testing, or bug fixing would be greatly appreciated. Please reach out via our GitHub page if you are interested in helping out.</p>
|
||
|
||
<h2 id="support-the-project">Support the Project</h2>
|
||
|
||
<p>As always, there are many ways to support the InvenTree project!</p>
|
||
|
||
<h3 id="translation">Translation</h3>
|
||
|
||
<p>We are always looking for new translators to help us add new languages to InvenTree. If you are fluent in a language other than English, please consider contributing to our translation effort on <a href="https://crowdin.com/project/inventree">Crowdin</a>.</p>
|
||
|
||
<h3 id="code-contributions">Code Contributions</h3>
|
||
|
||
<p>We welcome code contributions from the community. If you are interested in contributing to the InvenTree codebase, please refer to our <a href="/contribute.html#code">Contributing Guidelines</a>.</p>
|
||
|
||
<h3 id="report-bugs">Report Bugs</h3>
|
||
|
||
<p>If you find a bug in InvenTree, please report it to us on our <a href="https://github.com/inventree/inventree/issuse">GitHub issues page</a>. Reporting bugs is critical to improving the software, and we appreciate any help in identifying and fixing issues.</p>
|
||
|
||
<h3 id="documentation">Documentation</h3>
|
||
|
||
<p>Documenting a large software project is a challenging and ongoing effort. If you are able to provide assistance in improving the documentation set, please consider doing so! Documentation contributions can be made on <a href="https://github.com/inventree/InvenTree/tree/master/docs">GitHub</a>.</p>
|
||
|
||
<h3 id="financial-support">Financial Support</h3>
|
||
|
||
<p>If you or your company uses InvenTree, please consider sponsoring the project to show your 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!</p>
|
||
|
||
<p>A friendly reminder that the majority of 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!</p>
|
||
|
||
<ul>
|
||
<li><a href="https://polar.sh/inventree">Polar.sh</a></li>
|
||
<li><a href="https://github.com/sponsors/inventree">GitHub</a></li>
|
||
<li><a href="https://paypal.me/inventree?locale.x=en_AU">PayPal</a></li>
|
||
</ul>
|
||
|
||
<h2 id="deploying-inventree">Deploying InvenTree</h2>
|
||
|
||
<p>If you are new to the InvenTree project, there are multiple ways to deploy InvenTree for your own use. Please refer to the <a href="/deploy.html">deployment guide</a> for more information.</p>]]></content><author><name>SchrodingersGat</name></author><summary type="html"><![CDATA[The InvenTree development team is pleased to announce the release of InvenTree stable version 0.16.0. This release once again includes a wide range of new features, bug fixes, and improvements. We have closed out over 250 pull requests against this release target!]]></summary></entry><entry><title type="html">0.15.2 Bugfix Release</title><link href="/blog/2024/05/26/0.15.2" rel="alternate" type="text/html" title="0.15.2 Bugfix Release" /><published>2024-05-26T00:00:00+00:00</published><updated>2024-05-26T00:00:00+00:00</updated><id>/blog/2024/05/26/0.15.2</id><content type="html" xml:base="/blog/2024/05/26/0.15.2"><![CDATA[<p>The InvenTree team has just released version 0.15.2 which includes a patch for a critical security vulnerability.</p>
|
||
|
||
<h2 id="security-patch">Security Patch</h2>
|
||
|
||
<p>We have fixed a critical security vulnerability in the InvenTree codebase which was identified and reported by one of our users. For more information on this security advisory, please refer to <a href="https://github.com/inventree/InvenTree/security/advisories/GHSA-2crp-q9pc-457j">GHSA-2crp-q9pc-457j</a>.</p>
|
||
|
||
<h2 id="release-notes">Release Notes</h2>
|
||
|
||
<p>Releases notes for the 0.15.2 release can be found on <a href="https://github.com/inventree/InvenTree/releases/tag/0.15.2">our GitHub page</a></p>
|
||
|
||
<h2 id="security-policy">Security Policy</h2>
|
||
|
||
<p>We take security very seriously at InvenTree. If you identify a security vulnerability in the InvenTree codebase, please report it to us immediately. You can find more information on our <a href="https://github.com/inventree/InvenTree/blob/master/SECURITY.md">security policy</a>.</p>]]></content><author><name>SchrodingersGat</name></author><summary type="html"><![CDATA[The InvenTree team has just released version 0.15.2 which includes a patch for a critical security vulnerability.]]></summary></entry><entry><title type="html">0.15.0 Stable Release</title><link href="/blog/2024/05/14/0.15.0" rel="alternate" type="text/html" title="0.15.0 Stable Release" /><published>2024-05-14T00:00:00+00:00</published><updated>2024-05-14T00:00:00+00:00</updated><id>/blog/2024/05/14/0.15.0</id><content type="html" xml:base="/blog/2024/05/14/0.15.0"><![CDATA[<p>Development on InvenTree continues at a rapid pace, and we are pleased to announce the release of InvenTree version 0.15.0. With more than 300 commits since the <a href="/blog/2024/03/02/0.14.0">0.14.0 stable release</a>, this release includes a wide range of new features, bug fixes, and improvements.</p>
|
||
|
||
<h2 id="breaking-changes">Breaking Changes</h2>
|
||
|
||
<h3 id="code-restructure">Code Restructure</h3>
|
||
|
||
<p>The code structure has been refactored to improve maintainability and readability. As we work to refactor the entire frontend interface, there is a significant split between the backend code (Python) and the frontend code (React). This refactor has been a long time coming, and we are excited to see it finally merged into the main branch.</p>
|
||
|
||
<p>The code is now split into two main directories:</p>
|
||
|
||
<ul>
|
||
<li><code class="language-plaintext highlighter-rouge">./src/backend/</code> contains all the server code (Python, Django)</li>
|
||
<li><code class="language-plaintext highlighter-rouge">./src/frontend/</code> contains all the client code (JavaScript, React)</li>
|
||
</ul>
|
||
|
||
<p>Additionally, we are working to improve the test coverage of the frontend code, and have added a number of new tests to ensure that the frontend code is as robust as possible.</p>
|
||
|
||
<p>You can read more about the code refactor in <a href="https://github.com/inventree/InvenTree/pull/5582">this PR</a>.</p>
|
||
|
||
<h2 id="security-patches">Security Patches</h2>
|
||
|
||
<p>A number of patches were applied to the InvenTree codebase to address security vulnerabilities. These updates were implemented as part of our ongoing commitment to security and privacy.</p>
|
||
|
||
<p>These patches include:</p>
|
||
|
||
<ul>
|
||
<li>Add OSSF Scorecard - <a href="https://github.com/inventree/InvenTree/pull/6769">#6769</a></li>
|
||
<li>Bump django from 4.2.10 to 4.2.11 - <a href="https://github.com/inventree/InvenTree/pull/6745">#6745</a></li>
|
||
<li>Pin hashes in requirement files <a href="https://github.com/inventree/InvenTree/pull/7081">#7081</a></li>
|
||
</ul>
|
||
|
||
<h2 id="new-features">New Features</h2>
|
||
|
||
<p>A number of significant new features and enhancements have been added in this release. Some of these new features are described below:</p>
|
||
|
||
<h3 id="template-editor">Template Editor</h3>
|
||
|
||
<p>An interactive template editor (for editing report and label templates) has been added to the React frontend. This feature allows users to create and edit templates directly within the InvenTree interface, and also provides a live preview for label and report templates.</p>
|
||
|
||
<p>This presents a significant improvement over the previous template editing process, which required users to manually edit template files in an offline editor.</p>
|
||
|
||
<p>Full details can be found in <a href="https://github.com/inventree/InvenTree/pull/6541">this PR</a>.</p>
|
||
|
||
<h3 id="backup-and-restore-functionality">Backup and Restore Functionality</h3>
|
||
|
||
<p>Backup and restore functionality has been improved by adding new command line options for the <code class="language-plaintext highlighter-rouge">backup</code> and <code class="language-plaintext highlighter-rouge">restore</code> management commands. These commands allow users greater control when creating a backup of the InvenTree database, and restoring it at a later time.</p>
|
||
|
||
<h3 id="company-active-field">Company Active Field</h3>
|
||
|
||
<p>An “active” field has been added to the Company model. This field allows users to mark a company as “active” or “inactive”, which can be useful for managing company records in InvenTree.</p>
|
||
|
||
<p>Read more in <a href="https://github.com/inventree/InvenTree/pull/7024">this PR</a>.</p>
|
||
|
||
<h2 id="react-interface-development">React Interface Development</h2>
|
||
|
||
<p>Development of the new React interface continues steadily. This is our major focus now, and we are working to migrate all frontend code to React. From this point onwards, major bug fixes and security patches will still be applied to the old frontend, but new features will only be added to the React frontend.</p>
|
||
|
||
<p>We intend to depreciate the old frontend in the future, so we encourage all users to start using the new React interface as soon as possible.</p>
|
||
|
||
<h3 id="url-redirects">URL Redirects</h3>
|
||
|
||
<p>URL redirects have been implemented in the React frontend to ensure that users are redirected to the correct page when they navigate to a specific URL. This feature improves the user experience and ensures that users are always directed to the correct page.</p>
|
||
|
||
<p>Refer to <a href="https://github.com/inventree/InvenTree/pull/6872">this PR</a>.</p>
|
||
|
||
<h3 id="login-state-management">Login State Management</h3>
|
||
|
||
<p>Login management for the React frontend has received some significant updates in <a href="https://github.com/inventree/InvenTree/pull/7158">#7158</a>. This PR improves the login state management for the React frontend, and ensures that the login state is correctly maintained across the application.</p>
|
||
|
||
<h2 id="new-language-support">New Language Support</h2>
|
||
|
||
<p>We have added translation support for the following languages.</p>
|
||
|
||
<ul>
|
||
<li>Add Latvian language in <a href="https://github.com/inventree/InvenTree/pull/6749">#6749</a></li>
|
||
</ul>
|
||
|
||
<h2 id="devops-changes">Devops Changes</h2>
|
||
|
||
<p>This release cycle has seen a focus on improving the development and testing process for InvenTree. We have updated our unit testing framework, improved our CI/CD pipeline, and made a number of other changes to improve the development process.</p>
|
||
|
||
<h3 id="code-coverage">Code Coverage</h3>
|
||
|
||
<p>We have moved our code coverage reporting to <a href="https://app.codecov.io/gh/inventree/InvenTree">codecov</a>. This change allows us to better track code coverage across the entire codebase, and ensure that we are maintaining a high level of test coverage.</p>
|
||
|
||
<h3 id="playwright-tests">Playwright Tests</h3>
|
||
|
||
<p>We now run Playwright tests in our CI pipeline. This allows us to test the frontend interface in a more automated way, and ensures that the frontend code is functioning correctly. As the React frontend makes heavy use of the InvenTree API, this testing also helps increase test coverage of the API and backend code.</p>
|
||
|
||
<h2 id="bug-fixes">Bug Fixes</h2>
|
||
|
||
<p>As always, a number of bug fixes have been implemented in this release. For a full list of the bugs squashed in this release, refer to <a href="https://github.com/inventree/InvenTree/pulls?q=is%3Apr+milestone%3A0.15.0+label%3Abug+">our GitHub page</a>.</p>
|
||
|
||
<h2 id="new-contributors">New Contributors</h2>
|
||
|
||
<p>Two new contributors have made their first contribution to the InvenTree project in this release:</p>
|
||
|
||
<ul>
|
||
<li>@XanderLuciano made their first contribution in <a href="https://github.com/inventree/InvenTree/pull/6694">#6694</a></li>
|
||
<li>@emmanuel-ferdman made their first contribution in <a href="https://github.com/inventree/InvenTree/pull/7019">#7019</a></li>
|
||
</ul>
|
||
|
||
<p>As always, we welcome new contributors to the project! If you are interested in contributing to InvenTree, whether it be code, documentation, or translations, please get in touch!</p>
|
||
|
||
<h2 id="release-notes">Release Notes</h2>
|
||
|
||
<p>For a full list of changes, please see the <a href="https://github.com/inventree/InvenTree/releases/tag/0.15.0">release notes on GitHub</a>.</p>
|
||
|
||
<h2 id="deploying-inventree">Deploying InvenTree</h2>
|
||
|
||
<p>If you are new to the InvenTree project, there are multiple ways to deploy InvenTree for your own use. Please refer to the <a href="/deploy.html">deployment guide</a> for more information.</p>]]></content><author><name>SchrodingersGat</name></author><summary type="html"><![CDATA[Development on InvenTree continues at a rapid pace, and we are pleased to announce the release of InvenTree version 0.15.0. With more than 300 commits since the 0.14.0 stable release, this release includes a wide range of new features, bug fixes, and improvements.]]></summary></entry><entry><title type="html">Docker Setup Guide</title><link href="/blog/2024/03/13/docker" rel="alternate" type="text/html" title="Docker Setup Guide" /><published>2024-03-13T00:00:00+00:00</published><updated>2024-03-13T00:00:00+00:00</updated><id>/blog/2024/03/13/docker</id><content type="html" xml:base="/blog/2024/03/13/docker"><![CDATA[<p>In this post, we will run though a tutorial for setting up InvenTree in a Docker container. We are installing a <em>stable</em> version of InvenTree, which (at the time of posting) is version 0.14.2.</p>
|
||
|
||
<h2 id="digital-ocean">Digital Ocean</h2>
|
||
|
||
<p>We will be using a Digital Ocean droplet to host our InvenTree installation. Digital Ocean provides a simple and cost-effective way to host web applications, and is a great choice for hosting InvenTree.</p>
|
||
|
||
<p>While we use Digital Ocean for this tutorial, the steps outlined here should be applicable to any cloud hosting provider.</p>
|
||
|
||
<p><em>Note: Digital Ocean is a sponsor of the InvenTree project, and provides hosting for our <a href="https://demo.inventree.org">demo server</a>. We are grateful to the Digital Ocean team for their ongoing support of the InvenTree project.</em></p>
|
||
|
||
<h2 id="inventree-in-docker">InvenTree in Docker</h2>
|
||
|
||
<p>InvenTree can be run in a Docker container, which provides a simple and consistent way to run the application. This is the recommended way to run InvenTree in a production environment, without needing to worry about the complexities of setting up all the required software dependencies.</p>
|
||
|
||
<p>Our documentation server provides the following docker guides, which are a great starting point for anyone looking to run InvenTree in a Docker container:</p>
|
||
|
||
<h3 id="docker-basics">Docker Basics</h3>
|
||
|
||
<p>The <a href="https://docs.inventree.org/en/stable/start/docker/">Docker Basics</a> guide provides a good introduction to how InvenTree works in Docker, and includes a lot of useful background information about Docker itself.</p>
|
||
|
||
<h3 id="docker-installation">Docker Installation</h3>
|
||
|
||
<p>The <a href="https://docs.inventree.org/en/stable/start/docker_install/">Docker Installation</a> guide provides a step-by-step guide to setting up a production InvenTree installation using Docker / Docker Compose.</p>
|
||
|
||
<p>In this blog post, we will follow through the steps outlined in the Docker Installation guide, to get an InvenTree installation off the ground with minimal fuss.</p>
|
||
|
||
<h2 id="docker-setup-tutorial">Docker Setup Tutorial</h2>
|
||
|
||
<h3 id="prerequisites">Prerequisites</h3>
|
||
|
||
<p>Before we start, you will need a <a href="https://www.digitalocean.com/">Digital Ocean</a> account. The following steps assume that you have created an account, and are logged in!</p>
|
||
|
||
<p>Also, if you are going to be using a custom domain name, you will need to have access to the domain name settings (e.g. via your domain registrar). <em>This is outside the scope of this tutorial, but is required if you want to access InvenTree using a custom domain name.</em></p>
|
||
|
||
<h3 id="digital-ocean-droplet">Digital Ocean Droplet</h3>
|
||
|
||
<p>First, we need to create a new Digital Ocean droplet. We will be using the <em>Docker</em> base image, which provides a simple and consistent environment for running Docker containers.</p>
|
||
|
||
<h4 id="create-droplet">Create Droplet</h4>
|
||
|
||
<p>Head to <a href="https://cloud.digitalocean.com/droplets">https://cloud.digitalocean.com/droplets</a> and click the “Create Droplet” button.</p>
|
||
|
||
<p>Choose the server region which you would like to use, and select the “Docker” base image under “Marketplace”:</p>
|
||
|
||
<p><img src="/assets/blog/docker-droplet.png" alt="Docker Droplet" /></p>
|
||
|
||
<p>Then, click the “Create Droplet” button at the bottom of the screen.</p>
|
||
|
||
<h4 id="login-to-droplet">Login to Droplet</h4>
|
||
|
||
<p>After a few moments, the droplet will be created and ready for use. Select your newly created droplet, and navigate to the “Access” tab:</p>
|
||
|
||
<p><img src="/assets/blog/docker-access.png" alt="Droplet Access" /></p>
|
||
|
||
<p>You can login to the droplet using multiple methods. Here, for simplicity, we will use the online console window. Select the “Launch Droplet Console” button to open a new window.</p>
|
||
|
||
<p>You should now be logged into the new droplet, and see the following shell prompt:</p>
|
||
|
||
<p><img src="/assets/blog/docker-login.png" alt="Droplet Console" /></p>
|
||
|
||
<h3 id="droplet-setup">Droplet Setup</h3>
|
||
|
||
<p>Before we start to setup InvenTree, we will create a new user account.</p>
|
||
|
||
<h4 id="create-user">Create User</h4>
|
||
|
||
<p>Create a new user account using the <em>adduser</em> command:</p>
|
||
|
||
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>adduser inventree
|
||
</code></pre></div></div>
|
||
|
||
<p>(run through the prompts to create a new user account).</p>
|
||
|
||
<h4 id="add-user-to-docker-group">Add User to Docker Group</h4>
|
||
|
||
<p>Add the new user to the <em>docker</em> group, so that they can run Docker commands:</p>
|
||
|
||
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>usermod <span class="nt">-aG</span> docker inventree
|
||
</code></pre></div></div>
|
||
|
||
<h4 id="change-to-inventree-user">Change to InvenTree User</h4>
|
||
|
||
<p>Switch to the new user account:</p>
|
||
|
||
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>su - inventree
|
||
<span class="nb">cd</span> ~
|
||
</code></pre></div></div>
|
||
|
||
<p>You should now be logged in as the <em>inventree</em> user, and running from the <em>/home/inventree/</em> directory.</p>
|
||
|
||
<h3 id="docker-setup">Docker Setup</h3>
|
||
|
||
<p>We will now grab the required setup files for the InvenTree Docker installation.</p>
|
||
|
||
<h4 id="download-files">Download Files</h4>
|
||
|
||
<p>The following files are required to setup InvenTree in Docker:</p>
|
||
|
||
<ul>
|
||
<li><a href="https://github.com/inventree/InvenTree/blob/master/docker/docker-compose.yml">docker-compose.yml</a> - the <em>Docker Composer</em> file which defines the InvenTree setup</li>
|
||
<li><a href="https://github.com/inventree/InvenTree/blob/master/docker/.env">.env</a> - the environment file which defines the InvenTree configuration</li>
|
||
<li><a href="https://github.com/inventree/InvenTree/blob/master/docker/Caddyfile">Caddyfile</a> - the Caddy web server configuration file</li>
|
||
</ul>
|
||
|
||
<p>These files can be downloaded directly from our <a href="https://github.com/inventree/inventree">GitHub repository</a>:</p>
|
||
|
||
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>wget https://raw.githubusercontent.com/inventree/InvenTree/master/docker/docker-compose.yml
|
||
wget https://raw.githubusercontent.com/inventree/InvenTree/master/docker/.env
|
||
wget https://raw.githubusercontent.com/inventree/InvenTree/master/docker/Caddyfile
|
||
</code></pre></div></div>
|
||
|
||
<p>You should now have the three required files located in <em>/home/inventree/</em></p>
|
||
|
||
<h4 id="configure-environment">Configure Environment</h4>
|
||
|
||
<p>Edit the <em>.env</em> file to configure the InvenTree environment. This file contains a number of settings which define the InvenTree installation.</p>
|
||
|
||
<p><em>Most</em> of these settings can remain untouched. The only setting we are going to change for this installation is the <strong>INVENTREE_SITE_URL</strong> setting. This is the URL which InvenTree will be accessed from.</p>
|
||
|
||
<p><em>Note: You can adjust other settings in the *.env</em> file now, if required. However, the defaults should be suitable for most installations, and certainly for this tutorial.*</p>
|
||
|
||
<p>In this example, we will set <strong>INVENTREE_SITE_URL</strong> to <em>https://tutorial.inventree.org</em>.</p>
|
||
|
||
<p><img src="/assets/blog/docker-env.png" alt="Environment File" /></p>
|
||
|
||
<h3 id="inventree-setup">InvenTree Setup</h3>
|
||
|
||
<p>Now, we will start the InvenTree installation. Note that we are simply following the <a href="https://docs.inventree.org/en/stable/start/docker_install/">docker setup guide</a> at this point!</p>
|
||
|
||
<h4 id="initial-database-setup">Initial Database Setup</h4>
|
||
|
||
<p>Run the following command to perform initial database setup:</p>
|
||
|
||
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker compose run <span class="nt">--rm</span> inventree-server invoke update <span class="nt">-s</span>
|
||
</code></pre></div></div>
|
||
|
||
<p>This command will create the initial InvenTree database, and run required database migrations, which will take a few minute to complete.</p>
|
||
|
||
<p>Once the process is complete, you can proceed to the next step!</p>
|
||
|
||
<h4 id="start-inventree-containers">Start InvenTree Containers</h4>
|
||
|
||
<p>The docker compose file defines the InvenTree setup, and sequences a number of containers which are required to run InvenTree. To start the InvenTree installation, run the following command:</p>
|
||
|
||
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker compose up <span class="nt">-d</span>
|
||
</code></pre></div></div>
|
||
|
||
<p>This will start the InvenTree containers in the background, and you should see a number of messages as the containers are started:</p>
|
||
|
||
<p><img src="/assets/blog/docker-compose-up.png" alt="Docker Compose" /></p>
|
||
|
||
<p>Note that you can view the status of the containers at any time using the following command:</p>
|
||
|
||
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker compose ps
|
||
</code></pre></div></div>
|
||
|
||
<p><img src="/assets/blog/docker-compose-ps.png" alt="Docker Status" /></p>
|
||
|
||
<h3 id="access-inventree">Access InvenTree</h3>
|
||
|
||
<p>InvenTree should now be running, and ready to receive requests from the configured URL (in our case, <em>https://tutorial.inventree.org</em>).</p>
|
||
|
||
<p>However, we need to ensure that the URL is correctly configured to point to the Digital Ocean droplet!</p>
|
||
|
||
<p><em>Note: If you do not have a domain name, you can use the public IP address of the Digital Ocean droplet to access InvenTree. Just remember to set that IP address to the <strong>INVENTREE_SITE_URL</strong> setting in the *.env</em> file.*</p>
|
||
|
||
<h4 id="add-domain">Add Domain</h4>
|
||
|
||
<p>Navigate to <a href="https://cloud.digitalocean.com/networking/domains">https://cloud.digitalocean.com/networking/domains</a> and add a new domain, which matches the <strong>INVENTREE_SITE_URL</strong> setting, and points to the public IP address of the Digital Ocean droplet.</p>
|
||
|
||
<p>For our setup, we only need to create a new <strong>A</strong> record (as the root domain and DNS has already been configured).</p>
|
||
|
||
<p><img src="/assets/blog/docker-a-record.png" alt="A Record" /></p>
|
||
|
||
<h4 id="chill-out">Chill Out</h4>
|
||
|
||
<p>It may take a few minutes for the DNS changes to propagate. You can check the status of the DNS changes using a tool like <a href="https://dnschecker.org/">https://dnschecker.org/</a>.</p>
|
||
|
||
<h4 id="restart-caddy">Restart Caddy</h4>
|
||
|
||
<p>Once the DNS changes have propagated, you may need to restart the Caddy web server to pick up the new domain name settings:</p>
|
||
|
||
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker compose restart inventree-proxy
|
||
</code></pre></div></div>
|
||
|
||
<h4 id="access-inventree-1">Access InvenTree</h4>
|
||
|
||
<p>You should now be able to access InvenTree using the configured domain name (e.g. <em>https://tutorial.inventree.org</em>):</p>
|
||
|
||
<p><img src="/assets/blog/docker-success.png" alt="Success" /></p>
|
||
|
||
<p>Success! You have now setup InvenTree in a Docker container, and can access the application from the configured domain name.</p>
|
||
|
||
<p>But, we’re not done yet! We need to setup some initial data in the InvenTree installation.</p>
|
||
|
||
<h3 id="setup-data">Setup Data</h3>
|
||
|
||
<p>The InvenTree installation is now running, but it is empty! We need to add some initial data to the system. We could create an admin user, add some parts, and setup some stock locations. But, let’s take a shortcut!</p>
|
||
|
||
<h4 id="demo-dataset">Demo Dataset</h4>
|
||
|
||
<p>InvenTree provides a demo dataset which can be loaded into the system to provide some initial data. This dataset includes a number of parts, stock items, and other data which can be used to explore the InvenTree system.</p>
|
||
|
||
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker compose run <span class="nt">--rm</span> inventree-server invoke setup-test <span class="nt">-i</span>
|
||
</code></pre></div></div>
|
||
|
||
<p>We should now be able to login to the InvenTree installation using the default admin user account:</p>
|
||
|
||
<ul>
|
||
<li>Username: <em>admin</em></li>
|
||
<li>Password: <em>inventree</em></li>
|
||
</ul>
|
||
|
||
<p><img src="/assets/blog/docker-in.png" alt="We are in" /></p>
|
||
|
||
<p>And, now we are in! We have successfully setup InvenTree in a Docker container, and have loaded the demo dataset to explore the system.</p>
|
||
|
||
<h3 id="conclusions">Conclusions</h3>
|
||
|
||
<p>In this tutorial, we have setup InvenTree in a Docker container, running on a Digital Ocean droplet. We have configured the InvenTree environment, and loaded the demo dataset to explore the system.</p>
|
||
|
||
<h4 id="cloud-provider">Cloud Provider</h4>
|
||
|
||
<p>We have used <a href="https://www.digitalocean.com/">Digital Ocean</a> as our cloud provider, but the steps outlined here should be applicable to any cloud hosting provider - with some tweaking!</p>
|
||
|
||
<h4 id="ssl-certificate">SSL Certificate</h4>
|
||
|
||
<p>Caddy, the proxy server used in the InvenTree Docker setup, automatically configures SSL certificates using Let’s Encrypt. This means that your InvenTree installation is automatically secured using HTTPS (and you don’t need to worry about setting up SSL certificates).</p>
|
||
|
||
<p><em>Note: There are some caveats here, you should read the <a href="https://caddyserver.com/docs/automatic-https">Caddy documentation</a>!</em></p>
|
||
|
||
<h4 id="further-reading">Further Reading</h4>
|
||
|
||
<p>This tutorial is a simple guide to getting InvenTree up and running in a Docker container. For more advanced usage, you should read the <a href="https://docs.inventree.org/en/stable/start/intro/">InvenTree Setup Guide</a> guide, which provides a lot more detail about the InvenTree Docker setup.</p>
|
||
|
||
<h4 id="project-sponsorship">Project Sponsorship</h4>
|
||
|
||
<p>InvenTree is an open-source project, and is sponsored by a number of companies and individuals. We are grateful to the Digital Ocean team for their ongoing support of the InvenTree project!</p>
|
||
|
||
<p>If you would like to sponsor the InvenTree project, please refer to our <a href="/contribute#sponsor">contribution page</a> for more information.</p>]]></content><author><name>SchrodingersGat</name></author><summary type="html"><![CDATA[In this post, we will run though a tutorial for setting up InvenTree in a Docker container. We are installing a stable version of InvenTree, which (at the time of posting) is version 0.14.2.]]></summary></entry><entry><title type="html">0.14.0 Stable Release</title><link href="/blog/2024/03/02/0.14.0" rel="alternate" type="text/html" title="0.14.0 Stable Release" /><published>2024-03-02T00:00:00+00:00</published><updated>2024-03-02T00:00:00+00:00</updated><id>/blog/2024/03/02/0.14.0</id><content type="html" xml:base="/blog/2024/03/02/0.14.0"><![CDATA[<p>The InvenTree development team is very excited to announce the latest stable release of InvenTree - v0.14.0. With ith over 200 pull requests since the <a href="/blog/2023/12/15/0.13.0">0.13.0 stable release</a>, this release once again represents a significant step forward for the project.</p>
|
||
|
||
<h2 id="breaking-changes">Breaking Changes</h2>
|
||
|
||
<p>This release includes a number of changes which may affect existing installations of InvenTree. If you are upgrading from a previous release, read the following section carefully. You should also refer to the <a href="#release-notes">release notes</a> for a full set of changes in this release.</p>
|
||
|
||
<h3 id="django-42">Django 4.2</h3>
|
||
|
||
<p>In <a href="https://github.com/inventree/InvenTree/pull/6173">PR 6173</a>, InvenTree has been updated to use Django 4.2. This is a major version update for Django, and required a number of changes to the InvenTree codebase and dependencies.</p>
|
||
|
||
<p>Most (hopefully <em>all</em>) of the required changes have been made, but there may be some edge cases which have been missed. If you encounter any issues with the Django 4.2 update, please report them on <a href="https://github.com/inventree/inventree">our github page</a>.</p>
|
||
|
||
<p>You should also refer to the <a href="https://docs.djangoproject.com/en/5.0/releases/4.2/">Django 4.2 release notes</a> for a full list of changes.</p>
|
||
|
||
<h3 id="site-access-changes">Site Access Changes</h3>
|
||
|
||
<p>Django 4.2 has introduced some changes to how cross-site protection is handled. Your existing InvenTree installation may require some changes to continue to operate as expected. In particular, the <code class="language-plaintext highlighter-rouge">CORS</code> and <code class="language-plaintext highlighter-rouge">CSRF</code> settings have been made more strict by default. Refer to the <a href="https://docs.inventree.org/en/latest/start/config/#server-access">server access configuration guide</a> for instructions on which settings will need to be updated.</p>
|
||
|
||
<h3 id="multi-site-support">Multi Site Support</h3>
|
||
|
||
<p>InvenTree has, by default, shipped with <a href="https://docs.djangoproject.com/en/4.2/ref/contrib/sites/">multi site support</a> enabled. This is an advanced django feature which 99% of users will not need, and only serves to complicate the installation process.</p>
|
||
|
||
<p>So, in <a href="https://github.com/inventree/InvenTree/pull/6390">PR 6390</a> we have disabled multi-site support by default. This should simplify the installation process for most users.</p>
|
||
|
||
<p>For any users who have been using multi-site support, you will need to manually re-enable it after upgrading to 0.14.0. Refer to the <a href="https://docs.inventree.org/en/latest/start/advanced/#multi-site-support">InvenTree documentation</a> for more information.</p>
|
||
|
||
<h3 id="test-results">Test Results</h3>
|
||
|
||
<p>InvenTree has long supported <a href="https://docs.inventree.org/en/latest/stock/test/">test results for stock items</a>. In <a href="https://github.com/inventree/InvenTree/pull/6430">PR 6430</a>, a significant enhancement was made to the test result system. Previously, test results were not linked to a specific test template in the database. Instead, the results and templates were loosely linked via a string key.</p>
|
||
|
||
<p>In 0.14.0, the test result system has been updated to use a proper database relationship between test results and test templates. This means that test results are now linked to a specific test template, and the test result system has been updated to reflect this change.</p>
|
||
|
||
<p>This change should be transparent to most users, but if you have been using the test result system in a custom way, you may need to update your code to reflect the new database structure.</p>
|
||
|
||
<p>In particular, any external systems which upload test results via the InvenTree API will need to be examined and tested. While the changes to the API have been implemented to ensure backwards compatibility with existing systems, it is possible that some edge cases have been missed.</p>
|
||
|
||
<h3 id="docker-compose">Docker Compose</h3>
|
||
|
||
<p>In <a href="https://github.com/inventree/InvenTree/pull/6551">PR 6551</a> we have made a significant change to the way that InvenTree is deployed using Docker Compose. Previously, the provided docker compose template used <a href="https://nginx.org/">nginx</a> as a reverse proxy for the InvenTree web server, and for serving static and media files.</p>
|
||
|
||
<p>In this release, we have switched to using <a href="https://caddyserver.com/">Caddy</a> as the reverse proxy. Caddy is a modern, easy-to-use web server which is designed to be simple to configure and use. It confers a number of significant advantages to the InvenTree setup:</p>
|
||
|
||
<p><strong>Simplified Configuration</strong></p>
|
||
|
||
<p>Caddy is designed to be easy to configure, and the Caddyfile syntax is much simpler than the equivalent nginx configuration.</p>
|
||
|
||
<p><strong>Automatic HTTPS</strong></p>
|
||
|
||
<p>Caddy is designed to automatically handle HTTPS certificates using <a href="https://letsencrypt.org/">Let’s Encrypt</a>. This means that InvenTree can be deployed with HTTPS enabled by default, without any additional configuration.</p>
|
||
|
||
<p>For users who have been running with the previous nginx based setup, no changes are required. Existing nginx configurations will continue to work as expected. However, for new installations, the Caddy based setup is now the recommended approach. We would also recommend that existing installations consider migrating to the Caddy based setup.</p>
|
||
|
||
<h3 id="devcontainer">Devcontainer</h3>
|
||
|
||
<p>In <a href="https://github.com/inventree/InvenTree/pull/6590">PR 6590</a> we have made some changes to our devcontainer setup in vscode. The devcontainer is a docker-based development environment which is designed to make it easy to contribute to the InvenTree project. We now use postgresql as the database backend in the devcontainer setup - previously this setup used sqlite for a local development database.</p>
|
||
|
||
<p>However, as sqlite is not suitable for a multi-user development environment, we have switched to using postgresql. This should make the devcontainer setup more closely match a production environment.</p>
|
||
|
||
<p>Users who have been using the devcontainer setup will need to update their local vscode setup. At a minimum, you will need to rebuild the devcontainer.</p>
|
||
|
||
<p>If you encounter any issues updating your devcontainer setup, try deleting the <code class="language-plaintext highlighter-rouge">dev</code> directory and re-creating the devcontainer.</p>
|
||
|
||
<h2 id="new-features">New Features</h2>
|
||
|
||
<p>A significant number of new features have been added to InvenTree in this release. Some of the highlights include:</p>
|
||
|
||
<h3 id="machine-integration">Machine Integration</h3>
|
||
|
||
<p><a href="https://github.com/inventree/InvenTree/pull/4824">PR 4824</a> provides a new machine integration system for InvenTree. This system allows InvenTree to communicate with external machines, and to track the status of those machines. This is a significant new feature which will allow InvenTree to be used in a wider range of manufacturing environments.</p>
|
||
|
||
<h3 id="tracing-support">Tracing Support</h3>
|
||
|
||
<p><a href="https://github.com/inventree/InvenTree/pull/6211">PR 6211</a> adds support for OpenTelemetry tracing. This allows InvenTree to be integrated with a wide range of tracing systems, and provides a powerful tool for monitoring and debugging InvenTree installations.</p>
|
||
|
||
<h3 id="enhanced-validation">Enhanced Validation</h3>
|
||
|
||
<p>Enhanced custom validation is implemented in <a href="https://github.com/inventree/InvenTree/pull/6410">PR 6410</a>. This addition allows for more comprehensive validation of models by integrated plugins. Refer to the <a href="https://docs.inventree.org/en/latest/extend/plugins/validation/">updated validation plugin docs</a> for more information.</p>
|
||
|
||
<h3 id="api-documentation">API Documentation</h3>
|
||
|
||
<p>Multiple PR (including <a href="https://github.com/inventree/InvenTree/pull/6319">PR 6319</a>) have been submitted to enable the generation of API documentation. This will allow for the automatic generation of API documentation, and will make it easier for developers to understand and use the InvenTree API. In fact, we now track all API changes in a <a href="https://github.com/inventree/schema/">separate repository</a>.</p>
|
||
|
||
<h3 id="plugin-error-logging">Plugin Error Logging</h3>
|
||
|
||
<p>We have improved error logging for plugin code - see <a href="https://github.com/inventree/InvenTree/pull/6455">PR 6455</a>. This will make it easier to debug issues with custom plugins.</p>
|
||
|
||
<h3 id="unit-system-updates">Unit System Updates</h3>
|
||
|
||
<p>Multiple new features have been added to the physical unit management system in InvenTree.</p>
|
||
|
||
<ul>
|
||
<li><a href="https://github.com/inventree/InvenTree/pull/6539">PR 6539</a> adds support for engineering units.</li>
|
||
<li><a href="https://github.com/inventree/InvenTree/pull/6584">PR 6584</a> adds support for temperature units.</li>
|
||
</ul>
|
||
|
||
<h3 id="and-more">And More</h3>
|
||
|
||
<p>Refer to the <a href="#release-notes">release notes</a> for a full list of changes in this release!</p>
|
||
|
||
<h2 id="react-interface">React Interface</h2>
|
||
|
||
<p>Development of the new React frontend interface continues at a rapid pace. The new interface is designed to replace the existing frontend, and will provide a modern, responsive, and fast user interface for InvenTree.</p>
|
||
|
||
<p>The new interface is not yet feature complete, but is rapidly approaching a point where it can be used for day-to-day operations. We are very excited about the new interface, and we are looking forward to sharing it with the community.</p>
|
||
|
||
<p>The new interface is enabled by default, and can be accessed by navigating to <code class="language-plaintext highlighter-rouge">/platform/</code> on your InvenTree installation. You can see it live at <a href="https://demo.inventree.org/platform/">https://demo.inventree.com/platform/</a>. If you encounter any issues with the new interface, please report them on our github page!</p>
|
||
|
||
<h3 id="developers-wanted">Developers Wanted</h3>
|
||
|
||
<p>We are looking for developers to help with the React frontend. If you are interested in contributing to the project, please get in touch! There are many outstanding issues which need to be addressed, and many would make good starter issues - perfect for new contributors!</p>
|
||
|
||
<h2 id="bug-fixes">Bug Fixes</h2>
|
||
|
||
<p>As always, this release includes a number of bug fixes and performance improvements. We would like to thank everyone who has contributed to the project by reporting issues, and by submitting pull requests to fix them.</p>
|
||
|
||
<h2 id="new-contributors">New Contributors</h2>
|
||
|
||
<p>This release has been enhanced by the contributions of many developers, and we would like to thank everyone who has contributed to the project!</p>
|
||
|
||
<p>Thanks to the following contributor who made their first contribution to the project in this release:</p>
|
||
|
||
<ul>
|
||
<li><a href="https://github.com/mcollins-DL">mcollins-DL</a></li>
|
||
</ul>
|
||
|
||
<p>Without the support of our contributors, InvenTree would not be where it is today. Thank you to everyone who has contributed to the project!</p>
|
||
|
||
<h2 id="new-languages">New Languages</h2>
|
||
|
||
<p>In this release we have added support for 1 new language:</p>
|
||
|
||
<ul>
|
||
<li>Slovak</li>
|
||
</ul>
|
||
|
||
<p>If you would like to help translate InvenTree into your language, please <a href="https://inventree.org/contribute.html#translate">read our translation guide</a>. We currently support 32 languages, but there are many more that we would like to support!</p>
|
||
|
||
<h2 id="release-notes">Release Notes</h2>
|
||
|
||
<p>For a full list of changes, please see the <a href="https://github.com/inventree/InvenTree/releases/tag/0.14.0">release notes on GitHub</a>.</p>
|
||
|
||
<h2 id="deploying-inventree">Deploying InvenTree</h2>
|
||
|
||
<p>If you are new to the InvenTree project, there are multiple ways to deploy InvenTree for your own use. Please refer to the <a href="/deploy.html">deployment guide</a> for more information.</p>]]></content><author><name>SchrodingersGat</name></author><summary type="html"><![CDATA[The InvenTree development team is very excited to announce the latest stable release of InvenTree - v0.14.0. With ith over 200 pull requests since the 0.13.0 stable release, this release once again represents a significant step forward for the project.]]></summary></entry><entry><title type="html">2023 in Review</title><link href="/blog/2024/01/13/upcoming" rel="alternate" type="text/html" title="2023 in Review" /><published>2024-01-13T00:00:00+00:00</published><updated>2024-01-13T00:00:00+00:00</updated><id>/blog/2024/01/13/upcoming</id><content type="html" xml:base="/blog/2024/01/13/upcoming"><![CDATA[<h2 id="2023-in-review">2023 in Review</h2>
|
||
|
||
<p>Once again, the InvenTree development team has had a very busy year! In 2023, we have released 3 major stable versions of the InvenTree software, with a significant number of new features and improvements. It is also worth noting that we have had a huge number of new contributors to the project, and we would like to thank everyone who has helped make this possible!</p>
|
||
|
||
<h3 id="release-milestones">Release Milestones</h3>
|
||
|
||
<p>This was a very active year for the project, especially in terms of core software development. A huge array of new features have been implemented, and significant performance improvements have been made across the board.</p>
|
||
|
||
<h4 id="0100">0.10.0</h4>
|
||
|
||
<p>In February, we released <a href="https://github.com/inventree/InvenTree/releases/tag/0.10.0">version 0.10.0</a>, with over 100 commits from 6 contributors (including 3 new contributors).</p>
|
||
|
||
<h4 id="0110">0.11.0</h4>
|
||
|
||
<p>In April, we released <a href="https://github.com/inventree/InvenTree/releases/tag/0.11.0">version 0.11.0</a>. Again, this release included contributions from 3 new developers, which was very exciting! With 142 commits to the project, this was again a significant release milestone.</p>
|
||
|
||
<h4 id="0120">0.12.0</h4>
|
||
|
||
<p>In June, we released <a href="https://github.com/inventree/InvenTree/releases/tag/0.12.0">version 0.12.0</a>. Once again, this release included contributions from 3 new developers, and included a huge number of new features and improvements. The 0.12.0 release included 237 commits from 14 contributors, making it the most significant release of InvenTree to date!</p>
|
||
|
||
<h3 id="developers">Developers</h3>
|
||
|
||
<p>We now have over 75 developers who have contributed to the project, with many new developers making their first contribution in 2023. We would like to thank everyone who has contributed to the project, and we hope to see many more developers getting involved in the future!</p>
|
||
|
||
<h3 id="translation-effort">Translation Effort</h3>
|
||
|
||
<p>The <a href="https://crowdin.com/project/inventree">language translation effort</a> continues to build momentum, with over 30 languages now supported by the project. There are also over 300 contributors to the translation effort, which is incredible! It is very exciting to see InvenTree being used by people all over the world, and working to translate it into their native language.</p>
|
||
|
||
<p>Thanks to the <a href="https://crowdin.com">crowdin project</a> which makes this possible!</p>
|
||
|
||
<h3 id="digital-ocean-sponsorship">Digital Ocean Sponsorship</h3>
|
||
|
||
<p>In 2023 we were honoured to receive a sponsorship from <a href="https://www.digitalocean.com/">Digital Ocean</a>. This sponsorship funds hosting for the InvenTree demo server instance, and we are very grateful for their support! If you are looking for a cloud hosting provider, consider using Digital Ocean.</p>
|
||
|
||
<h3 id="kicad-integration">KiCad Integration</h3>
|
||
|
||
<p>In September 2023, we were happy to announce that InvenTree can now be used as a <a href="/blog/2023/09/26/kicad.html">KiCad symbol library</a>, using a custom plugin developed by one of our users. This is a huge step forward for the project, and allows InvenTree to be used as a first-class symbol library for KiCad.</p>
|
||
|
||
<h3 id="chaos-computer-club-talk">Chaos Computer Club Talk</h3>
|
||
|
||
<p>In December, Matthias, one of our lead developers, presented a lightning talk on InvenTree at the <a href="https://events.ccc.de/congress/2023/infos/index.html">Chaos Communication Congress</a>, which received a lot of positive feedback. It was a great opportunity to showcase the project to a wider audience, and we hope to see more people getting involved in the project as a result.</p>
|
||
|
||
<p>You can view the talk online <a href="https://media.ccc.de/v/37c3-lightningtalks-58014-inventree-oss-inventory-and-plm">here</a>.</p>
|
||
|
||
<h2 id="upcoming-in-2024">Upcoming in 2024</h2>
|
||
|
||
<p>It is hard to believe that we are already in 2024! We have a lot of exciting plans for the project this year, and we are looking forward to seeing what the year brings.</p>
|
||
|
||
<h3 id="outstanding-issues">Outstanding Issues</h3>
|
||
|
||
<p>At the time of writing this blog, there are over <a href="https://github.com/inventree/InvenTree/issues">180 outstanding issues</a> in the project. This is largely due to an influx of new users, who have been reporting bugs and requesting new features. We are working hard to address these issues, and we hope to see the number of outstanding issues decrease over the coming months.</p>
|
||
|
||
<p>Attracting new developer talent to the project is a key goal for 2024, and we hope to see many new developers getting involved in the project. If you use InvenTree and would like to help out, please read our contribution guide and get in touch!</p>
|
||
|
||
<h3 id="issue-funding">Issue Funding</h3>
|
||
|
||
<p>In an effort to focus developer attention, and also potentially attract new developers to the project, we will be experimenting with a new funding model for the project. This would allow users to fund the development of specific issues, and would allow us to focus our efforts on the most important issues.</p>
|
||
|
||
<p>Moving forward, we will be tagging specific issues with a <em>funding</em> label, which will indicate that the issue is available for funding. If you would like to see a specific issue addressed, please consider funding it!</p>
|
||
|
||
<p>Funds allocated to a specific issue will be shared between the developers who work on the issue, as well as the maintainers of the InvenTree project.</p>
|
||
|
||
<p>We are making use of the <a href="https://polar.sh">polar.sh</a> platform to manage the funding process. Please note that we are not affiliated with polar.sh, we are simply using it as a tool to manage the funding process.</p>
|
||
|
||
<p>We will <em>not</em> be asking for funding for every issue, and we will continue to work on issues which are not funded!</p>
|
||
|
||
<h3 id="user-interface-refactor">User Interface Refactor</h3>
|
||
|
||
<p>We are continuing to work towards the goal of <a href="/blog/2023/08/28/react">refactoring the user interface</a>. This is a major project and will take some time to complete.</p>
|
||
|
||
<p>While the new frontend is progressing well, we would love to see more developers getting involved in the project. In particular, we are looking for support from front-end developers who have experience with React. If you would like to help out, please get in touch!</p>
|
||
|
||
<h3 id="plugin-system">Plugin System</h3>
|
||
|
||
<p>The plugin system has been a major focus of development in 2023, and we hope to see this continue in 2024. We are working towards a more flexible plugin system, which will allow for more complex plugins to be developed.</p>
|
||
|
||
<p>As more users (both individuals and businesses) start to use InvenTree, we have seen a significant increase in demand for custom plugins. In particular, we have received a lot of interest in plugins providing integration with other business / enterprise software systems. To allow this, the plugin system does need further development, and we hope to see this happen in 2024.</p>
|
||
|
||
<h3 id="documentation">Documentation</h3>
|
||
|
||
<p>The InvenTree development team is very small, and we are always looking for help with documentation. If you are able to contribute to the project by helping us with documentation, please reach out to us. Writing good quality documentation is a real skill, and just as crucial to a software project as the code itself. If you have any experience or interest in technical writing, please consider helping us out!</p>
|
||
|
||
<h2 id="sponsor-the-project">Sponsor the Project</h2>
|
||
|
||
<p>There are now many businesses (small and large) using InvenTree to support their operations. If you are using InvenTree in your business, please consider <a href="https://github.com/sponsors/inventree/">sponsoring the project</a>. The InvenTree project is maintained by developers in their “spare” time, and financial sponsorship allows us to dedicate more time to the project.</p>
|
||
|
||
<p>You can provide a one-off or monthly sponsorship, or sponsor a specific feature or plugin!</p>]]></content><author><name>SchrodingersGat</name></author><summary type="html"><![CDATA[2023 in Review]]></summary></entry><entry><title type="html">0.13.0 Stable Release</title><link href="/blog/2023/12/15/0.13.0" rel="alternate" type="text/html" title="0.13.0 Stable Release" /><published>2023-12-15T00:00:00+00:00</published><updated>2023-12-15T00:00:00+00:00</updated><id>/blog/2023/12/15/0.13.0</id><content type="html" xml:base="/blog/2023/12/15/0.13.0"><![CDATA[<p>The InvenTree development team is very excited to announce the latest stable release of InvenTree - v0.13.0. This represents the largest release of InvenTree to date, with over 450 pull requests since the <a href="/blog/2023/06/26/0.12.0">0.12.0 stable release</a>.</p>
|
||
|
||
<h2 id="new-contributors">New Contributors</h2>
|
||
|
||
<p>This release has been enhanced by the contributions of many developers, and we would like to thank everyone who has contributed to the project!</p>
|
||
|
||
<p>We have 18 developers who have made their first contribution to the project in this release! Thanks goes to:</p>
|
||
|
||
<ul>
|
||
<li><a href="https://github.com/markxoe">markzoe</a></li>
|
||
<li><a href="https://github.com/xunleii">xunleii</a></li>
|
||
<li><a href="https://github.com/RitchieP">RitchieP</a></li>
|
||
<li><a href="https://github.com/spike77453">spike77453</a></li>
|
||
<li><a href="https://github.com/xeno27">xeno27</a></li>
|
||
<li><a href="https://github.com/sebastienAPP">sebastienAPP</a></li>
|
||
<li><a href="https://github.com/ssterling">ssterling</a></li>
|
||
<li><a href="https://github.com/hvraven">hraven</a></li>
|
||
<li><a href="https://github.com/Petrox">Pterox</a></li>
|
||
<li><a href="https://github.com/saharshtapi">saharshtapi</a></li>
|
||
<li><a href="https://github.com/30350n">30350n</a></li>
|
||
<li><a href="https://github.com/Adoliin">Adoliin</a></li>
|
||
<li><a href="https://github.com/lippoliv">lippoliv</a></li>
|
||
<li><a href="https://github.com/1337joe">1337joe</a></li>
|
||
<li><a href="https://github.com/Limb">Limb</a></li>
|
||
<li><a href="https://github.com/CodingPupper3033">CodingPupper3033</a></li>
|
||
<li><a href="https://github.com/mechanarchy">mechanarchy</a></li>
|
||
<li><a href="https://github.com/afkiwers">afkiwers</a></li>
|
||
</ul>
|
||
|
||
<h2 id="new-languages">New Languages</h2>
|
||
|
||
<p>InvenTree is used by people all over the world, and we would love to see more translations of the project! If you would like to help translate InvenTree into your language, please <a href="https://inventree.org/contribute.html#translate">read our translation guide</a>. We currently support over 30 languages, but there are many more that we would like to support!</p>
|
||
|
||
<p>In this release, we have added support for 4 new languages:</p>
|
||
|
||
<ul>
|
||
<li>Bulgarian</li>
|
||
<li>Hindi</li>
|
||
<li>Serbian</li>
|
||
<li>Traditional Chinese</li>
|
||
</ul>
|
||
|
||
<p>Additionally, we have had a huge surge in community contributions for translations! There are now multiple languages with almost 100% translation coverage. Thanks to everyone who has contributed to the translation effort!</p>
|
||
|
||
<h2 id="new-features">New Features</h2>
|
||
|
||
<p>This release includes a number of major new features. Some of the highlights include:</p>
|
||
|
||
<h3 id="plugin-improvements">Plugin Improvements</h3>
|
||
|
||
<p>Multiple improvements have been made to the InvenTree plugin system:</p>
|
||
|
||
<h4 id="auto-reload">Auto Reload</h4>
|
||
|
||
<p>The plugin registry is now automatically reloaded when a new plugin is installed or updated. This means that new plugins can be installed without restarting the server. Additionally, the new reloading system ensures that the background worker thread is always running the same plugin version as the web server.</p>
|
||
|
||
<h4 id="auto-migration">Auto Migration</h4>
|
||
|
||
<p>Adds the ability to automatically run database migrations when a new plugin is installed. This allows plugins to add new database models, and automatically migrate the database when the plugin is installed.</p>
|
||
|
||
<h4 id="improved-installation">Improved Installation</h4>
|
||
|
||
<p>The plugin installation process has been improved, with handling for a number of edge cases.</p>
|
||
|
||
<h4 id="exchange-rate-plugin">Exchange Rate Plugin</h4>
|
||
|
||
<p>Exchange rate support has now been exposed to the plugin interface. This allows plugins to provide exchange rate data to the InvenTree system. The default exchange rate backend can now be overridden by a custom plugin if required.</p>
|
||
|
||
<h3 id="label-printing">Label Printing</h3>
|
||
|
||
<p>The label printing system has been improved, allowing for greater flexibility in label design. The label printing system now supports:</p>
|
||
|
||
<h4 id="multi-label-printing">Multi Label Printing</h4>
|
||
|
||
<p>The label printing system now allows for multiple labels to printed at once onto a single page. <a href="https://github.com/inventree/InvenTree/pull/5883">PR #5833</a> adds a builtin label printing plugin for printing an array of labels to PDF.</p>
|
||
|
||
<h4 id="printing-options">Printing Options</h4>
|
||
|
||
<p><a href="https://github.com/inventree/InvenTree/pull/5837">PR #5873</a> adds the ability to specify printing options at “print time”, with the options set based on the selected plugin. Extending the label printing API with dynamic options allows printing plugins to be more flexible.</p>
|
||
|
||
<h3 id="barcode-scanning">Barcode Scanning</h3>
|
||
|
||
<p>Barcode scanning support received some significant improvements in this release:</p>
|
||
|
||
<h4 id="vendor-barcode-scanning">Vendor Barcode Scanning</h4>
|
||
|
||
<p><a href="https://github.com/inventree/InvenTree/pull/5509">PR #5509</a> presents major new functionality for barcode scanning. InvenTree now supports a number of vendor barcodes. Incoming goods can be scanned directly into stock, and received against a purchase order. Read <a href="/blog/2023/10/29/barcodes">our blog post</a> for a more detailed overview of the new barcode scanning features.</p>
|
||
|
||
<h4 id="allocate-items-to-sales-order">Allocate Items to Sales Order</h4>
|
||
|
||
<p>In <a href="https://github.com/inventree/InvenTree/pull/6072">PR #6072</a> we added the ability to allocate stock items to a sales order via barcode scanning. This allows for a more streamlined workflow when picking stock items for a sales order.</p>
|
||
|
||
<h3 id="token-authentication">Token Authentication</h3>
|
||
|
||
<p>We have improved support for token based authentication. Each user can now have multiple authentication tokens, which can be used to authenticate with the InvenTree API. This allows for more fine-grained control over API access. Tokens can be revoked at any time, and have an expiry date.</p>
|
||
|
||
<h2 id="bug-fixes">Bug Fixes</h2>
|
||
|
||
<p>As well as new features, this release includes a number of bug fixes and improvements. We would like to thank everyone who has contributed to the project, and helped to identify and fix bugs! A key part of keeping InvenTree stable is the help of our users, who report bugs and help us to fix them. Please refer to GitHub for a <a href="https://github.com/inventree/InvenTree/pulls?q=is%3Apr+milestone%3A0.13.0+label%3Abug+">complete list of bugs we have squashed</a></p>
|
||
|
||
<h2 id="user-interface-refactor">User Interface Refactor</h2>
|
||
|
||
<p>We have continued to work towards the goal of <a href="/blog/2023/08/28/react">refactoring the user interface</a>. The new frontend is progressing well, and we hope to have it fully available for the next release. The new frontend is written in React, and will provide a more modern user interface for InvenTree.</p>
|
||
|
||
<p>There are still a number of features which are not yet available in the new frontend, and we are working hard to ensure that the new frontend is feature complete before we release it. Please consider contributing to the frontend development effort if you would like to help out!</p>
|
||
|
||
<h2 id="support-for-inventree">Support for InvenTree</h2>
|
||
|
||
<p>InvenTree is an open-source project, and we welcome contributions of all kinds! If you would like to support the project, please consider:</p>
|
||
|
||
<h3 id="sponsor">Sponsor</h3>
|
||
|
||
<p>You can provide support to InvenTree by <a href="https://inventree.org/contribute.html#sponsor">sponsoring the project</a>. If you use InvenTree in your business, please consider sponsoring the project to help us continue development.</p>
|
||
|
||
<h3 id="code">Code</h3>
|
||
|
||
<p>Please consider contributing to the project by <a href="https://inventree.org/contribute.html#code">submitting a pull request</a>. The InvenTree project has been receiving a lot of attention from users, and we would love to see more developers contributing to the project! There are a <a href="https://github.com/inventree/InvenTree/issues">large number of open issues</a> - if you would like to help out, please get in touch!</p>
|
||
|
||
<h2 id="release-notes">Release Notes</h2>
|
||
|
||
<p>For a full list of changes, please see the <a href="https://github.com/inventree/InvenTree/releases/tag/0.13.0">release notes on GitHub</a></p>
|
||
|
||
<h3 id="release-cycle">Release Cycle</h3>
|
||
|
||
<p>Moving forward, we will be releasing stable versions on a quicker release cycle. We hope to release a new stable version every 3 months, to keep up with the rapid development of the project. This will allow us to get new features into the hands of our users more quickly, and will also allow us to release bug fixes more quickly. Thanks to the efforts of our contributors, we have been able to significantly increase the pace of development, and we hope to continue this trend!</p>
|
||
|
||
<h2 id="deploying-inventree">Deploying InvenTree</h2>
|
||
|
||
<p>If you are new to the InvenTree project, there are multiple ways to deploy InvenTree for your own use. Please refer to the <a href="/deploy.html">deployment guide</a> for more information.</p>]]></content><author><name>SchrodingersGat</name></author><summary type="html"><![CDATA[The InvenTree development team is very excited to announce the latest stable release of InvenTree - v0.13.0. This represents the largest release of InvenTree to date, with over 450 pull requests since the 0.12.0 stable release.]]></summary></entry><entry><title type="html">Label Printing Updates</title><link href="/blog/2023/12/06/label-printing" rel="alternate" type="text/html" title="Label Printing Updates" /><published>2023-12-06T00:00:00+00:00</published><updated>2023-12-06T00:00:00+00:00</updated><id>/blog/2023/12/06/label-printing</id><content type="html" xml:base="/blog/2023/12/06/label-printing"><![CDATA[<p>Available in the upcoming 0.13.0 stable release are some significant enhancements for label printing functionality. The label printing code has received a major overhaul to allow greater flexibility for label printing plugins, and enabling new features which were not previously possible.</p>
|
||
|
||
<h3 id="label-printing-plugins">Label Printing Plugins</h3>
|
||
|
||
<p>Previously, we had separate concepts for “native label printing” and “printing via plugins”, with different software pipelines for each. This meant that:</p>
|
||
|
||
<ul>
|
||
<li>We had a lot of duplicated or inefficient code</li>
|
||
<li>External printing plugins did not have the same available features</li>
|
||
</ul>
|
||
|
||
<p>In <a href="https://github.com/inventree/InvenTree/pull/5251">#5251</a> we refactored the label printing codebase entirely, and now all label printing is handled via plugins. A builtin plugin is provided which simply renders a single label as a <code class="language-plaintext highlighter-rouge">.pdf</code> file (maintaining previous behavior).</p>
|
||
|
||
<p>The refactor also provided a number of significant improvements and new functionality:</p>
|
||
|
||
<h4 id="background-printing">Background Printing</h4>
|
||
|
||
<p>Printing plugins can run in the <em>foreground</em> - and return a <code class="language-plaintext highlighter-rouge">.pdf</code> object - or in the <em>background</em>. Background printing plugins return a response immediately (to prevent blocking of the web application) and the printing is offloaded to the background worker process. This allows flexibility to (for example) communicate with an external physical printing device.</p>
|
||
|
||
<h4 id="multiple-labels">Multiple Labels</h4>
|
||
|
||
<p>Before this refactor, plugins received each label individually, with a single “print job” being sent to the printing plugin for each selected label. This was inefficient, and also meant that the printing plugin did not have the flexibility to handle simultaneous printing of multiple labels.</p>
|
||
|
||
<p>Now, printing plugins have access to the <code class="language-plaintext highlighter-rouge">print_labels</code> method, which receives <em>all</em> labels to be printed. If desired, multiple labels could be printed together onto a single paper sheet (<em>an example of this is below</em>).</p>
|
||
|
||
<p>The default implementation of <code class="language-plaintext highlighter-rouge">print_labels</code> simply calls the existing <code class="language-plaintext highlighter-rouge">print_label</code> method in sequence for each separate label - maintaining backwards compatibility for existing plugins.</p>
|
||
|
||
<h3 id="printing-options">Printing Options</h3>
|
||
|
||
<p>In <a href="https://github.com/inventree/InvenTree/pull/5786">PR #5786</a> we introduced the concept of “printing options”. Each printing plugin can provide a set of printing options which are presented to the user before initiating label printing. This allows for greater flexibility for label printing plugins.</p>
|
||
|
||
<p>For example, these run-time options could be used to:</p>
|
||
|
||
<ul>
|
||
<li>Select paper size</li>
|
||
<li>Switch between multiple connected printers</li>
|
||
<li>Specify the number of copies of each label to print</li>
|
||
<li>etc</li>
|
||
</ul>
|
||
|
||
<h3 id="label-sheets">Label Sheets</h3>
|
||
|
||
<p>In <a href="https://github.com/inventree/InvenTree/pull/5883">PR #5883</a>, a builtin plugin was developed to print multiple labels to a single “sheet”. This could be used to print a set of labels onto a specialized label sheet with peelable labels, or just a sheet of paper where the individual labels can be cut from the sheet.</p>
|
||
|
||
<p>This plugin also provides an example of how the <a href="#printing-options">printing options</a> can be used to customize printing behavior at runtime.</p>
|
||
|
||
<h4 id="example">Example</h4>
|
||
|
||
<p>The images below demonstrate how the new label sheet plugin works.</p>
|
||
|
||
<p><strong>Select Items to Print</strong></p>
|
||
|
||
<p>Select a number of individual stock items, for which labels will be printed:</p>
|
||
|
||
<p><img src="/assets/blog/select-labels.png" alt="Select Items" /></p>
|
||
|
||
<p><strong>Label Printing Dialog</strong></p>
|
||
|
||
<p>Select the <em>InvenTree Sheet Label Printer</em> plugin:</p>
|
||
|
||
<p><img src="/assets/blog/printer-dialog.png" alt="Select printer" /></p>
|
||
|
||
<p><strong>Print Labels</strong></p>
|
||
|
||
<p>Labels are printed in a regular grid on the resulting sheet. Note that the first three cells have been skipped, as per the selected option in the printing dialog:</p>
|
||
|
||
<p><img src="/assets/blog/print-labels.png" alt="Print labels" /></p>
|
||
|
||
<h3 id="available-soon">Available Soon</h3>
|
||
|
||
<p>The new label printing features will be available in the upcoming 0.13.0 stable release. Or, available now in the master code branch!</p>]]></content><author><name>SchrodingersGat</name></author><summary type="html"><![CDATA[Available in the upcoming 0.13.0 stable release are some significant enhancements for label printing functionality. The label printing code has received a major overhaul to allow greater flexibility for label printing plugins, and enabling new features which were not previously possible.]]></summary></entry><entry><title type="html">New Barcode Features</title><link href="/blog/2023/10/29/barcodes" rel="alternate" type="text/html" title="New Barcode Features" /><published>2023-10-29T00:00:00+00:00</published><updated>2023-10-29T00:00:00+00:00</updated><id>/blog/2023/10/29/barcodes</id><content type="html" xml:base="/blog/2023/10/29/barcodes"><![CDATA[<p>Integrating barcode scanning into your InvenTree workflow can provide major efficiency improvements. To help streamline inventory management processes, the InvenTree development community has recently introduced some major new barcode features.</p>
|
||
|
||
<h3 id="barcode-workflows">Barcode Workflows</h3>
|
||
|
||
<p>To date, InvenTree has provided relatively simple “workflows” for barcode scanning. Scanning a barcode returns information about the database item associated with that barcode - such as a stock item, supplier part, purchase order, etc. This already allows users to perform many stock operations using barcode scanning - and is integrated into the native mobile app.</p>
|
||
|
||
<p>Recent updates (such as <a href="https://github.com/inventree/InvenTree/pull/5509">this pull request</a>) have started to introduce more complex barcode workflows, which will allow for context sensitive barcode actions.</p>
|
||
|
||
<h3 id="ecia-barcodes-for-purchase-orders">ECIA Barcodes for Purchase Orders</h3>
|
||
|
||
<p>Many electronics manufacturers provide data-rich barcodes on items received against incoming purchase orders. The <em>Electronics Component Industry Association</em> (ECIA) has developed a <a href="https://ecia.identificationlabs.com">2D barcode standard</a> which is now implemented by a number of major electronics suppliers.</p>
|
||
|
||
<p>Purchase orders line items received from these suppliers are often provided with comprehensive barcodes, such as the example below, from Digikey:</p>
|
||
|
||
<p><img src="/assets/blog/digikey-barcode.png" alt="Digikey Barcode" /></p>
|
||
|
||
<p>This 2D barcode contains the following data fields (and other information):</p>
|
||
|
||
<ul>
|
||
<li>Purchase order reference</li>
|
||
<li>Manufacturer part number (MPN)</li>
|
||
<li>Digikey part number</li>
|
||
<li>Item quantity</li>
|
||
</ul>
|
||
|
||
<p>These data are sufficient to receive stock items into the InvenTree database with a simple barcode scan. By matching against an open purchase order, and finding the right line item, the item can be marked as <em>received</em> without any manual data entry on the part of the user. A data-driven automated barcode workflow can also reduce data entry errors.</p>
|
||
|
||
<p>To capitalize on this available data, InvenTree now supports scan-in of items received against purchase orders, from suppliers who support ECIA barcodes. A new barcode scan API endpoint is provided which handles all of the back-end operations.</p>
|
||
|
||
<p>Currently, the following suppliers are supported:</p>
|
||
|
||
<ul>
|
||
<li>Digikey</li>
|
||
<li>Mouser</li>
|
||
<li>LCSC</li>
|
||
<li>TME</li>
|
||
</ul>
|
||
|
||
<p>This functionality will be available in the upcoming <code class="language-plaintext highlighter-rouge">0.13.0</code> stable release.</p>
|
||
|
||
<h4 id="app-integration">App Integration</h4>
|
||
|
||
<p>The new purchase order barcode functionality is supported by the <a href="/extend/app.html">InvenTree mobile app</a>:</p>
|
||
|
||
<p><img src="/assets/blog/barcode_po_actions.png" alt="App barcode support" /></p>
|
||
|
||
<h4 id="web-integration">Web Integration</h4>
|
||
|
||
<p>We are working on integration into the web interface as part of our <a href="https://github.com/inventree/InvenTree/issues/5212">move to react</a></p>
|
||
|
||
<h4 id="further-workflows">Further Workflows</h4>
|
||
|
||
<p>Other advanced barcode workflows are also planned for future development, particularly around build orders and sales orders.</p>
|
||
|
||
<p>Note that barcodes functionality can also be extended by plugins as required, for custom integrations or features.</p>
|
||
|
||
<h3 id="app-barcode-scanner-support">App Barcode Scanner Support</h3>
|
||
|
||
<p>To further improve barcode support, the mobile app has been updated to work with external barcode scanners (in addition to providing barcode scanning using the internal camera). The new scanner support provides <a href="https://github.com/inventree/inventree-app/pull/437">keyboard wedge scanning</a>, which means that it can interface with any barcode scanners which act as virtual keyboards.</p>
|
||
|
||
<p>In addition to working with external bluetooth scanners, this means that the app is now supported on barcode scanners which natively run android:</p>
|
||
|
||
<p><img src="/assets/blog/barcode_scanner.jpeg" alt="Barcode scanner" /></p>
|
||
|
||
<p>Any scanner which supports <em>wedge</em> or <em>keyboard</em> mode should now be able to integrate seamlessly with the InvenTree app.</p>
|
||
|
||
<h3 id="acknowledgements">Acknowledgements</h3>
|
||
|
||
<p>We would particularly like to acknowledge the superb contributions of <a href="https://github.com/30350n">Bobbe</a> who was instrumental in developing these new barcode features and mobile app integration. The InvenTree community continues to help us develop the software into a more functional and feature-packed product!</p>]]></content><author><name>SchrodingersGat</name></author><summary type="html"><![CDATA[Integrating barcode scanning into your InvenTree workflow can provide major efficiency improvements. To help streamline inventory management processes, the InvenTree development community has recently introduced some major new barcode features.]]></summary></entry></feed> |