Every production deploy is tagged and dated. This is that history, straight
from the commit log.
v302026-08-291c01bc2
The site now leads with SIR -- the reason most people arrive -- in its page titles, its landing page, and the preview card a shared link produces.
Added a site icon for the browser tab, and turned on compression: pages are a fraction of their previous download size, which matters most on a slow connection.
The Usage page now loads instantly instead of counting logs while you wait, and pages back through earlier 30-day windows instead of only showing the last 30.
v292026-08-277417a32
Voter counts on the home and roadmap pages now read in crores, with the exact figure still available on hover.
The roadmap and About pages now credit the contributors who wrote each state's connector.
The landing page now shows a loading indicator while it starts up, instead of the search form appearing and then changing.
v282026-08-278393ea4
Nineteen more states are now searchable, including Madhya Pradesh, Rajasthan, Telangana, Assam, Punjab and Delhi.
West Bengal now covers 290 constituencies across the state, not only the 19 in Kolkata.
A birth year later than the newest roll a state published now says so, and says which years your age tolerance does cover, instead of returning nothing.
A search link with an unusable year of birth or age tolerance now explains the problem instead of failing.
The landing page no longer shows the old one-page form for a moment before the step-by-step search loads.
The copy-link summary under the results now updates when you run another search on the same page.
A state that is already live no longer also appears under Planned on the roadmap.
v272026-08-27508ab17
Credit the project's supporters, and the contributions that are coming
Separate the promotion from the product, and make it reachable on a phone
Add a landing-page showcase, from real screenshots rather than mockups
Update release notes (v26)
v262026-08-27fd5924e
Take the debug view out of the bot gate
Expose REPLACE_CATALOG= and ALLOW_CATALOG_SHRINK= on build-db-ac
Re-point the pin to vsp main's West Bengal merge round
Add make migrate-translit-ac: recompute Latin columns across a per-AC tree
Ask for the catalogs, not the prefix that might hold them
Establish the live bucket is listable before trusting an empty fetch
Say we could not read the age, not that the roll did not have one
Compare a state's catalog against its own files, not against other states
Pin the pipeline at the column-boundary fix, and record the live-catalog rule
Refuse an AC-db push that would move a state backwards
Check the shipped catalog's coverage claim against its own index
Point the cap test at the catalogs it reads its expectation from
Pin the pipeline to vsp #49's merge commit
An unreadable sex is unknown too, not just an unread one
Hand the Latin bridge rows that need it, not states that might
Correct a false claim about KarnatakaConnector in the fixture docstring
Bridge every non-Latin state to Latin queries, not just Devanagari ones
Pin the pipeline at 593b175 and correct the catalog-scoping gotcha
Scope the constituency-selection cap to the states selected
Thread ACS/PATCH/OUT/WORKERS through make build-db-ac
An unread sex means "unknown", not "not your match"
Write the catalog-scoping rule into the gotcha list
Bump the pipeline pin to vsp#24 (build scope declared, not inherited)
Re-pin the pipeline to vsp main after #21
Re-pin the pipeline to vsp main after #19/#20
Construct the no-roll_year catalog instead of relying on the pin
Pin voter-search-pipeline to 8b7162f (the #14-#18 stack)
Derive the birth-year ceiling per state instead of hardcoding 1984
Update release notes (v25)
v252026-08-1745144dd
The site now handles busy periods without turning visitors away.
v242026-08-17b1a1a93
Traffic-statistics page now waits out temporary rate limits on its log reads rather than dropping a chart.
v232026-08-1784fc11a
Follow-up fix to the traffic-statistics page, which could wrongly report itself as unavailable while it was still computing.
v222026-08-174055d8a
Internal maintenance to the site's own traffic-statistics page, which had been under-reporting visitor counts.
v212026-08-17cfd6861
Usage page: the "Min" column heading now sits over its own column instead of the one to its left.
v202026-08-1711d19ad
The usage page's search-time table now reads in seconds and is split into a summary group (min/max/average/median) and a percentile group (p10/p50/p90/p99).
v192026-08-178ec95a8
The usage page now reports the full spread of search times (p10 through p99, plus median) instead of just the fastest, average and slowest.
v182026-08-173cf8db6
New "Which site is this?" section on the About page, stating the one address this tool is served from and who operates it, with coverage figures generated live from the running index rather than quoted from memory.
New /llms.txt: the same facts in plain text, for AI assistants and other tools that summarise this project.
States & Covered page: the OCR sponsorship estimate is now a range (₹15,000 to ₹1,25,000) instead of a single flat per-state figure, because the cost scales with how many scanned pages a state actually has -- the old number was roughly right for the smallest state and several times too low for the largest.
New section inviting pull requests that add a state we don't cover yet, linking to the open-source data pipeline.
The interest form is now labelled "Get updates" rather than "Request a state", which is closer to what it does.
A contact link on the About page.
v172026-08-150b97e8f
Minor wording change on the About page.
v162026-08-1506c5ebd
Small update to the About page, plus internal maintenance.
v152026-08-15b0d1272
Bengaluru's constituencies are now grouped under one "Bengaluru Urban" district instead of being split three ways, so all 16 on the 2002 roll are visible in one place (the published data's own names are still shown alongside).
Present-day constituency names created in the 2008 delimitation -- Mahadevapura, Bommanahalli and the rest -- now appear in the district selector and point to the 2002 district they fall within.
v142026-08-159f35301
Add a Cloudflare Turnstile bot gate on the expensive paths
Stop the scroll wheel silently rewriting a number field
Make the form's own errors visible, and its escape hatch respond
Offer the unfiltered search whenever the birth year narrowed it
Show an unusable age as "not recorded", not as a 500 or a fake year
Re-check MIG-vs-Cloud-Run cost against real traffic figures
Add data-freshness guards, batch the live self-check, fix source link scope
Update release notes (v12)
v122026-08-159405e45
Enforce distorted-query pass/fail bar, add its pytest coverage
Add distorted-query (typo-tolerance) diagnostic to /dbg self-check
Add search-quality regression fixture + live /dbg self-check with rank stats
Update release notes (v11)
v112026-08-154f34a71
Add per-app UPI picker popup and GA4 analytics, env-scoped per deploy target
Add per-state sponsorship, donate-box cost figures, and donate UX polish
Add real "Load more" pagination to search results (#31)
Update release notes (v10)
v102026-08-147369877
Results table redesign: name+score, birth year, relative name+relation, and AC/part/serial are now more compact columns, with a combined source/status/remark column.
Constituency code in results is now a direct link to download that AC's source roll.
"Check 2025 status" link relabeled for clarity.
Slightly smaller stats banner on the home page.
Removed an unfilled placeholder line from the About page's Versions section.
v92026-08-14f889eb5
Promote-to-prod now rebuilds instead of reusing dev's digest
Commit the fold-pending rewrite of release_notes_overrides.json
Update release notes (v8)
v82026-08-149b91e53
Fixed a bug where a release's own changelog entry could be missing from this page right after it shipped.
v72026-08-14d71eaf7
Search form is now a step-by-step wizard, with a classic all-on-one-page toggle for anyone who prefers it.
Relative's (father/husband/mother's) name is required again on the search form.
Search form order: name, year of birth, gender, and relative's name now come before picking a state or constituency.
States & roadmap page: a reload button to pick up newly published constituencies without waiting for a redeploy, cold-start times shown in IST, and clearer Partial vs Planned badges.
States & roadmap page now shows per-constituency availability within each district.
Reworded the about page's pipeline link.
v52026-08-13b2c3df8
Moved the production database to Singapore, co-located with the app, fixing a cross-region cold-start reliability issue.
Rolled out per-AC-file serving to production: searches now fetch just the constituency files they need instead of the entire multi-gigabyte database.
v42026-08-1374bc938
Warm per-AC row cache during prefetch, not on first search after download
Add bulk "Clear all" deselect + preserve constituency filter text across reloads
Pin SCORING_WORKERS=4 on Cloud Run to match the real CPU quota
Replace prefetch text-opacity feedback with a per-AC progress bar
Quote APP_VERSION/APP_GIT_HASH placeholders to avoid YAML 1.1 float parsing
Queue AC prefetch to 2 concurrent + enable Cloud Run session affinity
Fix per-AC prefetch not firing on bulk district selection
Fix 500 on search in AC_DB_DIR mode: create visitor DB dir before connect
Reorder search-form fields: name, year of birth, gender, relative
Move refine-search fields below constituency picker; auto-detect new state catalogs
Add AC_DB_DIR dev deploy plumbing: GCS bucket target, per-AC service.yaml
Phase 4: on-disk LRU eviction for cached per-AC files
Phase 3.5: year-of-birth filter, gender as radio buttons