{"slug":"vendor-price-requests","total":8,"limit":100,"offset":0,"since":null,"commits":[{"hash":"0bd737f","date":"2026-07-03 08:08:18 -0700","author":"Steve","subject":"chore: macstudio3 migration — reconcile from mac2 + repoint paths (stevestudio2→macstudio3, node/npm/npx→/opt/homebrew)","body":""},{"hash":"3a34121","date":"2026-06-19 09:02:02 -0700","author":"SteveStudio2","subject":"Move default port 9620→9803 to avoid va-schumacher EADDRINUSE collision","body":""},{"hash":"cc4422b","date":"2026-06-17 13:59:01 -0700","author":"Steve Abrams","subject":"VPR: per-vendor fillable Google Sheet — make-sheet.js (CSV→Sheet in shared Drive folder, anyone-can-edit, prefilled mfr_sku/name/color + blank width/repeat/contents/discount/retail/net), /api/sheet endpoint, sheet link auto-woven into the letter, Create-sheet page button","body":""},{"hash":"75f5291","date":"2026-06-17 13:17:48 -0700","author":"Steve Abrams","subject":"VPR: drafts first-class — save-draft persistence, draft/sent status badges, filter tabs (All/To draft/Drafts/Sent), saved draft pre-loads","body":""},{"hash":"075fd33","date":"2026-06-17 13:13:59 -0700","author":"Steve Abrams","subject":"Add state-sync: detect showroom SKUs that got a roll/price → mark has_price, drop from letter queue (217 dropped; Anna French 256/Osborne 90/1838 9 detected)","body":""},{"hash":"a3a5713","date":"2026-06-17 10:39:39 -0700","author":"Steve Abrams","subject":"VPR: exclude skip-own-brand (Hollywood) from letter list","body":""},{"hash":"589e3fa","date":"2026-06-17 10:29:27 -0700","author":"Steve Abrams","subject":"Crawl viability finding: Tier-B prices not in static HTML (JS/login/trade-only) — crawl uneconomical, route to letters; Browserbase crawl is a separate gated spend decision","body":""},{"hash":"c8a693e","date":"2026-06-17 10:25:18 -0700","author":"Steve Abrams","subject":"Vendor price-request pipeline: mfr_sku extractor (21k SKUs, 97% coverage) + price_sourcing table + approve/send web page (gated, sends via George)","body":""}]}