v26.6.23 — 27 May 2026
7 new panels, shareable AQI cards, 12 roles, nav audit, formatting fixes
•
Understanding AQI: interactive breakdown of 6 criteria pollutants, CPCB vs US EPA scale comparison, “Why PM2.5 isn’t the whole story”.
•
Shareable AQI Cards: canvas-based PNG generator (Instagram 1080×1080, WhatsApp 1200×630), color-coded by severity. Web Share API on mobile.
•
Exposure Diary: log 16 activities with PM2.5 multipliers, get weighted daily exposure, cigarette equivalence, life-expectancy impact, stacked bar chart, localStorage history.
•
Migration Comparison: full side-by-side city comparison — live AQI, 7-row table, source apportionment charts, life-years gained verdict.
•
Data Source Selector: educational panel on CPCB/WAQI/IQAir/Sensor.Community with toggle switches and Source Impact Simulator.
•
City Policy Tracker: 8-city NCAP target dashboard, expenditure tables, government action timeline, public feedback section.
•
Enhanced Legal Framework: state-wise court rulings (8 regions), 5 key legal rights, 5-step citizen recourse guide with template letter.
•
Roles: Citizen/Activist split into two (now 12 roles). Women & Air Quality → Women’s Health.
•
Nav audit: 17 label fixes (RTI footer link, cryptic labels, mismatches).
•
Fixes: 8 grid fixes + 2 table wraps, Rankings table formatting, Rankings loading fix, 9 broken Sargam icons replaced.
•
Blog: “The May 26 Overhaul: 21 Fixes in One Day”. Updated walkthrough deck (65 slides).
v26.6.22 — 26 May 2026
Women & Air Quality panel + historical map overlay
•
New panel: “Women & Air Quality” under Health & Trends — indoor cooking exposure (70% rural women on solid fuels, NFHS-5), maternal health (preterm birth, low birth weight), ~500K annual HAP deaths, occupational exposure, gender data gap, and action items. All sourced (Lancet, WHO, CEEW, GBD, NFHS-5, CAG).
•
New role: “Woman / Caregiver” in role selector with curated dashboard surfacing the gender panel, indoor air, children’s health, and calculators.
•
Historical map: “History” toggle on the Live Map with a month/year slider (Jan 2024 → present). Color-coded PM2.5 markers for 12 cities, in-memory cache, “Live” button to restore real-time view.
v26.6.21 — 26 May 2026
Auto-update infrastructure — 7 systems for freshness automation
•
Version single-source:
scripts/bump-version.mjs reads
package.json version and patches CITATION.cff + both service worker cache names. Runs on every Netlify deploy.
•
Sitemap auto-gen:
scripts/build-sitemap.mjs generates
sitemap.xml with real lastmod dates from git history.
•
Feed health:
netlify/functions/feed-health.mjs — daily scheduled check of all 5 feed endpoints, reports healthy/stale/broken.
•
Translation sync:
scripts/translations.json +
check-translations.mjs — detect stale English terms in translated docs.
•
Data-stat system:
scripts/stats.json as single source of truth for key dashboard numbers (1.72M deaths, $339.4B cost, etc.). Elements tagged with
data-stat attributes, auto-patched on page load.
•
Reference data endpoint: CPCB stations, NCAP data, IQAir annual figures extracted to editable JSON at
netlify/functions/data/reference-data.json. Served via API.
•
Zotero → Reading List:
netlify/functions/zotero-library.mjs fetches from public Zotero API, caches in Netlify Blobs (6hr TTL).
v26.6.20 — 26 May 2026
Chatbot accuracy fixes, intent-based nav, feedback UI, 33-city bar
• User feedback (Komal):
"The number of monitoring stations in Patna was incorrect. Delhi defaulted to Mandir Marg. Low-cost sensor queries for Patna returned nothing. Tabs are confusing for a layperson."
•
Station count accuracy: new
CPCB_STATION_DATA for 27 cities with CAAQMS vs manual bifurcation (e.g. Patna: 7 total = 3 CAAQMS + 4 manual, with named stations). System prompt instruction #13 rewritten to require bifurcated reporting.
•
Multi-station AQI range: generic “how is the air quality” queries now auto-fetch all WAQI stations and present a city-wide AQI range instead of just the nearest station. Fixes the Mandir Marg single-station bias.
•
Low-cost sensor detection:
isHyperlocalQuery() regex expanded to match “low cost sensors in [city]” patterns.
•
Navigation reorganized from data-type to intent-based grouping. Old: Data & Health (5) | Monitoring (7) | Accountability (8) | Action (7) | Resources (16). New:
My Air (7) | City Data (6) | Health & Trends (6) | Accountability (8) | Take Action (8) | Resources (8). “My Air” surfaces personal tools first (Ask AI, Should I Go Outside, Alerts, School Closures, calculators). All 43 panels preserved.
•
Renamed: Hyperlocal → My Neighbourhood, Policy Effectiveness → Policy Tracker, Research Library → Reading List, Zotero link → Full Bibliography (Zotero).
•
Feedback UI: thumbs up/down buttons on every chatbot AI response, stored in localStorage for accuracy tracking.
•
City bar expanded: 10 → 33 cities (all backend-supported cities now shown as scrollable chips).
•
Service worker cache bumped
ask-janvayu-20260520-v3 →
ask-janvayu-20260526-v4 so returning visitors see feedback buttons.
• i18n updated for en, hi, ta, mr, bn across all nav labels and group names.
v26.6.19 — 20 May 2026
In-page Ask JanVayu widget refreshed
• User pointed to a screenshot showing the in-page Ask JanVayu panel at
tmpl-ask-janvayu still saying "in English or Hindi" with no example questions. v26.6.18 updated only the standalone
/ask/ PWA — the in-page widget is a separate UI surface that was missed.
•
Section intro rewritten with the full v26.6.x capability statement + the 10-language list explicitly named (English, हिन्दी, தமிழ், বাংলা, मराठी, తెలుగు, ગુજરાતી, ಕನ್ನಡ, മലയാളം, ਪੰਜਾਬੀ).
•
10 example chips added in a green-accent box — tap a chip to load the question into the input (does NOT auto-submit, so users can change city/lang first).
•
Language dropdown added in the form so users can pick the response language. All 10 languages selectable.
•
"How it works" rewritten to describe the 4 data fetches (WAQI live + bounds + Sensor.Community + IQAir cached) + 7 calculators + 6 RTI templates + source-citation requirement + India-default framing.
•
submitAirQuery() now passes
lang in the body so the existing 10-language Groq pinning kicks in.
v26.6.18 — 20 May 2026
Ask JanVayu onboarding refresh + 5 new languages
• User feedback:
"I am not seeing any overlap or instruction with types of questions to ask. The explanation for what Ask JanVayu does is the same. Why only English and Hindi?" All three fixed.
•
Welcome subtitle rewritten in all 10 languages:
"Live AQI · health & exposure calculators · city rankings & trends · source apportionment · RTI drafts · multi-source reliability checks. Every answer cites a primary source."
•
Suggestion chips: 7 → 10, surfacing the new Phase A–D capabilities (rankings, RTI drafting, apportionment, trends, multi-source, cigarette equivalence, migration calculator).
•
Five new languages: Telugu (తె), Gujarati (ગુ), Kannada (ಕ), Malayalam (മ), Punjabi (ਪੰ). Total now
10 languages, covering ~95% of Indian mother-tongue speakers. Backend
LANG_NAMES extended so the Groq language-pinning instruction works for all 10.
• Service-worker cache bumped to
ask-janvayu-20260520-v3 so returning visitors pick up new welcome text + chips + lang options.
v26.6.17 — 20 May 2026
Two bugs found by live integration testing of Phases A–D
•
Bug 1: ranking responses stripped city names.
rankings.mjs returns
{key, name, aqi, pm25} but the integration code used
c.city (undefined) so the LLM emitted "A city with PM2.5 174 µg/m³" instead of "Lucknow (PM2.5 174 µg/m³)". Fixed via
c.name || c.city || c.key.
•
Bug 2: empty Groq responses returned a useless "No response generated." Fallback now surfaces live data + Groq error message + retry hint. Raw Groq response logged for diagnostics.
• Verified: 8 queries end-to-end against the live endpoint — live AQI, station count, ranking (now with names), national/topical (low-cost sensors), migration, RTI, apportionment, multi-source spread, cigarette equivalence — all returning useful, sourced answers.
v26.6.16 — 20 May 2026
Ask JanVayu Phase D — multi-source spread + divergence flagging
•
Final phase of the Ask JanVayu upgrade. Closes the "calibrated across multiple sources" loop.
•
Cross-references four sources for the user's city: WAQI nearest station, WAQI bounds-network (intra-city spread), Sensor.Community sensors, and a new cached
IQAIR_2025_ANNUAL dataset of 37 Indian cities.
•
Computes three diagnostics: intra-city station spread (flags >2× range), snapshot agreement WAQI vs community (flags >50% disagreement), today-vs-IQAir-annual anomaly (flags >1.5× or <0.5×).
•
Always-on anomaly note: even on non-multi-source queries, if live PM2.5 is >1.5× the IQAir annual baseline, a short ANOMALY NOTE is injected so the bot's health/activity advice acknowledges today is unusual.
•
Cumulative across Phases A–D: 4 tools wired, 7 calculators running, 10 cities' apportionment, 6 RTI templates, 4-source cross-reference, source citation on every number.
v26.6.15 — 20 May 2026
Ask JanVayu Phase C — source apportionment + RTI drafting
• New
APPORTIONMENT dataset: 10 cities (Delhi, Mumbai, Bengaluru, Kolkata, Chennai, Lucknow, Patna, Pune, Varanasi, Ahmedabad) with PM2.5 source-mix percentages + citations to CEEW 2024 / TERI / IIT-Delhi DSS / CSIR-NEERI / Bose Institute / Jadavpur. National fallback for un-indexed cities.
• Triggered by phrases like "where does pollution come from", "main source", "source mix", "how much is from biomass/vehicles/industry".
•
Six RTI templates:
station_data (CPCB PIO),
ncap_funds (State PCB),
industry_compliance (Regional PCB),
grap_enforcement (CAQM PIO),
school_closure (Dept of Education),
health_burden (Dept of Health). Each renders inline with correct department + address + 5 pre-formatted questions + statutory anchors.
• Instruction #15: LLM presents RTI template AS-IS; does not rewrite questions or addresses.
v26.6.14 — 20 May 2026
Ask JanVayu Phase B — calculators the bot actually runs
• Seven deterministic calculators wired in: cigarette equivalence (Berkeley Earth), mortality risk (Krishna et al. 2024), life-expectancy loss (AQLI 2025), migration benefit (live PM2.5 of both cities), transport exposure (WHO/CPCB multipliers), purifier CADR (AHAM formula), school-closure forecast (CAQM GRAP).
• Each calculator runs deterministically when the question implies it, returns its result tagged "(computed)" with a primary-source citation, and Instruction #14 tells the LLM to use those numbers verbatim.
•
Input extraction: transport mode + hours from phrases like "2 hours by auto-rickshaw"; room sqft from "300 sqft"; destination city matched against the CITIES dictionary plus the bengaluru/bangalore alias.
•
Example: "Should I move from Delhi to Bangalore?" with live PM2.5 of 120 vs 30 → "+8.8 years life expectancy (AQLI 2025), −1,492 cigarette-day equivalents per year."
v26.6.13 — 20 May 2026
Ask JanVayu Phase A — tool wiring + methodology calibration
• User direction:
"what broad queries can make the chatbot useful? It should surface and use all of the JanVayu tools. Calibrated across multiple sources, better than the average chatbot." Phase A of a four-phase upgrade.
•
Three new internal tool calls wired in (run in parallel, 6 s timeouts):
rankings.mjs (live/7d/30d) for ranking queries;
historical-aqi.mjs for trend / YoY queries;
community-sensors.mjs (Sensor.Community CC0 low-cost network) for hyperlocal / "near me" queries.
•
New METHODOLOGY_REFERENCE prompt block covering the five biggest "why do two sources disagree" cases — CPCB Indian AQI vs US EPA AQI (same µg/m³, different scale/breakpoints); WAQI single-station vs CPCB CAAQMS network; CPCB annual vs IQAir World AQ Report; Krishna 1.5M causal vs Lancet Countdown 2025 1.72M synthesis; low-cost (Sensor.Community ±20-50%, dense) vs regulatory-grade (CPCB ±5-10%, sparse) trade-offs.
•
Phase B/C/D coming: calculator execution (GEMM/migration/school-closure/cigarette-equivalence), apportionment + RTI tools, multi-source spread surfacing.
v26.6.12 — 20 May 2026
Ask JanVayu — three bugs fixed from user testing
• User feedback:
"Chatbot — does not give number of station data correctly, no sources are mentioned in some answers (low-cost sensors, EVs), for most questions I just got Delhi-based information (Mandir Marg data)."
•
Station-count fix: new
fetchCityStations() calls the WAQI
map/bounds/ endpoint with a ~50 km box around the city centroid when the question matches
isStationCountQuery(). Real count + sample station names injected into the data context, plus the CPCB national reference (~533 CAAQMS stations across ~250 cities; Sensor.Community ~3,000+ low-cost sensors).
•
Sources fix: new
TOPICAL_REFERENCE block in the system prompt covers monitoring network, low-cost sensors, EVs / BS-VI / PM-eBus Sewa, and the Apr-May 2026 court orders. New Instruction #11:
"If you cite a number without a source, you have failed."
•
Delhi/Mandir-Marg bias fix: new
isNationalQuery() detects India-wide topical questions and tells the model:
"Do NOT default to Delhi-specific or single-station context." KEY REFERENCE DATA restructured to lead with India-wide figures, not Delhi-first. Single-station context now labelled "Nearest WAQI station" so the model knows it's one station, not "the city's data".
v26.6.11 — 20 May 2026
Walkthrough page featured on the dashboard
• New
/walkthrough/ guided-tour page (64-slide MMSF Fellows deck embedded via Google Slides iframe + PPTX 24 MB + PDF 13 MB downloads) shipped earlier today. This release features it prominently rather than burying it in the footer.
•
Dashboard quick-link card added next to Learning Games — amber accent, NEW badge, links to
/walkthrough/.
•
Hero alert extended:
"…and a 64-slide guided walkthrough of the whole platform built for the MMSF Fellows cohort" — first-time visitors now see it exists.
•
Roadmap updated (Phase 5.9 bullet) and
wiki Home "What's New (v26.6.x)" gets a v26.6.11 entry.
v26.6.10 — 20 May 2026
Temporal-framing mismatches — eight more sentences fixed
• User feedback after the v26.6.9 IQAir fix:
"Go through and look for instances like this." A focused agent audit found 8 more sentences with the same class of bug.
•
Pattern: phrases like
"PNAS (2024) shows…" or
"Lancet Respiratory Medicine (2023) found…" imply recent discovery, but a 2024 paper is 5–17 months old and a 2023 paper is 17–29 months old.
•
Fixed in index.html: 7 sentences across Children's Health, Mission Tracker, Clean Air Wins honest caveat, Citizen-Led Bus Advocacy, Policy Effectiveness, and two Jeopardy clues. All now use "*A 2023 study in X documented…*" / "*Research published in X in 2024…*" framing.
•
Fixed in blog/posts/2026-04-01-children-air-pollution.md: IEG working-paper citation gains the missing 2021 publication year; Vital Strategies "new research" replaced with explicit "Vital Strategies' 2023 analysis"; GBD India estimate gains a vintage hint ("most recent India estimate, 2021 cycle").
•
Why this matters: JanVayu's positioning is archive and accountability — a permanent public record. The site has to be honest about
when each finding entered the record, not just
what it says.
v26.6.9 — 20 May 2026
Hero alert IQAir 2025 framing fix
• User feedback:
"May 2026: IQAir 2025 confirms Loni... — This is the box. It quotes IQAIR 2025?!" Genuinely confusing — the phrasing implied IQAir 2025 had just been published, but the IQAir World Air Quality Report 2025 was actually released in March 2025 (covering 2024 data) — about 14 months old by 20 May 2026.
•
Hero alert reframed to lead with the most-current items: the Lancet Countdown 2025 (
launched May 2026), CAQM's first off-season GRAP (19 May), the elapsed 31 March NCAP deadline. Older anchor figures (IQAir 2025) now appear with explicit vintage: "
the 2025 edition, published March 2025 covering 2024 data".
•
"Did You Know" strip header reworded: "Six India-specific facts
updated for May 2026" → "Six sourced India-specific facts · figures are the
most recent published values from each source" so readers don't infer that all the underlying figures are freshly published.
•
Loni card citation expanded: "IQAir 2025." → "IQAir World Air Quality Report 2025 (covering 2024 data; the most recent annual)."
v26.6.8 — 20 May 2026
Final corners — wiki Home, last small surfaces
• User feedback:
"Yes I want you to do all small or big. Everything." Final pass on the smallest remaining surfaces.
•
docs/wiki/Home.md — "What's New" section rewritten to lead with the v26.6.x ship list (v26.6.0 Vayu Junction → v26.6.7 deep sweep, all 8 versions listed). v26.5.x history preserved as "Previous".
•
Verified clean: other wiki pages (Adding-a-New-Panel/Role, Role-Based-Landing, Simple-Language-Mode, Translation-Guide), TerraStudioCollab, downloads index, manifest.json, robots.txt, netlify.toml, all 9 GitHub Actions workflows.
•
Cumulative achievement (v26.6.0 → v26.6.8): every meaningful user-facing and developer-facing surface in the repository has been swept for May-2026 freshness — 43 panels, Ask JanVayu in 5 languages, 7 learning games, back-to-home button, 19 Netlify Functions, 2 service workers, 6 per-pollutant pages, 2 embed widgets, daily email digest, 10 blog posts + 1 new, Resources + Health cards, docs in 5 languages, wiki Home + Roadmap, SEO meta, all version markers, eight changelog entries.
v26.6.7 — 20 May 2026
Deep sweep — remaining Netlify Functions + docs sub-pages
•
5 more Netlify Functions had User-Agent strings bumped to v26.6 —
scheduled-fetch.mjs (6 sites),
instagram-feed.js,
news-proxy.js,
community-sensors.mjs,
waqi-proxy.mjs (26.5 → v26.6). Combined with v26.6.0 and v26.6.4 bumps on reddit-feed and twitter-feed,
every outbound HTTP request from JanVayu's serverless tier now reports v26.6 as its identity.
•
English docs:
aqi-dashboard.md +
health-calculator.md — Delhi PM2.5 "~100 µg/m³ (2024)" →
91.6 µg/m³ (IQAir 2025), consistent with
docs/README.md which we bumped in v26.6.2.
•
Translated docs: same Delhi figure aligned in Bengali, Marathi, Tamil copies of aqi-dashboard.md (Hindi version uses a different layout, no equivalent figure to update).
•
Roadmap: Phase 5.7 "six original games" clarified to reference both six (v26.5) and seven (Vayu Junction in v26.6.0, Phase 5.9).
•
Verified clean: 12 other Netlify Functions, ImpactMojo docs (separate project — development education, not AQ), every other docs/ subdirectory.
v26.6.6 — 20 May 2026
Secondary surface sweep — pollutant pages, service worker, blog posts
• User feedback (after the v26.6.5 stocktake):
"What have we not checked?" Honest list included per-pollutant pages, root service worker, and existing blog posts. This release addresses all three.
•
Six per-pollutant SEO pages (
/pm25/,
/pm10/,
/co/,
/no2/,
/so2/,
/o3/) regenerated via
scripts/build-pollutant-pages.mjs. JSON-LD
dateModified now
2026-05-20 (was 2026-05-08).
•
Bug fix in the build script. datePublished was being reset to today's date on every regeneration — losing publish history. Now pinned to 2026-04-26 (original release); only
dateModified updates.
•
Root service worker cache:
janvayu-20260508 →
janvayu-20260520. Returning users now bypass stale offline-shell cache and get Vayu Junction, back-to-home button, May 2026 panel content.
•
Four blog posts realigned to canonical figures:
lancet-causal-evidence +
iqair-2025-india attribute "1.5M" to Krishna et al. 2024 with inline May 2026 update notes pointing to Lancet Countdown 2025's revised 1.72M;
learning-games "six games" reframed as "now seven";
economic-cost World Bank $150B framing clarified as superseded.
•
Verified clean: embed widgets, daily email digest, six other blog posts (already canonically correct).
v26.6.5 — 20 May 2026
Complete panel content freshness sweep — every remaining section
• User feedback:
"Please DO ALL." v26.6.4 covered the top-five panels; this release sweeps every remaining template (30+).
•
Historical Trends — chart title "(2015–2025)" → "(2015–present)"; timeline gains 3 May 2026 entries (NCAP deadline elapsed, NGT south-India order, off-season GRAP).
•
Legal Framework — new
"Recent Court & Regulator Action (Apr–May 2026)" card with 4 info-boxes linking to primary sources.
•
Policy Effectiveness — GRAP Stages card gains the 19 May 2026 off-season note alongside the Dec 2024 predictive-activation note.
•
Citizen Voices — new top voice-card:
"CAQM — First Off-Season GRAP Invocation" dated 19 May 2026.
•
Industrial Sources — CEMS data labelled "Last verified Jan 2026, no public update since"; new
"9 April 2026 update — NGT escalation" alert noting nationwide SPCB notices.
•
Citizen Action Plan — intro reframed for year-round action following CAQM's off-season GRAP and NGT's south-India order.
•
AQI Forecast — "Winter 2025-26" framed as historical with Oct 2026 next-season note.
•
Climate Displacement — Reddit testimonial vintage-tagged ("late 2025; the cleaner-air-elsewhere story has only intensified through 2026").
• Audit confirmed 30+ remaining panels are evergreen or live-data tools (rankings, map, calculators, AI features, glossary) and need no refresh.
v26.6.4 — 20 May 2026
Panel content freshness sweep
• User feedback:
"What about Clean Air Wins, etc.? Can you go through the sections in the navigation and make sure they are updated?" The v26.6.2 audit covered stats consistency and the Resources panel only — individual panel content wasn't touched. This release sweeps the highest-staleness-risk panels.
•
Clean Air Wins — new "Update — May 2026" card at the top surfacing CAQM's off-season GRAP toggle (19 May), NGT's six-state south-India order (Apr), and the nationwide SPCB diesel-generator notices (9 Apr). Stat-strip's "10,000 e-buses planned" replaced with the live "6 south-Indian states ordered to file PM roadmaps" data point. Delhi e-bus card reframed as historical with explicit "next public count expected Q2/Q3 2026" note.
•
Budget Tracker — "Funding Cliff Alert" reframed: 15th FC grants
expired 31 Mar 2026; 16th FC recommendations expected Oct 2026; potential 12-month funding gap.
•
Mission Tracker — NCAP card retitled "Deadline Missed" with verified 23/100 (CREA Jan 2026) + 37/131 (CSE Apr 2026) outcomes side-by-side. Cloud-seeding evidence updated for both 2025 and 2026 trial rounds.
•
Children's Health — "this winter" school-closure language → "Winter 2025-26 (most recent pollution season)" + forward note about Oct 2026 next-season window.
•
Political Accountability + Resources — six stale "v19.0" badges replaced with content-vintage labels (CREA · 9 Jan 2026, CAG · Apr 2025, HEI · Oct 2025). Was internal versioning leaking into the UI.
v26.6.3 — 20 May 2026
Back-to-home button — visibility patch
• User feedback:
"I can't see the button you added to return home." Confirmed via headless Chromium against the live site that the button was rendering and getting the
.visible class — but the original styling (light card background, accent-coloured stroke) blended into the page's cream background.
•
Now louder: solid accent-green background with white house icon and a 2 px white border ring — same visual weight as the search FAB on the bottom-right, in the mirror corner.
52 px desktop (was 46) and
48 px mobile (was 42) so the pair is symmetric.
•
One-time gentle pulse when the button first appears — 1.4 s, single iteration, ring expands from 0 to 16 px and fades. Respects
prefers-reduced-motion.
•
Hover: deeper green + 8% scale-up.
Z-index 500 → 600 so it sits above the FAB layer.
v26.6.2 — 20 May 2026
Full-site audit sweep — resources refreshed, stale stats fixed
•
Five fresh May 2026 items added to the
Resources panel "May 2026 Updates" card: CREA April 2026 monthly snapshot (Khora #1 most polluted), CAQM GRAP Stage-I off-season re-invocation (19 May), NGT South-India PM reduction order (Apr 2026), NGT diesel-generator retrofit notices (9 Apr), Down to Earth / AAD 2026 "16× COVID deaths" briefing.
•
Stale-stat sweep. SEO meta description and Twitter Card description: "2 million deaths/year" →
"1.72 million deaths/year (Lancet Countdown 2025)". Hero alert: "six-game" → "seven-game" with explicit Vayu Junction mention. Dashboard quick-link card for Games: "Six games" → "Seven games".
•
Docs refreshed in all five languages. `docs/README.md` (EN), `docs-hi/`, `docs-bn/`, `docs-mr/`, `docs-ta/` — stats overhauled: 1.7–2 million →
1.72M; Delhi ~100 µg/m³ →
91.6 µg/m³; $150 billion →
$339.4 billion (~9.5% GDP); added AQLI 2025 IGP detail (7–8 years).
•
"Latest Research 2025" card relabelled in the Health panel to "Recent Peer-Reviewed Findings (2024–2025)" with a neutral *background* badge — the freshest items now live in the Resources panel's May 2026 Updates card.
•
End-to-end verified: headless Chromium clicked all
43 panels. Zero uncaught JS exceptions. Only "errors" are localhost 404s for Netlify Functions (production-only) and CDN cert noise from the sandbox — neither affects production.
v26.6.1 — 20 May 2026
Back-to-home floating button
• Small floating arrow (bottom-left, mirror of the existing search FAB at bottom-right) that returns the user to the dashboard hero. Appears whenever any panel is loaded via the dropdown nav, or once the user has scrolled more than 320 px past the top. Clicking it calls
showPanel('dashboard') which clears the panel container and smooth-scrolls to top.
•
Keyboard-accessible: tab-focusable, 3 px focus ring (matches the v26.5.7 dark-mode focus indicator).
•
Internationalised: `aria-label` and `title` translated in EN/HI/TA/MR/BN via a new
data-i18n-attr extension to the
setLanguage() loop, so attribute-only translations can be added without touching `innerHTML`.
•
Mobile-sized: 42 px diameter on screens ≤480 px, aligned with the FAB's 48 px at the same breakpoint.
v26.6.0 — 20 May 2026
Vayu Junction (7th game), Ask JanVayu verification, docs & roadmap refresh
•
Vayu Junction — new word-grouping puzzle in the
Learning Games panel. Inspired by
Only Connect, NYT
Connections, and the
Torchlight climate puzzle at Times of Climate Change. Sixteen tiles, four hidden groups of four, four strikes allowed; auto-detects "one off" near-misses. Ships with four original India-AQ puzzles: Basics, Sources/Seasons/Protection, Names & Numbers, Devious.
•
Ask JanVayu end-to-end verified: city chip selector → /.netlify/functions/air-query → Groq Llama 3.3 70B with seasonal context, NCAP city data, and language-pinned output. Welcome text, suggestion chips, and error messages all internationalised in EN/HI/TA/BN/MR. PWA installable manifest confirmed.
•
Reddit-feed User-Agent bumped from `JanVayu/v25.0` to `JanVayu/v26.6` so Reddit-side analytics attribute current traffic correctly. Same for YouTube-feed.
•
Roadmap restructure: Phase 5.7 moved back into numeric order (was listed after 5.8), the duplicate Phase 6 heading at the bottom renamed to Phase 6.5 to avoid confusion. New Phase 5.9 covers today's ship list.
•
Documentation refresh: README.md feature count bumped from 6 to 7 games, package.json + CITATION.cff bumped to 26.6.0, sitemap lastmod refreshed.
•
Translated changelogs: a v26.6 stub added to docs-hi, docs-bn, docs-mr, docs-ta so non-English readers see the ship list at the top of their local CHANGELOG.
•
New blog post:
"Vayu Junction: connecting the dots on India's air-quality vocabulary".
v26.5.8 — 8 May 2026
UX-protection batch: embed widget hardening, CDN fallback, honest social card, og-image refresh
•
Embed widgets hardened (`/embed/aqi/`, `/embed/rankings/`): server- and client-side city sanitisation, 8-second AbortController timeout, single retry, JanVayu-branded fallback card on final failure.
•
Lazy-load fallback for blocked CDNs: if `cdn.jsdelivr.net` or `unpkg.com` is blocked, every chart/map panel now renders an explainer card with a link back to the dashboard instead of failing silently.
•
Honest "Latest Social Media Coverage" card: card title renamed from "Live from Social Media" (live + curated mix is what we actually serve), and the dead spinner state is hidden when zero posts return.
•
og-image refreshed for May 2026 with Loni 112.5 µg/m³, 1.72M deaths (Lancet 2025), 3.5 yrs life-expectancy lost (AQLI 2025). New `scripts/build-og-image.py` so future refreshes are one command.
v26.5.4–7 — 8 May 2026
CI / Quality / Performance / Mobile / i18n
•
Lazy-loaded Chart.js + Leaflet with SRI hashes — ~120 KB off first paint. Pre-warmed via `requestIdleCallback` so dashboard mini-charts stay snappy.
•
Chart-canvas accessibility: `role="img"` + `aria-label` on every `
v26.5 — 8 May 2026
Six learning games, Did-You-Know dashboard strip, May 2026 data refresh
•
Learning Games panel at
/#games with six original India-AQ games: Air Quality Jeopardy (5×5 board, ₹1k–₹5k tiles), PM Quick-Quiz (10 Q), Source Matcher (7 sources), Clean Air Snakes & Ladders inspired by
Moksha Patam, Jodi Match memory cards, Air Tambola (Indian housie).
•
"Did You Know" dashboard strip — six India-specific sourced fact cards.
•
Hero refreshed for May 2026 with the canonical Lancet Countdown 2025 1.72M figure.
•
Two new blog posts: games launch + May data refresh.
v26.4 — 26 Apr 2026
Competitor gap closure, Workshops, Ask JanVayu i18n, AIPC attribution
•
Cigarette equivalence: Live PM2.5 to "≈ X cigarettes/day" using the Berkeley Earth coefficient (1 cig ≈ 22 µg/m³·day) on the dashboard
•
Disease-risk badges: asthma, heart attack/stroke, allergies, respiratory infection, vulnerable groups — colour-coded by AQI band
•
Solution-recommendation card: AQI-gated guidance on N95, purifier, exercise, school closure, with cross-links to Purifier Calculator and "Should I go outside?"
•
"Near Me" geolocation: nearest WAQI station via the browser geolocation API
•
City Rankings panel (`/#rankings`) under Monitoring: Live / Past 7 days / Past 30 days, sortable, searchable. Backed by `rankings.mjs` with daily snapshots in Netlify Blobs
•
Hourly 24-hr scrubbable PM2.5 chart in the Trends panel
•
Year-over-year city comparison in the Compare panel: 2024/2025/2026 monthly averages with delta percentages. Backed by `historical-aqi.mjs` climatology baseline
•
Per-pollutant SEO pages at
/pm25,
/pm10,
/co,
/no2,
/so2,
/o3 with schema.org JSON-LD and live top-10 readings
•
Leaflet.heat heatmap layer on the Live Map with a toggle. Marker popups show cigarette equivalence and a "View on dashboard" jump
•
Embeddable widgets at `/embed/aqi/?city=...` and `/embed/rankings/?n=10`
•
Root PWA: manifest.json + sw.js (offline shell + last-known AQI cache). Install banner with persistent dismissal in localStorage
•
Sensor.Community community sensors integrated into the Hyperlocal panel via `community-sensors.mjs`. CC0, free, badged COMMUNITY vs CPCB/WAQI
•
Workshops panel under Action: workshop request with Dr. Sarath Guttikunda / UrbanEmissions (incl. Air Quality Jeopardy — facilitator-set fee) and free 1-hour JanVayu walkthrough booking. Submissions emailed to contribute@janvayu.in via Resend (`workshop-submit.mjs`); durable copy in Netlify Blobs
•
Ask JanVayu i18n: language picker (EN, हि, த, বা, म) on /ask/. Full UI translation; backend pins Llama response language
•
Programme attribution updated to "AirQuality for Janhit by MMSF Fellows, AIPC" everywhere — meta, JSON-LD, footer, About panel, citation, pollutant pages
•
No-emoji style enforced: emojis introduced this cycle replaced with `si-*` SVG icons, coloured borders, dot bullets
•
Mobile fix: PWA install banner refactored so the "Install" button no longer wraps letter-per-line on narrow viewports
v25.4 — 12 Apr 2026
Blog, Zotero Research Library, IQAir 2025 data, mobile & accessibility
•
Blog: New Docsify-powered blog at
/blog/ with inaugural post “IQAir 2025: India’s Air Got Worse”
•
Zotero Research Library: Public bibliography at
zotero.org/groups/janvayu
•
IQAir 2025 data: Most polluted city updated to Loni, India (112.5 µg/m³, up 23% from 2024). Only 14% of global cities meet WHO guideline. India average PM2.5: 48.9 µg/m³ (~10× WHO limit)
•
3 new research papers: Lancet Planetary Health causal PM2.5 mortality studies (1.5M additional deaths/year vs WHO conditions), Science Advances PM2.5 inequality study
•
Mobile responsiveness: 44px touch targets, comprehensive phone layout (768px + 375px breakpoints), role overlay mobile fix
•
Accessibility: Skip-to-content link, :focus-visible outlines, prefers-reduced-motion support
•
Performance: Chart.js and Leaflet.js deferred (were render-blocking)
•
Social feeds re-enabled: 3×/day (was 12×/day), 75% reduction in Netlify credits
•
Varnasr → JanVayu: All references to old personal account removed across entire repo (60+ files)
•
Wiki & Discussions: 7 wiki pages published, 6 seed discussions created, issue #35 closed
•
Docs, Blog, Research Library links added to site header and footer
•
Mobile header decluttered: GitHub, Docs, Simple mode icons hidden on mobile (accessible via hamburger menu); language button changed from text to globe icon
•
Hero updated: Featured alert now shows April 2026 IQAir data instead of March
•
Ask JanVayu AI upgraded: Seasonal awareness (stubble burning, monsoon, Diwali), WHO activity thresholds, transport exposure multipliers, NCAP city data, cross-city comparisons, RTI draft generation. Not a generic chatbot.
•
Ask JanVayu in FAB: Integrated into green floating button as third tab (Search / Ask JanVayu / Feedback)
•
Ask JanVayu PWA: Standalone installable AI chat app at
/ask/ — chat-style interface, city chip selector, typing indicators, offline fallback. Install to home screen on Android/iOS/desktop.
•
Role switcher mobile: Dropdown moved outside header DOM so it renders as a proper bottom sheet with backdrop overlay, drag handle, and tap-outside-to-close
v25.3 — 24 Mar 2026
Role-based landing page, simple language mode, glossary, intro tour
•
Role-based landing page: 10 audience roles (parent, student, researcher, policymaker, journalist, activist, doctor, teacher, NGO, business) with personalized dashboards
•
Simple language mode: Site-wide plain language toggle with sessionStorage persistence
•
Glossary overlay: Ctrl+K shortcut with 22+ air quality terms, technical/simple toggle
•
Intro tour: Guided walkthrough for first-time visitors
•
Role switcher: Header icon lets users change role anytime
• ARIA labels on all navigation icons for screen reader accessibility
v25.2 — 24 Mar 2026
Role-based landing page, Sargam Icons, Groq AI migration
•
Role selector overlay: 10 personas (Parent, Student, Researcher, Policymaker, Journalist, Citizen/Activist, Doctor, Teacher, NGO/CSO, Business Owner) guide visitors to relevant content on first visit
•
Curated role dashboards: Each role gets 3 action CTAs and 6 recommended panels, solving the “too much going on” feedback
•
Always-visible role switcher: Header button lets users change roles anytime; pulse animation and tooltip hint draw attention after selection
•
Session-based persistence: Role resets on each new visit (sessionStorage) so the overlay greets every visitor fresh
•
Sargam Icons: All role card and action emojis replaced with verified Sargam Icons v1.6.7 (CSS mask-image), matching the site’s existing icon system
•
Docs link: Documentation link (si-book icon) added to header next to language selector
•
AI backend migration: Switched from Google Gemini 2.5 Flash to Llama 3.3 70B (open-source) via Groq free tier — faster inference, better rate limits, no vendor lock-in
• Removed @google/generative-ai dependency; all 4 Netlify Functions now use Groq’s OpenAI-compatible REST API via native fetch
• Deep links (#health, #budget, etc.) bypass role overlay entirely
• Mobile-responsive role grid (2 columns), dark mode compatible
v25.1 — 23 Mar 2026
AI layer (Llama 3.3 70B via Groq): 4 AI-powered features
•
Ask JanVayu (AI): Natural language Q&A grounded in live WAQI data — supports English and Hindi, covers 40+ cities, concise responses under 150 words
•
AI Health Advisory: Personalised health guidance based on age, health conditions, hours outdoors, and live PM2.5 — colour-coded risk levels (low/moderate/high/severe), evaluates against WHO guideline (5 µg/m³)
•
Ward-Level Accountability Brief (AI): Structured briefs for ward councillors, journalists, and RWAs with seasonal baselines from CREA/IQAir, anomaly detection (1.5× threshold), references GRAP stages, RTI powers, MCD complaint lines — downloadable as .txt
•
Anomaly Detection Banner: Automatic PM2.5 spike monitoring across Delhi, Mumbai, Kolkata, Chennai, Bengaluru — runs on page load and every 30 min, triggers at 2× seasonal baseline with month-aware AI explanations
•
Demo Day mode: ?demo=true pre-populates all AI features with Delhi/Anand Vihar defaults
• 4 new Netlify Functions: air-query, health-advisory, accountability-brief, anomaly-check
• All AI API calls server-side only (never client-side); rate limit fallback always shows raw PM2.5 data
• Model: Llama 3.3 70B (open-source) via Groq free tier for low-latency inference
v25.0 — 14 Mar 2026
Code optimisation, 14 new interactive tools, live social media feeds, favicon
•
Code optimisation: Removed ~600 lines of dead/duplicate code, fixed broken <script> tags, parallelised API fetches with Promise.allSettled, fixed memory leak in exportData
•
Social Media Feed: Live Reddit posts from r/india, r/delhi, r/environment; Twitter/X via Nitter RSS proxy (Netlify Function); Instagram via RSS Bridge proxy; curated links fallback
•
Live News: Google News RSS proxy (5 categories: Delhi AQ, India Pollution, CPCB, Stubble Burning, Clean Air India) with Reddit supplementary
•
AQI Alerts: Browser push notifications when any city crosses your threshold (uses Notification API + localStorage)
•
"Should I Go Outside?": Real-time decision engine based on current AQI, activity type, and vulnerable group status
•
School Closure Predictor: GRAP stage analysis with PM2.5 threshold tracking for school closure likelihood
•
Personal Exposure Report: Annual PM2.5 exposure calculation using GEMM model with equivalent cigarettes and life-years-lost estimates
•
RTI Filing Assistant: Auto-generates RTI applications for CPCB, DPCC, MoEFCC, CAQM, Municipal Corps with pre-built question templates
•
Air Purifier Calculator: Room-size based CADR recommendation with cost estimates
•
Hyperlocal Comparison: WAQI bounds API integration showing all monitoring stations in a city
•
Pollution Calendar: Month-by-month seasonal pollution source breakdown (stubble, Diwali, inversion, dust storms)
•
Migration Calculator: Compare PM2.5 exposure, health impact, and life expectancy across cities
•
Accountability Scorecards: NCAP target vs actual performance for major cities with budget utilisation
•
Data Archive: Persistent localStorage-based AQI data accumulation with CSV export
•
Correlation Explorer: Temperature, wind speed, humidity vs PM2.5 correlation data for cities
•
Netlify Functions: 3 serverless proxies (twitter-feed.js, news-proxy.js, instagram-feed.js) for CORS-free social media fetching
•
Favicon: SVG wind-leaf motif in JanVayu green theme
• Total: 36+ content sections, 14 new interactive tools
v24.0 — 23 Feb 2026
Clean Air Wins section
• New "Clean Air Wins" panel tracking genuine progress: cities improving, e-bus deployment, policy wins, citizen victories
• Delhi e-bus fleet (4,286, largest in India), PM-eBus Sewa (10,000 across 169 cities), CAQM 27th meeting findings
• City progress cards: Varanasi (76.4%), Bareilly (70%+), Moradabad (58%) PM10 reductions
• Year-round CAQM action plans, public participation precedent, industrial compliance models
• BS-VI leapfrog, "Double the Bus" citizen campaigns, Warrior Moms/Clean Air Fund
• Honest caveats: PM10 vs PM2.5 distinction, monitoring gaps, mixed national picture
• Total: 23 content sections
v23.0 — 23 Feb 2026
Multilingual support, mobile nav fix, title localisation
• Language switcher: EN, Hindi (हिन्दी), Tamil (தமிழ்), Marathi (मराठी), Bengali (বাংলা)
• All navigation, hero text, stat labels, and mobile menu translated in all 5 languages
• Title localised: जनवायु (HI), ஜன்வாயு (TA), जनवायू (MR), জনবায়ু (BN)
• Hindi title colour fixed to match green accent (was grey)
• Mobile hamburger breakpoint raised from 768px to 1024px (tablets now get hamburger)
• Non-English languages show info banner noting detailed analysis is in English
• Anchor link routing via URL hash for all 22 sections
v22.0 — 23 Feb 2026
Navigation overhaul, city selector, 6 new sections
• Replaced horizontal scrolling nav with dropdown-grouped navigation (7 top-level items)
• Added hamburger slide-out menu for mobile (grouped into 5 categories)
• Anchor link support: all sections now shareable via URL hash (e.g. #health, #forecast)
• Hero PM2.5 card: city dropdown selector with 30+ cities (metros, NCR, tier 1, tier 2)
• Added 14 new cities: Chandigarh, Varanasi, Agra, Bhopal, Indore, Nagpur, Kochi, Visakhapatnam, Thiruvananthapuram, Coimbatore, Muzaffarpur, Gaya, Raipur, Jodhpur, Guwahati, Dehradun, Amritsar
• 6 new sections: Indoor Air Quality, Children's Health Dashboard, Industrial Sources & Corporate Accountability, AQI Forecast, Clean Air Mission Tracker, Migration & Climate Displacement
• Full version history changelog added to About section
• Total: 22 content sections, 30+ monitored cities
v21.0 — 23 Feb 2026
Content updates, download fixes, nav visibility
• Fixed nav bar visibility: ink-faint colour darkened for both light and dark modes
• Dark mode --text-4 changed from #4a4a44 to #8a8a82 for legibility
• 6 new social media voice-cards: @rishabhhshukla oxygen mask reel, Superman meme, Rekha Gupta AQI gaffe, air purifier charcoal reel, Yogi Adityanath "gas chamber" remark, AAP "Ek Saal Dilli Behaal" campaign
• All fake download links replaced with real external sources (SCI portal, CAQM GRAP PDF, CREA report, IQAir report, Delhi EV Policy portal)
• Zero remaining broken download links
v20.0 — 23 Feb 2026
Chart bug fix, mobile responsiveness, latest content
• Fixed Chart.js TypeError: metroCtx.createLinearGradient called on canvas element instead of 2D context. All 10 Chart.js instances now functional
• Comprehensive mobile breakpoints at 480px, 768px, 769-1024px
• 5 new voice-cards: Reddit r/india viral post, Bloomberg India Gate longform, Washington Post "9 cigarettes/day" analysis, BusinessToday industrialisation debate, Mumbai Climate Week coverage
• 8 new Research Library entries: IMPRI seminars, MCW/ICW coverage, CREA Jan 2026 snapshot, IQAir Feb 2026 alert, Guttikunda et al. NCAP assessment, digital activism study
• 4 new timeline entries for Jan-Feb 2026
v19.0 — 22 Feb 2026
Editorial redesign with Sargam Icons
• Complete visual overhaul: tab-based layout replaced with editorial scroll format
• Typography: Newsreader serif, DM Sans, JetBrains Mono
• Sargam Icons v1.6.7 integrated via CSS mask-image (40+ icons), all emoji removed
• Layout variety system: pull-quote, stat-strip, card-accent, number-callout variants
• Two main bar charts upgraded to horizontal bars with rounded corners
• Downloads section added (5 cards), Research Library renamed, footer updated with IT Act compliance
v18.0 — 22 Feb 2026
Icon system and UI polish
• Sargam Icons integrated, icon size constraints applied globally
• Viewport fixes for overflow issues
• Card styling refinements, dark mode improvements
v15.0-17.0 — Feb 2026
15-panel extraction and editorial framework
• Extracted 15 content panels from monolithic page into template-based system
• Section navigation with panel switching
• Environmental justice content: impacts on Dalit communities, women using solid fuel, informal workers
• PM2.5-primary reporting methodology aligned with WHO 2021 guidelines
• GEMM model health calculator integration
v10.0-14.0 — Feb 2026
Core platform features
• Live AQI data integration via WAQI API for 16 Indian cities + 3 international
• Health impact calculator with GEMM exposure-response functions
• Economic cost analysis (Lancet Commission, World Bank methodology)
• NCAP budget tracker with fund utilisation analysis
• Political accountability: MoEFCC spending, CAQM compliance, RTI templates
• Global comparison panel (Beijing, London, Singapore benchmarks)
• Interactive Leaflet.js map with live station markers
• Dark mode with comprehensive colour system
v5.0-9.0 — Jan-Feb 2026
Research integration and content depth
• Comprehensive briefing document: 50+ pages covering health data, policy analysis, economic costs, legal framework
• Partnership with UrbanEmissions.info (Dr. Sarath Guttikunda)
• Historical trends panel with timeline from 1981 Air Act to present
• Legal framework: Supreme Court orders, NGT rulings, Article 21 right to clean air
• Citizen action planning tools and advocacy guides
v1.0-4.0 — Jan 2026
Platform foundation
• Initial JanVayu (Vayu Smriti) concept and architecture
• Single-page HTML application with vanilla JavaScript
• Chart.js integration for data visualisation
• WAQI API integration for live air quality data
• Basic dashboard with Delhi-focused AQI monitoring
• GitHub repository setup and deployment