Skip to content

Releases: Shelf-nu/shelf.nu

shelf@1.20.0

25 Feb 12:23
f93b2fa

Choose a tag to compare

🏗 Monorepo Migration (Major Change)

Shelf has moved from a single-app repository to a pnpm + Turborepo monorepo.

This improves dependency management, build performance, and long-term scalability.
If you're self-hosting or customizing Shelf, this section matters.


What Changed

  • Package manager: npmpnpm (v9.15.4)
  • Commands renamed (see mapping below)
  • Database schema moved
    • From: app/database/schema.prisma
    • To: packages/database/prisma/schema.prisma
  • Project structure updated
    • The Remix app now lives in apps/webapp/ instead of the root

🔄 Upgrading

1️⃣ Install pnpm

corepack enable
corepack prepare pnpm@9.15.4 --activate

Or install globally:

npm install -g pnpm@9.15.4

2️⃣ Install dependencies

pnpm install

You can safely delete:

  • node_modules
  • package-lock.json

The monorepo now uses pnpm-lock.yaml.


3️⃣ Start developing

pnpm webapp:dev

🔁 Command Changes

Before (npm) After (pnpm)
npm run dev pnpm webapp:dev
npm run build pnpm webapp:build
npm run start pnpm webapp:start
npm run test -- --run pnpm webapp:test -- --run
npm run validate pnpm webapp:validate
npm run lint pnpm turbo lint
npm run typecheck pnpm turbo typecheck
npm run db:generate-type pnpm db:generate
npm run db:prepare-migration pnpm db:prepare-migration
npm run setup pnpm webapp:setup

📁 New Project Structure

shelf/
├── apps/
│   └── webapp/          ← Remix app (was at root before)
├── packages/
│   └── database/        ← Prisma schema, migrations, and client
├── tooling/
│   └── typescript/      ← Shared tsconfig
├── turbo.json
├── pnpm-workspace.yaml
└── .env                 ← Still at the root

🌱 Environment Variables

No changes required.
The .env file remains at the monorepo root.


🐳 Docker

Official Docker images continue to work.

If you use a custom Dockerfile:

  • App entrypoint is now:
    apps/webapp/start.sh
    
  • It runs:
    node ./build/server/index.js
    
  • Builds now rely on turbo prune for efficiency.

🧩 Custom Prisma Schema Changes

If you modified the Prisma schema, move it from:

app/database/schema.prisma

to:

packages/database/prisma/schema.prisma

Migrations now live in:

packages/database/prisma/migrations/

✨ Features


🐛 Fixes

  • fix: prevent "Create new audit" link from treating "new" as audit ID by @DonKoko in #2360

🧹 Chores

  • chore(deps-dev): bump minimatch from 3.1.2 to 3.1.4 by @dependabot[bot] in #2359

Full Changelog:
https://github.com/Shelf-nu/shelf.nu/compare/shelf@1.19.0...shelf@1.20.0

shelf@1.18.6

19 Jan 08:13
99187c0

Choose a tag to compare

🚀 Features

🐛 Fixes

  • fix: skip booking time restrictions for admin/owner users by @Copilot in #2223
  • fix: filter cookies not working with RR7 single fetch by @DonKoko in #2228
  • fix: client-side filter cookie paths and clear functionality by @DonKoko in #2229
  • fix(kits): custody card showing for partially checked-in kits by @DonKoko in #2231
  • fix(assets): handle deleted assets gracefully in image refresh API by @DonKoko in #2232
  • fix(assets): prevent Sentry spam from transient Supabase HTML errors by @DonKoko in #2234
  • fix: issue with bookings from and to migration by @DonKoko in #2236
  • fix: resolve Select component hydration issue in booking dialog by @DonKoko in #2237
  • fix: reverting docker version to node:22 by @DonKoko in #2239
  • fix: resolve infinite render loop in CodePreviewDialog by @DonKoko in #2240
  • fix: resolve QR code download issue on Safari/iPad by @DonKoko in #2241
  • fix: simplify the text of updates learn more link by @DonKoko in #2245
  • fix: ensure host headers for React Router CSRF protection in dev mode by @DonKoko in #2254
  • fix: include all tags in model filters by @DonKoko in #2255
  • fix: downgrade missing thumbnail asset log by @DonKoko in #2256
  • fix: set emails footer year to 2026 by @DonKoko in #2257
  • fix: remove qrId column from example asset import csv to reduce confusion of users on first import by @DonKoko in #2258
  • fix: avoid capturing csv parse errors by @DonKoko in #2259
  • fix(auth): show rate-limit signup error by @DonKoko in #2260
  • fix(booking): default intent for implicit submits by @DonKoko in #2261
  • fix(import): don't capture errors related to non-existent qr codes by @DonKoko in #2263
  • fix(asset-import): guard kit and custodian resolution by @DonKoko in #2264
  • fix(asset-reminder): skip missing reminders in worker by @DonKoko in #2266
  • fix(storage): broaden supabase html error detection by @DonKoko in #2268
  • fix(storage): retry signed url on fetch failed by @DonKoko in #2269

⚡ Performance

  • perf: cache selected organization per request by @DonKoko in #2267

🧹 Chores

📚 Documentation

  • docs: Add OTP length configuration to Supabase setup guide by @Copilot in #2243

🌱 New Contributors

Full Changelog: https://github.com/Shelf-nu/shelf.nu/compare/shelf@1.18.5...shelf@1.18.6

shelf@1.18.5

28 Nov 15:08
692917a

Choose a tag to compare

🚀 Features

  • feat: relink qr code action for kits by @DonKoko in #2189
  • feat: implement logMissingFormIntent to improve logging of errors on the booking page by @DonKoko in #2204
  • feat: asset Empty State Styling Consistency by @carlosvirreira in #2201
  • feat: location quick actions by @DonKoko in #2207
  • feat: add meta titles to all page routes for accessibility by @DonKoko in #2212

🐛 Fixes

  • fix: styling of updates popover and font-sizes in markdown editor and viewer by @DonKoko in #2192
  • fix: resolve React 19 + react-zorm incompatibility in asset custom fields by @DonKoko in #2193
  • fix: upload handler issue related to new react-router api by @DonKoko in #2194
  • fix: booking navigating with command palette by @DonKoko in #2195
  • fix: add key to the hidden fields by @DonKoko in #2196
  • fix: handling adding assets and kits to ongoing bookings via scan-assets route by @DonKoko in #2200
  • fix: surface detailed upload errors across different image uploaders by @DonKoko in #2203
  • fix: permissions for adding assets to location via quick actions by @DonKoko in #2208
  • Fix: linting issues by @DonKoko in #2197
  • fix: handleActivationKeyPress only triggers when the element itself is focused by @DonKoko in #2210
  • fix: issue with cancelScheduler not being called in some cases when deleting a booking by @DonKoko in #2213
  • fix: formatAbsoluteDate handling of Date objects by @DonKoko in #2217
  • fix: handling of supabase error responses when creating a signed url by @DonKoko in #2218
  • fix: adjust how advanced index description column displays preview and tooltip content by @DonKoko in #2220

🔧 Refactors

🧹 Chores

Full Changelog: https://github.com/Shelf-nu/shelf.nu/compare/shelf@1.18.4...shelf@1.18.5

shelf@1.18.4

21 Nov 15:24
b02aebb

Choose a tag to compare

🚀 Features

🐛 Fixes

  • fix(booking): ensure BASE/SELF_SERVICE users can create bookings from asset index by @DonKoko in #2161
  • fix(booking): ensure current custodian is visible in edit form by @DonKoko in #2162
  • fix(dropdowns): mobile z-index of asset page dropdowns by @DonKoko in #2166
  • fix(responsiveness): broken layout of accept-invite route on mobile devices by @DonKoko in #2167
  • fix: ensure custodian always appears in booking form select by @DonKoko in #2173
  • fix: correct "Add to Calendar" button path to resolve 404 by @Copilot in #2177
  • Fix: test warnings in npm test by @DonKoko in #2186

🔧 Refactors

  • refactor: improve error message when adding assets in custody to kit by @DonKoko in #2159
  • refactor: make booking.from and booking.to required on db level by @DonKoko in #2183

🧹 Chores

🧪 Tests

  • test: improve test coverage for notes helper functions by @DonKoko in httpsgithub.com//pull/2188

🌱 New Contributors

Full Changelog: https://github.com/Shelf-nu/shelf.nu/compare/shelf@1.18.3...shelf@1.18.4

shelf@1.18.3

28 Oct 14:52
9a39ba0

Choose a tag to compare

What's Changed

🚀 Features

🐛 Fixes

  • fix: allow booking extension when returned assets have conflicts by @DonKoko in #2127
  • fix: prevent assets from staying checked out after overlapping booking completion by @DonKoko in #2128
  • fix: resolve Chrome date parsing error in location overview by @DonKoko in #2132
  • fix(bookings): resolve kit scanning validation failure on scan-assets… by @DonKoko in #2135
  • fix: resolve select-all bug with filters in advanced mode by @DonKoko in #2139
  • fix: correct URL encoding issue in advanced syntax detection by @DonKoko in #2140
  • fix(filters): add withoutValueItem support to DynamicSelect and fix some SQL issues by @Copilot in #2138
  • fix: make SortBy control responsive on mobile by @carlosvirreira in #2142
  • fix(booking): prevent kit row image from shrinking on mobile by @DonKoko in #2151
  • fix: autocomplete hints in login form by @null-dev in #2154

🧹 Chores

  • chore: improving tests by adding reason for why each mock is created by @DonKoko in #2125
  • chore(deps-dev): bump happy-dom from 20.0.0 to 20.0.2 by @dependabot[bot] in #2120
  • chore(deps): bump playwright and @playwright/test by @dependabot[bot] in #2131
  • chore(deps-dev): bump vite from 5.4.20 to 5.4.21 by @dependabot[bot] in #2133
  • chore(deps): bump hono from 4.10.1 to 4.10.2 by @dependabot[bot] in #2141
  • chore: bump react-router-hono-server to 1.2.0 by @DonKoko in #2143
  • chore: bump react-router-hono-server to 1.2.1 by @DonKoko in #2149
  • chore(deps): bump hono from 4.10.2 to 4.10.3 by @dependabot[bot] in #2145

⚡ Performance

Full Changelog: https://github.com/Shelf-nu/shelf.nu/compare/shelf@1.18.2...shelf@1.18.3

shelf@1.18.2

17 Oct 08:17
ec9fb70

Choose a tag to compare

Release 1.18.2

🚀 Features

  • feat: redirect to previous page after editing entities by @DonKoko in #2118

🧩 Refactors

  • refactor: Accessibility sprint #1 by @Copilot in #2066
  • refactor: remove timestamp from duplicated assets name by @DonKoko in #2117

🐞 Fixes

  • fix: prevent barcode scan redirect when feature disabled by @DonKoko in #2103
  • fix: apply filters when exporting assets with select all by @DonKoko in #2110
  • fix: create entry links on asset form by @DonKoko in #2116
  • fix: admin dashboard user route not loading when premium features are disabled by @DonKoko in #2121
  • fix: missing cancel button on kits form by @DonKoko in #2123
  • fix: include all custom field values in asset search by @DonKoko in #2124

🧹 Chores

  • chore: update claude.md and agents.md with information about conventional commits by @DonKoko in #2102
  • chore: reinstate commitizen configuration by @DonKoko in #2106
  • chore: add detailed type reference table to commit message validation by @DonKoko in #2109
  • chore: improve failed commit message by @DonKoko in #2112
  • Bump happy-dom from 15.11.7 to 20.0.0 by @dependabot[bot] in #2107

📝 Documentation

  • docs: highlight commit tooling in contributing guides by @DonKoko in #2104

Full Changelog: https://github.com/Shelf-nu/shelf.nu/compare/shelf@1.18.1...shelf@1.18.2

shelf@1.18.1

10 Oct 08:48
adc02db

Choose a tag to compare

🧾 What’s Changed

🚀 Features

🧹 Improvements

🐛 Fixes

🔒 Security

🧠 Chores & Refactors

  • Chore: Add deep type safety for getUserByID with custom ESLint rule by @DonKoko in #2084

📦 Dependencies


Full Changelog: https://github.com/Shelf-nu/shelf.nu/compare/shelf@1.18.0...shelf@1.18.1

shelf@1.18.0 - Kit locations, Bookings acitivy logs, Tracking custom field changes and many more

26 Sep 10:43
3879498

Choose a tag to compare

🚀 Features

  • Feature/kit location by @rockingrohit9639 in #1961
  • Feat: Store changes to custom fields values in asset notes by @Copilot in #2030
  • Add location overview tab and valuation aggregation by @carlosvirreira in #2042
  • Feat: Add QR code ID display customization feature by @DonKoko in #2053
  • Feat: Create activity log for bookings by @Copilot in #2047
  • Add confirmation dialog before canceling bookings by @DonKoko in #2063

🐛 Fixes

  • fix: node version in package.json to point to 20.x by @DonKoko in #2034
  • fix: bug with undefined asset in asset form by @DonKoko in #2035
  • Fix partial check-in progress display for COMPLETE and ARCHIVED bookings by @DonKoko in #2041
  • Fix self-service asset pagination counts by @carlosvirreira in #2038
  • Fix: Filename Sanitization - Content-Disposition Header Issue by @DonKoko in #2056
  • Fix custom field link alignment and ref handling by @carlosvirreira in #2057
  • Fix: Guard asset/kit custody assignment by organization by @carlosvirreira in #2054
  • Fix multiple critical cross-tenant security vulnerabilities by @DonKoko in #2060

♻️ Improvements & Refactors


🔧 Chores


📦 Dependency Updates


Full Changelog: https://github.com/Shelf-nu/shelf.nu/compare/shelf@1.17.2...shelf@1.18.0

shelf@1.17.2

10 Sep 16:11
ca5d908

Choose a tag to compare

What's Changed

  • [Feature request]: BGN to list of currencies by @Copilot in #2025
  • fix: make sure validateNonSSOSignup checks for DISABLE_SSO by @DonKoko in #2026
  • fix: broken link on kits availability index by @DonKoko in #2027
  • refactor: remove redundant custody extraInclude in kit loader by @DonKoko in #2028

Full Changelog: https://github.com/Shelf-nu/shelf.nu/compare/shelf@1.17.1...shelf@1.17.2

shelf@1.17.1

02 Sep 08:53
945be1f

Choose a tag to compare

Shelf.nu v1.17.1 Release Notes

Features

Kit Management

Booking System

  • feat: optional required tags for bookings by @DonKoko in #1927
  • feat: show creator details on booking page by @rockingrohit9639 in #1932
  • feat(duplicate-booking): create feature to duplicate booking by @rockingrohit9639 in #1934
  • Feat: booking max length by @DonKoko in #1928
  • feature: broaden search capabilities in booking area by @DonKoko in #1945
  • feat(upcoming-booking-column): add toggleable upcoming booking column by @rockingrohit9639 in #1944
  • Feature/checked out asset booking by @rockingrohit9639 in #1972
  • feat: partial check in & scan to check in: by @DonKoko in #1952
  • Feat: In our calendar functionality we have a card made using renderEventCard that shows information about the booking. WE should show information about who created the booking in the same style we are showing the custodian. This should resolve #1978. by @Copilot in #1982

Admin & System Management

Custom Fields & Data Types

Barcode & Asset Management

  • Add EAN-13 barcode support with database migration by @Copilot in #1987

Localization

  • Add UGX (Ugandan Shilling) currency support by @Copilot in #1984
  • feat: Add location description column to locations index by @Copilot in #1990

Bug Fixes

Kit & Asset Management

  • fix: wrong field select for kitId.overview by @DonKoko in #1923
  • fix: importing with existing barcodes by @DonKoko in #1959
  • Fix: bug with lru cache on import by @DonKoko in #1967
  • fix: barcode value normalization during upload by @DonKoko in #1968
  • fix: asset index export should include barcodes columns by @DonKoko in #1973
  • fixing issue with mapping of EAN13 to EAN-13 by @DonKoko in #2001
  • Fix: Add kit-custody conflict validation for asset imports by @DonKoko in #2013

Subscription & Billing

Calendar & Scheduling

  • fix: calendar not properly controlling view permissions for self service and base users by @DonKoko in #1940
  • Fix working hours override date timezone issue by @DonKoko in #2002
  • Fix: working hours override date display timezone issue by @DonKoko in #2012

User Interface

Permissions & Access Control

  • fix: don't show button to add barcodes to base or self service users by @DonKoko in #1949

Data Management

  • fix: file exports cache issue by @DonKoko in #1938
  • Fix sequential ID migration modal state persistence bug by @DonKoko in #1983
  • Fix: Set hasSequentialIdsMigrated=true for new personal organizations by @Copilot in #1998
  • Bug: sequentialIds break after 9999 by @Copilot in #2004

Improvements

User Experience

Documentation

  • update: SSO docs to reflect admin user limitations by @DonKoko in #1963
  • Update supabase-setup.md by @dcavacec in #1962
  • Improvement: Scanner documentation and consistency by @Copilot in #1996

Technical Updates

Infrastructure & Build

  • update: node version to 22 and remix versions by @DonKoko in #1974
  • Optimize build process and implement geocoding caching system by @DonKoko in #1976
  • Fix pigeon-maps production build import error by @DonKoko in #1977
  • Fix Docker build failure by copying prisma.config.ts to release stage by @DonKoko in #1981
  • Fix deployment crashes by downgrading Node.js version in Dockerfile by @DonKoko in #2017

Database & Configuration

  • Fix: Prisma config to load environment variables by @DonKoko in #1975

Development & Tooling

Dependencies

New Contributors

  • @dcavacec made their first contribution in #1962
  • @Copilot made their first contribution in #1984

Full Changelog: https://github.com/Shelf-nu/shelf.nu/compare/shelf@1.17.0...shelf@1.17.1