Skip to content

Releases: full-bars/provider-tracking

Release v0.0.4

Choose a tag to compare

@full-bars full-bars released this 08 Jul 06:03
87a5c5e

v0.0.4 🧹 Performance, Correctness & Pruning

Important

Network total graph now shows 30 days. The LIMIT was too aggressive — 720 rows at 15-min intervals only covered 7.5 days. Upped to 2880 rows.

🐍 Python Backend

  • movers endpoint — Was using a single global timestamp instead of per-country lookups. Fixed with per-country subqueries.
  • comparison endpoint — Had no LIMIT, could return 35K+ rows. Now capped at 720.
  • query_trends — Parameterized the SQL instead of f-string interpolation.

🦀 Rust Backend

  • movers_detailed — ~3000 individual queries per request. Now batches each window into one query.
  • at_risk — Same N+1 pattern. Batched into one query.
  • country_stats — Was fetching 6 hours of data (24 rows). Now fetches 96 rows for full 24h volatility.
  • 24h moving average — Integer division was truncating. Now uses float division with rounding.

⏰ Pruning

  • prune_old_data.py — Referenced in crontab for years but never existed. Created it.

🖥️ Frontend

  • setInterval leak — Every refresh spawned a new timer. ~288 redundant timers after 24h. Now clears properly.
  • Volatility API calls — 100 individual requests per page load. Removed live volatility from mover tables.
  • Timezone staleness — Poll freshness compared UTC vs local browser time. Now uses consistent UTC math.

🔧 Poller

  • JWT error handling — Missing/empty token now logs a clear error instead of failing silently.

Release v0.0.3

Choose a tag to compare

@github-actions github-actions released this 07 Jul 01:26
29d63f3

v0.0.3 🍃 Ticker Smarts, Poll Vigilance & Release Buttons

🎏 Smart Ticker Fallback

The hourly movers scroller used to stare blankly at you when the network went still. No more. It counts how many countries actually moved in the last hour: if only 3 or fewer budged, it steps up to 2H movers automatically. Still nothing? It climbs to 6H. The label flips along with it.

🟢🟡🔴 Live Poll Pulse

A color-coded dot lives in the corner of the dashboard: green when the last poll arrived less than 15 minutes ago, amber up to 30, red beyond that. Updates every 10 seconds. Glance at it and know if the data is fresh.

⏳ ATH/ATL Tells You When

The all-time high and low now show how long ago they happened: Jun 22 (14d 3h ago). You know instantly if that peak is yesterday or last month.

🧊 No More Stale Caches

The Rust backend now sends Cache-Control: no-cache, no-store, must-revalidate on every response, matching what the Python backend always did. No more refreshing the page three times to see new data.

🔮 Smarter Projections

Growth predictions now blend 70% from the steady 7-day trend and 30% from recent 3-day momentum. Daily swings capped at ±5% so one bad poll doesn't send the 30-day projection into fantasy territory.

Caution

Bugs squashed. Rust timestamp math was using wrong offset units. SUM queries choked on NULLs. week_delta didn't match Python. At-Risk panel printed "undefined" for the 24h delta. Anomaly ordering was scrambled. Comparison chart didn't graph all five countries it claimed to.

✨ Little Touches

  • 📊 30 days of history (was 7)
  • 🏷️ Country name aliases: type "Vietnam" instead of "vn"
  • 📐 Growth rate to 2 decimal places
  • 📏 Regional chart bars get minimum width so tiny regions don't vanish
  • 💚 24h delta column highlighted in mover tables

🔧 CI & Release Pipeline

Push a v* tag and GitHub Actions builds the Rust binary, caches the toolchain and dependencies, and publishes it as a release artifact. No more scp from your laptop. Full build ~3 minutes, cached builds clock in at about 32 seconds.

What's Changed

  • #9 CI release build workflow + README pre-built binary instructions
  • #8 Ticker fallback: 2H/6H movers when 1H has too few changes
  • #7 Fix 14d/30d metrics always showing 0
  • #6 Smarter Weighted Rolling Momentum prediction model
  • #5 Dashboard V4 polish
  • #4 Dashboard V3 polish
  • #3 Dashboard V2 fixes
  • #2 Dashboard V2: live interactive redesign
  • #1 All-time high/low metrics