v3.35.48 — Cloud-sync hardening, safer imports, trade-link accuracy & code-health cleanup
v3.35.48 rolls up the full v3.35.6 → v3.35.48 development cycle — a sustained reliability push focused on cloud-sync correctness, safer imports/exports, trade-link accuracy, and a large code-health cleanup. No data-format changes; your existing inventory, backups, and synced vaults carry over untouched.
Highlights
☁️ Cloud sync hardening
- Companion-pull failure, cancel, and retry edges are now handled so a partial sync can't leave your devices out of step (STRK-224).
- "Clear price history" now propagates correctly across devices via a synced watermark tombstone instead of silently coming back (STRK-223).
- Vault-first image/attachment pulls are gated on apply, and catalog API keys (Numista / PCGS) now survive a vault restore (STRK-225, STRK-186).
- Item price-history merges are UUID-aware, so histories no longer cross-contaminate between items (STRK-147).
💾 Imports, exports & backups
- CSV merge imports now keep tag add/remove edits on items already in your collection — previously only brand-new rows applied them (STRK-220).
- Backup/restore guards against orphaned images and corrupt rows; encrypted backups now include pattern-rule images (STRK-200, STRK-202, STRK-185).
- Crash guards on CSV/backup export for items missing a metal or weight (STRK-211, STRK-212).
🔁 Trade linking
- Trade cost-basis now divides by the number of items actually linked and re-balances when you edit a trade, keeping carryover values accurate (STRK-132, STRK-196, STRK-229).
📈 Market & retail data
- Spot sync rejects stale payloads, and market data fails over to a backup endpoint if the primary is down (STRK-189, STRK-188).
- Retail dealer links stay current on older browsers; price-extractor logic isolated per vendor for more reliable scraping (STRK-213, STRK-32).
🖼️ Storage & images
- Image storage quota warnings with an O(1) pre-flight check, plus bulk image-cache reliability fixes (STRK-146, STRK-162, STRK-214/215/218).
♿ Accessibility
- Inventory-table reference chips (Numista #, PCGS #, grade) and filter chips are now fully keyboard-activatable, and Space no longer scrolls the page (STRK-209, STRK-232).
🧹 Under the hood
- Large code-health campaign: oversized modules split, high-complexity functions refactored, dead code removed, and broader older-browser compatibility (STRK-169, STRK-170, STRK-184, STRK-193, STRK-216, STRK-217).
🔒 Privacy-first as always — runs entirely in your browser, no accounts, no tracking. Your stack, your data, your rules.