Skip to content

shelf@2.1.0

Latest

Choose a tag to compare

@DonKoko DonKoko released this 04 Aug 07:50
a08594c

🚀 Shelf 2.1.0

This release builds on the Quantitative Assets foundation introduced in 2.0 with new inventory management capabilities, enterprise provisioning, improved personalization, and major Companion app enhancements. It also includes a large number of reliability, performance, and security improvements across the platform.


🌟 Highlights

📦 Smarter Quantity

Take even greater control over quantity-tracked assets with new inventory management capabilities.

Highlights include:

  • Low-stock alerting
  • Improved quantity locking to prevent race conditions
  • Quantity audit trail
  • Unified quantity-tracked availability across bookings and assets

📱 Companion App

The Companion app continues to evolve with several major improvements:

  • Native claim, link or create workflows for unclaimed QR codes
  • OTA (Over-the-Air) updates for JavaScript-only fixes
  • Improved booking picker with pagination
  • Numerous booking workflow improvements and bug fixes

🔐 Enterprise

Enterprise deployments now support SCIM provisioning, making automated user lifecycle management significantly easier.

📅 User Preferences

Users can now choose their preferred date and time formatting, allowing Shelf to match regional and personal preferences.


🚀 Features

  • feat(companion): paginate the whole booking picker so no asset is unreachable by @carlosvirreira in #2729
  • Add SCIM endpoint by @Mr-Technician in #2333
  • feat(companion): native claim + link/create for unclaimed QR codes by @carlosvirreira in #2753
  • feat(companion): enable EAS Update (OTA) for JS-only fixes by @carlosvirreira in #2740
  • feat(bookings,assets): unify quantity-tracked availability + fix over-reservation dead-ends by @DonKoko in #2770
  • feat(settings): user-level date & time formatting by @carlosvirreira in #2654
  • feat: @shelf/quantity-control package + QT low-stock alerting, audit trail & lock hardening by @DonKoko in #2780

🐛 Fixes

  • fix(bookings): guard mobile fulfil-and-checkout against cross-user checkout by @carlosvirreira in #2718
  • fix: stop reminders revalidation storm + booking-settings pool exhaustion by @DonKoko in #2722
  • fix: pg-boss error handler + healthcheck busy≠dead (deploy resilience) by @DonKoko in #2723
  • fix(mobile): booking asset picker silently capped at 20 assets by @carlosvirreira in #2726
  • fix(mobile): apply web's draft-booking privacy rule to the mobile endpoints by @carlosvirreira in #2727
  • fix(companion): count fulfil progress against reservations, not scans by @carlosvirreira in #2730
  • fix(companion): stop the scanner overlay reflowing when a drawer opens by @carlosvirreira in #2731
  • fix(audit): kit-scan crash + Not found screen + capture error-screen 4xx + 404-shape eslint rule by @DonKoko in #2732
  • fix: reminder-job reliability — Prisma transient-retry (ex-P2024), worker rethrow/retry, email at-least-once by @DonKoko in #2733
  • fix(sentry): filter unactionable client noise and skip expected 4xx boundary captures by @DonKoko in #2742
  • fix(assets): show friendly 400 when over-allocating a quantity-tracked asset by @DonKoko in #2745
  • fix(auth): make createUser idempotent and cap passwords at 72 chars by @DonKoko in #2746
  • fix(working-hours): race-safe first-access create + retry-wiring regression guard by @DonKoko in #2751
  • fix(kits): cascade kit location changes to member assets by @DonKoko in #2752
  • fix(location): return a friendly 400 when an individual asset is already placed by @DonKoko in #2772
  • fix: three production Sentry 500s (advanced-filter select-all, import clear, booking kit-add) by @DonKoko in #2773
  • fix(bookings): let an in-flight booking check out assets a later reservation holds by @DonKoko in #2775
  • fix(booking): make booking picker search return renderable rows by @carlosvirreira in #2778
  • fix(workspace): reload the document on workspace switch so the sidebar can't go stale by @carlosvirreira in #2787
  • fix(quantity-control): ship as raw src so the Docker deps stage can install by @DonKoko in #2793
  • fix(date-format): release-review follow-ups (#2654 follow-up) by @DonKoko in #2791
  • fix(booking): remove assets and kits together in one bulk action by @DonKoko in #2794
  • fix(notes): harden Markdoc note rendering and sanitize user-supplied values by @DonKoko in #2795

⚡ Performance

  • perf(assets): move two conditional writes off the /assets index read path by @DonKoko in #2750

🔧 Refactors

  • refactor(auth): remove redundant signOut on password change; fix comments by @DonKoko in #2719
  • refactor(audit): split AuditDrawer to clear no-giant-component + collapse dup export by @DonKoko in #2741

🧹 Chores

  • chore(tests): relocate co-located route tests to test/routes-tests by @DonKoko in #2739
  • chore(deps): bump hono from 4.12.25 to 4.12.27 by @dependabot[bot] in #2736
  • chore(deps): bump sharp from 0.34.5 to 0.35.3 by @dependabot[bot] in #2735
  • chore(deps-dev): bump postcss from 8.5.13 to 8.5.18 by @dependabot[bot] in #2748
  • ci: fix CI on fork PRs by moving off pull_request_target by @DonKoko in #2754
  • fix: stop the commit-msg hook from dying before commitlint runs on Windows by @iuryeng in #2759

📚 Documentation

  • docs(mobile): correct the page-size explanation left by #2726 by @carlosvirreira in #2728
  • docs(sso): document friendly-name/OID attribute ID fallback for Shibboleth by @DonKoko in #2771
  • docs(import-update): document asset model and qty-tracked updatable columns by @DonKoko in #2776

🌱 New Contributors

Full Changelog: https://github.com/Shelf-nu/shelf.nu/compare/shelf@2.0.1...shelf@2.1.0