What's Changed
Breaking Changes
- !refactor(backend): remove API quirks by @matmair in #11723
- [bug] Make "issued_by" field read-only by @SchrodingersGat in #11816
- feat(frontend): bump node build enviroment to 24 by @matmair in #11893
- [bug] Fix for report generation context by @SchrodingersGat in #11941
- Remove image download support by @SchrodingersGat in #11962
- Specify R as ohms by @SchrodingersGat in #12065
- Bug fix for SalesOrderStatusGroups by @SchrodingersGat in #12107
- [report] Printing fixes by @SchrodingersGat in #12142
- SelectionList Updates by @SchrodingersGat in #12139
- [bug] Fix order event name by @SchrodingersGat in #12196
- extend barcode scans API by @matmair in #12233
Security Patches
- chore(backend): bump django by @matmair in #11907
- fix(CI): adress zimor warnings in the release workflow by @matmair in #11916
- Django admin permission updates by @SchrodingersGat in #12036
- switch from n to nvm as that is an offical channel by @matmair in #12140
- Data import permissions by @SchrodingersGat in #12169
- Permissions fix by @SchrodingersGat in #12168
- chore(deps): bump cryptography from 48.0.0 to 48.0.1 in /src/backend by @dependabot[bot] in #12176
- [API] Adjust permissions for machine restart by @SchrodingersGat in #12197
Database Changes
- BOM Ruleset by @SchrodingersGat in #11825
- Ensure correct migration order by @SchrodingersGat in #11842
- Remove unnecessary print statement by @SchrodingersGat in #11902
- Transfer Order by @jacobfelknor in #11281
- [refactor] Attachment images by @SchrodingersGat in #11961
- [db] Stock creation date by @SchrodingersGat in #12011
- Remove "review_needed" field by @SchrodingersGat in #12071
New Features
- [plugin] Render tables by @SchrodingersGat in #11733
- Bump UI to 0.11.2 by @SchrodingersGat in #11738
- feat(frontend): warn if notes are dirty by @matmair in #11772
- feat(frontend): add inline create modal to PurchaseOrderLineItem dialog by @matmair in #11778
- feat(frontend): add inline component addition to bom dialog by @matmair in #11781
- Model permission tweaks by @SchrodingersGat in #11788
- [UI] BOM row expand by @SchrodingersGat in #11809
- [UI] BOM compare by @SchrodingersGat in #11853
- Maximum stock level by @SchrodingersGat in #11914
- Block SO allocation until tests pass by @SchrodingersGat in #11915
- feat(frontend): custom model render registration by @matmair in #11928
- Feature: Auto-select items tab for final stock locations (#11766) by @adityakrmishra in #11955
- [feature] Rename attachments by @SchrodingersGat in #11920
- feat(frontend): Add option for plugins to add header actions by @matmair in #9570
- [Feature] SalesOrder Auto-Allocate by @SchrodingersGat in #12000
- Count to location by @SchrodingersGat in #12019
- Update to /api/barcode/po-recieve/ error messages by @Idea-Junkie in #11369
- [feature] tags support by @SchrodingersGat in #12077
- [UI] Table filter set by @SchrodingersGat in #12079
- [UI] Table column filters by @SchrodingersGat in #12103
- feat(frontend): add hotkey registration function and hotkey helper modal by @matmair in #12128
- Remember last used label template and printer plugin per model type by @Sanidhyavijay24 in #12146
- feat(frontend): add more general hotkeys by @matmair in #12138
- [import] specify fk lookup field by @SchrodingersGat in #12180
- System Health Checks by @SchrodingersGat in #12193
- Report Generation Updates by @SchrodingersGat in #12187
- [UI] Tree improvements by @SchrodingersGat in #12204
Bug Fixes
- Fix for SVG sanitizing by @SchrodingersGat in #11742
- (feat): add frontend cookie removal of mfa trust by @matmair in #11768
- [bug] BOM validation fixes by @SchrodingersGat in #11783
- Fix for category template creation by @SchrodingersGat in #11803
- Adjust order quantity based on pack size by @SchrodingersGat in #11800
- Fix refresh action for test result table by @SchrodingersGat in #11807
- [setup] Database config by @SchrodingersGat in #11813
- Fix: preserve existing widget sizes when adding a dashboard widget by @tigger2000ttfn in #11834
- [UI] Fix ReturnOrder table by @SchrodingersGat in #11845
- Fix build order annotation by @SchrodingersGat in #11848
- [UI] BOM pricing fix by @SchrodingersGat in #11860
- Ensure DB settings are strings by @SchrodingersGat in #11866
- [UI] Fix for parameter form by @SchrodingersGat in #11875
- Lock notes on orders if they are completed by @matmair in #11880
- Fix verbose flag for worker task by @SchrodingersGat in #11883
- Supplier part form by @SchrodingersGat in #11884
- [UI] Fix child builds panel by @SchrodingersGat in #11886
- [UI] Adjust default dashboard by @SchrodingersGat in #11889
- [UI] Remove rollup-plugin-visualizer by @SchrodingersGat in #11903
- fix(backend): fix test assertation by @matmair in #11908
- [UI] Fix lazy loading of context modals by @SchrodingersGat in #11911
- [API] Role fix by @SchrodingersGat in #11932
- [bug] Bulk edit fix by @SchrodingersGat in #11945
- Fix for dashboard item logic by @SchrodingersGat in #11960
- Normalize BomItem quantity by @SchrodingersGat in #11975
- Bug fix for task comparison by @SchrodingersGat in #11993
- Fix text for plugin activation dialog by @SchrodingersGat in #12021
- [UI] Part create fields by @SchrodingersGat in #12039
- [UI] Fix navigation tabs by @SchrodingersGat in #12037
- fix (backend): only instrument tracing once by @matmair in #12050
- [UI] Can build by @SchrodingersGat in #12043
- [API] Fix 1 + N query for custom status fields by @SchrodingersGat in #12055
- Fix: Apply default location correctly in Return Stock form (#11568) by @adityakrmishra in #12059
- [bug] Various fixes by @SchrodingersGat in #12057
- Fix for RenderInstance by @SchrodingersGat in #12058
- [bug] Fix for "can convert" logic by @SchrodingersGat in #12070
- [Bug] Fix for build forms by @SchrodingersGat in #12081
- [UI] Fix for empty boolean fields by @SchrodingersGat in #12100
- fix(tasks): bypass Invoke PTY for interactive superuser/flush commands by @getpwnam in #12078
- UX: Disable standard allocation for trackable parts (#11811) by @adityakrmishra in #11967
- plugin-validation-purchase-orders by @NerosKi in #12094
- Make plugin registry hash independent of plugin discovery order by @Nasawa in #12151
- Machine fixes by @SchrodingersGat in #12154
- [UI] Edit cat param by @SchrodingersGat in #12166
- fix(frontend): adress broken UI tests by @matmair in #12183
- Mysql filter fix by @SchrodingersGat in #12185
- fix(backend): import session metadata by @matmair in #12184
- [bug] Fix double save by @SchrodingersGat in #12194
- [UI] Fix status renderer functions by @SchrodingersGat in #12202
- [UI] Fix NewsWidget by @SchrodingersGat in #12205
- Fix signup warning by @SchrodingersGat in #12213
- build(docker): compile backend translations during image build by @geekcj12 in #12203
- [bug] Allocated query fix by @SchrodingersGat in #12234
Devops / Setup Changes
- Fix typecast for db settings by @SchrodingersGat in #11790
- Enable verbosity option for worker command by @SchrodingersGat in #11862
- fix(backend): ensure invoke version screeen runs without django present by @matmair in #11887
- chore(backend): bump dev tooling, switch to prek by @matmair in #11905
- refactor(backned): pin test install by @matmair in #11953
- fix performance test by @matmair in #12006
- chore(deps): bump python from 3.14-slim-trixie to 3.14.5-slim-trixie in /contrib/container by @dependabot[bot] in #12007
- chore(backend): also release packages to stable in the new packager.io repo by @matmair in #12023
- Playwright caching by @SchrodingersGat in #12042
- gunicorn configuration tweaks by @SchrodingersGat in #12048
- dev tools bump by @matmair in #12026
- fix(forntend): generate UI coverage again by @SchrodingersGat in #12066
- Codecov tweaks by @SchrodingersGat in #12099
- Locked plugin settings by @SchrodingersGat in #12093
- bump container deps by @matmair in #12136
- feat(ci): add flakeiness by @matmair in #12148
- bump docker base by @matmair in #12178
- fix(ci): disable running on dependabot and backport branches by @matmair in #12189
- fix(ci): improve release pipe stability by @matmair in #12191
- Agents by @SchrodingersGat in #12212
- Add meaningful message on CSRF failure by @SchrodingersGat in #12216
- devops: fix chromium test uploads to flakiness.io by @aslushnikov in #12219
- Bump ty by @matmair in #12211
Dependencies
- Pin python version for teyit hook by @hartigdan in #11735
- [UI] Adjust frontend deps by @SchrodingersGat in #11840
- [UI] Mantine 9 by @SchrodingersGat in #11947
Other Changes
- Prepare changelog for 1.4.0 by @SchrodingersGat in #11728
- Bump version to 1.4.0 dev by @SchrodingersGat in #11725
- [API] Filter refactor by @SchrodingersGat in #11073
- chore(deps-dev): bump pytest from 9.0.2 to 9.0.3 in /src/backend by @dependabot[bot] in #11743
- chore(deps): bump the dependencies group with 3 updates by @dependabot[bot] in #11740
- chore(deps): bump dompurify from 3.3.3 to 3.4.0 in /src/frontend by @dependabot[bot] in #11756
- chore(deps): bump pypdf from 6.10.0 to 6.10.2 in /src/backend by @dependabot[bot] in #11759
- chore(deps): bump the dependencies group across 1 directory with 25 updates by @dependabot[bot] in #11763
- chore(deps): bump follow-redirects from 1.15.11 to 1.16.0 in /src/frontend by @dependabot[bot] in #11749
- chore(deps): bump the dependencies group with 2 updates by @dependabot[bot] in #11770
- chore(deps): bump lxml from 6.0.3 to 6.1.0 in /src/backend by @dependabot[bot] in #11779
- [UI] More sub-forms by @SchrodingersGat in #11785
- refactor(frontend): make plugin support for panels more generic by @matmair in #11787
- [UI] Create manufacturer part by @SchrodingersGat in #11792
- [UI] Update BOM table rendering by @SchrodingersGat in #11795
- [UI] Hide top level tree panels by @SchrodingersGat in #11799
- [UI] BOM Editing by @SchrodingersGat in #10210
- [UI] Adjust system settings by @SchrodingersGat in #11808
- chore(deps): bump the dependencies group across 2 directories with 25 updates by @dependabot[bot] in #11797
- chore(deps): bump gitpython from 3.1.46 to 3.1.47 in /docs by @dependabot[bot] in #11806
- bump deps by @matmair in #11812
- [UI] Smooth image loading by @SchrodingersGat in #11815
- [UI] Invalid BOM warning by @SchrodingersGat in #11817
- Stock convert by @SchrodingersGat in #11818
- [UI] Adjust BomSubassemblyTable by @SchrodingersGat in #11819
- chore(deps): bump the dependencies group with 2 updates by @dependabot[bot] in #11823
- feat(frontend): also expose TableState by @matmair in #11826
- bump vite, lodash, postcss by @matmair in #11831
- feat(frontend): lib make Detaildrawer available by @matmair in #11827
- Fix minor typo by @SchrodingersGat in #11839
- Adjust text color for stock column by @SchrodingersGat in #11841
- [UI] Remove debug message by @SchrodingersGat in #11854
- [UI] Adjust form properties by @SchrodingersGat in #11855
- Implement Latest parts dashboard widget by @martonmiklos in #11540
- [refactor] bulk operation batch size by @SchrodingersGat in #11864
- chore(deps): bump the dependencies group with 2 updates by @dependabot[bot] in #11869
- UI tweak by @SchrodingersGat in #11871
- [UI] Adjust stock column for virtual parts by @SchrodingersGat in #11873
- [UI] Add Admin button for SalesOrderShipment by @SchrodingersGat in #11874
- Delete output check by @SchrodingersGat in #11881
- Line number int by @SchrodingersGat in #11885
- chore(deps): bump the dependencies group across 1 directory with 31 updates by @dependabot[bot] in #11844
- [UI] Smaller text for PathColumn by @SchrodingersGat in #11888
- fix(frontend): adjust media queries for newer postcss style by @matmair in #11892
- chore(deps): bump axios from 1.15.0 to 1.15.2 in /src/frontend by @dependabot[bot] in #11890
- chore(deps): bump gitpython from 3.1.47 to 3.1.49 in /docs by @dependabot[bot] in #11894
- chore(deps): bump fast-uri from 3.1.0 to 3.1.2 in /src/frontend by @dependabot[bot] in #11900
- [UI] Optimize bundle by @SchrodingersGat in #11896
- chore(deps): bump gitpython from 3.1.49 to 3.1.50 in /docs by @dependabot[bot] in #11901
- frontend: more exposing for plugins by @matmair in #11897
- chore(backend): bump django-q2 by @matmair in #11910
- chore(frontend): remove dead function InstanceFromUrl by @matmair in #11918
- bump urlib3 by @matmair in #11925
- feat(frontend): expose inline render helpers by @matmair in #11917
- External order checks by @SchrodingersGat in #11935
- chore(deps): bump the dependencies group with 3 updates by @dependabot[bot] in #11929
- [UI] Refactor part table filters by @SchrodingersGat in #11938
- [UI] Refactor order table filters by @SchrodingersGat in #11939
- Receive items requrires the "add" role - POST action by @SchrodingersGat in #11946
- Update schema to match server responses for SelectionList and TreePath by @1337joe in #11948
- refactor(backend): various SAST fixes by @matmair in #11952
- refactor(frontend): remove unused statements by @matmair in #11949
- [UI] Panel indicator badges by @SchrodingersGat in #11956
- chore(deps): bump the dependencies group with 4 updates by @dependabot[bot] in #11965
- Prevent edit serial by @SchrodingersGat in #11964
- chore(deps): bump pymdown-extensions from 10.21.2 to 10.21.3 in /docs by @dependabot[bot] in #11968
- [UI] Calendar tooltips by @SchrodingersGat in #11980
- chore(deps): bump idna from 3.13 to 3.15 in /contrib/dev_reqs by @dependabot[bot] in #11970
- realign user API endpoints by @matmair in #11963
- [UI] Lock action by @SchrodingersGat in #11981
- Tree delete API by @SchrodingersGat in #11979
- Fix text size in build line table by @SchrodingersGat in #11986
- [UI] Fix settings rendering by @SchrodingersGat in #11987
- Enable table ordering by @SchrodingersGat in #11992
- Offload build output functions: by @SchrodingersGat in #11990
- [UI] Set reasonable table height by @SchrodingersGat in #11998
- chore(deps): bump the dependencies group across 3 directories with 39 updates by @dependabot[bot] in #11989
- chore(deps): bump the dependencies group with 4 updates by @dependabot[bot] in #12008
- docs: rename ressource details by @matmair in #12005
- Additional spotlight actions by @SchrodingersGat in #12012
- bump frontend resolution by @matmair in #12014
- [UI] Adjust table auto height by @SchrodingersGat in #12016
- Plugin validation tweak by @SchrodingersGat in #12013
- chore(deps): bump dulwich from 1.2.1 to 1.2.5 in /src/backend by @dependabot[bot] in #12028
- [UI] Part lock notification by @SchrodingersGat in #12040
- Fix for offloading of check_for_migrations by @SchrodingersGat in #12041
- [UI] Hover instance by @SchrodingersGat in #12038
- chore(deps): bump axios from 1.15.2 to 1.16.0 in /src/frontend by @dependabot[bot] in #12033
- [UI] Spotlight actions by @SchrodingersGat in #12049
- chore(deps): bump the dependencies group across 1 directory with 27 updates by @dependabot[bot] in #12034
- [UI] Order history dashboard widgets by @SchrodingersGat in #12061
- Update dashboard widgets by @SchrodingersGat in #12068
- chore(deps): bump the dependencies group with 10 updates by @dependabot[bot] in #12074
- [UI] Adjust calendar view color by @SchrodingersGat in #12080
- Adjust label for Build Order by @SchrodingersGat in #12089
- [UI] Adjust text by @SchrodingersGat in #12085
- [UI] Calendar refresh by @SchrodingersGat in #12091
- [UI] Table adjuments by @SchrodingersGat in #12090
- Add HMR and React Fast Refresh support by @xhivo97 in #12060
- bump django by @matmair in #12097
- chore(deps): bump the dependencies group across 1 directory with 21 updates by @dependabot[bot] in #12095
- [UI] Month scroll by @SchrodingersGat in #12092
- [plugin] HMR lib hooks by @SchrodingersGat in #12108
- Remove built-in dashboard history widgets by @SchrodingersGat in #12114
- Calendar tweaks by @SchrodingersGat in #12115
- chore(deps): bump the dependencies group with 3 updates by @dependabot[bot] in #12125
- [UI] User management spotlight by @SchrodingersGat in #12144
- [UI] Update parametric data table hover by @SchrodingersGat in #12145
- [UI] User Filters by @SchrodingersGat in #12143
- Improvements for template tables by @SchrodingersGat in #12155
- chore(deps): bump the dependencies group across 2 directories with 16 updates by @dependabot[bot] in #12159
- [UI] Calendar month colors by @SchrodingersGat in #12157
- [UI] Calendar Updates by @SchrodingersGat in #12161
- fix: support non-integer PKs in NotificationMessage (fixes UUID overflow) by @kaizeenn in #12162
- Suppress dulwich warnings by @SchrodingersGat in #12163
- Part category parameters by @SchrodingersGat in #12165
- bump frontend by @matmair in #12137
- chore(deps): bump the dependencies group with 4 updates by @dependabot[bot] in #12172
- Stocktake exporter updates by @SchrodingersGat in #12179
- [UI] Additional table filters by @SchrodingersGat in #12186
- Change order custom status via api by @johnluetke in #11982
- chore(deps): bump dompurify from 3.4.8 to 3.4.9 in /src/frontend by @dependabot[bot] in #12174
- chore(deps): bump form-data from 4.0.5 to 4.0.6 in /src/frontend by @dependabot[bot] in #12175
- chore(deps): bump dompurify from 3.4.9 to 3.4.11 in /src/frontend by @dependabot[bot] in #12199
- chore(deps): bump pypdf from 6.13.0 to 6.13.3 in /src/backend by @dependabot[bot] in #12201
- chore(deps): bump the dependencies group across 1 directory with 12 updates by @dependabot[bot] in #12210
- chore(deps): bump undici from 8.4.1 to 8.5.0 in /src/frontend by @dependabot[bot] in #12200
- chore(deps): bump undici from 6.26.0 to 8.5.0 in /src/frontend by @dependabot[bot] in #12214
- color scheme: Use the users prefered mode by default by @reid-p in #12227
- chore(deps): bump the dependencies group with 3 updates by @dependabot[bot] in #12220
- [UI] Tweak today color by @SchrodingersGat in #12235
- [UI] Tweak "order parts" wizard by @SchrodingersGat in #12236
- Add release entry for 1.4.0 by @SchrodingersGat in #12237
New Contributors
- @hartigdan made their first contribution in #11735
- @ZhangzrJerry made their first contribution in #11746
- @DanielDango made their first contribution in #11868
- @robertsilen made their first contribution in #11950
- @Idea-Junkie made their first contribution in #11369
- @xhivo97 made their first contribution in #12060
- @getpwnam made their first contribution in #12078
- @NerosKi made their first contribution in #12094
- @Nasawa made their first contribution in #12151
- @Sanidhyavijay24 made their first contribution in #12146
- @kaizeenn made their first contribution in #12162
- @johnluetke made their first contribution in #11982
- @geekcj12 made their first contribution in #12203
- @aslushnikov made their first contribution in #12219
- @reid-p made their first contribution in #12227
Full Changelog: 1.3.0...1.4.0