{"slug":"vendor-agents-viewer","total":16,"limit":100,"offset":0,"since":null,"commits":[{"hash":"c912ba0","date":"2026-09-15 18:50:46 -0700","author":"Steve Abrams","subject":"security: add rel=noopener noreferrer to target=_blank links (yoloforever cycle 3)","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01UxvvaJ7p6VRZ4RzKDaBXqK"},{"hash":"f19f192","date":"2026-09-15 04:15:57 -0700","author":"steve@designerwallcoverings.com","subject":"TK-11438: migrate postgres pool to unix socket on darwin","body":"Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>"},{"hash":"c19c33c","date":"2026-08-12 08:53:19 -0700","author":"Steve","subject":"viewer standard: add Grid/List toggle + per-field on/off menu to internal record-grid viewer","body":""},{"hash":"c4e0072","date":"2026-07-31 14:51:04 -0700","author":"Steve Abrams","subject":"vendor-agents-viewer: href-drill — data points now filter-links (URL-addressable)","body":"Every vendor + status data point is now an <a href=\"?vendor=…&status=…\"> to its\nfiltered view (href-drill HARD rule). Inline primitives (qstr/drill/readURL/writeURL)\ntailored to this viewer's search+dropdown model; click filters in place + reflects into\nthe URL, cmd/ctrl-click opens the shareable href, back-button + deep-link restore via\npopstate/readURL.\n\nVerified (Playwright, live :9789): click Brewster & York -> ?vendor=Brewster+%26+York,\ngrid 115->1 all-matching; deep-link restores; back-button restores 115; canary\nFLAT->DONE; 0 pageerrors. href-drill backlog grid 1/92. TK-10089."},{"hash":"b2d905e","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":"affc2b0","date":"2026-06-26 11:45:27 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-26T11:45:25 (1 files) — package-lock.json","body":""},{"hash":"ae7d49a","date":"2026-06-26 11:21:12 -0700","author":"Steve","subject":"chore: v1.0.1 (session close — lint ✓ / refactor no-op)","body":""},{"hash":"52c61e1","date":"2026-06-26 10:47:46 -0700","author":"Steve","subject":"harden va-* launcher: EADDRINUSE backoff binder + --kill-timeout 4000 (memo-approved)","body":""},{"hash":"0b82d9d","date":"2026-06-22 09:24:12 -0700","author":"Steve","subject":"security: strip hardcoded secret -> env-first/passwordless. No rotation/deploy.","body":""},{"hash":"9768cb4","date":"2026-06-10 20:39:29 -0700","author":"SteveStudio2","subject":"label intentional no-scrape vendors honestly: API exposes skip_catalog_scrape/is_private_label/is_active; cards show 'n/a — private label' or 'n/a — no source' instead of 'none built' for the 14 vendors with no scrapeable source; gimmersta flagged in registry","body":""},{"hash":"47c3aaa","date":"2026-06-10 16:30:02 -0700","author":"SteveStudio2","subject":"agent-host: normalize scraper output — accept bare array or {vendor,products} wrapper (new feed-first scrapers use the wrapper; scan was failing with .slice is not a function)","body":""},{"hash":"6eba3c5","date":"2026-06-10 16:28:21 -0700","author":"SteveStudio2","subject":"alias map: elitis->elitis-wallcovering, DWDP->dwdp exact-case","body":""},{"hash":"848ffce","date":"2026-06-10 09:02:59 -0700","author":"SteveStudio2","subject":"resolveScraper alias map: 23 vendor codes mapped to existing scraper files (cole_son->cole-and-son, maya->maya-romanoff, hollywood->momentum-textiles, elitis->elitis-wallcovering, etc); port conflicts resolved via registry reassign (dolce_gabbana 9736, andrew_martin 9737, DWDP 9738)","body":""},{"hash":"1e2344e","date":"2026-06-10 07:54:08 -0700","author":"Steve","subject":"Launch infra: generic agent-host.js (per-vendor, env-parameterized) + viewer Launch/Restart/Scan wired to local pm2. Launch starts the agent, Scan runs the vendor's real scraper (innovations: 8 products live). Resolves vendor_code->scraper_id; OOM-safe (one agent per click).","body":""},{"hash":"913eff2","date":"2026-06-10 07:45:18 -0700","author":"Steve","subject":"Honest agent status: resolve real pm2 name per port, flag conflict (port reused by other app) vs true online. 0 vendor agents actually running.","body":""},{"hash":"338a1ba","date":"2026-06-10 07:40:14 -0700","author":"Steve","subject":"initial scaffold — vendor agents viewer (review/launch/restart, descriptions+usage, sort+density, admin date/time)","body":""}]}