v8.4.0

grokability/snipe-itv8.4.0Feb 23, 2026by snipe

AI Summary

This major release focuses on performance improvements by fixing n+1 query problems, adds sticky columns to table views for better UX, and introduces a standardized right-side panel across most screens. It also includes numerous bug fixes for dark/light mode, label scaling, and security improvements.

Key Highlights

  • Fixed n+1 query problems for significant performance improvements
  • Added sticky columns to most table views
  • Introduced standardized right-side panel for more information at a glance
  • Multiple security fixes and patches
  • Ability to clone components

New Features

  • Sticky columns in table views
  • Standardized right-side panel
  • Clone components functionality
  • Reset to default theme option
  • Theme preview for effects

Full Release Notes

Happy Monday! Today we're releasing 8.4.0 of Snipe-IT! In it you'll find tons of small bug fixes and some bigger ones.

**As always, we highly recommend upgrading to the latest stable version of Snipe-IT, as we are constantly improving the product and patching security issues we come across.**

### Smallish:

- Several small security fixes
- Loads of fixes to light/dark mode
- Some label scaling fixes
- Less noisy SCIM debugging when it's not actually helpful 
- Ability to clone components
- Fixed a few breadcrumb titles

### Biggish?

- We identified a few queries that were not optimized as well as they could be, so it was creating an "n+1" problem. The more items you had, the more queries you'd be doing. **We've fixed those and things should be a LOT snappier now.** 
- We've added sticky columns to most of the table views. We have tried really hard to make them be the ones that make sense (name, as the left-side sticky, and actions and/or checkin/checkin where appropriate).  I expect you'll let us know if we guessed wrong here. 
- A more standardized right-side panel in *most* screens (not users and not assets or "Your Profile" yet). We're really quite excited about this, as we feel it exposes a lot more of the potentially important information you need to see while looking at an item than we we used to. A few fewer clicks, and a lot more information exposed, but also able to be tucked away if you need larger screen real-estate. 


## What's Changed
* Added "reset to default" for theme, preview for effects in profile by @snipe in https://github.com/grokability/snipe-it/pull/18347
* Add SCIM url to admin settings index view by @snipe in https://github.com/grokability/snipe-it/pull/18358
* Fixed #18325: Ensure existing permission group users are maintained when editing a group by @dylang3 in https://github.com/grokability/snipe-it/pull/18326
* Replaced deprecated Symfony `Request::get()` usage by @joelpittet in https://github.com/grokability/snipe-it/pull/18363
* Bump `actions/upload-artifact` from 5 to 6 by @dependabot[bot] in https://github.com/grokability/snipe-it/pull/18349
* Bump `actions/cache` from 4 to 5 by @dependabot[bot] in https://github.com/grokability/snipe-it/pull/18348
* Fixed #18384: Remove backticks in bulk-actions.blade.php to avoid unintentional `shell_exec()` call by @dylang3 in https://github.com/grokability/snipe-it/pull/18388
* Fixed #18377 - make `min` for names consistent by @snipe in https://github.com/grokability/snipe-it/pull/18392
* Fixed: `paragonie/sodium_compat` - Missing check that a point is on the prime subgroup for Edwards25519 by @joelpittet in https://github.com/grokability/snipe-it/pull/18391
* Fixed #17816 - Added quantity to activity reports by @marcusmoore in https://github.com/grokability/snipe-it/pull/18359
* Fixed #18394 - LDAP sync test table background in dark mode by @snipe in https://github.com/grokability/snipe-it/pull/18395
* Fixed #18291 - update PHP versions and alpine versions by @snipe in https://github.com/grokability/snipe-it/pull/18393
* Fixed #17652 - Fixed company select2 drop-down when modals clicked by @uberbrady in https://github.com/grokability/snipe-it/pull/18396
* Adds [RB-20474] a try/catch to ms teams audit notification by @Godmartinz in https://github.com/grokability/snipe-it/pull/18397
* Set `$files` in `UploadedFilesController` API POST endpoint only if there are results by @snipe in https://github.com/grokability/snipe-it/pull/18398
* Fixed #18405: Clean up closing divs to fix footer position by @dbakan in https://github.com/grokability/snipe-it/pull/18406
* Fixed: Prefer display name of user on UI by @kenchan0130 in https://github.com/grokability/snipe-it/pull/18404
* Fixed #18402 - Clean up SAML readonly display by @snipe in https://github.com/grokability/snipe-it/pull/18410
* Fixed #18415 - LDAP sync improvements to allow null display_name and bulk editing display_name by @snipe in https://github.com/grokability/snipe-it/pull/18430
* Refactor the exceptions for Audit log (again) by @Godmartinz in https://github.com/grokability/snipe-it/pull/18419
* Fix [RB-20479] Checkin/Checkout notifications from logging as errors by @Godmartinz in https://github.com/grokability/snipe-it/pull/18418
* Fixed #8740: Use log instance with configured log path by @ManiacTwister in https://github.com/grokability/snipe-it/pull/18440
* Fixed #18312: support aws rds mysql with force tls by @vasiliyplotnikov in https://github.com/grokability/snipe-it/pull/18387
* Fixed #18409 - command line option to purge signatures by @snipe in https://github.com/grokability/snipe-it/pull/18437
* Fixed - throw fewer exceptions on SCIM misconfigurations by @uberbrady in https://github.com/grokability/snipe-it/pull/18442
* Fixed #18135 - only unset sensitive variables in the web UI importer by @snipe in https://github.com/grokability/snipe-it/pull/18439
* Fixes Label text scaling  by @Godmartinz in https://github.com/grokability/snipe-it/pull/18434
* Fixed #18449 - small sidenav improvements for selected contexts by @snipe in https://github.com/grokability/snipe-it/pull/18450
* Improved loading speeds on group create and edit page by @marcusmoore in https://github.com/grokability/snipe-it/pull/18368
* Use basic container+box for primary index pages with one column by @snipe in https://github.com/grokability/snipe-it/pull/18454
* Fixed inconsistent negative symbol at Audit Log Report when Next Audit Date is set to the current date by @iryadifarhan in https://github.com/grokability/snipe-it/pull/18256
* Fixed storing image for accessory and consumable creation via api by @marcusmoore in https://github.com/grokability/snipe-it/pull/18457
* Fixed #17309 - include EOL date in custom asset report by @marcusmoore in https://github.com/grokability/snipe-it/pull/18458
* Next step in container+box component by @snipe in https://github.com/grokability/snipe-it/pull/18456
* Added eager load to Expiring Alerts command by @marcusmoore in https://github.com/grokability/snipe-it/pull/18466
* Fixes #18353 Label title scales with label fields. adjusted label row allotment.  by @Godmartinz in https://github.com/grokability/snipe-it/pull/18459
* Moved anonymous box blade components into their own directory by @snipe in https://github.com/grokability/snipe-it/pull/18471
* Moved helper query, to eager load through Asset API index by @Godmartinz in https://github.com/grokability/snipe-it/pull/18472
* Added tab components by @snipe in https://github.com/grokability/snipe-it/pull/18473
* Renamed box blade component wrapper to index by @snipe in https://github.com/grokability/snipe-it/pull/18474
* Fixed #18475 - reference the correct model when checking in an asset via import by @marcusmoore in https://github.com/grokability/snipe-it/pull/18476
* Added sticky column by @snipe in https://github.com/grokability/snipe-it/pull/18478
* Removed font-size override on tabs by @snipe in https://github.com/grokability/snipe-it/pull/18479
* Moved more indexes to blade components by @snipe in https://github.com/grokability/snipe-it/pull/18480
* Moved form components into their own directory by @snipe in https://github.com/grokability/snipe-it/pull/18482
* Add translation and template name for Label Preview by @Godmartinz in https://github.com/grokability/snipe-it/pull/18490
* Fixes `Undefined variable $files` Exception by @spencerrlongg in https://github.com/grokability/snipe-it/pull/18484
* Bumped PHPUnit version by @marcusmoore in https://github.com/grokability/snipe-it/pull/18492
* Update models with new components by @snipe in https://github.com/grokability/snipe-it/pull/18514
* Do not delete asset name if update request does not have a name by @bilias in https://github.com/grokability/snipe-it/pull/18470
* Fix Livewire and Passport routes for subpath hosting by @joelpittet in https://github.com/grokability/snipe-it/pull/18524
* Consolidated custom fieldset edit/show by @snipe in https://github.com/grokability/snipe-it/pull/18529
* Update the name of the object within the side panel by @snipe in https://github.com/grokability/snipe-it/pull/18535
* Fixes title alignment to fit label L7163_A by @Godmartinz in https://github.com/grokability/snipe-it/pull/18539
* Updated subject line of acceptance reminder emails by @marcusmoore in https://github.com/grokability/snipe-it/pull/18542
* Added some `withCount()` params to tweak the 'minimum number of assets' notification by @uberbrady in https://github.com/grokability/snipe-it/pull/18544
* Fixed: Incorrect index reference in `MoveUploadsToNewDisk.php` by @matmair in https://github.com/grokability/snipe-it/pull/13506
* More refactoring of tabs, tab panes, and tables by @snipe in https://github.com/grokability/snipe-it/pull/18537
* Fixed #18557 - Tweak `numRemaining()` to not re-query for un-checked-out components by @uberbrady in https://github.com/grokability/snipe-it/pull/18564
* Added #18555 - ability to clone components by @snipe in https://github.com/grokability/snipe-it/pull/18565
* Fixed new vs update button label on custom fieldset creation, fixed breadcrumbs on new custom fieldset creation screen by @snipe in https://github.com/grokability/snipe-it/pull/18566
* Small importer improvements, added larger CSV samples by @snipe in https://github.com/grokability/snipe-it/pull/18569
* Converted consumables to new blade component by @snipe in https://github.com/grokability/snipe-it/pull/18570
* Fixed #18571 - Fixed cross-company `created_by` in asset acceptance by @uberbrady in https://github.com/grokability/snipe-it/pull/18572
* Fixed #18435 - Use correct option value for currency format selector by @snipe in https://github.com/grokability/snipe-it/pull/18578
* Quick fix for alert menu 1001 queries by @snipe in https://github.com/grokability/snipe-it/pull/18580
* Adds `field_encrypted` to fields API response by @spencerrlongg in https://github.com/grokability/snipe-it/pull/18575

## New Contributors
* @dylang3 made their first contribution in https://github.com/grokability/snipe-it/pull/18326
* @ManiacTwister made their first contribution in https://github.com/grokability/snipe-it/pull/18440
* @vasiliyplotnikov made their first contribution in https://github.com/grokability/snipe-it/pull/18387
* @bilias made their first contribution in https://github.com/grokability/snipe-it/pull/18470
* @matmair made their first contribution in https://github.com/grokability/snipe-it/pull/13506

**Full Changelog**: https://github.com/grokability/snipe-it/compare/v8.3.7...v8.3.8-pre