Multi-select (Ctrl/Cmd+click toggle, Shift+click range, right-click the
active selection for bulk actions - same conventions as a native file
manager):
- Print Labels (N) / Export CSV (N) for any mix of individually-picked
assets and whole folders. Labels/export now take asset_ids/folder_ids
instead of a single asset_id/folder_id.
- Edit Status..., Check Out..., Duplicate, Move to..., and Delete, bulk
versions of the existing single-asset actions. Checkout/Move modals
were generalized to accept an array of ids instead of just one; status
editing got its own lightweight POST /app/assets/{id}/status endpoint
(assets.SetStatus) so a bulk status change doesn't need to resend every
other field the way a full PATCH would.
Labels:
- Choose QR (a /scan/<tag> URL, for a phone camera) or Code128 barcode
(the bare Asset ID, for a USB scanner typing into the search box) via a
format selector on the print page. New barcodeDataURI using
github.com/boombuler/barcode alongside the existing QR generator.
- "Start at #" lets printing resume partway into an already-used sheet
instead of wasting it on a fresh one.
- Added the Avery 5260 label template (same grid as 5160, rounded
corners, so it isn't flagged approximate).
Also: the configured Site Name now shows on the login page too, not just
the authenticated navbar.
- Statuses can now be bulk-imported/updated via CSV (Name, Color columns;
matches and updates existing statuses by name). New
internal/statuses/csv.go, tested.
- Icon fields (folder create/rename, item type form) are now a searchable
dropdown of the 50 most common Bootstrap Icons instead of a free-text
box, via a small reusable .icon-picker widget in app.js/app.css.
- CSV asset import is now folder-scoped when triggered from the tree:
right-click a folder (or its background) > Import CSV... imports every
row directly into that folder, so the CSV needs no Folder column at
all, and the option no longer appears at the top level. The original
global, Folder-path-aware import (with auto-create-missing-folders)
moved to a new admin-only Settings > Import / Export page, alongside
the new Statuses import and format examples for both. assets.Import
gained ImportOptions.TargetFolderID to drive the folder-scoped mode.
- Site Name (Settings > General) now actually renders in the navbar
brand and <title>, via a per-App "siteName" template func bound in
loadTemplates. The brand is plain text now, not a link to /inventory.
The tree and main panels now behave like a native file manager: right
click (or the keyboard Menu key) on a folder, asset, breadcrumb crumb, or
empty tree/panel background brings up the relevant actions instead of a
row of always-visible buttons.
- New generic showContextMenu() in app.js with per-target-kind menu
builders (folder/asset/tree background/panel background), gated by
admin role the same way the old buttons were.
- Removed: the "..." tree-row action button, and the New Folder/Add
Asset/Rename/Delete/Edit/Move/Duplicate/Import/Export buttons from the
inventory toolbar and every panel. Expand All/Collapse All shrank to two
icon-only buttons next to the search box; everything else creation- or
mutation-related is right-click only.
- Replaced the per-asset embedded "Move" modal with one shared
#moveAssetModal populated via a new GET /app/folders/options endpoint,
since move can now be triggered from any asset row, not just its own
detail view.
- Breadcrumb crumbs (including the current folder) and folder/asset table
rows are now valid right-click targets too, not just tree rows.