Instant inventory list sharing with live delivery tracking

Inventory list sharing now enqueues asynchronously, freeing up your browser immediately and showing delivery status in real time.

Bug Fixes

Sharing an inventory list previously blocked your browser while rendering the PDF and sending the email inline, causing timeouts and 429 errors on slow storage connections. This has been rearchitected: the share action now enqueues the job instantly and returns, while a background worker renders and delivers the PDF. The UI shows a "Sending…" status with real-time updates, and failed sends are logged and retryable. This also applies stricter concurrency limits to thumbnail fetches and retries transient storage errors, making the entire pipeline more robust.