2025-10-09 - 2026-10-09
Overview
31 Pull requests merged by 1 user
Merged
#32 Merge dev: Node.js scraper migration + CI fix
Merged
#31 SCRAPE-32: Integrate scraper scheduler in server.js
Merged
#30 SCRAPE-31: Add scraper indexes and validation collections
Merged
#29 SCRAPE-25: Add fixture-based unit tests for parseUnits()
Merged
#28 SCRAPE-24: Create HTML fixture files for scraper tests
Merged
#27 SCRAPE-23: Sanitize error messages in scraper_runs
Merged
#26 SCRAPE-22: Implement rate limiting for trigger endpoint
Merged
#25 SCRAPE-21: Add requireAuth + requireAdmin middleware verification
Merged
#24 SCRAPE-20: Implement credential redaction in scraper log calls
Merged
#23 SCRAPE-18: Implement GET /admin/scraper/history endpoint
Merged
#22 SCRAPE-17: Implement GET /admin/scraper/status endpoint
Merged
#21 SCRAPE-16: Implement POST /admin/scraper/run endpoint
Merged
#20 SCRAPE-15: Add getNextScheduledRun() test coverage
Merged
#19 SCRAPE-14: Add graceful shutdown handling
Merged
#18 SCRAPE-13: Create node-cron job initialization
Merged
#17 SCRAPE-12: Implement in-process mutex (isScraperRunning flag)
Merged
#16 SCRAPE-11: Create main runScraper() orchestration function
Merged
#15 SCRAPE-10: Implement recordScraperRun() for scraper_runs
Merged
#14 SCRAPE-9: Implement updateDailySummary() aggregation
Merged
#13 SCRAPE-8: Implement markStaleUnits()
Merged
#12 SCRAPE-7: Implement insertPrices() bulk operation
Merged
#11 SCRAPE-6: Implement upsertUnits() bulk operation
Merged
#10 SCRAPE-5: Implement convertDataTypes() with type parsing helpers
Merged
#9 SCRAPE-4: Implement parseUnits() with cheerio selectors
Merged
#8 SCRAPE-3: Implement fetchPage() with axios, timeout, retry
Merged
#7 SCRAPE-2: Add scraper config constants
Merged
#6 Add scraperLogger.js with credential redaction
Merged
#5 Admin Dashboard Backend (Phases 1-4)
Merged
#4 Add Google OAuth authentication system
Merged
#3 Add soonest field to available-units endpoint
Merged
#2 expanded-api
1 Unresolved Conversation
Open
#1
Deployment