jyotish 2.0.0
jyotish: ^2.0.0 copied to clipboard
A production-ready Flutter library for Vedic astrology (Jyotish) calculations using Swiss Ephemeris. Provides high-precision sidereal planetary positions with Lahiri ayanamsa, nakshatras, and complete [...]
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
2.0.0 - 2026-02-08 #
Added #
-
D249 - 249 Subdivisions (High-Precision Micro Analysis)
- Complete implementation of 249 subdivisions per zodiac sign
- Ultra-fine granularity for advanced Vedic analysis (~0.12° per subdivision)
- Odd sign mapping: starts from same sign, counts forward through 249 parts
- Even sign mapping: starts from 9th sign, counts forward through 249 parts
- Compatible with existing D1-D60 divisional chart infrastructure
- Comprehensive test suite with 10+ test cases
- API:
DivisionalChartType.d249
-
Corrected Vara (Weekday) Calculation
- Updated
PanchangaServiceto use Sunrise as the day boundary instead of midnight - Births between midnight and sunrise now correctly resolve to the previous day's planet lord
- API:
jyotish.getVara()is now asynchronous and requireslocation
- Updated
-
Tithi End-Time Analysis
- New API for finding exact moments when a Tithi ends
- Uses high-precision binary search with sub-second accuracy
- API:
jyotish.getTithiEndTime()
-
Shadbala (Six-fold Planetary Strength)
- Complete implementation of all 6 strength types:
- Sthana Bala (Positional Strength)
- Dig Bala (Directional Strength)
- Kala Bala (Temporal Strength)
- Chesta Bala (Motional Strength)
- Naisargika Bala (Natural Strength)
- Drik Bala (Aspectual Strength)
calculateShadbala()- Calculate complete Shadbala for all planets- Strength categorization (Very Strong, Strong, Moderate, Weak, Very Weak)
- Complete implementation of all 6 strength types:
-
Ashtakavarga Reductions (Shodhana)
applyTrikonaShodhana()- Trine reduction for 1-5-9 groupsapplyEkadhipatiShodhana()- Reduction for same sign ownershipcalculatePinda()- Final planetary strength (Rupas calculation)
-
Panchanga Module
- Tithi, Yoga, Karana, and Vara calculations
- High-precision sunrise and sunset times using Swiss Ephemeris
-
Ashtakavarga System
- Bhinnashtakavarga (BAV) for all planets
- Sarvashtakavarga (SAV) calculation
- Ashtakavarga-based transit strength analysis
-
KP System (Krishnamurti Paddhati)
- Support for KP-specific ayanamsas (New VP291, Khullar)
- Sign, Star, Sub-Lord, and Sub-Sub-Lord calculations
- House and planet significators
-
Special Transits
- Sade Sati (Saturn's 7.5 year transit) status and phase analysis
- Dhaiya (Saturn's 2.5 year transit/Panoti) analysis
- Panchak detection and precautions
-
Muhurta & Auspicious Timings
- Hourly Hora Lord calculation
- Daytime and Nighttime Choghadiya periods
- Inauspicious periods: Rahukalam, Gulikalam, and Yamagandam
- Activity-based Muhurta filtering
-
Vedic Aspect Calculations (Graha Drishti)
- All planets aspect 7th house (opposition)
- Mars special aspects (4th, 8th houses)
- Jupiter special aspects (5th, 9th houses)
- Saturn special aspects (3rd, 10th houses)
- Applying/separating aspect detection
- Aspect strength calculation
-
Transit Calculations
- Current planetary transits over natal positions
- Transit house placements
- Transit aspects to natal planets
- Transit event prediction with date ranges
-
Dasha System Support
- Vimshottari Dasha (120-year cycle)
- Yogini Dasha (36-year cycle)
- Mahadasha, Antardasha, Pratyantardasha levels
- Current period calculation
- Birth time precision warnings
-
Yogini Dasha Antardashas
- Added support for sub-periods (Antardasha) in Yogini Dasha
- Added support for sub-sub-periods (Pratyantardasha) in Yogini Dasha
- Correctly displaying Yogini names (e.g., Mangala, Pingala) instead of planet names
New API Methods #
getAspects()- Calculate all Vedic aspects between planetsgetAspectsForPlanet()- Get aspects involving a specific planetgetChartAspects()- Calculate aspects from a VedicChartgetTransitPositions()- Calculate transit positions relative to natal chartgetTransitEvents()- Find significant transit events in a date rangegetVimshottariDasha()- Calculate Vimshottari dasha periodsgetYoginiDasha()- Calculate Yogini dasha periodsgetCurrentDasha()- Get active dasha periods at any date
New Models #
AspectType- Enum of Vedic aspect typesAspectInfo- Detailed aspect informationAspectConfig- Aspect calculation configurationTransitInfo- Transit position dataTransitEvent- Transit event detailsTransitConfig- Transit calculation configurationDashaPeriod- Dasha period dataDashaResult- Complete dasha calculation resultDashaType- Enum of dasha systemsYogini- Enum of Yogini dasha lords
Improved #
- Precision: Updated Panchak calculation to use precise Mean Daily Motion of Moon (13.176°) instead of approximation.
- Ephemeris Service: Enhanced support for rise/set transitions and topocentric corrections.
- Vedic Chart: Improved planet data model to support extended Vedic properties.
Fixed #
-
Planetary Friendship Calculations
- Now properly calculates friend, enemy, and neutral relationships
- Added
greatFriend(Adhi-Mitra) andgreatEnemy(Adhi-Shatru) dignities - Affects dignity calculations in both Rashi and all D-Charts
-
D-Chart Dignity Calculations
- All divisional charts (D1-D60) now calculate dignities correctly
- Dignities no longer default to "neutral" in D-Charts
-
Sade Sati Date Estimation
- Replaced constant
daysPerSignwith variable Saturn speed calculation - Now accounts for retrograde motion and sign-specific variations
- More accurate start/end date predictions
- Replaced constant
-
Rahu/Ketu Distinguishability
- Added
lordNamefield toDashaPeriodto properly distinguish Rahu from Ketu - Both planets display correctly in dasha output (e.g., "Rahu-Mercury-Venus")
- Added
-
KP Ayanamsa Calculation
- Now uses precise time-varying formula from Swiss Ephemeris
- Uses
SiderealMode.krishnamurtiVP291instead of hardcoded offset
-
Extended Dasha Support
- Added Chara Dasha (Jaimini sign-based dasha)
- Added Narayana Dasha
- Added Ashtottari Dasha (108-year cycle)
- Added Kalachakra Dasha
getDashaPeriods()now supports all these systems
-
Jaimini Astrology Support
- Atmakaraka calculation (planet with highest degree)
- Karakamsa (Atmakaraka in Navamsa) analysis
- Rashi Drishti (Sign Aspects) per Jaimini rules
-
Sudarshan Chakra
- Complete analysis of Sun, Moon, and Ascendant charts combined
- Visualizing planetary positions across all three reference points
-
Gochara Vedha (Transit Obstruction)
- Analysis of Vedha (obstruction) points for transiting planets
- Determines if a transit's effect is blocked or modified by other planets
Breaking Changes #
calculateKPData()is now async - ReturnsFuture<KPCalculations>instead ofKPCalculations- Migration: Add
awaitbefore the call:final kpData = await jyotish.calculateKPData(chart)
- Migration: Add
1.0.1 - 2025-11-25 #
Fixed #
- Fixed package validation errors for pub.dev publishing
- Improved export organization (alphabetically sorted)
1.0.0 - 2025-10-19 #
Added #
- Initial release of Jyotish library
- Swiss Ephemeris integration via FFI
- Support for all major planets (Sun through Pluto)
- Lunar nodes (Mean and True Node)
- Lunar apogees (Black Moon Lilith)
- Major asteroids (Chiron, Pholus, Ceres, Pallas, Juno, Vesta)
- Tropical and sidereal zodiac calculations
- 40+ ayanamsa systems for sidereal calculations
- Geocentric and topocentric position calculations
- Retrograde detection
- Nakshatra (lunar mansion) calculations
- Zodiac sign and position calculations
- Speed/velocity calculations
- Comprehensive error handling
- Input validation
- Production-ready API
- Full documentation and examples
- Example Flutter app
- Platform support: Android, iOS, macOS, Linux, Windows
Features #
- High-precision astronomical calculations
- Easy-to-use API
- Batch planet calculations
- Flexible calculation flags
- Geographic location support with DMS conversion
- JSON serialization support
- Proper resource management