Skip to main content

Release Notes

All notable changes to CivicPulse are documented here. The full machine-readable changelog is also maintained at CHANGELOG.md in the repository root.

Releases​

VersionDateHighlights
v0.9.02026-03-09Instagram integration, Social Wall live for 3 platforms
v0.8.02026-03-09Accountability Chain β€” hierarchical official assignment system
v0.7.02026-03-09Modularize civic-pulse.jsx into 46 component files
v1.0.02025-03-02Initial production release

v0.9.0 β€” Instagram Integration (2026-03-09)​

Feature: Instagram Graph API integration β€” the third social platform in CivicPulse's Social Wall, alongside X/Twitter and WhatsApp.

Backend​

  • igService.js β€” Instagram Graph API client mirroring xService.js. Fetches mentioned_media from a configured Business account, formats posts into the shared CivicPulse mention shape, falls back to demo mode (5 mock mentions) when IG_ACCESS_TOKEN is not set.
  • 2 new API endpoints β€” GET /api/ig/mentions (public, no auth) and POST /api/ig/mentions/:mediaId/convert (auth required)
  • 15 new backend tests for igService (174 total across 10 suites)
  • Shared textDetection.js β€” detectCategory, detectCity, relativeTime reused across all 3 social services

Frontend​

  • IGFeed.jsx β€” Instagram feed component with Instagram-branded gradient styling (purple-pink), "View on Instagram" links, Convert buttons, and converted issues panel
  • SocialWall.jsx β€” replaced Instagram "Coming Soon" placeholder with live IGFeed, added IG mode badge
  • civic-pulse.jsx β€” added igPosts/igMode/igLoaded/convIG state, fetchIGMentions callback, handleConvertIG handler, ConvertModal for IG posts
  • mockData.json β€” Instagram platform set to live: true

Documentation​

  • New Instagram API Reference β€” env vars, endpoints, setup guide, mention shape
  • Updated Architecture β€” new Social Integrations section with platform comparison and data flow diagram
  • Updated Frontend β€” social component count 4β†’5, IGFeed added to inventory
  • Updated API Overview β€” X, WhatsApp, Instagram added to endpoint groups table
  • Updated Environment Variables β€” IG env vars documented
  • X/Twitter and WhatsApp API docs added to sidebar navigation

v0.8.0 β€” Accountability Chain (2026-03-09)​

Feature: Hierarchical official assignment system mapping every civic issue to its chain of responsible officials β€” from Ward Officer up through Corporator, MLA, and MP.

Backend​

  • 4 new entity types β€” jurisdiction, official, department, police_station β€” stored in a DynamoDB-ready single-table schema (PK/SK/entityType) backed by a single JSON seed file
  • Seed data for Mumbai (8 wards), Thane (3 wards), and Navi Mumbai (3 wards) β€” 75 total records covering jurisdictions, officials, departments, and police stations
  • 5 new public API endpoints β€” GET /api/accountability-chain, /api/jurisdictions, /api/officials, /api/departments, /api/police-stations
  • 7 new admin CRUD endpoints with CSV import/export for bulk management of all 4 entity types
  • Issue schema extended β€” added pincode, ward, area, and jurisdiction_id fields for geo-resolution
  • Reverse geocoding via OpenStreetMap Nominatim to auto-resolve pincode and ward from coordinates
  • 19 new backend tests (139 total across 9 suites)

Frontend​

  • AssignmentPanel β€” redesigned as a hierarchical panel showing Ward Officer β†’ Corporator β†’ MLA β†’ MP with contact deep-links (WhatsApp, X, Email)
  • AccountabilityMini β€” compact inline chain display with resolved official names, shown on issue detail
  • NewModal β€” added ward and pincode fields with auto-fill from reverse geocoding
  • Admin: Accountability tab β€” full CRUD interface for jurisdictions, officials, departments, and police stations with CSV import/export

See Architecture β€” Accountability Chain for the entity model and resolution flow, and API Reference β€” Accountability for endpoint details.

v0.7.0 β€” Component Modularization (2026-03-09)​

Refactor: Decomposed the monolithic civic-pulse.jsx (~5,450 lines) into 46 modular component files + 1 new hook, organised by feature domain. The App root is reduced to ~310 lines.

  • 46 new files across 12 domains: shared, media, maps, issues, browse, social, rankings, events, dashboard, support, admin, auth, landing
  • 1 new hook β€” useDonors.js extracted from inline code
  • Zero behavioural changes β€” all existing functionality preserved
  • Build verified β€” vite build passes; 120 backend tests pass
  • Pre-refactor state tagged as v0.6-monolithic

See Frontend for the full component inventory.


Releasing a New Version​

Use the release script from the project root:

# Bump patch version (1.0.0 β†’ 1.0.1)
npm run release patch

# Bump minor version (1.0.0 β†’ 1.1.0)
npm run release minor

# Bump major version (1.0.0 β†’ 2.0.0)
npm run release major

# Or specify an exact version
npm run release 1.2.3

The script will:

  1. Update version in package.json, frontend/package.json, and backend/package.json
  2. Prepend a stub entry to CHANGELOG.md (fill in your notes)
  3. Create a git commit chore(release): vX.Y.Z and tag vX.Y.Z

Then push:

git push origin master && git push origin vX.Y.Z

The GitHub Actions workflow will automatically deploy to the droplet on push to master.