What's Changed
Breaking Changes
- feat(backend): switch to a more formal FSM approach by @matmair in #12507
- feat(backend): rename filter by @matmair in #12672
- [Refactor] Notes by @SchrodingersGat in #11971
- feat(backend): switch API token storage to hmac digest by @matmair in #12850
Security Patches
- Strip potentially dangerous tags from SVG files by @SchrodingersGat in #12687
- User permissions check for Attachment API by @SchrodingersGat in #12689
- SSO e2e testing by @SchrodingersGat in #12739
- feat(backend): add SCIM for user provisioning by @matmair in #12713
- Permissions fix for Calendar views by @SchrodingersGat in #12764
- Fix permissions for SelectionList by @SchrodingersGat in #12763
- [bug] API permission fixes: by @SchrodingersGat in #12766
- Metadata fix by @SchrodingersGat in #12771
- feat: warn about unsafe CORS by @matmair in #12773
- Prevent delete operation on /api/user/me/ by @SchrodingersGat in #12770
- feat(backend): enable OIDC/oAuth2 provider by default by @matmair in #12731
- feat(frontend): add SAML helper by @matmair in #12799
- [bug] Prevent editing of model-type for data import by @SchrodingersGat in #12809
- harden install steps by @matmair in #12819
- API permission tweaks by @SchrodingersGat in #12886
- Use django function for secret_key generation by @SchrodingersGat in #12999
- More robust HTML sanitizing in reports by @SchrodingersGat in #12997
- Check user permissions before locating stock by @SchrodingersGat in #13000
Database Changes
- [bug] Fix FK reference issue when deleting user by @SchrodingersGat in #12675
- Fix table migration by @SchrodingersGat in #12697
- Migration fix by @SchrodingersGat in #12808
- Shipment contact info by @SchrodingersGat in #13016
New Features
- Allow bulk-edit for ReturnOrderLineItem by @SchrodingersGat in #12635
- feat: add piece_count and piece_size fields to BomItem for cut-to-length parts by @amanjain57-gif in #12422
- feat(frontend): Add persistant filtered detail navigation in the url by @Jr-kenny in #12585
- [FR] add well-known mixin to let plugins define well-known urls by @matmair in #12698
- (feature): docker health checks by @getpwnam in #12124
- Adds bulk-import option for "import-records" task by @SchrodingersGat in #12792
- Add owner field to stock location create/edit form by @wyyd-yxc in #12826
- Add user option to rotate table column headers by @wyyd-yxc in #12837
- feat: Add facility to completely hide parts of the interface by @matmair in #12842
- Global batch code by @SchrodingersGat in #12912
- Background Task Features by @SchrodingersGat in #12913
- Default receive location by @SchrodingersGat in #12911
- feat: add plugin support for custom page integration by @psxjt5 in #12900
- fix(notifications): translate notification emails and messages into recipient user locale (#11408) by @xyz-is-best in #12944
- feat(frontend): optional nav tree sidebyside by @matmair in #12974
- Plugin reload limitations by @SchrodingersGat in #13007
- feat: Add First Time User Guide and tipp backend data structure by @matmair in #12978
Bug Fixes
- Fix for API exception_handler by @SchrodingersGat in #12604
- [bug] Handle duplicate email addresses for magic links by @SchrodingersGat in #12621
- fix: support UUID notification references by @FurinaDog in #12616
- [bug] OptionalField race condition by @SchrodingersGat in #12627
- reset errors on update by @ribsey in #12550
- [bug] Fix ReturnOrder event registration by @SchrodingersGat in #12633
- [bug] Fix broken user setting by @SchrodingersGat in #12638
- Improve error handling for unit registry by @SchrodingersGat in #12643
- fix: trigger pricing recalculation when SupplierPart pack_quantity changes by @amanjain57-gif in #12421
- Fix 500 errors for transitions by @SchrodingersGat in #12678
- [bug] Fix broken build complete transition by @SchrodingersGat in #12696
- fix: support direct URL navigation for plugin properties. by @psxjt5 in #12703
- Bug fix for APISearchView by @SchrodingersGat in #12707
- [UI] PO Receive bug by @SchrodingersGat in #12709
- Fix race condition for take_stock method by @SchrodingersGat in #12718
- Fix Issue 9426 by @Alonso-Lopez-1 in #12720
- Stock location fix by @SchrodingersGat in #12742
- Notification fix by @SchrodingersGat in #12744
- [UI] Fix useReceiveLineItems bug by @SchrodingersGat in #12756
- [UI] Fixes for column resizing by @SchrodingersGat in #12755
- Fix order allocation variant validation logic and serializer read_only_fields by @bhumin18 in #12738
- Handle missing record in after_delete_supplier_part by @SchrodingersGat in #12772
- Ignore 'piece_count' if default value by @SchrodingersGat in #12781
- BOM Validation Improvements by @SchrodingersGat in #12780
- Refactor part pricing updates by @SchrodingersGat in #12787
- Exception handling for data outputs by @SchrodingersGat in #12797
- Plugin load fix by @SchrodingersGat in #12776
- [bug] Plugin fix by @SchrodingersGat in #12805
- [bug] Fix for recursive custom units by @SchrodingersGat in #12815
- [UI] Bug fix for duplicating purchase order line item by @SchrodingersGat in #12822
- Switch installer source; fix package install by @matmair in #12824
- Bug fixes for Note model by @SchrodingersGat in #12835
- Fix global search "view all results" omitting notes matches by @wyyd-yxc in #12832
- fix: users created via Admin Center never receive password reset emails by @matmair in #12839
- Fix 12844 notification external link by @Leopoldius in #12845
- Add more robust plugin installation check by @SchrodingersGat in #12858
- Bug fixes for plugin file check by @SchrodingersGat in #12861
- Fix validation of dependent serializer fields by @ledvinap in #12871
- Ensure generated label PDFs have correct extension by @ledvinap in #12870
- PO status fix by @SchrodingersGat in #12885
- [bug] Build line fix by @SchrodingersGat in #12892
- [bug] Bulk import fix by @SchrodingersGat in #12898
- [bug] Fix for Attachment thumbnail generation by @SchrodingersGat in #12902
- fix(frontend): address leaky firefox tests by @matmair in #12904
- Selection list fix by @SchrodingersGat in #12908
- Preserve label printing failures and skip failed job redelivery by @ledvinap in #12872
- Test result bug by @SchrodingersGat in #12918
- [API] Use InvenTreeDecimalField for minimum_stock and maximum_stock by @SchrodingersGat in #12928
- Fix floating point comparisons for parameter values by @SchrodingersGat in #12927
- [CI] Pin inventree-plugin-creator to 1.20.1 by @SchrodingersGat in #12932
- [UI] Fix BOM pricing tooltip by @SchrodingersGat in #12931
- fix(frontend): sso tests failing by @matmair in #12976
- Fix S3 media URLs by @maxgr0 in #12993
- reduce ci time by @matmair in #12985
- Add missing timeout to Slack notification plugin by @gotoUSA in #12990
- Fix missing parentheses in ReferenceIndexingMixin.get_next_reference by @tijsmoree in #12966
- Improve status code comparison by @SchrodingersGat in #13006
- Fix 'get_required_quantity' method by @SchrodingersGat in #13002
- fix(report): support S3 cloud media storage for report and label template loading (#12426) by @xyz-is-best in #12943
- [UI] Prevent duplicate search queries by @SchrodingersGat in #13024
- fix(frontend): remove jumps in data tables when navigating by @matmair in #13020
- [UI] Hide 'take_from' location if undefined by @SchrodingersGat in #13029
- fix(backend): make test stable by @matmair in #13032
- [bug] Handle length limitation for "notes" fields by @SchrodingersGat in #13023
- Permission bug fixes: by @SchrodingersGat in #13033
Devops / Setup Changes
- [CI] Improve robustness for playwright test by @SchrodingersGat in #12612
- fix(frontend): Improve flakiness issues by @matmair in #12617
- refactor(backend): remove network dep from test by @matmair in #12624
- refactor(backend): change fail limit to match allauth defaults more closely by @matmair in #12623
- fix(frontend): adress flaky download assertation on firefox by @matmair in #12640
- chore(deps): bump python from 3.14.6-slim-trixie to 3.14.7-slim-trixie in /contrib/container by @dependabot[bot] in #12650
- [FR] stop shipping docs with packages by @matmair in #12657
- Add --traceback to invoke commands by @SchrodingersGat in #12681
- [CI] Adjust query time threshold by @SchrodingersGat in #12748
- chore(deps): bump python from
ce40764tocae66f2in /contrib/container by @dependabot[bot] in #12752 - [CI] Allow more query time by @SchrodingersGat in #12790
- chore(deps): bump python from
cae66f2tocad9a2cin /contrib/container by @dependabot[bot] in #12816 - Fix long lease waits during setup by @matmair in #12828
- more hardening of ci steps by @matmair in #12834
- And more ci hardening by @matmair in #12843
- add test for migration checker by @matmair in #12838
- Export records by @SchrodingersGat in #12887
- fix(ci): token name collission cause test failures by @matmair in #12889
- [db] Disable JIT for postgres by @SchrodingersGat in #12893
- Additional regression tests for note support in reports by @SchrodingersGat in #12910
- feat(backend): mark setting when changed via API by @matmair in #12982
- Tweak playwright tests by @SchrodingersGat in #13012
Other Changes
- chore(deps): bump the dependencies group across 1 directory with 10 updates by @dependabot[bot] in #12561
- Bump version number to 1.6.0-rev by @SchrodingersGat in #12603
- chore(deps): bump dompurify from 3.4.12 to 3.4.13 in /src/frontend by @dependabot[bot] in #12592
- chore(deps): bump the dependencies group with 7 updates by @dependabot[bot] in #12608
- chore(deps): bump the dependencies group across 1 directory with 18 updates by @dependabot[bot] in #12609
- Update version for @inventreedb/ui by @SchrodingersGat in #12611
- Bump version number for UI by @SchrodingersGat in #12615
- chore(deps): bump the dependencies group across 1 directory with 6 updates by @dependabot[bot] in #12651
- chore(deps): bump the dependencies group with 5 updates by @dependabot[bot] in #12652
- chore(deps): bump the dependencies group across 1 directory with 14 updates by @dependabot[bot] in #12642
- Fix issue 10769 by @Alonso-Lopez-1 in #12286
- chore(deps): bump sqlparse from 0.5.5 to 0.6.0 in /src/backend by @dependabot[bot] in #12653
- increase project targets by @matmair in #12663
- feat(frontend): add user setting to control navigation behaviour by @matmair in #12669
- Fix admin search fields and misc code quality issues by @bhumin18 in #12525
- refactor PurchaseOrder APIs to viewset by @matmair in #12317
- feat(frontend): Add filter navigation remove button by @matmair in #12668
- Additional API timeout for bulk operations by @SchrodingersGat in #12676
- chore(deps): bump the dependencies group across 1 directory with 16 updates by @dependabot[bot] in #12680
- [UI] Data import for order lines by @SchrodingersGat in #12692
- chore(deps): bump the dependencies group with 3 updates by @dependabot[bot] in #12700
- chore(deps): bump the dependencies group across 1 directory with 3 updates by @dependabot[bot] in #12699
- Fix PurchaseOrderExtraLine admin search and add search fields across admin classes by @bhumin18 in #12721
- chore(deps): bump the dependencies group across 2 directories with 16 updates by @dependabot[bot] in #12735
- Enhance search and autocomplete fields across all InvenTree admin models by @bhumin18 in #12722
- chore(deps): bump the dependencies group with 4 updates by @dependabot[bot] in #12753
- chore(backend): bump all backend deps by @matmair in #12754
- Enhance search fields across InvenTree REST API endpoints by @bhumin18 in #12723
- chore: add types to templates; add AI agent catch by @matmair in #12747
- Tweak search by @SchrodingersGat in #12778
- chore: remove Admin Center introduction by @matmair in #12774
- Enhanced error message on CSRF failure by @SchrodingersGat in #12788
- [UI] Specify min width for search input by @SchrodingersGat in #12810
- chore(deps): bump the dependencies group across 1 directory with 25 updates by @dependabot[bot] in #12818
- chore(deps): bump the dependencies group with 5 updates by @dependabot[bot] in #12817
- Attachment filtering by filename by @SchrodingersGat in #12807
- chore(deps): bump weasyprint from 69.0 to 70.0 in /src/backend by @dependabot[bot] in #12833
- chore(deps): bump the dependencies group across 1 directory with 12 updates by @dependabot[bot] in #12841
- Prevent editing "part" against existing BuildOrder by @SchrodingersGat in #12849
- chore(deps): bump the dependencies group with 3 updates by @dependabot[bot] in #12855
- feat(frontend): remove old deps by @matmair in #12857
- [UI] Enable copyable cell for BOM table by @SchrodingersGat in #12863
- Preserve note image files when transactions roll back by @ledvinap in #12867
- Display user fix by @SchrodingersGat in #12869
- Add SVG support to datamatrix by @ledvinap in #12875
- feat: support password change well-known by @matmair in #12878
- Improved API error handling by @SchrodingersGat in #12884
- refactor: evaluate enviroment once in ready by @matmair in #12890
- chore(deps): bump the dependencies group across 1 directory with 18 updates by @dependabot[bot] in #12882
- [UI] Fix Background Tasks panel by @SchrodingersGat in #12899
- [report] Add set_var and get_var helpers by @SchrodingersGat in #12901
- chore(deps): bump the dependencies group with 4 updates by @dependabot[bot] in #12905
- Preserve validation details when rendering labels by @ledvinap in #12874
- Improve barcode scanning with native BarcodeDetector by @BI7KHI in #12784
- [UI] Order lines table by @SchrodingersGat in #12362
- Disable retry for label printing by @SchrodingersGat in #12937
- Use one-shot tasks for label print batches by @ledvinap in #12939
- Add raise_error template tag by @ledvinap in #12940
- chore(deps): bump the dependencies group across 3 directories with 25 updates by @dependabot[bot] in #12933
- chore(deps): bump the dependencies group with 6 updates by @dependabot[bot] in #12946
- chore(deps): bump undici from 8.10.1 to 8.10.2 in /src/frontend by @dependabot[bot] in #12948
- [UI] Details tweaks by @SchrodingersGat in #12949
- feat(backend): Add generic API helper for transitions by @matmair in #12693
- Fix transitions query schema to indicate it returns a list by @1337joe in #12967
- chore(deps): bump oauthlib from 3.3.1 to 4.0.0 in /src/backend by @dependabot[bot] in #12957
- chore(deps): bump dompurify from 3.4.14 to 3.4.16 in /src/frontend by @dependabot[bot] in #12960
- chore(deps): bump pyjwt from 2.14.0 to 2.15.0 in /src/backend by @dependabot[bot] in #12959
- chore(deps): bump gitpython from 3.1.61 to 3.1.62 in /docs by @dependabot[bot] in #12961
- chore(deps): bump brace-expansion from 5.0.9 to 5.0.12 in /src/frontend by @dependabot[bot] in #12963
- chore(deps): bump moment from 2.30.1 to 2.31.0 in /src/frontend by @dependabot[bot] in #12964
- chore(deps): bump undici from 6.28.0 to 8.11.2 in /src/frontend by @dependabot[bot] in #12962
- Fix user creation with group_ids via API by @fquinto in #12965
- bump docker image to python to 3.14.8 by @matmair in #12975
- chore(deps): bump the dependencies group with 2 updates by @dependabot[bot] in #12972
- chore(deps): bump the dependencies group across 2 directories with 28 updates by @dependabot[bot] in #12968
- use mixin instead of repeating patterns by @matmair in #12977
- chore(deps): bump source-map-js from 1.2.1 to 1.2.2 in /src/frontend by @dependabot[bot] in #12980
- Fix data import with S3 storage backend by @maxgr0 in #12973
- chore(backend): bump scim lib version by @matmair in #12991
- Add missing schema nullable tags by @1337joe in #12986
- Fix admin search and autocomplete for Owner model by @bhumin18 in #12987
- Add Circuit Happy LLC as a sponsor by @lifeisafractal in #12989
- Show full part names when build allocations differ from the BOM by @ledvinap in #12981
- fix style nitpicks by @matmair in #12995
- chore(deps): bump the dependencies group across 2 directories with 21 updates by @dependabot[bot] in #12984
- Fix consume_build_stock by @SchrodingersGat in #13003
- Fix MPTT check for BOM validity by @SchrodingersGat in #13008
- [UI] Nested bom by @SchrodingersGat in #12952
- Prevent deletion of line items which have received stock by @SchrodingersGat in #13004
- Notify context by @SchrodingersGat in #11481
- chore(deps): bump the dependencies group with 4 updates by @dependabot[bot] in #13013
- Internal company support by @SchrodingersGat in #13017
- Add "on_order" quantity to low-stock email notification by @SchrodingersGat in #13022
- feat: Add Delivery Address field to Purchase Orders by @Reza98Sh in #9768
- chore(deps): bump the dependencies group across 2 directories with 33 updates by @dependabot[bot] in #13031
- Enhance search and ordering fields across remaining REST API endpoints by @bhumin18 in #12737
- chore(deps): bump the dependencies group across 1 directory with 22 updates by @dependabot[bot] in #13019
- 1.6.0 release by @SchrodingersGat in #13036
New Contributors
- @FurinaDog made their first contribution in #12616
- @ribsey made their first contribution in #12550
- @amanjain57-gif made their first contribution in #12422
- @Alonso-Lopez-1 made their first contribution in #12286
- @Jr-kenny made their first contribution in #12585
- @psxjt5 made their first contribution in #12703
- @wyyd-yxc made their first contribution in #12826
- @lizerui1608-dev made their first contribution in #12888
- @fquinto made their first contribution in #12926
- @BI7KHI made their first contribution in #12784
- @xyz-is-best made their first contribution in #12944
- @maxgr0 made their first contribution in #12973
- @gotoUSA made their first contribution in #12990
- @tijsmoree made their first contribution in #12966
Full Changelog: 1.5.0...1.6.0