<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Shelf Product Updates</title>
    <link>https://www.shelf.nu/updates</link>
    <description>New features, improvements and platform updates in Shelf.</description>
    <language>en</language>
    <atom:link href="https://www.shelf.nu/updates/rss.xml" rel="self" type="application/rss+xml" />
    <image>
      <url>https://www.shelf.nu/rss-icon.png</url>
      <title>Shelf Product Updates</title>
      <link>https://www.shelf.nu/updates</link>
      <width>144</width>
      <height>144</height>
    </image>
    <lastBuildDate>Fri, 23 Oct 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>Exported Values That Look Like Formulas Stay Text</title>
      <link>https://www.shelf.nu/updates/exported-cells-that-look-like-formulas-stay-text</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/exported-cells-that-look-like-formulas-stay-text</guid>
      <pubDate>Fri, 23 Oct 2026 00:00:00 GMT</pubDate>
      <description>When a name, tag or field value starts with =, +, - or @, Shelf&apos;s CSV exports now put a single quote in front of it, so Excel and Google Sheets show it as text instead of running it as a formula. Negative numbers are left alone.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/better-csv-imports.jpg" alt="" /></p><p>A spreadsheet runs a cell that starts with <code>=</code>, <code>+</code>, <code>-</code> or <code>@</code> as a formula when you open the file, so a value someone typed into Shelf could act as a formula on your computer. Shelf's CSV exports now put a single quote (<code>'</code>) in front of such a value, and Excel and Google Sheets show it as plain text. Negative numbers such as <code>-5</code> or <code>-$5.00</code> keep working as numbers, so totals still add up.</p>
<p>This covers both asset export formats, Standard and Import-ready, and bookings, report exports, non-registered members and activity notes. Upload an asset export to update or import your assets and Shelf removes the added quote again, so nothing changes in your data. See <a href="https://www.shelf.nu/knowledge-base/export-exporting-workspace-data-from-shelf#values-that-look-like-formulas">Exporting Data from Shelf</a> for the details.</p>]]></content:encoded>
    </item>
    <item>
      <title>Import the Spreadsheet From Your Old Tool As It Is</title>
      <link>https://www.shelf.nu/updates/import-a-spreadsheet-from-any-tool</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/import-a-spreadsheet-from-any-tool</guid>
      <pubDate>Fri, 23 Oct 2026 00:00:00 GMT</pubDate>
      <description>Asset import no longer needs Shelf&apos;s column names. Upload the CSV export of Sortly, Asset Panda, Snipe-IT or your own spreadsheet under Assets → Import, check where Shelf sends each column, and import. An empty workspace now offers the import on the Assets page and in the Home checklist.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/import-column-mapping.webp" alt="" /></p><p>You no longer have to rename your columns to Shelf's before importing assets. Under <strong>Assets → Import</strong>, choose the CSV your old tool or spreadsheet exported and click <strong>Continue</strong>. Shelf shows <strong>Check how your columns map</strong>: each column with a few sample values and the Shelf field it proposes, a green dot for a sure match and an amber one for a guess to check. It recognises more than 150 headings from Sortly, Asset Panda, Snipe-IT and hand-made spreadsheets, so <em>Entry Name</em> lands on the name, <em>Primary Folder</em> on the location and <em>Serial No.</em> on a new Serial number custom field. It reuses custom fields you already have, skips the old tool's own ids, and asks whether a file with a quantity column but no type column holds individual assets or stock.</p>
<p>Change any row, keep a column as a custom field, or skip it, then click <strong>Preview import</strong>. From there the import works as before: the whole file is checked, the preview shows what it will create, and the import runs in the background. The mapping only renames columns, so the value rules, such as dates as <code>YYYY-MM-DD</code>, still apply. A file built from Shelf's template goes through with every row green.</p>
<p>New workspaces find the import sooner, too. While a workspace has no assets, the <strong>Assets</strong> page offers <strong>Import a spreadsheet</strong> next to <strong>Create your first asset</strong>, and the <strong>Home</strong> checklist has an <strong>Import your assets</strong> item, for members whose role and plan allow importing.</p><p><a href="https://www.shelf.nu/knowledge-base/importing-assets-to-shelf-csv-guide#checking-how-your-columns-map">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>New Bookings Say They Are Drafts, and Check-Out Asks First</title>
      <link>https://www.shelf.nu/updates/new-bookings-say-they-are-drafts</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/new-bookings-say-they-are-drafts</guid>
      <pubDate>Fri, 23 Oct 2026 00:00:00 GMT</pubDate>
      <description>Creating a booking now says it makes a draft, and that a draft holds nothing until you reserve it. Reserve explains when a draft&apos;s start time has passed, and the one-click Check out opens a confirmation, as check-in already did.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/booking-new-draft-hint.webp" alt="" /></p><p>Some bookings were still <strong>Draft</strong> when people came to pick up their gear: they had been created with their assets and never reserved, so nothing was held. The booking form now says what it makes. Above its buttons it reads <em>"This creates a draft. You can reserve it from the booking page."</em>, the button that creates a booking with its assets already chosen reads <strong>Create draft</strong>, and the confirmation is <strong>Draft created</strong>. On a draft, <strong>Save</strong> and the unsaved changes bar read <strong>Save draft</strong>.</p>
<p>When a draft's start time has passed, <strong>Reserve</strong> (or <strong>Request reservation</strong>) is greyed out with <em>"The start time has passed. Move it later to reserve."</em>, instead of a small error under the date. Move the start later and the button comes back before you save. Self-service and Base users also see why when the start is inside the workspace's minimum advance notice.</p>
<p>Checking a booking out in one click now asks first, the way check-in does. <strong>Check out</strong>, and <strong>Check out remaining</strong> on a booking that is already out, open a <strong>Check out booking</strong> dialog that names the booking; <strong>Cancel</strong> leaves it as it was. An early check-out still shows its date question instead, and the scanner and selection flows keep their own confirmation.</p><p><a href="https://www.shelf.nu/knowledge-base/how-to-create-a-booking">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Pick Category and Tag Colors, With a Preview of the Badge</title>
      <link>https://www.shelf.nu/updates/pick-category-and-tag-colors-with-a-preview</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/pick-category-and-tag-colors-with-a-preview</guid>
      <pubDate>Fri, 23 Oct 2026 00:00:00 GMT</pubDate>
      <description>The category and tag forms have a color swatch that opens your browser&apos;s color picker, a live preview of the badge, and accept short names like IT or AV. A form that cannot be saved now says why.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/category-color-picker.webp" alt="" /></p><p>Choosing a color for a category or tag no longer means typing a hex code. Click the swatch next to the <strong>Color</strong> field and your browser's color picker opens; the code fills in for you. A <strong>Preview</strong> under the fields shows the badge as it will look, with one line explaining why it is lighter than the color you picked: badges use a light tint with darker text so the name stays readable, and your exact color is still saved.</p>
<p>The forms are also easier to save. Short names such as <strong>IT</strong> or <strong>AV</strong> are accepted (they used to need three characters), colors typed as <code>#fff</code> or without the <code>#</code> are fine, and when something is wrong the form now shows a message saying what, instead of the <strong>Create</strong> or <strong>Update</strong> button doing nothing. See <a href="https://www.shelf.nu/knowledge-base/using-categories-to-organize-your-asset-inventory#creating-an-asset-category">Using Categories</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Asset Imports Run in the Background, up to 10,000 Rows</title>
      <link>https://www.shelf.nu/updates/asset-imports-run-in-the-background</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/asset-imports-run-in-the-background</guid>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
      <description>Importing assets from a CSV now shows a preview first and then runs in the background, so you can leave the page. Find it under Assets → Import: you get a progress bar, an email when it finishes, and a Resume import button if it ever stops. One file can now hold up to 10,000 assets.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/better-csv-imports.jpg" alt="" /></p><p>Asset imports from a CSV now run in the background. Under <strong>Assets → Import</strong>, choose your file and click <strong>Continue</strong>, check where each of your columns goes, then click <strong>Preview import</strong>. Shelf checks every row and shows what the file will do before anything is created: how many assets it holds, the new categories, locations, tags, kits, custodians and custom fields it will add, and a grid of the rows.</p>
<p>Click <strong>Import N assets</strong> and confirm, and the import runs in the background. You can leave the page: a progress card follows you around Shelf, the assets list shows your team that an import is running, and you get an email when it is complete.</p>
<p>What changes for you:</p>
<ul>
<li><strong>Bigger files.</strong> One file can hold up to <strong>10,000 assets</strong> (up from 1,000), so most inventories go in as a single file.</li>
<li><strong>Resume instead of re-upload.</strong> If an import stops, <strong>Resume import</strong> continues it without duplicates.</li>
<li><strong>Warnings, not failures.</strong> If something changes between the preview and the import, for example a QR code from the file gets linked to another asset, that row is still imported with the value left out, and the import page lists it.</li>
</ul>
<p>Updating existing assets by CSV works as before, up to 1,000 assets per file.</p><p><a href="https://www.shelf.nu/knowledge-base/importing-assets-to-shelf-csv-guide#running-the-import">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Shelf Companion 1.6.0: iPad and Tablets, Extend a Booking, Book Units of Stock</title>
      <link>https://www.shelf.nu/updates/companion-1-6-0-ipad-extend-bookings-and-stock</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/companion-1-6-0-ipad-extend-bookings-and-stock</guid>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
      <description>Shelf Companion now runs as a real iPad app and fits Android tablets, with a sidebar on a larger tablet held sideways. On every phone you can also extend a running booking from More actions, book a number of units of stock, see what an asset is booked for, and add a closing note when you complete an audit.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/shelf-mobile-app.jpg" alt="" /></p><p><strong>Shelf Companion 1.6.0</strong> is live on the App Store and Google Play. It is the first version built for tablets: on an iPad it runs as a real iPad app instead of an enlarged iPhone one, and on an Android tablet it fills the screen and rotates. On a larger tablet held sideways (and a 13-inch iPad either way), the tab bar becomes a sidebar on the left. Phones look the same as before.</p>
<p>The updates of 20 and 21 October also reached every phone, on 1.6.0 and on 1.5.0, without a trip to the store:</p>
<ul>
<li><strong>Extend a running booking.</strong> On an Ongoing or Overdue booking, <strong>More actions → Extend booking</strong> moves the end later, with <strong>+1 hour</strong>, <strong>+4 hours</strong> and <strong>+1 day</strong> buttons for one-tap use on site.</li>
<li><strong>Book units of stock.</strong> A quantity-tracked asset is booked by count, from the picker or by scanning, capped at what is free for the booking's dates. Until units go out, the pencil on the row changes the number.</li>
<li><strong>What an asset is booked for.</strong> The asset screen has a <strong>Bookings</strong> section, with the booking it is out on now first.</li>
<li><strong>Close an audit with a note.</strong> <strong>Complete audit</strong> says how many unscanned assets will be marked missing and takes an optional closing note.</li>
<li><strong>Set the value on New asset</strong>, in your workspace currency.</li>
<li><strong>Search in long dropdowns.</strong> Dropdown fields with more than eight options get a search box.</li>
</ul>
<p>The app picks up an update in the background when you open it and uses it from the next time you open it.</p><p><a href="https://www.shelf.nu/knowledge-base/shelf-ios-companion-getting-started">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Free Now and Stock Status on the Asset List</title>
      <link>https://www.shelf.nu/updates/free-now-and-stock-status-on-the-asset-list</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/free-now-and-stock-status-on-the-asset-list</guid>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
      <description>The advanced asset list now shows each quantity-tracked pool&apos;s stock: Free now (14 of 20 pcs) and a Stock status of Short, None free, Running low or Enough, right after Status. Reserved, Total quantity, Unit of measure and Min quantity are one switch away under Columns. Select several pools and use Set min quantity to give them a threshold at once.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/stock-columns.webp" alt="" /></p><p>The advanced asset list now shows each pool's stock right after Status.</p>
<ul>
<li><strong>Free now</strong> reads like <em>14 of 20 pcs</em>: the units you could hand over today, after custody, kits and units out on bookings. Units promised to a future booking are still on the shelf, so they are not subtracted.</li>
<li><strong>Stock status</strong> gives one verdict per pool. <strong>Short by N</strong> means bookings, custody and kits need more than you own at the busiest point ahead. <strong>None free</strong>, <strong>Running low</strong> (at or below your min quantity) and <strong>Enough</strong> cover the rest. Without a min quantity it can still read <strong>Short by N</strong> or <strong>None free</strong>; otherwise it shows a dash. Hover for the figures, and for a shortfall, a link to the booking that causes it.</li>
<li><strong>Reserved</strong> (in the column picker) counts the units promised to upcoming bookings, and an over-committed pool reads like <em>12 · 2 short</em>.</li>
<li><strong>Unit of measure</strong> has its own column. <strong>Total quantity</strong> is now the bare number, and the Standard CSV export writes it that way too, so the column adds up in a spreadsheet.</li>
</ul>
<p>Status on the list now uses the same figures, so a pool with units out says so instead of reading Available. All three new columns can be filtered and sorted, and <strong>Set min quantity</strong> in the bulk actions gives many pools a threshold in one step. The <strong>Needs reordering</strong> filter (formerly <em>Low stock only</em>) compares Free now with each pool's min quantity.</p>
<p>On the asset page and in the Shelf Companion app the same figure is now called <strong>Free now</strong> as well.</p><p><a href="https://www.shelf.nu/knowledge-base/quantity-tracked-assets-and-consumables#stock-columns-on-the-asset-list">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>QR Code URLs for Your Own Label Printer</title>
      <link>https://www.shelf.nu/updates/qr-urls-for-label-printers</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/qr-urls-for-label-printers</guid>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
      <description>The bulk QR download now includes a labels.csv with each asset&apos;s QR URL, and the Standard asset export and Asset Inventory report carry the URL too, so label software like Brady Workstation, P-touch Editor or Dymo Connect can print Shelf codes on your own labels.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/order-qr-labels.jpg" alt="" /></p><p>Label printer software builds a QR code from a column of URLs. Shelf gave you the QR images and the QR ID, but not the URL each code encodes, so printing Shelf codes on your own label stock meant asking support for a file. Now the URL comes with your data:</p>
<ul>
<li><strong>Bulk QR download.</strong> Select assets, then <strong>Actions → Download QR Codes</strong>. The zip now holds a <code>labels.csv</code> next to the images, one row per asset: asset name, SAM ID, QR ID, QR URL, category and location.</li>
<li><strong>Asset export.</strong> A <strong>Standard</strong> export from the advanced asset index has a <strong>QR URL</strong> column right after <strong>QR ID</strong>.</li>
<li><strong>Asset Inventory report.</strong> Its CSV carries a <strong>QR Code URL</strong> column.</li>
</ul>
<p>Each URL reads <code>https://eam.sh/&#x3C;QR ID></code>, the same link the Shelf QR code encodes, so your printed label scans exactly like the original.</p><p><a href="https://www.shelf.nu/knowledge-base/how-to-print-custom-branded-qr-code-labels-with-shelf#printing-labels-for-assets-you-already-have">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>A Filter Bar for Reports, and Reports on Plus and Team</title>
      <link>https://www.shelf.nu/updates/report-filter-bar-and-plans</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/report-filter-bar-and-plans</guid>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
      <description>Booking, asset and custody reports now have a filter bar, with new Asset model and Custom field filters, and their CSV and PDF exports follow the same filters. Reports are part of the Plus and Team plans.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/features/reports-filter-bar.webp" alt="" /></p><p>Some reports could already be filtered, but only by typing parameters into the address bar. Every booking, asset and custody report except <strong>Top Booked Kits</strong> can now be filtered from a <strong>filter bar</strong> with dropdowns for the filters it supports: Category, Location, Status and Custodian where they apply, and two new ones on every asset-based report:</p>
<ul>
<li><strong>Custom field</strong>: pick a field, then one of the values it holds, for example <em>Condition is Good</em>. Text, dropdown and yes/no fields; several combine so a row must match all of them.</li>
<li><strong>Asset model</strong>: narrow a report to the units of one or more models. <strong>Asset Distribution</strong> also gains a <strong>By Asset Model</strong> breakdown.</li>
</ul>
<p>Applied filters show as chips you can remove one by one, and the headline numbers, the CSV and the PDF follow exactly what the page shows. <strong>Monthly Booking Trends</strong> now applies its category and location filters, which it used to accept and ignore. Filtered reports are still a link you can bookmark and share.</p>
<p>Since 20 October 2026, <strong>Reports</strong> is part of the <strong>Plus and Team</strong> plans. On a Free workspace it stays in the sidebar and shows which plans include it; the plan is the workspace's, so an Administrator in a Team workspace keeps reports whatever their own plan.</p><p><a href="https://www.shelf.nu/knowledge-base/getting-started-with-reports#apply-filters">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Sort, Rename and Merge Dropdown Options</title>
      <link>https://www.shelf.nu/updates/sort-rename-and-merge-dropdown-options</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/sort-rename-and-merge-dropdown-options</guid>
      <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
      <description>Option custom fields can now be reordered by drag, sorted A-Z, renamed in place and cleared of duplicates, and every asset follows the change when you save.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/dropdown-options-editor.webp" alt="" /></p><p>Under <strong>Settings → Custom fields</strong>, an Option field's choices can now be managed in place:</p>
<ul>
<li><strong>Drag to reorder</strong>, or press <strong>Alt+Up</strong> / <strong>Alt+Down</strong>, and <strong>Sort A-Z</strong> in one click, with <strong>Undo sort</strong>.</li>
<li><strong>Rename</strong> an option, and every asset holding it moves to the new spelling when you save.</li>
<li><strong>Merge duplicates</strong> that differ only in capitals or spaces (<code>Sony</code>, <code>sony </code>), keeping the first spelling.</li>
<li>Each option that is in use shows <strong>Used on N assets</strong>, and removing one that is in use asks you to confirm first.</li>
</ul>
<p>Long dropdowns also get a search box above eight options, in the advanced index filters and in the Shelf Companion app.</p><p><a href="https://www.shelf.nu/knowledge-base/custom-field-types-in-shelf#managing-an-option-fields-choices">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>See When Each Asset Was Last Audited</title>
      <link>https://www.shelf.nu/updates/last-audit-date-on-the-asset-index</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/last-audit-date-on-the-asset-index</guid>
      <pubDate>Tue, 20 Oct 2026 00:00:00 GMT</pubDate>
      <description>The advanced asset index has a Last audit date column: when the asset was last counted in a completed audit, or Never audited. Hover it for the asset&apos;s recent and upcoming audits, filter on it, sort by it and export it. The asset page gets a matching Last audit card. Open Assets, switch to the advanced index, and look for the column.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/last-audit-date-column.webp" alt="" /></p><p>The advanced asset index now has a <strong>Last audit date</strong> column, on by default, so teams that run <a href="https://www.shelf.nu/features/audits">audits</a> can see at a glance which assets have not been counted lately. It holds the completion date of the most recent completed or archived audit the asset was in, or <em>Never audited</em>. An asset reported missing in that audit still counts, because it was on the list that was checked. Hover a date for up to three recent audits with the asset's result in each, up to three upcoming ones, and <strong>View all audits</strong>, which opens the audits list filtered to that asset. Filter the column with the usual date operators or <strong>Never audited</strong>, sort it (never-audited assets go last), and take it along in a Standard export; the Import-ready export leaves it out.</p>
<p>The asset page shows the same history on a <strong>Last audit</strong> card in its right column: the last audit, up to three earlier and three upcoming ones, and <strong>View all audits</strong>.</p>
<p>Both appear for Owners, Administrators and Managers in a workspace with the Audits add-on. Without the add-on the column reads <strong>Unlock audits</strong> and there is no card; Self-service and Base users do not see the column or the card.</p><p><a href="https://www.shelf.nu/knowledge-base/advanced-asset-index-complete-guide#last-audit-date">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Every Asset and Kit Has a Scan History</title>
      <link>https://www.shelf.nu/updates/scan-history-on-every-asset-and-kit</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/scan-history-on-every-asset-and-kit</guid>
      <pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate>
      <description>View all scans, under the Last scan card on an asset or kit, opens the full list of its scans, newest first: what was scanned, where it was recorded, when, by whom, the device, and the location when the scan carried one.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/scan-history-sheet.webp" alt="" /></p><p>Every scan of an asset or kit is recorded, whatever code was on the label and wherever the scan happened. The <strong>Last scan</strong> card shows the newest one, and under it a <strong>View all scans</strong> button that opens a panel with the asset's or kit's whole scan history, newest first, 25 at a time with <strong>Load more</strong>. Each scan says what was scanned (<em>QR code</em>, <em>Barcode</em> with its value, or <em>SAM ID</em> with the ID), where it was recorded (<em>QR link</em>, <em>Web scanner</em>, <em>Scanner list</em>, <em>Companion app</em>, <em>Audit</em> or <em>GPS update</em>; scans from before 16 October read <em>Not recorded</em>), when, who scanned it, the device, and the coordinates as a Google Maps link when the scan carried a location (a scan without one reads <em>No location</em>; web barcode and SAM ID scans carry none). The card's own <strong>Source</strong> row uses the same words.</p>
<p>The history is visible to the same people as the card: Owners, Administrators and Managers. Self-service and Base users do not see either.</p><p><a href="https://www.shelf.nu/knowledge-base/where-an-asset-was-last-scanned#the-full-scan-history">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>An Unsaved Changes Bar on Asset, Kit, Location and Booking Forms</title>
      <link>https://www.shelf.nu/updates/unsaved-changes-bar</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/unsaved-changes-bar</guid>
      <pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate>
      <description>The asset, kit and location forms and the booking edit form show an Unsaved changes bar with Discard and Save the moment something changes, and ask before you leave the page with unsaved work.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/unsaved-changes-bar.webp" alt="" /></p><p>The asset, kit and location forms (new and edit) and the form that edits an existing booking watch for changes.</p>
<p>As soon as a field differs from what is saved, an <strong>Unsaved changes</strong> bar appears, at the top of the page on a wide screen and along the bottom on smaller screens, with <strong>Discard</strong> and <strong>Save</strong>. <strong>Discard</strong> puts every field back to its saved value, including a category, tag or location you picked. <strong>Save</strong> saves as the form's own button does, and a refused save, for example for an empty name, keeps the bar. Leaving the page with unsaved work, by a link, the breadcrumb or the back button, asks <em>"You have changes that are not saved. Leave this page and lose them?"</em> with <strong>Leave page</strong> and <strong>Stay</strong>, and closing or reloading the tab asks too. Opening a dialog on the same page, such as <strong>Manage assets</strong> on a booking, is not leaving and asks nothing. See <a href="https://www.shelf.nu/knowledge-base/adding-new-assets#unsaved-changes">Adding New Assets</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Audit Completion: One Report for All Your Audits</title>
      <link>https://www.shelf.nu/updates/audit-completion-report</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/audit-completion-report</guid>
      <pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate>
      <description>Open Reports → Audit Completion to see every audit created in a timeframe with its completion rate, the overdue audits and the assets found missing. Each row lists the audit&apos;s expected, found, missing and unexpected counts and an accuracy figure, and opens the audit. Export the rows to CSV.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/features/reports-audit-completion.webp" alt="" /></p><p>The <strong>Audits</strong> category on the Reports page has its first report. <strong>Audit Completion</strong> answers "are audits getting done, how accurate are they, and what did they find?" for every audit created in the timeframe you pick. The headline is the completion rate, with the number of overdue audits and the assets found missing beside it. Underneath, one row per audit carries its status, the expected, found, missing and unexpected counts, an accuracy bar, who created it and its started, due and completed dates. Click a row to open the audit, or <strong>Export CSV</strong> to take the rows with you.</p>
<p>The counting is careful about history. An audit belongs to the period it was created in; a completed audit stays completed after it is archived; cancelled audits are left out of the rate; and the assets-missing total only adds up audits that were completed, because a running audit's missing counter is still moving. Reports are for Owners and Administrators, and the report fills up for workspaces using the <a href="https://www.shelf.nu/features/audits">Audits</a> add-on.</p><p><a href="https://www.shelf.nu/knowledge-base/getting-started-with-reports#how-audit-completion-counts">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>The Barcodes Add-on Now Says What Is Already Included</title>
      <link>https://www.shelf.nu/updates/barcodes-add-on-says-what-is-included</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/barcodes-add-on-says-what-is-included</guid>
      <pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate>
      <description>The Alternative Barcodes unlock dialog, the banners on the asset form and the trial welcome email now say first that Shelf QR codes, their labels and scanning them are in every plan, and that the add-on is for other formats or codes already on your gear.</description>
      <content:encoded><![CDATA[<p>The <strong>Unlock Alternative Barcodes</strong> dialog used to list "QR codes", "Print barcode labels" and a "Built-in barcode scanner" as things the add-on gives you, which read as though Shelf's own QR codes were a paid feature. They are not, and never were: every plan generates a QR code for each asset and kit, prints labels for them and scans them. A prospect buying unassigned QR stickers from the Shelf store asked whether that meant buying the add-on too, and the honest answer was no.</p>
<p>The copy now says so. The dialog, the banners on the asset form and asset page, the plan picker card and the barcode trial welcome email all open with "Shelf QR codes are included in every plan", and describe the add-on as what it is: adding Code128, Code39, EAN-13 and DataMatrix barcodes to assets and kits, keeping the barcodes already on your gear (including QR codes from another system), and printing and scanning those. The disabled <strong>Add code to asset</strong> tooltip starts with the same sentence. Nothing about what the add-on unlocks has changed; see <a href="https://www.shelf.nu/knowledge-base/alternative-barcodes">Alternative Barcodes</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Add Assets to a Booking From a Location and Its Sub-Locations</title>
      <link>https://www.shelf.nu/updates/booking-picker-includes-child-locations</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/booking-picker-includes-child-locations</guid>
      <pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate>
      <description>In a booking&apos;s Add assets dialog, ticking a location that has child locations now offers an Include assets from child locations checkbox. Tick it and the list, and Select all, include every asset kept below it.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/booking-picker-child-locations.webp" alt="" /></p><p>On a booking's <strong>Add assets</strong> dialog, ticking a parent location whose assets sit in its sub-locations showed an empty list, with no hint why: the <strong>Locations</strong> filter matched the ticked location exactly. Now, when a ticked location has <a href="https://www.shelf.nu/knowledge-base/sublocations-organize-locations-into-hierarchies">child locations</a>, a checkbox <strong>Include assets from child locations</strong> appears under the filter. Tick it and the list adds every asset kept below the ticked locations, and <strong>Select all</strong> picks the same set, so a whole building can go on a booking in one pass.</p>
<p>The checkbox is off by default, hidden for a location without children, and works the same way as the one the <strong>Start audit</strong> dialog already offers for a location. The kit page's and the location page's asset pickers keep exact matching.</p><p><a href="https://www.shelf.nu/knowledge-base/adding-assets-and-kits-to-a-booking#assets-kept-in-sub-locations">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Shelf Companion: The Manager Role, Show More on Descriptions, and Links That Open the Right Record</title>
      <link>https://www.shelf.nu/updates/companion-manager-role-show-more-and-linked-records</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/companion-manager-role-show-more-and-linked-records</guid>
      <pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate>
      <description>An over-the-air update on 15 October 2026: Managers get their web reach on the phone, long booking and audit descriptions open in full with Show more, asset descriptions show a 5,000-character count, and a link to a second booking or audit opens that one instead of the one already on screen.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/shelf-mobile-app.jpg" alt="" /></p><p>An over-the-air update went out to <strong>Shelf Companion</strong> on iPhone and Android on 15 October 2026. The version number stays <strong>1.5.0</strong>. The app picks up an update like this in the background when you open it and uses it the next time you open it, so there is nothing to fetch from the store.</p>
<h2>The Manager role, on the phone</h2>
<p>The <a href="https://www.shelf.nu/knowledge-base/user-roles-and-their-permissions#manager">Manager</a> role arrived on the web the same morning. On the phone a Manager now gets the same reach: every booking in the workspace, with check-out, check-in and the whole team in the custodian picker; custody hand-offs to anyone; any audit, assigned or not; and the whole catalogue to read, without the edit controls an Administrator has. Before this update the app did not know the role and showed a Manager what a Base user sees.</p>
<h2>Read the whole description</h2>
<p>A booking or audit description longer than three lines ends in <strong>Show more</strong>. Tap it to read the rest, and <strong>Show less</strong> to fold it back. Until now the text was cut off on the phone with no way to open it.</p>
<h2>A link opens the record it names</h2>
<p>With a booking open, following a link to a second booking kept showing the first one; the audit screen had the same bug. Each now opens the record the link names, with its own selection, search and open sheets.</p>
<h2>A character count on asset descriptions</h2>
<p><strong>New asset</strong> and <strong>Edit</strong> show how many characters the description holds and its limit of 5,000, the same limit the web applies.</p>
<p>The iPad layout and Android tablet rotation that were merged this week are native changes and wait for the 1.6.0 store build; they are not part of this update.</p><p><a href="https://www.shelf.nu/knowledge-base/shelf-ios-companion-getting-started">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>The Workspace Backup Export Is Retired</title>
      <link>https://www.shelf.nu/updates/workspace-backup-export-retired</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/workspace-backup-export-retired</guid>
      <pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate>
      <description>The Asset backup card under Settings → General is gone. The Assets index export does everything it did: select all, Export selection, Import-ready with All columns, and the file re-imports into any workspace.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/export-format-options.webp" alt="" /></p><p>The <strong>Asset backup</strong> card under <strong>Settings → General</strong>, with its <strong>Download CSV</strong> button, has been removed, and so has the restore tool Shelf support used on those files. The backup format was older than the Assets index export and could not be re-imported by you: its category, tag and asset model cells held raw stored data rather than names.</p>
<p>The Assets index export now covers everything the backup did. Select all assets, click <strong>Export selection</strong>, choose <strong>Import-ready</strong> and <strong>All columns</strong>, and the file carries every asset with its category, tags, location, custodian, asset model, barcodes and custom field values, written the way the importer reads them. Keep it as your copy, or upload it into another workspace through <strong>Assets → Import</strong> to recreate the assets there.</p>
<p>Old backup files you still have cannot be uploaded: the import page says to use the template or an Import-ready export, and the <strong>Update existing</strong> flow recognizes a legacy backup file and stops with an explanation. Export again from the Assets index instead.</p><p><a href="https://www.shelf.nu/knowledge-base/export-exporting-workspace-data-from-shelf#choosing-an-export-format">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>A Manager Role for the People Who Run the Equipment Counter</title>
      <link>https://www.shelf.nu/updates/manager-role</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/manager-role</guid>
      <pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate>
      <description>A new workspace role, Manager, sits between Administrator and Self service. Managers run every booking, custody assignment and audit in the workspace without being able to change assets, settings, billing or the team. Grant it from Settings → Team → Users → Invite a user or Change role, by CSV import, or through an SSO group.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/invite-role-list-manager.webp" alt="" /></p><p>Until now, anyone who had to hand gear out to other people, take it back, or count stock for the whole workspace needed the Administrator role, and with it the power to edit every asset, change settings and manage the team. Many workspaces gave front-desk staff more than they needed because the role in between did not exist.</p>
<p>You can now make someone a <strong>Manager</strong>. A Manager:</p>
<ul>
<li>sees every booking and can create, edit, check out, check in, extend, cancel and delete any of them, name anyone as custodian, and use the bookings list's bulk actions;</li>
<li>sees every custodian and assigns or releases custody of assets and kits to anyone;</li>
<li>sees every audit and can create, run, edit, complete, cancel, archive and delete any audit;</li>
<li>reads the whole catalogue, including assets marked unavailable for bookings and archived assets, adds asset notes and reminders, and can add or edit non-registered members.</li>
</ul>
<p>A Manager cannot create, edit, import, export, archive or delete assets, kits, locations, categories, tags, custom fields or asset models; cannot invite, remove or re-role users; and does not see the workspace settings, billing, the dashboard or Reports. Signing in lands a Manager on <strong>Bookings</strong>.</p>
<p>Owners and Administrators grant the role from <strong>Settings → Team → Users</strong>, through <strong>Invite a user</strong> or <strong>Change role</strong>, or from a <a href="https://www.shelf.nu/knowledge-base/inviting-users-via-csv-upload">CSV user import</a> (<code>MANAGER</code>, or the label <code>Manager</code>). The workspace Owner can also map an identity-provider group to it in the new <strong>Manager role group</strong> field of the <a href="https://www.shelf.nu/knowledge-base/sso-with-google-workspace#step-9-map-google-workspace-groups-inside-shelf">SSO settings</a>. Changing an Administrator to Manager moves nothing: the records they created stay in their name.</p>
<p>A few labels moved with the role. The switches on <strong>Settings → Bookings</strong> that require each item to be scanned or selected now read <strong>Admins and Managers</strong>, because a Manager follows the same rule as an Administrator. The reservation broadcast is now called <strong>Notify all owners, administrators and managers on new booking requests</strong>, and Managers can be picked as booking notification recipients.</p>
<p>The <a href="https://www.shelf.nu/mobile-app">Shelf Companion</a> app knows the role too, since its over-the-air update of the same day: a Manager on the phone runs every booking, custody hand-off and audit exactly as on the web.</p><p><a href="https://www.shelf.nu/knowledge-base/user-roles-and-their-permissions#manager">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Asset Descriptions Can Now Run to 5,000 Characters</title>
      <link>https://www.shelf.nu/updates/asset-descriptions-up-to-5000-characters</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/asset-descriptions-up-to-5000-characters</guid>
      <pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate>
      <description>The asset description limit goes from 1,000 to 5,000 characters, the same as notes and multi-line custom fields. A live counter shows where you stand, and a description that is too long is refused with a message instead of silently losing keystrokes.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/text-editor-v2.jpg" alt="" /></p><p>An asset's <strong>Description</strong> now holds up to <strong>5,000 characters</strong>, up from 1,000. The limit is the same wherever a description is written: the new-asset and edit forms, the inline editor on the asset page, a CSV import or bulk update, and the Companion app's API. A line break counts as one character, so what the counter shows is what the server checks.</p>
<p>Two things used to go wrong, and both are fixed. A description that was already longer than 1,000 characters, which happens after a CSV import, could not be edited at all: every keystroke was silently dropped. And a description that ran past the limit was simply cut off by the field. Now the editor shows a counter, <strong>1,510 / 5,000</strong> for example, that turns red over the limit, and saving over it is refused with <em>Description must be 5,000 characters or fewer</em>. Your text stays in the field so you can shorten it.</p>
<p>The same rule reaches the CSV paths. An import file with a description over 5,000 characters is refused before anything is saved, with the asset name and the count for each one, and nothing is cut. A bulk update only measures a description the file changes, so a stored description over the limit that you leave alone never blocks its row.</p>
<p>Two places now shorten a long description on purpose. The description tooltip on the asset index shows the first 600 characters and ends with <em>Open the asset to read the full description</em>. The booking checklist PDF prints at most 300 characters per asset, so a long description does not take over the sheet.</p>
<p>The <a href="https://www.shelf.nu/mobile-app">Shelf Companion</a> app's new-asset and edit-asset screens have the same 5,000-character limit and counter, from the 15 October 2026 update.</p>]]></content:encoded>
    </item>
    <item>
      <title>Type the Name Before You Delete</title>
      <link>https://www.shelf.nu/updates/type-the-name-before-you-delete</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/type-the-name-before-you-delete</guid>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <description>Every permanent delete in Shelf now says what it removes and asks you to type the item&apos;s name, or the number of items selected, before it runs. Select all on locations, categories and asset models now deletes only what the list shows.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/delete-asset-confirm.webp" alt="" /></p><p>One click on <strong>Delete</strong> used to remove an asset, or 200 of them, for good, and the dialog did not say what went with them. A customer asked us to make it harder to do by accident, so we did it for every delete in Shelf, on the web and in the Shelf Companion app.</p>
<p>Now every permanent delete tells you what it takes with it, and <strong>Delete</strong> stays greyed out until you type the item's name. For a bulk delete you type the number of items selected. Shelf checks what you typed on the server too, and if a <strong>Select all</strong> selection has grown since you opened the dialog, it deletes nothing and asks for the new number. This covers assets, kits, locations, bookings, asset models, custom fields, archived audits, and categories and tags that are in use.</p>
<p>We also fixed <strong>Select all</strong> on searched lists of locations, categories and asset models: deleting now removes exactly what the list shows, where before it could remove every one in the workspace. The same fix covers bookings: <strong>Select all</strong> on the Bookings list, or on a kit's or an asset's Bookings tab, now deletes, archives or cancels only the bookings that list shows. And on the web, an item with no name asks you to type <strong>delete</strong> instead of its name.</p><p><a href="https://www.shelf.nu/knowledge-base/deleting-items-in-shelf">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Archive Assets Instead of Deleting Them</title>
      <link>https://www.shelf.nu/updates/archive-and-reinstate-assets</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/archive-and-reinstate-assets</guid>
      <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
      <description>Owners and Administrators can now archive an asset to take it out of asset lists, the booking picker and current-inventory reports while keeping its history, ID and QR code, and reinstate it at any time.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/archive-view-menu.webp" alt="" /></p><p>Until now, the only way to get retired equipment out of your lists was to delete it, and a deleted asset takes its history with it. You can now <strong>archive</strong> an asset instead. Choose <strong>Archive</strong> from the asset's <strong>Actions</strong> menu, or archive a selection from the asset index. An archived asset leaves your asset lists, the booking picker, the dashboard's asset totals, value, status split and top locations, and the Asset Inventory, Asset Distribution and Idle Assets reports, but the record stays, with its history, SAM ID and QR code. <strong>Reinstate</strong> brings it back exactly as it was.</p>
<p>To find archived assets, click the list title on the <strong>Assets</strong> page and choose <strong>Archived</strong> or <strong>All</strong>; the same menu is on a kit's and a location's asset lists. An archived asset's details are read-only, though you can still add a note on its <strong>Activity</strong> tab, reinstate it or delete it. It carries an <strong>Archived</strong> badge everywhere it still appears, including bookings that already held it and the page its QR label opens. History reports such as Activity, Asset Utilization and Top Booked keep counting it.</p>
<p>Archiving is careful with everything around the asset. The asset's <strong>Activity</strong> tab records who archived and reinstated it, its reminders pause instead of emailing, and a kit whose assets are all archived can't be booked or put in custody until one comes back. A Draft booking that holds an archived asset names it and keeps <strong>Reserve</strong> greyed out until you take it off or reinstate it. Asset counts on the locations, kits, categories and asset models lists leave archived assets out.</p>
<p>In the <a href="https://www.shelf.nu/mobile-app">Shelf Companion</a> app, an archived asset you open or scan reads <strong>Archived</strong> rather than <strong>Available</strong>, its custody, move and edit actions are turned off, and Owners and Administrators can reinstate it from the phone.</p>
<p>Archiving itself is available to Owners and Administrators, on the web. For now it covers individually tracked assets that are not checked out, in custody or in a reserved or checked-out booking.</p><p><a href="https://www.shelf.nu/knowledge-base/archive-and-reinstate-assets">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Feedback You Send Now Comes Back to You by Email</title>
      <link>https://www.shelf.nu/updates/feedback-sends-you-a-copy</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/feedback-sends-you-a-copy</guid>
      <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
      <description>When you send an issue or idea through Questions/Feedback, Shelf now emails you a copy of what you wrote, and replying to it reaches our support team.</description>
      <content:encoded><![CDATA[<p>When you send feedback through <strong>Questions/Feedback</strong> in the sidebar, or with <strong>Report this issue</strong> from an error screen, you now get a short thank-you email with a copy of what you sent: whether it was an issue or an idea, your message, and the link to your screenshot if you attached one. That gives you a record of what you reported. If you want to add something, reply to that email and it reaches our support team.</p>
<p>The copy contains only what you wrote. The technical details we collect to reproduce a problem, such as the page you were on and your app version, stay with our team.</p>]]></content:encoded>
    </item>
    <item>
      <title>A Kit Member&apos;s Custody Comes From Its Kit</title>
      <link>https://www.shelf.nu/updates/a-kit-members-custody-comes-from-its-kit</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/a-kit-members-custody-comes-from-its-kit</guid>
      <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
      <description>An individually tracked asset that sits in a kit can no longer be given custody on its own, from the asset page, the bulk action or the app. Assign custody to the kit, or take the asset out of the kit first.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/enhanced-user-permissions.jpg" alt="" /></p><p>An individually tracked asset that belonged to a <a href="https://www.shelf.nu/knowledge-base/kits">kit</a> could be put into someone's custody on its own from the asset page, the bulk <strong>Assign custody</strong> action on the assets index and the <a href="https://www.shelf.nu/mobile-app">Shelf Companion</a> app, while the batch scanner already refused it. The kit then read <strong>Available</strong> while one of its parts was with someone.</p>
<p>Now every path refuses it with the same reason: <em>"Tripod" is part of kit "Interview Kit". Assign custody to the kit, or remove the asset from the kit first.</em> The menus and the phone's <strong>Assign Custody</strong> button are greyed out with that reason before you click. Assign custody to the kit, or take the asset out of the kit and then assign it.</p>
<p>Quantity-tracked stock is not affected: a kit holds only its slice of a pool, so the free units can still go to someone directly. Custody that was already assigned to a kit member stays where it is, and kit custody works as before. See <a href="https://www.shelf.nu/knowledge-base/custody-feature-for-long-term-equipment-lend-outs#custody-a-kit-put-there-belongs-to-the-kit">Custody a kit put there belongs to the kit</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Shelf Companion: Pick Where Pooled Units Come From, Open Assets From an Audit</title>
      <link>https://www.shelf.nu/updates/companion-from-location-and-audit-rows-open-the-asset</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/companion-from-location-and-audit-rows-open-the-asset</guid>
      <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
      <description>Three phone updates on 8 October 2026: the app asks which location a pool&apos;s units leave from, an audit row opens its asset with Back returning to the audit, a kit member takes custody through its kit, and a hidden one-tap check-out says why.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/shelf-mobile-app.jpg" alt="" /></p><p>Three over-the-air updates went out to <strong>Shelf Companion</strong> on iPhone and Android on 8 October 2026. The version number stays <strong>1.5.0</strong>. The app picks up an update like this in the background when you open it and uses it the next time you open it, so there is nothing to fetch from the store.</p>
<h2>Where pooled units come from</h2>
<p>The web started recording which location a <a href="https://www.shelf.nu/knowledge-base/quantity-tracked-assets-and-consumables">quantity-tracked</a> pool's units leave from on 7 October. The phone now asks the same question. On a pool kept at two or more locations:</p>
<ul>
<li>The <strong>Assign</strong> sheet shows a <strong>From location</strong> list, one row per location with what sits there and what is already committed, plus <strong>Unplaced</strong> when the pool has unplaced units. It starts on the location with the most units left, and the quantity is capped at what the picked row has.</li>
<li>Each holder's row says where their units came from, for example <em>1 from Camera Room · 1 from Studio</em>, and the release sheet says where they go back to.</li>
<li><strong>Check Out All Assets</strong>, <strong>Select to Check Out</strong> and the booking scanner ask <strong>Where do the units come from?</strong> before the units go out, and the booking row then reads <em>From Studio</em>.</li>
</ul>
<p>A pool kept at one location asks nothing, and individually tracked assets work as before. Assigning custody to a batch from the <strong>Scan</strong> tab still records no location; that hold reads <em>location not recorded</em> on the web.</p>
<h2>Open the asset from an audit row</h2>
<p>Tapping a row on an audit's asset list now opens that asset, so a missing or unexpected item can be fixed on the spot. Back, the iOS edge swipe and the Android back button return to the same audit with its filter and scroll kept, and the audit reloads to show the change. The note and photo chip on a row still opens its evidence.</p>
<h2>Also in these updates</h2>
<ul>
<li><strong>Assign Custody</strong> is greyed out on an individually tracked asset that sits in a kit, with the reason under it. Custody of a kit member comes from its kit. See <a href="https://www.shelf.nu/updates/a-kit-members-custody-comes-from-its-kit">A kit member's custody comes from its kit</a>.</li>
<li>Where your workspace has <a href="https://www.shelf.nu/knowledge-base/require-explicit-check-in-and-check-out">removed the one-tap check-out or check-in</a> for your role, the booking screen now says so: <em>"Your workspace requires each item to be scanned or selected to check out."</em> Each check-out and check-in from the phone is also recorded with how it was made, scanned or selected.</li>
</ul><p><a href="https://www.shelf.nu/knowledge-base/shelf-ios-companion-getting-started">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Every Check-out and Check-in Says How It Was Made</title>
      <link>https://www.shelf.nu/updates/every-check-out-says-how-it-was-made</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/every-check-out-says-how-it-was-made</guid>
      <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
      <description>Booking activity and the check-in receipt now say whether items were scanned, selected or handed over in one click, on the web or the phone. The two settings that remove the one-click action are renamed and say who they never reach.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/explicit-requirement-cards-v2.webp" alt="" /></p><p>Every booking check-out and check-in now records how it was made and where. The booking's activity line ends with it, for example <em>checked-out the booking (selected on the phone)</em> or <em>performed a partial check-in: Tripod (scanned on the web)</em>. A one-click action reads <em>in one click on the web</em> or <em>in one tap on the phone</em>. The <a href="https://www.shelf.nu/knowledge-base/print-a-check-in-receipt-for-a-booking">check-in receipt</a> prints a <strong>Check-in method</strong> line when every item came back the same way, and the method under each row when they did not. Check-outs and check-ins from before 8 October 2026 carry no method.</p>
<p>The two settings under <strong>Settings ▸ Workspace settings ▸ Bookings</strong> that <a href="https://www.shelf.nu/knowledge-base/require-explicit-check-in-and-check-out">remove the one-click check-out or check-in</a> for a role have new names and clearer words: <strong>Check-in needs each item scanned or selected</strong> and <strong>Check-out needs each item scanned or selected</strong>, with one switch for <strong>Admins</strong> and one for <strong>Self Service users</strong>. Each card now says, always visible, <em>"The workspace owner is never restricted. Base users cannot check out."</em> The switches and what they do are unchanged.</p>
<p>In the <a href="https://www.shelf.nu/mobile-app">Shelf Companion</a> app, where that rule hides <strong>Check Out All Assets</strong> or <strong>Check In All</strong>, the booking screen now says why: <em>"Your workspace requires each item to be scanned or selected to check out."</em></p><p><a href="https://www.shelf.nu/knowledge-base/require-explicit-check-in-and-check-out">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Only the workspace owner makes Administrators, and Self-service and Base change only their own drafts</title>
      <link>https://www.shelf.nu/updates/only-the-owner-makes-administrators</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/only-the-owner-makes-administrators</guid>
      <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
      <description>Inviting or promoting an Administrator is now the owner&apos;s alone on every path. Self-service and Base users add items to, and delete, their own bookings only while they are drafts.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/enhanced-user-permissions.jpg" alt="" /></p><p>Shelf now decides every role question in one place, and a few rules got stricter along the way. The ones you will notice:</p>
<ul>
<li><strong>Administrators come from the owner.</strong> Only the workspace owner can invite someone as an Administrator or promote a member to Administrator, on every path: the invite dialog, a resent invite, the <strong>Change role</strong> dialog and a CSV user import. Administrators still invite and manage Self-service and Base users. A CSV file from an Administrator that contains an <code>ADMIN</code> row is refused as a whole.</li>
<li><strong>Demotions hand records to an Administrator.</strong> When you lower someone's role, the records they owned can go to the owner or another Administrator, not to a Self-service or Base member. An Administrator lowered by your identity provider's group mapping hands over the same way as one lowered by hand.</li>
<li><strong>Self-service and Base change only their own drafts.</strong> They can add items to their own booking, and delete it, only while it is a <strong>Draft</strong>. Self-service users can still take items off a <strong>Reserved</strong> booking and cancel it. Base users cannot cancel or archive a booking on any path.</li>
<li><strong>Audit details belong to Administrators.</strong> Editing an audit's details or changing who it is assigned to needs the Owner or an Administrator, and the assignee must be a member of the workspace.</li>
</ul>
<p>The <a href="https://www.shelf.nu/knowledge-base/user-roles-and-their-permissions">roles and permissions guide</a> has the full table.</p><p><a href="https://www.shelf.nu/knowledge-base/user-roles-and-their-permissions#full-permissions-reference">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Printed sheets show each code as a picture of that code, at full size</title>
      <link>https://www.shelf.nu/updates/printed-sheets-print-each-code-as-that-code</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/printed-sheets-print-each-code-as-that-code</guid>
      <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
      <description>The booking checklist and the audit receipt now print a barcode workspace&apos;s own barcodes, not a Shelf QR, and both sheets print at 100% with rows that never split across a page.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/code-images-on-pdfs-setting.webp" alt="" /></p><p>In a workspace that uses barcodes, the booking checklist and the audit receipt used to print a Shelf QR above the barcode value, so scanning the sheet read a different code from the one printed next to it. The picture in the <strong>Code</strong> column is now the code printed under it: a Code 128 row prints a Code 128 barcode, a DataMatrix row a DataMatrix, and an External QR row that QR. QR Code ID and SAM ID workspaces keep the Shelf QR. A barcode value too long to print at a scannable size prints as text only.</p>
<p>The sheets also print properly now. They used to be wider than the page, so browsers shrank them (one booking printed at 88%) and wide tables ran off the edge. The booking checklist, the check-in receipt and the audit receipt now print at 100% with the table inside the page. A row never splits across a page break and the headers repeat on every page. Photos far down a long booking print as photos instead of grey loading boxes, and the checklist no longer prints an empty Description row.</p>
<p>The workspace switch that turns the pictures off is renamed to match: <strong>Settings → General ▸ Code images on PDFs ▸ Print code images on PDFs</strong>. It works as before and is on by default.</p><p><a href="https://www.shelf.nu/knowledge-base/how-to-generate-a-pdf-overview-of-your-reserved-assets-bookings#the-code-column">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Scanner Drawers: One Needs Attention Card, and a Fulfil List That Survives a Reload</title>
      <link>https://www.shelf.nu/updates/scanner-drawers-one-needs-attention-card</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/scanner-drawers-one-needs-attention-card</guid>
      <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
      <description>Every web scanner drawer now lists problems in one Needs attention card with Resolve all, keeps scanned rows in foldable cards, and takes less space. The Fulfil reservations &amp; check out list is kept for twelve hours through a reload or a closed tab.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/scanner-needs-attention.webp?v=2" alt="" /></p><p>The drawers of every web scanner, from booking check-out and check-in to custody, location, kits and audits, have been tidied so more scanned rows fit on screen. The header is one row, the drawer sits right under the code field, and rows are grouped in cards such as <strong>Scanned this session</strong> that fold open and closed.</p>
<p>Anything that blocks the action now sits in one <strong>Needs attention</strong> card at the top of the list. Each line has <strong>Remove from list</strong>, the card has <strong>Resolve all</strong>, and a note above the button says how many issues are left. <strong>Resolve all</strong> removes exactly what the card lists. On <strong>Scan to add</strong> it used to also drop valid scans you were never warned about. Audits now flag a scanned kit and an unknown code in the same card, and opening <strong>Add comment</strong> or <strong>Add image</strong> on an audit row no longer empties the list.</p>
<p>The <strong>Fulfil reservations &#x26; check out</strong> scanner also keeps its list for twelve hours in your browser. Reload the page, close the tab or let the device sleep, open the scanner on the same booking again, and the list comes back, each row looked up fresh. A check-out that goes through clears it; one that is refused keeps it. See <a href="https://www.shelf.nu/knowledge-base/adding-assets-and-kits-to-a-booking#your-fulfil-scan-list-survives-a-reload">Your fulfil scan list survives a reload</a>.</p><p><a href="https://www.shelf.nu/knowledge-base/batch-scanning-actions#handling-conflicts">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Search finds assets by their model name, and booking by model shows what is free</title>
      <link>https://www.shelf.nu/updates/search-finds-assets-by-their-model-name</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/search-finds-assets-by-their-model-name</guid>
      <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
      <description>Typing an asset model&apos;s name now finds its units everywhere you search. Creating a booking from the asset model view shows how many units are free once the dates are set.</description>
      <content:encoded><![CDATA[<p>Typing a model's name into the asset search, for example <code>Dell Latitude 5550</code>, used to find nothing unless the name also appeared in each asset's own title, and the asset model view then showed every model with 0 assets. Search now matches the <a href="https://www.shelf.nu/glossary/asset-models">asset model</a> an asset belongs to, in both index modes and in the Shelf Companion app's asset search, which runs on the same server search.</p>
<p>Booking by model from the asset model view got a few improvements too:</p>
<ul>
<li><strong>Create new booking</strong> shows how many units of each model are free once both dates are set, for example <em>"adding 2 → 2 of 8 available"</em>, the same hint <strong>Add to existing</strong> already gave.</li>
<li>Asking for more units than a model can give in that window is refused under a clear <strong>Not enough units</strong> title instead of a generic error.</li>
<li>The <strong>Add to existing</strong> booking pickers open on bookings that have not ended yet, soonest first, and list finished bookings after them, most recent first.</li>
<li>The panel that lists a model's assets keeps its column headers in view while you scroll, and when no asset matches your filters it says how many sit outside them.</li>
</ul><p><a href="https://www.shelf.nu/knowledge-base/advanced-asset-index-complete-guide#asset-model-view">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Shelf Asks Before It Revokes a Team Member&apos;s Access</title>
      <link>https://www.shelf.nu/updates/shelf-asks-before-revoking-access</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/shelf-asks-before-revoking-access</guid>
      <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
      <description>Revoke access now opens a confirmation that names the person and says what happens, with an extra warning for people who sign in with SSO.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/enhanced-user-permissions.jpg" alt="" /></p><p><strong>Revoke access</strong> in a team member's <strong>Actions</strong> menu used to take effect the moment you clicked it. It now opens a confirmation first, on the <strong>Team ▸ Users</strong> list and on the person's own page. The dialog names the person and their email and says what will happen: they can no longer open the workspace and are told by email, their team member record and history are kept, and you can invite them again later. <strong>Cancel</strong> leaves everything as it was.</p>
<p>If Shelf refuses the revoke, for example because only the workspace owner may revoke an Administrator, the reason now shows inside the dialog instead of nowhere. For someone who signs in with SSO, the dialog also warns that group-based SSO gives them access back at their next sign-in unless you remove them from the mapped group in your identity provider. See <a href="https://www.shelf.nu/knowledge-base/changing-user-roles-in-shelf#revoking-access-instead">Changing User Roles in Shelf</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>A Kit in Custody Does Not Go Out on a Booking</title>
      <link>https://www.shelf.nu/updates/a-kit-in-custody-does-not-go-out-on-a-booking</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/a-kit-in-custody-does-not-go-out-on-a-booking</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description>A kit is one unit with one holder: a kit in someone&apos;s custody is refused at check-out, a checked-out kit cannot be given a custodian, a kit sharing pooled stock with another kit that is out is released when its own booking comes back, and a kit still out on an overdue booking is held for every date.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/compact-kits-bookings.jpg" alt="" /></p><p>Corrections to how a <a href="https://www.shelf.nu/knowledge-base/kits">kit</a> is held and released.</p>
<h2>Custody and bookings never overlap on a kit</h2>
<p>A kit is one physical unit with one holder. From now on a kit in someone's <strong>custody</strong> cannot be checked out on a booking, and a kit that is <strong>checked out</strong> cannot be given a custodian, whatever the kit is made of. The <strong>Check out</strong> button on a booking holding such a kit is disabled with <em>"Some kits in this booking are currently in custody. Release their custody before you can check-out"</em>, the <strong>Scan to check out</strong> drawer lists the kit under a blocker, and the server refuses a request that gets through anyway, from the web or from the <a href="https://www.shelf.nu/mobile-app">Shelf Companion app</a>: <em>"Cannot check out booking. Some kits are in custody: Camera Kit A. Release their custody first or remove them from the booking."</em> Adding the kit to a booking and reserving it stay allowed, because the kit is assumed back by the time the booking goes out.</p>
<p>Before this, check-out looked at the member assets rather than the kit. A quantity-tracked member reading <strong>In custody</strong> only means some of its units are held, so a kit built only from pooled stock could go out on a booking while its custodian still held it, and then read <strong>Checked out</strong> with its custody row still attached.</p>
<h2>A kit sharing pooled stock is released with its own booking</h2>
<p>When a quantity-tracked asset sits in several kits, say one pool of tripods spread across camera kits, and another kit holding units of it was out on its own booking, checking this kit's booking in used to release everything except the kit: the shared tripod still read <strong>Checked out</strong> through the other kit, and the release took that as this kit still being out. The booking completed and the kit stayed <strong>Checked Out</strong> with nothing to clear it. The release now judges a kit by its own slices on the booking, so a shared pooled member never holds a kit back. A kit left stuck this way heals itself the next time it goes out and comes back, since a <strong>Checked Out</strong> kit can still be added to a draft or reserved booking.</p>
<h2>Which kits another booking can take</h2>
<p>Three more corrections to the same rule, shipped on 7 October:</p>
<ul>
<li><strong>A kit still out on an overdue booking is held for every date.</strong> Whether another booking held a kit used to be decided by date overlap alone, so once an overdue booking's due date had passed, a kit that never came back looked free for any later booking. It could be reserved and even checked out on two bookings at once. It is now held for every date until it is checked in, the same way overdue pooled stock already was. See <a href="https://www.shelf.nu/knowledge-base/kits#one-booking-at-a-time">One Booking at a Time</a>.</li>
<li><strong>Scan to check out warns before you submit.</strong> A scanned kit that another booking holds is now listed under a blocker while you scan, and <strong>Check out assets</strong> stays disabled until you remove it, instead of the refusal arriving only at submit.</li>
<li><strong>Kits sharing pooled stock are no longer hidden from each other.</strong> When two kits each take units of the same pool and one of them was reserved, the kit picker's <strong>Hide unavailable</strong> filter hid the other one too, even with most of the pool free; adding it by scan or from the Shelf Companion app was refused the same way. A kit is now judged by its own units, so the second kit is offered and can be added.</li>
</ul><p><a href="https://www.shelf.nu/knowledge-base/kits#a-kit-in-custody-stays-home">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Check-In Settles Only What Went Out, in Kits Too</title>
      <link>https://www.shelf.nu/updates/check-in-settles-only-what-went-out-in-kits-too</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/check-in-settles-only-what-went-out-in-kits-too</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description>Units of a quantity-tracked asset marked consumed, lost or damaged at check-in now leave the kit that carried them, and the one-click check-in no longer consumes units of a used-up line that never left the shelf.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/compact-kits-bookings.jpg" alt="" /></p><p>Two corrections to how a booking check-in settles <a href="https://www.shelf.nu/knowledge-base/quantity-tracked-assets-and-consumables">quantity-tracked stock</a>.</p>
<p><strong>Units used up out of a kit leave the kit.</strong> A pool can sit inside a <a href="https://www.shelf.nu/knowledge-base/kits#quantity-tracked-stock-in-kits">kit</a>, and the kit's slice goes out and comes back with the kit's bookings. When units of that slice came back marked consumed, lost or damaged, the stock dropped but the kit kept claiming them, and so did the kit's location. The next edit of that membership was then refused with <em>"You're trying to assign more of this asset than are available."</em> Now those units leave the kit's membership in the same check-in, the kit's placement of them goes with them, and bookings that have not started yet are capped at what the kit now holds, with a note on each. A membership that reaches zero is removed the way a member is removed.</p>
<p><strong>The one-click check-in consumes only what is still out.</strong> Closing a booking with the <strong>Check in</strong> button used to apply a used-up (one-way) line's default to its whole booked quantity, including units that never left the shelf on a booking that was only partly handed over. It now consumes only the units still out, and nothing from a line that never left. A scan check-in of a used-up pool with none of its units out is refused: <em>Cannot check in "Gaffer tape": none of its units are out on this booking.</em></p>
<p>Both apply to check-ins from the web and from the <a href="https://www.shelf.nu/mobile-app">Shelf Companion app</a>, since the rule lives on the server.</p>]]></content:encoded>
    </item>
    <item>
      <title>Pooled Stock Records Which Location Its Units Left From</title>
      <link>https://www.shelf.nu/updates/pooled-stock-records-which-location-its-units-left-from</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/pooled-stock-records-which-location-its-units-left-from</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description>For a quantity-tracked asset kept at two or more locations, assigning custody, checking out on a booking and adjusting stock now ask which location the units come from, so used-up units come off the right place and placements stop drifting.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/custody-source-assign-dialog.webp" alt="" /></p><p>A <a href="https://www.shelf.nu/knowledge-base/quantity-tracked-assets-and-consumables">quantity-tracked asset</a> can be kept at several locations at once: 60 cables in the stockroom, 40 in the van. Until now, nothing recorded which of those locations a unit came from when it went into someone's custody or out on a booking. When units were used up, Shelf could not tell which location had lost them, so the placements drifted above the total, and a later loss was refused with <em>"Lower the placements first."</em></p>
<p>Now, for a pool kept at <strong>two or more locations</strong>, Shelf asks once where the units come from and remembers the answer:</p>
<ul>
<li><strong>Assign custody</strong> gains a <strong>From location</strong> field, pre-filled with the location that has the most units left. The quantity is capped at what that location has, and asking for more is refused with the numbers: <em>"Debriefing Room has only 2 pcs."</em> The web scanner's <strong>Assign custody</strong> action asks on each such row too.</li>
<li><strong>Check out</strong> on a booking asks the same question, in a short confirmation on the one-click button or on the pool's row in <strong>Check out selected items</strong> and <strong>Scan to check out</strong>. The booking row then reads <em>from Studio</em> beside its status.</li>
<li><strong>Adjust</strong> gains an <strong>At location</strong> field: a restock lands there, a loss comes off there.</li>
<li>The custody list shows the location after each person's quantity, the placements card shows <strong>N in custody</strong> under a location, and a location's <strong>Assets</strong> tab reads <em>· 40 pcs at this location · 10 on a booking</em>.</li>
<li><strong>Release</strong>, <strong>Mark as consumed</strong> and check-in take used-up units off the location they came from, so the counts stay true without a correction afterwards. Returned units change no placement.</li>
</ul>
<p>A pool kept at one location, with or without unplaced units, and every individually tracked asset look and behave exactly as before. Holds recorded before this read <em>location not recorded</em> on the custody list.</p>
<p>The <a href="https://www.shelf.nu/mobile-app">Shelf Companion app</a> does not ask yet. A check-out from the phone records the location with the most units left, and a custody assignment from the phone is recorded without a location.</p><p><a href="https://www.shelf.nu/knowledge-base/quantity-tracked-assets-and-consumables#which-location-the-units-come-from">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Existing Accounts Move to SSO Without Losing Anything</title>
      <link>https://www.shelf.nu/updates/existing-accounts-move-to-sso</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/existing-accounts-move-to-sso</guid>
      <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
      <description>A team that adopts single sign-on no longer has to delete and recreate the Shelf accounts it already has. Each account is converted and keeps its custody, bookings and history. Once SSO is live on a domain, password and one-time code login are refused there.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/improved-team-management.jpg" alt="" /></p><p>Until now, a team that already used Shelf with email and password accounts had an unpleasant step on the way to single sign-on: those accounts had to be removed, and an existing account that tried SSO was refused and sent to support. Deleting an account meant losing what it held, including its custody records, bookings, notes and report history.</p>
<p>That step is gone. Shelf staff now <strong>convert</strong> existing standard accounts to SSO, one at a time or every eligible account on the domain at once. A converted account keeps its identity and its workspace memberships; only the login method changes. The person is signed out everywhere, and their first SSO sign-in lands in the account they already had. Nothing changes in your identity provider.</p>
<p>Two rules come with it:</p>
<ul>
<li><strong>Once SSO is live for your domain, password, one-time code and password reset login are refused there</strong>, in the web app and in the Shelf Companion app. The login screens point to <strong>Login with SSO</strong>, and someone still signed in with a password is signed out on their next page load. Those hints depend only on the domain, so they never reveal whether a particular account exists.</li>
<li><strong>The owner of the workspace that uses SSO can keep password login</strong> as the administrative fallback for a day your identity provider is unavailable. Converting the owner is optional and done on request. An owner who signs in with SSO keeps the Owner role whatever their groups say.</li>
</ul>
<p>If you want to pilot SSO with a few users before everyone is converted, Shelf can relax SSO-only login for the domain during setup. Keeping password and SSO users side by side for good, apart from the owner, is still not supported.</p><p><a href="https://www.shelf.nu/knowledge-base/sso-with-google-workspace#moving-existing-accounts-to-sso">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Shelf Companion: Scan Units Into Custody, Check In What Went Out</title>
      <link>https://www.shelf.nu/updates/companion-scan-units-into-custody-and-check-in-what-went-out</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/companion-scan-units-into-custody-and-check-in-what-went-out</guid>
      <pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate>
      <description>A phone update lets the custody scanner hand out and take back units of quantity-tracked assets, offers check-in only for units that actually left, keeps model reservations editable within their limits, and names the phone behind each scan.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/shelf-mobile-app.jpg" alt="" /></p><p>An over-the-air update went out to <strong>Shelf Companion</strong> on iPhone and Android on 2 October 2026. The version number stays <strong>1.5.0</strong>. The app picks up an update like this in the background when you open it and uses it the next time you open it, so there is nothing to fetch from the store.</p>
<h2>Units in the custody scan</h2>
<p>The scanner's <strong>Assign custody</strong> and <strong>Release custody</strong> actions now take <a href="https://www.shelf.nu/knowledge-base/quantity-tracked-assets-and-consumables">quantity-tracked assets</a>. Each one gets a unit count on its row, for example <code>3 / 10 pcs</code>. Tap it to change the number. Assign starts at 1 unit and stops at the units that are free. Release starts at every unit held. Individually tracked assets, quantity rows and kits go together with one tap, as on the web scanner.</p>
<p>Before, the app refused a scan made only of quantity-tracked assets and skipped them in a mixed one. A release scan still works while one person holds units of that asset. If several people do, the row tells you to release it from the asset page. Releasing units of a one-way asset records them as used up, and the confirm says so before you commit. See <a href="https://www.shelf.nu/knowledge-base/batch-scanning-actions#assign-custody">Batch Scanning Actions</a>.</p>
<h2>Check-in offers only what went out</h2>
<p>On an ongoing booking, the app used to offer check-in on a kit whose units had never left the shelf. Confirming came back with <em>"Cannot check in assets that were never checked out"</em>. It also proposed every booked unit on a line that was only partly out. Now the app offers check-in only for units this booking sent out and has not had back. A kit with 2 of its 4 units out offers 2, and a kit that never left has no tick box and reads <strong>Reserved</strong>.</p>
<h2>Model reservations on a booking that is out</h2>
<p>The booking's <strong>Models</strong> tab lets you change a reservation's count after the booking has gone out. The count cannot go below the units already assigned to it. Set it to exactly that number to release everything still unassigned.</p>
<h2>Which phone made the scan</h2>
<p>The scan panel on the web asset page used to say <strong>Unknown device</strong> for every scan made in the app. It now names the phone, the app version and the system, for example <strong>Apple - iPhone</strong>, <strong>Shelf app 1.5.0</strong> and <strong>iOS</strong>. Scans from an app that has not taken the update still read <strong>Unknown device</strong>.</p><p><a href="https://www.shelf.nu/knowledge-base/shelf-ios-companion-getting-started">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Duplicating a Quantity-Tracked Asset Keeps Its Stock</title>
      <link>https://www.shelf.nu/updates/duplicating-a-quantity-tracked-asset-keeps-its-stock</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/duplicating-a-quantity-tracked-asset-keeps-its-stock</guid>
      <pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate>
      <description>A copy of a quantity-tracked asset is now quantity-tracked too, with the same quantity, unit and behaviour, and every copy keeps the original&apos;s booking availability.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/duplicate-asset-2.webp" alt="" /></p><p>Duplicating a <a href="https://www.shelf.nu/knowledge-base/quantity-tracked-assets-and-consumables">quantity-tracked asset</a> used to create an individually tracked asset with a single unit. Now the copy is quantity-tracked too. It keeps the original's quantity, unit of measure, behaviour (one-way or two-way) and low-stock threshold, and it starts unplaced so you can put its units where they belong with <strong>Place them</strong>.</p>
<p>Every copy now also keeps whether the original is available for booking, and a copy of an individually tracked asset keeps its asset model. A quantity-tracked asset with no units in stock cannot be copied, and the dialog says so before you submit. If one of several copies fails, Shelf removes the copies it already made. Several copies are named "(copy 1)", "(copy 2)" and so on. A single copy is named "(copy)".</p><p><a href="https://www.shelf.nu/knowledge-base/duplicating-assets-in-shelf">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>See Your Assets by Model, and Book From There</title>
      <link>https://www.shelf.nu/updates/asset-model-view</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/asset-model-view</guid>
      <pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate>
      <description>The advanced asset index has a third view that lists asset models instead of assets, counted over your current filters, with each model&apos;s units one click away and a Book selection button that reserves models on a new or open booking.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/asset-model-view.webp" alt="" /></p><p>The advanced asset index now has an <strong>Asset model view</strong>, next to the list and availability views. It lists your <a href="https://www.shelf.nu/glossary/asset-models">asset models</a> instead of individual assets: for each model, how many of the assets matching your filters carry it, where they are right now (in, out, in custody, plus how many are not bookable) and their total value. Your filters, saved filters and search all apply (except <strong>Low stock only</strong>, which the view clears), so filtering to one location tells you which models you have there and how many. Assets without a model sit together in a <strong>No model</strong> row at the bottom, which is a handy place to start grouping a fleet.</p>
<p>Click a model's count to open a side panel with the assets behind it, in the columns you have set up for the list. Tick one or more models and use <strong>Book selection</strong> to create a booking that reserves units of them, or to add them to an open booking, with the number still free for that booking's dates shown beside each model.</p>
<p>The view counts individually tracked assets only, because asset models do not cover quantity-tracked stock.</p><p><a href="https://www.shelf.nu/knowledge-base/advanced-asset-index-complete-guide#asset-model-view">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Scan to Assign Shows What Is Left to Pull</title>
      <link>https://www.shelf.nu/updates/scan-to-assign-shows-what-is-left-to-pull</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/scan-to-assign-shows-what-is-left-to-pull</guid>
      <pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate>
      <description>The booking scanner behind Scan to assign now shows each reserved model&apos;s progress and a Pending row for every unit still to pull, so you can work through a model reservation without keeping the numbers in your head.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/add-assets-to-bookings.jpg" alt="" /></p><p>When a booking reserves gear by <a href="https://www.shelf.nu/glossary/asset-models">asset model</a>, <strong>Scan to assign</strong> used to open a scanner that said nothing about the reservation: you scanned, and kept track of what was still missing yourself. It now shows the same progress as the check-out scanner. A summary line such as <strong>2 models reserved</strong>, with a <strong>3 / 6</strong> count and a progress bar, folds out into one bar per model. Underneath, every unit still to pull has its own <strong>Pending</strong> row, named after its model, and each matching scan moves the count and clears a row.</p>
<p>You can stop part way. Submitting a scan that covers only some of the reservation saves what you scanned and leaves the rest open, and the counts pick up from there next time. A unit that was already on the booking, without answering a reservation, can also be scanned here to count toward its model.</p><p><a href="https://www.shelf.nu/knowledge-base/adding-assets-and-kits-to-a-booking#scan-to-assign-shows-what-is-left-to-pull">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Importing Users Checks the Whole File First</title>
      <link>https://www.shelf.nu/updates/importing-users-checks-the-whole-file-first</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/importing-users-checks-the-whole-file-first</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <description>A users CSV is now checked row by row before anyone is invited. A file with a problem invites nobody and lists the problem rows, and roles no longer have to be typed in capitals.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/users-csv-import-dialog.webp" alt="" /></p><p><strong>Settings → Team → Import Users</strong> now works the same way as the asset import: Shelf reads the whole file before it invites anyone. If any row has a problem, <strong>nobody is invited</strong>, and the dialog lists the problems in a <strong>Row / Problem</strong> table with your spreadsheet's row numbers, up to 100 at a time. Fix the rows and upload the file again, with nothing to clean up first.</p>
<p>The check covers roles, email addresses, an address that appears twice (in any capitals), a <code>teamMemberId</code> that appears twice or does not belong to this workspace, and addresses that SSO does not allow inviting. A typo in an email column no longer turns into an invite that can never arrive.</p>
<p>Two smaller changes come with it:</p>
<ul>
<li><strong>Roles are not case-sensitive any more.</strong> <code>admin</code>, <code>Admin</code> and <code>ADMIN</code> all work.</li>
<li><strong>A file takes up to 1,000 users.</strong> Split a larger list and import the parts one at a time.</li>
</ul>
<p>People who are already members, or already have a pending invite, are still skipped rather than invited twice, and the rest of the file goes ahead.</p><p><a href="https://www.shelf.nu/knowledge-base/inviting-users-via-csv-upload#the-whole-file-is-checked-first">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Start a Team Trial From the Pricing Page, and See Who Pays for Each Workspace</title>
      <link>https://www.shelf.nu/updates/team-trial-from-the-pricing-page-and-who-pays-for-each-workspace</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/team-trial-from-the-pricing-page-and-who-pays-for-each-workspace</guid>
      <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
      <description>The Team trial button on the pricing page now carries your choice through signup, and the Subscriptions page lists every workspace you belong to with its plan and who pays for it.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/team-workspaces.jpg" alt="" /></p><p>Two changes to how plans show up in Shelf, one for new accounts and one for everyone.</p>
<h2>The Team trial you picked is the Team trial you get</h2>
<p>Clicking <strong>Start Free Trial</strong> on the Team plan on the <a href="https://www.shelf.nu/pricing">pricing page</a> used to take you to a plain signup form. Once your account was ready, Shelf asked again whether you wanted a Personal or a Team workspace, as if you had never chosen.</p>
<p>Now the signup page confirms the choice in one line under the heading: <em>"You're starting a Team trial. 7 days, no credit card."</em> After you enter the code from your email and finish onboarding, Shelf skips the second question and opens the plan page with the Team trial first. If you change your mind, the link under the plans, <strong>Continue with a free Personal workspace instead</strong>, does the same as choosing Personal.</p>
<p>A signup without a plan in the link works exactly as before. People who join through a workspace invitation still land in that workspace.</p>
<h2>Every workspace's plan, in one table</h2>
<p>The <strong>Subscriptions</strong> page (open it from the menu under your name) now starts with <strong>Your workspaces' plans</strong>. It has one row for each workspace you belong to, with its <strong>Plan</strong>, <strong>Your role</strong>, and <strong>Paid by</strong>.</p>
<p>A workspace's plan comes from its owner's subscription. So an Administrator in a paid Team workspace used to open this page and read that they were on the free version. The table now shows the Team plan and the owner who pays for it. For other people's workspaces, it shows only the plan name and the owner's name. Their prices, invoices, and add-ons stay private. A free workspace reads <strong>No one</strong> under <strong>Paid by</strong>.</p>
<p>Below the table, <strong>Billed to you</strong> lists only what you pay for yourself. If you work in someone else's paid workspace and pay for nothing, it offers two options: <strong>Start your own Team workspace</strong> and <strong>Upgrade your personal workspace</strong>. If you sign in through SSO, you have no personal workspace in Shelf, so only the first option appears.</p><p><a href="https://www.shelf.nu/knowledge-base/free-trial">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Imports Check the Whole File First</title>
      <link>https://www.shelf.nu/updates/imports-check-the-whole-file-first</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/imports-check-the-whole-file-first</guid>
      <pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate>
      <description>A CSV import now checks every row before it creates anything. A file with problems imports nothing and lists the problems it found, by spreadsheet row.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/better-csv-imports.jpg" alt="" /></p><p>When you import assets from a CSV, Shelf now reads the whole file before it writes anything. If a row has a problem, <strong>nothing is imported</strong>, and the import page lists the problems it found in a <strong>Row / Problem</strong> table, numbered the way your spreadsheet numbers them.</p>
<p>That changes two things you can rely on:</p>
<ul>
<li><strong>Most problems show up in one upload.</strong> A file with a bad quantity on row 4 and an invalid custom field value on row 19 reports both, not just the first. Messages about quantity-tracked rows also name every column such a row needs, so you are not taught the format one upload at a time. The table shows up to 100 problems at a time. QR codes, barcodes and kit custody are checked after that and report one problem at a time, so a file with more than 100 problems, or with problems in those columns, can take another upload.</li>
<li><strong>A rejected file leaves nothing behind.</strong> No assets, categories, tags, locations, kits, custom fields or asset models are created from it, so you can fix the file and upload it again without cleaning up or creating duplicates.</li>
</ul>
<p>Import now takes up to <strong>1,000 assets per file</strong>, the same limit as updating assets by CSV. Split a larger file and import the parts one at a time.</p><p><a href="https://www.shelf.nu/knowledge-base/importing-assets-to-shelf-csv-guide#pre-import-validation">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Scan Quantity-Tracked Assets Into and Out of Custody</title>
      <link>https://www.shelf.nu/updates/scan-quantity-tracked-assets-into-custody</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/scan-quantity-tracked-assets-into-custody</guid>
      <pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate>
      <description>The scanner&apos;s Assign custody and Release custody actions now take quantity-tracked assets, with a quantity field on each scanned row.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/improved-qr-scanner.jpg" alt="" /></p><p>You can now scan <a href="https://www.shelf.nu/knowledge-base/quantity-tracked-assets-and-consumables">quantity-tracked assets</a> with the scanner's <strong>Assign custody</strong> and <strong>Release custody</strong> actions, alongside individually tracked ones.</p>
<p>Each scanned pool gets a <strong>Qty</strong> field. When assigning, it goes up to the units that are free to hand over, so units already with someone, in a kit or out on a booking are never offered twice. When releasing, it goes up to the units held in custody, so you can take back part of a hold.</p>
<p>A pool with some units out no longer blocks the scan. Before, scanning one refused it as "checked out" or "in custody" as soon as a single unit was, even with most of the stock on the shelf. Now a pool is only blocked when it has nothing to give: no free units to assign, or no units in custody to release.</p>
<p>A release scan takes units back from whoever holds them, so it works while one person holds units of that asset. If several people do, release from the asset's custody list, where each holder has a row.</p>
<p>The quantity field is in the scanner on the web. The Shelf Companion app's batch custody scanner does not ask for a quantity yet.</p><p><a href="https://www.shelf.nu/knowledge-base/batch-scanning-actions#assign-custody">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>A Kit Can Answer a Model Reservation</title>
      <link>https://www.shelf.nu/updates/a-kit-can-answer-a-model-reservation</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/a-kit-can-answer-a-model-reservation</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <description>A unit that arrives inside a kit now settles a reserved model unit, just as a loose one does — and the Fulfil reservations &amp; check out scanner takes kit scans.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/kits-bookings-integration.jpg" alt="" /></p><p>A booking can reserve a count of an <a href="https://www.shelf.nu/glossary/asset-models">Asset Model</a> — "4 × Canon EOS R5" — without naming units, and those reserved units are settled by putting matching assets on the booking. Until now only a unit picked on its own counted. Anything that arrived inside a <a href="https://www.shelf.nu/knowledge-base/kits">kit</a> settled nothing.</p>
<p>That read wrong on both sides of the calendar. Your own booking said <em>"2 of 3 units still to assign"</em> with the third camera physically on it, inside a case. And every other booking on those dates saw one fewer unit of that model than the workspace owns, because the kit's camera was already held against them while your reservation went on demanding a replacement for it.</p>
<h2>A camera in a case is the same camera</h2>
<p>A unit answers a reservation whichever way it arrives: picked loose, or carried in by a kit you added from the <strong>Kits</strong> tab in <strong>Manage assets</strong>, the kit page's <strong>Add to booking</strong>, the kit picker on a new booking, or a scan. Each physical unit answers <strong>at most one reserved unit per booking</strong>, so nothing is counted twice.</p>
<p>Rows that answered a reservation now say which one. A booking asset row that discharged a reserved unit carries a blue <strong>Fulfils <em>model name</em></strong> chip — the piece that was missing when the unit arrived inside a kit and a number moved somewhere else on the page with nothing to connect it to.</p>
<h2>Kits in the fulfil scanner</h2>
<p>A <strong>Reserved</strong> booking with units still to assign opens <strong>Check out</strong> into the <strong>Fulfil reservations &#x26; check out</strong> scanner. That scanner used to turn every kit away. It takes them now: a scanned kit goes on the booking whole, its matching members assign outstanding reserved units on the way, and the kit's row says how many it settles, for example <strong>Assigns 2 reserved units</strong>. The rule is the server's, so it reaches the <a href="https://www.shelf.nu/mobile-app">Shelf Companion</a> app on your phone at the same time, with nothing to install.</p>
<p>What that scanner does refuse is a loose scan of a unit that belongs to a kit nobody scanned — <em>"Canon EOS R5 #0042" belongs to a kit, so it can't go out on its own.</em> Sending one member of a case into the field on its own is almost never what the operator meant. Scan the kit to take all of it, or scan another unit of the same model.</p>
<h2>One thing to know</h2>
<p>Kits that were <strong>already on a booking</strong> are not settled retroactively — only a kit that arrives from now on answers a reservation. If a booking has been sitting with a kit on it and a reservation still open, take the kit off and add it again.</p><p><a href="https://www.shelf.nu/knowledge-base/adding-assets-and-kits-to-a-booking#a-unit-inside-a-kit-counts-too">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Check Out What Is Ready, Whatever Is Still Unassigned</title>
      <link>https://www.shelf.nu/updates/check-out-what-is-ready-when-units-are-unassigned</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/check-out-what-is-ready-when-units-are-unassigned</guid>
      <pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate>
      <description>A booking that reserves gear by Asset Model can now be checked out with reserved units still unassigned, and a reservation can be adjusted or released for as long as the booking is live.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/add-assets-to-bookings.jpg" alt="" /></p><p>If your team reserves gear by <a href="https://www.shelf.nu/glossary/asset-models">Asset Model</a>, one unit you cannot find used to stop the whole booking. A reservation for four projectors that only found three refused the check-out, and the only way through was to delete a reservation the operator had correctly made.</p>
<p>Two changes fix that, and they are two halves of the same job.</p>
<h2>A check-out needs one item to go out, and nothing more</h2>
<p>Reserved units nobody has assigned yet no longer block a check-out. Shelf names them before it acts:</p>
<blockquote>
<p><strong>Some reserved units aren't assigned</strong></p>
<p>2 × Dell Latitude and 1 × HP LaserJet are not assigned yet. They stay on the booking so you can scan them later or release them.</p>
</blockquote>
<p>Confirm, and the booking goes <strong>Ongoing</strong> with the items that are ready. The open reservations stay on the booking, to be scanned in later or handed back. The same confirmation covers <strong>Actions → Check out selected items</strong>, and when the check-out is also early, both questions are asked in one dialog rather than two stacked ones.</p>
<p>A booking made entirely of reservations still cannot go Ongoing, because nothing would leave.</p>
<p>The rule now reads the same on the web, in the mobile API, and in the <a href="https://www.shelf.nu/mobile-app">Shelf Companion</a> app, where <strong>Check Out All</strong>, <strong>Select to Check Out</strong> and both scanners confirm the unassigned units instead of refusing them.</p>
<h2>A reservation stays adjustable while the booking is out</h2>
<p>Reserved quantities could previously only be changed while the booking was Draft or Reserved, and only from the <strong>Models</strong> tab inside <strong>Manage assets</strong>. Once the booking was checked out, the quantity was frozen — so a unit that turned out to be damaged, lost, or was never collected stayed reserved for the rest of the booking and kept counting against every other booking whose window overlapped.</p>
<p>Now the reservation row's menu carries <strong>Adjust quantity</strong> on <strong>Draft, Reserved, Ongoing and Overdue</strong> bookings, with a one-click <strong>Release the N units still unassigned</strong>. Two limits hold at every status: a reservation never drops below the units already assigned to it, and a reservation with assigned units is reduced rather than removed, so the record of how those assets reached the booking survives.</p>
<p>Lowering a reservation is no longer measured against availability. Giving units back cannot need headroom, and checking anyway refused the case that mattered most: a booking holding more units than the pool still contains could not release anything at all.</p>
<p>The row menu's first item now reads <strong>Assign from list</strong>, so all three actions fit on one line.</p>
<h2>Also in this release</h2>
<p>Under the workspace's <a href="https://www.shelf.nu/knowledge-base/require-explicit-check-in-and-check-out">explicit check-out requirement</a>, scanning an item that is already on the booking checks that item out. It used to be turned away as a duplicate and dropped from the payload, which left covered roles with no way to send those items out from the fulfil screen.</p>
<p>On the phone, the app's model manager was already offered on Ongoing and Overdue bookings while the server refused every edit made there. It starts working with this change, on the copy of the app you already have, because the rule is enforced on the server. The matching floor on the phone's quantity stepper, which stops you typing a number below the units already assigned, arrives with the next phone update; until then the server is what refuses it.</p><p><a href="https://www.shelf.nu/knowledge-base/adding-assets-and-kits-to-a-booking#checking-out-while-units-are-still-unassigned">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Shelf Companion: Your Code, Your Holder, and a Camera That Wakes Up</title>
      <link>https://www.shelf.nu/updates/companion-your-code-your-holder-and-a-camera-that-wakes-up</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/companion-your-code-your-holder-and-a-camera-that-wakes-up</guid>
      <pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate>
      <description>A phone update brings the workspace&apos;s own code to asset and kit screens, names who holds an asset through a booking, wakes the paused camera on any tap, and stops a failed save from throwing your numbers away.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/shelf-mobile-app.jpg" alt="" /></p><p>An over-the-air update went out to <strong>Shelf Companion</strong> on iPhone and Android on 21 September 2026. The version number stays <strong>1.5.0</strong> — the app picks an update like this up in the background when you open it and uses it the next time you open it, so there is nothing to fetch from the store.</p>
<h2>The code your workspace actually labels things with</h2>
<p>Asset and kit screens now carry a <strong>Codes</strong> card that leads with the identifier your workspace chose in its code display preference — the Shelf QR, the SAM ID, or one of the item's registered barcodes — instead of always leading with the Shelf QR. An item that overrides the workspace choice for itself wins over it, and when there is more than one code the card's selector switches between them.</p>
<p>If the preferred code cannot be shown because the item does not carry one, the card says so plainly: <em>"Your workspace prefers Code 128 but this item has no Code 128."</em> The app never words that itself; the server, which knows the preference, sends the sentence.</p>
<p>Asset list rows print the same resolved code under the name, so a row can be matched against a physical label without opening it. Registered barcodes need the <a href="https://www.shelf.nu/knowledge-base/alternative-barcodes">barcodes add-on</a>.</p>
<h2>Who is holding it, and through what</h2>
<p>An individually tracked asset that is out on a booking now names its holder on the detail screen: an <strong>In Custody Of</strong> row, a <strong>Via Booking</strong> row, and a <strong>Since</strong> row. It is the phone's form of the custody card the web asset page has always shown. Tap the booking row to open it, where your role may open that booking. Who sees these rows follows the workspace's <a href="https://www.shelf.nu/knowledge-base/configure-what-self-service-and-base-users-can-see">custody visibility</a> rules.</p>
<h2>A camera that wakes on any tap</h2>
<p>The scanner pauses itself after about thirty seconds without a scan. Waking it used to take a tap on the small play button, because the strips across the top and bottom of the view swallowed everything else. Now a tap anywhere that is not a control brings the camera straight back.</p>
<p><strong>Enter code</strong> moved with it. The manual-entry field opens in the strip at the top of the camera view with the keyboard already up, so one tap is enough to start typing. It used to open at the bottom, where the keyboard covered it.</p>
<h2>A failed save no longer costs you the numbers</h2>
<p>The sheets that take numbers — adjust quantity, the check-in disposition split, and Manage Placements — closed the moment you tapped save. A save the server then refused took your numbers with it. They now stay open with the error and everything you entered still in place, ready to correct and send again.</p>
<h2>Kits counted as kits</h2>
<p>The button on a booking's selection has always counted a wholly picked kit as one thing — <strong>Check Out 1 Kit &#x26; 1 Asset</strong>. The question underneath it counted the kit's members, so the same pick asked <em>"Check out 4 selected assets?"</em>. Both now speak the same language: <em>"Check out 1 kit and 1 asset?"</em>, then <em>"1 kit and 1 asset checked out. The rest is still reserved."</em> This holds on the booking screen and in the scanner's check-out and check-in drawers.</p>
<p>A kit the current mode cannot act on now shows <strong>no tick box at all</strong>, the way an asset in that state already did — a kit that is already out while you Select to Check Out, or one that is not out yet while you Select to Check In. The row keeps its place, so the list stays lined up, and tapping it still opens the kit.</p>
<h2>Smaller things</h2>
<ul>
<li><strong>Check out what is ready.</strong> Reserved model units nobody has assigned yet no longer refuse a check-out on the phone. Check Out All, Select to Check Out and both scanners name the open units and ask you to confirm, then send out what is ready and leave the reservations open. This matches <a href="https://www.shelf.nu/knowledge-base/adding-assets-and-kits-to-a-booking#checking-out-while-units-are-still-unassigned">the same change on the web</a>.</li>
<li><strong>A readable date picker on iPhone.</strong> The inline picker follows the app's own <strong>Settings ▸ Appearance</strong> rather than the phone's, so a mismatched pair is no longer dark-on-dark or white-on-white. Android was already readable and is unchanged.</li>
</ul><p><a href="https://www.shelf.nu/knowledge-base/shelf-ios-companion-getting-started">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Invite Emails Match Whatever the Capitals Are</title>
      <link>https://www.shelf.nu/updates/invite-emails-match-whatever-the-capitals-are</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/invite-emails-match-whatever-the-capitals-are</guid>
      <pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate>
      <description>An invite made by CSV import no longer refuses the person it was sent to. Email addresses are compared without regard to letter case everywhere an invite is created, found, accepted, resent or cancelled.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/enhanced-user-permissions.jpg" alt="" /></p><p>An email address means the same person however it is typed. Shelf now treats it that way throughout the invite flow.</p>
<h2>The bug people actually hit</h2>
<p>The <a href="https://www.shelf.nu/knowledge-base/inviting-users-via-csv-upload">CSV user import</a> stored an address exactly as the spreadsheet had it, capitals and all — <code>First.Last@company.com</code>. Accounts are stored in lower case. So when the invited person opened their link while signed in, Shelf compared the two, found them different, and refused with <strong>"Wrong user"</strong>. Opening the link signed out gave an error page rather than joining, for anyone who already had a Shelf account.</p>
<p>The single "Invite a user" dialog already lowercased the address, so only invites made by CSV import carried capitals. That is a large share of the invites big teams send.</p>
<h2>What changed</h2>
<p>The import stores addresses in lower case, trimmed of stray spaces. And every place an invite email is compared — the member check, the earlier-invite lookup, the pending-invite check, the account found on acceptance, cancel, and resend — now ignores letter case.</p>
<p>Three side effects go with it:</p>
<ul>
<li>A new invite for someone whose earlier invite carried capitals <strong>reuses their existing team member</strong> instead of creating a second one, so the person keeps the record that holds their history.</li>
<li>A CSV that lists <strong>one address twice in different capitals</strong> creates one invite, not two.</li>
<li>A CSV row for someone <strong>already in the workspace</strong> under different capitals is skipped, rather than inviting them again.</li>
</ul>
<p>A re-send now closes every earlier invite for that person <strong>before</strong> it issues the new one. The two steps used to run at the same time, so a slow invalidation could close the invite that had just been created.</p>
<h2>Nothing to do on your side</h2>
<p>Invites already stored with capital letters work as they are. There is no data change, no backfill, and nothing to re-send. If someone was stuck on "Wrong user", ask them to open their existing link again.</p>
<p>The team member's <strong>name</strong> still comes from the address exactly as you typed it in the CSV, because that name becomes the first name of the account created when the person accepts.</p><p><a href="https://www.shelf.nu/knowledge-base/inviting-users-via-csv-upload">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>A bulk action&apos;s record now names exactly what it touched</title>
      <link>https://www.shelf.nu/updates/bulk-actions-name-the-rows-they-touched</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/bulk-actions-name-the-rows-they-touched</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description>A location&apos;s activity feed lists only the assets a bulk move really brought in, and releasing several kits at once records each kit&apos;s own custodian instead of the first one&apos;s.</description>
      <content:encoded><![CDATA[<p><img src="https://qliecghuzfchfjwaisyx.supabase.co/storage/v1/object/public/website-images/knowledgebase/batch-actions-1.webp" alt="" /></p><p>Two bulk actions did the right thing to your data and then described it wrongly in the history. Nothing was ever moved or released incorrectly — but the record of it was, and a record you cannot trust is not much of a record.</p>
<p><strong>A location no longer claims stock that never arrived.</strong> <a href="https://www.shelf.nu/knowledge-base/quantity-tracked-assets-and-consumables">Quantity-tracked assets</a> are skipped by the bulk <strong>Update location</strong> action, because a placement needs a count as well as a place. The move itself always honoured that; the note written on the destination location's activity feed did not, and listed every asset you had selected. Move a tripod and a roll of gaffer tape together and the location's history said both had been added, when only the tripod had. The note now names only the assets the action actually moved — which also means an asset already at the location you picked is no longer written up as having arrived there.</p>
<p><strong>Releasing several kits at once names the right person.</strong> Select kits on the Kits index and use <strong>Release custody</strong>, and each asset's note and each <code>CUSTODY_RELEASED</code> event now carries the custodian of the kit <em>that asset</em> came through. Until now the whole batch borrowed the first selected kit's custodian, so releasing Sarah's kit and Tom's kit together left every asset in the batch recorded against Sarah — a false statement in a permanent asset history, and a wrong grouping in any report built on the released custodian.</p>
<p>Records written before 18 September 2026 still carry the old values. If you have run either of these batches and something in an asset's or a location's history looks off, that is the likely reason. Everything from here on is written from what the action really did.</p><p><a href="https://www.shelf.nu/knowledge-base/using-batch-actions-in-shelf">Read more</a></p>]]></content:encoded>
    </item>
    <item>
      <title>The app lists a booking in the same order as the web</title>
      <link>https://www.shelf.nu/updates/the-app-lists-a-booking-in-the-web-order</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/the-app-lists-a-booking-in-the-web-order</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description>On the phone, a booking&apos;s items still waiting to be checked out now come first and the ones already out sink to the bottom, matching the web booking page. Nothing to install.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/shelf-mobile-app.jpg" alt="" /></p><p>Open a booking in <a href="https://www.shelf.nu/mobile-app">Shelf Companion</a> halfway through a hand-over and the items you still have to collect are now at the top of the list, where you are looking. The ones already checked out sink to the bottom.</p>
<p>Until now the phone did the opposite: it listed the checked-out items first, so every item you handed over pushed the remaining work further down the screen. The web booking page has always ordered the list the other way round, and the two now agree. A kit is judged as one block and only sinks once every member of it is out, a <a href="https://www.shelf.nu/knowledge-base/quantity-tracked-assets-and-consumables">quantity-tracked</a> line stays on top while any of its booked units are still waiting, and items that tie break A→Z by name rather than by when they were created.</p>
<p>This was a server-side change, so <strong>there is nothing to install</strong>. Every phone with Shelf Companion already lists bookings this way, whatever version it is running.</p>]]></content:encoded>
    </item>
    <item>
      <title>Units Reserved by Model Stay Reserved</title>
      <link>https://www.shelf.nu/updates/model-reservations-hold-against-named-units</link>
      <guid isPermaLink="true">https://www.shelf.nu/updates/model-reservations-hold-against-named-units</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <description>A booking could pick a unit by name that another booking had already reserved by model. Shelf now counts model reservations whenever a unit is added by name, and marks those units in the picker.</description>
      <content:encoded><![CDATA[<p><img src="https://www.shelf.nu/images/updates/add-assets-to-bookings.jpg" alt="" /></p><p>Reserving by <a href="https://www.shelf.nu/glossary/asset-models">asset model</a> lets a booking hold "2 laptops" without choosing which two. That promise now holds against every other booking on the same dates, including ones that pick units by name.</p>
<h2>What was missing</h2>
<p>Shelf already stopped two model reservations from over-committing the same model. What it did not count was a unit named directly. Say a model has 3 laptops, 1 is in custody, and booking A reserves 2 by model. Booking B, on the same dates, could still add one of the 2 free laptops by name. Both bookings saved, and A was left needing 2 laptops from a pool that had 1.</p>
<h2>What happens now</h2>
<p>Whenever a unit is added to a booking by name, Shelf checks it against the model reservations on other bookings for those dates:</p>
<ul>
<li>In <strong>Manage assets</strong>, units of a fully reserved model show a <strong>Reserved by model</strong> badge and can't be ticked.</li>
<li>Scanning such a unit onto a booking, on the web or in the Shelf Companion app, is refused.</li>
<li>Reserving a draft that already holds one is refused, so a draft put together before the reservation existed can't slip past it.</li>
<li>Extending a booking into a period where the model is fully reserved is refused if the booking holds a unit of it.</li>
</ul>
<p>The refusal names the model and shows the count, for example <em>"Dell Latitude 5550": 1 unit requested by name, but 2 units are reserved by model on other bookings for these dates and only 0 more can be booked.</em></p>
<p>A model with units to spare works as before, and a booking that reserves the model itself can still fill its own reservation by picking or scanning units of it.</p><p><a href="https://www.shelf.nu/knowledge-base/adding-assets-and-kits-to-a-booking#reserved-units-stay-reserved-when-someone-books-by-name">Read more</a></p>]]></content:encoded>
    </item>
  </channel>
</rss>
