Commit graph

  • ea240b3f96 Add stale-scrape health alerting (email + in-app banner) main jtricerolph 2026-08-13 15:44:03 +00:00
  • b916f1a09b Fix Guestline + Mews direct scrapers after engine API changes jtricerolph 2026-08-13 14:09:13 +00:00
  • 22e3670531 Add iOS install hint + Apple PWA meta tags jtricerolph 2026-08-06 14:12:12 +00:00
  • 5af0863ab7 Scope PWA manifest to app's own path instead of origin root jtricerolph 2026-07-29 13:47:12 +00:00
  • 83dbb1d85a Fix PWA manifest scope to / per install-architecture doc jtricerolph 2026-07-24 17:06:48 +00:00
  • 2454886e2d Add name, email and sign out button to sidebar footer jtricerolph 2026-07-22 11:10:06 +00:00
  • 85c7aea799 Remove responsive breakpoint — sidebar always visible (desktop-forced via CSS) jtricerolph 2026-07-21 08:54:51 +00:00
  • f99e54c53a Force desktop viewport (width=1280) — info-heavy display not suited to responsive layout jtricerolph 2026-07-20 23:15:55 +00:00
  • 078cb47b16 Add configurable 30-day NewBook rate rescrape on 2/4/6/12h intervals jtricerolph 2026-07-15 09:44:18 +00:00
  • 7d0b7d2d3b Fix schedule-info 500: pass db session to medium/low priority date fns jtricerolph 2026-07-15 09:37:43 +00:00
  • cab1a39503 Auto-recheck parity after scrape + manual Recheck button + faster badge jtricerolph 2026-07-15 09:33:33 +00:00
  • 8a80c66a3b Fix uuid type mismatch in stale batch cleanup subqueries jtricerolph 2026-07-15 09:18:18 +00:00
  • 6503018b99 Add 'Run Scheduled Scrape Now' button + clarify manual scrape mode jtricerolph 2026-07-15 09:12:14 +00:00
  • 312a14b80f Add live progress tracking to scrape history jtricerolph 2026-07-15 09:09:46 +00:00
  • 1acc817999 Back-fill hotels/rates counts when marking interrupted scrape batches jtricerolph 2026-07-15 09:05:20 +00:00
  • 9fa4c15081 Fix parity check: always compare lead-in rate + auto-resolve past alerts jtricerolph 2026-07-15 08:59:14 +00:00
  • 4b5b8b30ed Fix SQL syntax error in generate_series date cast (SQLAlchemy text() parsing) jtricerolph 2026-07-15 08:42:15 +00:00
  • 38b0c36923 Use text-search approach for rate conditions (breakfast/cancel/payment) jtricerolph 2026-07-14 18:10:00 +00:00
  • 69ecf1012e Fix breakfast detection on hotel-page scraper + add update banner jtricerolph 2026-07-14 17:49:27 +00:00
  • e481ad5258 Add Power BI reporting endpoints — flat tabular data via API key auth jtricerolph 2026-07-14 17:27:50 +00:00
  • d5ce38859d Fix booking scrape date selection — oldest-first tiered distribution jtricerolph 2026-07-14 09:39:35 +00:00
  • 9a0dc58b11 Add bare /health location to nginx for management monitor compatibility jtricerolph 2026-07-13 17:07:35 +00:00
  • 59984fc0ac Configurable inactivity timeout — disabled automatically in PWA/standalone mode jtricerolph 2026-07-13 12:29:02 +00:00
  • 071ea9bfc3 Add shared device inactivity timeout to AuthGate jtricerolph 2026-07-13 11:53:06 +00:00
  • 516f774223 Sync x-axis range between rate and occupancy charts in history popup jtricerolph 2026-07-12 13:52:29 +00:00
  • 60fdda8129 Use linear interpolation in bookability history charts jtricerolph 2026-07-12 13:42:36 +00:00
  • 808fa6f8b2 Fade past dates in Bookability matrix jtricerolph 2026-07-12 13:36:29 +00:00
  • c63f8c5c4d Fix registerSW.js 404 — add root to server block jtricerolph 2026-07-12 13:23:38 +00:00
  • 2743b0e877 Add occupancy pick-up history + bookability history popup jtricerolph 2026-07-12 12:38:02 +00:00
  • aef7d755f1 Fade past dates in Direct Rates hotel detail view jtricerolph 2026-07-12 12:24:56 +00:00
  • 960606cf6e Replace letter icons with Lucide PWA icons jtricerolph 2026-07-11 20:30:12 +00:00
  • 4eea566799 Make rates installable as a PWA jtricerolph 2026-07-11 11:27:00 +00:00
  • b90f6bcbd6 Default changed-since to enabled (24h) on page load jtricerolph 2026-07-11 09:12:58 +00:00
  • 68e8a6883b Add fetch_category_names to Eviivo, QBook and Mews profiles jtricerolph 2026-07-10 13:00:19 +00:00
  • c2e1a9703a Add Eviivo, QBook and Mews direct scrape profiles jtricerolph 2026-07-10 12:11:37 +00:00
  • d9f9a9a5f0 Fix mid-session 401 redirecting iframe to wrong URL, causing portal EmbeddedFallback jtricerolph 2026-07-10 11:43:57 +00:00
  • e355833f1c Add "Changed Since" rate movement indicators to Market View matrix jtricerolph 2026-07-10 11:19:34 +00:00
  • 8ec066caa8 Revert TLS 1.2 flag — DataImpulse incompatible with Playwright on both envs jtricerolph 2026-07-10 11:07:45 +00:00
  • 46eada16a3 Try forcing TLS 1.2 max to fix DataImpulse residential IP handshake failures jtricerolph 2026-07-10 10:48:56 +00:00
  • ef7c4790ca Revert Firefox: root cause was broken DataImpulse nodes not fingerprinting jtricerolph 2026-07-10 09:54:50 +00:00
  • 12037dc3f7 Switch Playwright to Firefox to evade Booking.com Chromium JA3 fingerprint detection jtricerolph 2026-07-10 09:42:05 +00:00
  • d28c738475 Block images via Chrome flag, not route interception; restore DataImpulse URL auth jtricerolph 2026-07-10 09:14:36 +00:00
  • d223a449c3 Fix DataImpulse Playwright auth: use separate fields not URL-embedded jtricerolph 2026-07-10 09:11:31 +00:00
  • f6d5fb27e1 Fix proxy test: URL-encode httpx credentials, use Proxy object, improve error detail jtricerolph 2026-07-10 08:57:25 +00:00
  • ed0a027448 Add 'last changed' tooltip to bookability date headers jtricerolph 2026-07-10 08:44:29 +00:00
  • 418e0d2fcc Block images/CSS/fonts in Playwright to cut ~75% bandwidth jtricerolph 2026-07-10 08:42:08 +00:00
  • d72f14ae49 Fix bookability column timestamps showing stale 'last changed' dates jtricerolph 2026-07-10 08:41:58 +00:00
  • 218589afbe Fix IPRoyal Playwright auth: use separate fields not URL-embedded jtricerolph 2026-07-10 02:55:13 +00:00
  • 2b55b0d6a5 Add IPRoyal proxy support alongside DataImpulse jtricerolph 2026-07-10 02:37:53 +00:00
  • b44e688b3e Retry page load timeouts: treat as blocks, bump max retries to 4 jtricerolph 2026-07-10 02:19:16 +00:00
  • 28c4dd9f54 Revert proxy auth change — URL-embedded credentials are correct jtricerolph 2026-07-10 02:16:04 +00:00
  • 940ffbbe39 Switch proxy auth from URL-embedded to Proxy-Authorization header jtricerolph 2026-07-10 02:13:06 +00:00
  • 3b931d4915 Fix NameError in date-first sharding: shards → date_shards jtricerolph 2026-07-10 01:42:27 +00:00
  • effa982a8e Switch scrape sharding from hotel-first to date-first jtricerolph 2026-07-10 01:34:46 +00:00
  • 8ccc0e272d Fix max_persons extraction: read from span text not block_id segment 2 jtricerolph 2026-07-10 01:22:51 +00:00
  • 52455328e7 Randomise browser fingerprint per context to evade bot detection jtricerolph 2026-07-10 01:08:49 +00:00
  • 83b46bee8f Fix JS extractor under-counting rooms: iterate all tbody rows like scrapy jtricerolph 2026-07-10 00:37:35 +00:00
  • dd84ca230a Fix own hotel excluded from scrape and 1-person rates hidden in matrix jtricerolph 2026-07-10 00:31:08 +00:00
  • ca76bc2f90 Fix proxy never being used in hotel-page scraper jtricerolph 2026-07-10 00:21:42 +00:00
  • 1b985e5a16 Allow parallel workers for hotel-page scraper without proxy jtricerolph 2026-07-10 00:18:56 +00:00
  • 0721769e03 Hide per-date rescrape button for past columns jtricerolph 2026-07-10 00:13:38 +00:00
  • c49985bec7 Add hotel discovery scrape, manual hotel add, and competitor-only filtering jtricerolph 2026-07-10 00:08:58 +00:00
  • 30583c59a4 Restrict hotel-page scraper to own + competitor tiers only jtricerolph 2026-07-10 00:03:17 +00:00
  • e472ba65c4 Improve sold-out and past-day cell display in rate matrix jtricerolph 2026-07-09 23:56:40 +00:00
  • d97bfdab90 Fix Plotly namelength type cast jtricerolph 2026-07-09 23:50:07 +00:00
  • dbcc15661d Fix max_persons extraction and legend truncation in rate modal jtricerolph 2026-07-09 23:49:18 +00:00
  • 121976b3db Fix Plotly £ format warning and add scraper backend selector to Settings jtricerolph 2026-07-09 23:45:33 +00:00
  • f2e11bf585 Use qty dropdown for availability count, not just scarcity text jtricerolph 2026-07-09 23:20:15 +00:00
  • 5462773dd7 Add rate snapshot to modal and room-type history chart improvements jtricerolph 2026-07-09 23:17:00 +00:00
  • bb37fcf501 Add hotel-page scraper backend with full room/rate plan extraction jtricerolph 2026-07-09 23:08:03 +00:00
  • b10b2f5990 Fix page.content() blocking ~2 minutes after goto timeout on Cloudflare hits jtricerolph 2026-07-09 21:34:37 +00:00
  • ea66025140 Reduce scraper timeouts and raise default concurrency to 6 jtricerolph 2026-07-09 21:17:19 +00:00
  • b47258d47b Fix scrape submission race condition allowing duplicate background tasks jtricerolph 2026-07-09 20:59:17 +00:00
  • 13618e4471 Fix expired session showing EmbeddedFallback in portal iframe jtricerolph 2026-07-09 20:19:36 +00:00
  • 134cc5cc3f Fix proxy 407 round-trip causing 14s latency per page.goto() jtricerolph 2026-07-09 20:14:09 +00:00
  • 92dce29e7b Fix page.content() crash and ensure rotation triggers on any empty result jtricerolph 2026-07-09 18:16:06 +00:00
  • 2ed53bea39 Add direct connection fallback after all proxy attempts fail jtricerolph 2026-07-09 18:01:46 +00:00
  • 7b4bb72f15 Add Referer header to search URL navigation jtricerolph 2026-07-09 17:50:45 +00:00
  • 3c4bc633fe Revert to headed Chrome + Xvfb; add shm_size 256m to fix Xvfb in Docker jtricerolph 2026-07-09 17:36:27 +00:00
  • e53c482141 Increase Playwright page.goto timeout from 30s to 90s jtricerolph 2026-07-09 17:23:41 +00:00
  • 617ff932bb Switch Playwright to headless — Xvfb fails on Proxmox LXC kernels jtricerolph 2026-07-09 17:01:54 +00:00
  • e781b1e8b9 Scraper: force-reset endpoint + watchdog to prevent stuck lock jtricerolph 2026-07-09 16:56:35 +00:00
  • d737940a00 Matrix: past/sold-out cells show last rate strikethrough, icons at bottom jtricerolph 2026-07-08 15:54:38 +00:00
  • 1ffda18872 Market View: per-hotel rate history chart and Booking.com eye link jtricerolph 2026-07-08 15:41:32 +00:00
  • 2abc2b0297 Show own hotel's direct rate (Newbook best available) in the matrix direct sub-row jtricerolph 2026-07-06 08:25:46 +00:00
  • ad0e82465c Parity: best-available comparison as default, term-matching optional jtricerolph 2026-07-06 08:04:15 +00:00
  • 3b501f95c5 Parity: like-for-like tariff matching instead of headline vs lead-in jtricerolph 2026-07-06 07:57:17 +00:00
  • 9545fd651d Parity markup and tolerance configurable as % or flat £ jtricerolph 2026-07-06 07:41:55 +00:00
  • 493e87b2dc Rate parity: expected-markup config, alert writer job, alerts UI + direct-link UI jtricerolph 2026-07-06 07:30:41 +00:00
  • 029e3b379f Add benchmark & tier-offset configuration UI to Direct Rates Manage tab jtricerolph 2026-07-06 07:09:10 +00:00
  • 46020576f8 Stats: fall back to all rate plans when no benchmark rate configured jtricerolph 2026-07-06 06:53:44 +00:00
  • 20d939de00 Restore guestline-monitor features: room stock/occupancy, rate history, room stats jtricerolph 2026-07-06 06:50:37 +00:00
  • 74ae94671b Wire up direct-rates column; remove dormant pause-on-block flow jtricerolph 2026-07-06 06:01:56 +00:00
  • 1dc8c0a945 Extract shared proxy module; make it available to direct scraper; remove dead code jtricerolph 2026-07-05 22:55:24 +00:00
  • 6b7f00b40a Parallel scrape workers (proxy-gated, configurable) jtricerolph 2026-07-05 22:13:23 +00:00
  • 579a189cb8 Use pasted Booking.com search URL to pin scrape destination jtricerolph 2026-07-05 22:00:28 +00:00
  • 9e5728efb1 Pin Booking.com search to a dest_id jtricerolph 2026-07-05 21:49:57 +00:00
  • 270d8293d1 Manage scraper proxy from the Settings page jtricerolph 2026-07-05 20:36:19 +00:00
  • 11b995739c Add residential proxy support to Booking.com scraper jtricerolph 2026-07-05 20:30:15 +00:00
  • 1743590743 Fix backend startup: launch Xvfb directly, not via xvfb-run jtricerolph 2026-07-05 16:35:03 +00:00