Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
85bb2ed
changes
AmitPhulera Jan 4, 2026
cf2bfc1
Merge changes branch into main (unrelated histories)
AmitPhulera Jan 4, 2026
4a16323
Fix test framework to handle floating-point and time string precision
AmitPhulera Jan 4, 2026
5e1674c
chore: Install project dependencies. Init react app and setup boilorp…
AmitPhulera Jan 4, 2026
cece2e2
Swiss Ephemeris adapter with ayanamsa calculations
AmitPhulera Jan 4, 2026
c221ffc
swisseph-wasm installed for accurate ephemeris calculations
AmitPhulera Jan 4, 2026
df552df
1
AmitPhulera Jan 4, 2026
e0f9303
1
AmitPhulera Jan 4, 2026
23e5b71
1
AmitPhulera Jan 4, 2026
615a4f2
1
AmitPhulera Jan 4, 2026
c9f71a4
14 Dasha Systems Integrated into UI!
AmitPhulera Jan 4, 2026
2887d0b
1
AmitPhulera Jan 4, 2026
295dbc7
Implemented core logic for Divisional Charts (D1-D60) and House Calcu…
AmitPhulera Jan 4, 2026
34959e3
feat: Implement Chara and Narayana Dasha systems, adding supporting p…
AmitPhulera Jan 4, 2026
b959cd2
Divisional Chart Selector Implementation Complete
AmitPhulera Jan 5, 2026
42e552d
✅ DivisionalChartSelector - Switch between D-1 to D-60 charts
AmitPhulera Jan 5, 2026
846f377
Implementing Varga-dependent Graha Dashas
AmitPhulera Jan 5, 2026
eb0bb88
Varga-dependent Dasha Testing Complete
AmitPhulera Jan 5, 2026
5a95390
Varga-dependent Graha Dashas Complete ✅
AmitPhulera Jan 5, 2026
7f2b989
Mandooka and Shoola Raasi Dashas Complete!
AmitPhulera Jan 5, 2026
6099fc2
Added 2 more Raasi Dashas! ✅
AmitPhulera Jan 5, 2026
bb48e93
Added 2 more Raasi Dashas! ✅
AmitPhulera Jan 5, 2026
0c6c432
implemented Moola, Lagnamsaka, and Navamsa Dashas, and refactored Na…
AmitPhulera Jan 5, 2026
9ccc6b8
1
AmitPhulera Jan 5, 2026
19a662c
DashaTable: updated to support generic Dasha items and Raasi coloring.
AmitPhulera Jan 5, 2026
c79df1c
implemented Antardhasa and Pratyantardasha for Vimsottari Dasha and v…
AmitPhulera Jan 5, 2026
9b255f6
implemented and verified all tests for Divisional Charts D-2 through …
AmitPhulera Jan 5, 2026
ce4ef42
feat: integrate swisseph-wasm for accurate planet and ascendant calcu…
AmitPhulera Jan 5, 2026
62eef33
feat(ephemeris): integrate swisseph-wasm for async planet calculations
AmitPhulera Jan 26, 2026
13a735d
feat(dhasa): add Kaala dasha system
AmitPhulera Jan 26, 2026
da1cd8d
feat(dhasa): add Karaka dasha system (Jaimini)
AmitPhulera Jan 26, 2026
3d54926
feat(dhasa): add Yoga Vimsottari dasha system
AmitPhulera Jan 26, 2026
3e032f5
feat(dhasa): add Tithi-based dasha systems
AmitPhulera Jan 26, 2026
5cd2d72
feat(dhasa): add Karana Chathuraaseethi Sama dasha system
AmitPhulera Jan 26, 2026
2b885a1
feat(dhasa): add Buddhi Gathi dasha system
AmitPhulera Jan 26, 2026
d9b0f26
feat(dhasa): export all new graha dasha systems
AmitPhulera Jan 26, 2026
81d7ea3
chore: update package-lock.json peer dependencies
AmitPhulera Jan 26, 2026
f7b5817
test(dhasa): add tests for Kaala dasha system
AmitPhulera Jan 26, 2026
13ef8bb
test(dhasa): add tests for Karaka dasha system (Jaimini)
AmitPhulera Jan 26, 2026
0166067
test(dhasa): add tests for Yoga Vimsottari dasha system
AmitPhulera Jan 26, 2026
f0896cc
test(dhasa): add tests for Tithi-based dasha systems
AmitPhulera Jan 26, 2026
b562e81
test(dhasa): add tests for Karana Chathuraaseethi Sama dasha
AmitPhulera Jan 26, 2026
503eee1
test(dhasa): add tests for Buddhi Gathi dasha system
AmitPhulera Jan 26, 2026
83b5dfd
fix(ephemeris): correct ascendant calculation using proper WASM calls
AmitPhulera Jan 26, 2026
75b97e9
Merge pull request #1 from AmitPhulera/ap/implement-web-jhora
AmitPhulera Jan 26, 2026
b32fd5a
feat(dhasa): port 9 missing raasi dhasas from Python to TypeScript
AmitPhulera Jan 31, 2026
734704a
chore: add Gas Town directories to gitignore
AmitPhulera Jan 31, 2026
4adc96a
Merge pull request #2 from AmitPhulera/polecat/quartz/jh-d6s@ml21ez29
AmitPhulera Jan 31, 2026
39d9afe
feat(ui): add Lagna (Ascendant) display component to web version
AmitPhulera Jan 31, 2026
2a8f3da
Merge pull request #3 from AmitPhulera/polecat/quartz/jh-u8w@ml250xtz
AmitPhulera Jan 31, 2026
c037a7c
feat(ashtakavarga): port Ashtakavarga calculation system from Python
AmitPhulera Jan 31, 2026
5da3a88
feat(chart): port Arudha Pada calculations from Python to TypeScript
AmitPhulera Jan 31, 2026
285532e
feat(strength): port Shadbala calculations from Python to TypeScript
AmitPhulera Jan 31, 2026
68dd572
feat(yoga): port 80+ yoga calculations from Python to TypeScript
AmitPhulera Jan 31, 2026
9ba8f01
feat(chart): port Arudha Pada calculations from Python to TypeScript
AmitPhulera Jan 31, 2026
b3c9d9e
feat(yoga): port 80+ yoga calculations from Python to TypeScript
AmitPhulera Jan 31, 2026
5b932c7
feat(strength): port Shadbala calculations from Python to TypeScript
AmitPhulera Jan 31, 2026
41a2091
Merge main into PR #4: resolve conflict in constants.ts
AmitPhulera Jan 31, 2026
e887094
Merge pull request #4 from AmitPhulera/polecat/onyx/hq-arud1@ml26wuhc
AmitPhulera Jan 31, 2026
ce74591
Merge pull request #6 from AmitPhulera/polecat/opal/hq-str1@ml26xhjd
AmitPhulera Jan 31, 2026
ecb9bfd
Merge pull request #7 from AmitPhulera/polecat/quartz/hq-yoga1@ml26vmpt
AmitPhulera Jan 31, 2026
6e28e00
docs: add agent instructions for issue tracking and session completio…
AmitPhulera Feb 2, 2026
15d6279
fix(constants): correct SIDEREAL_YEAR, argala houses, and ARYABHATA a…
AmitPhulera Feb 6, 2026
ffc356a
fix(drik): correct Hora Lagna formula, Vara offset, and Sree Lagna
AmitPhulera Feb 6, 2026
33caf7f
fix(graha-dhasas): correct ashtottari bhukti, shastihayani mod, naisa…
AmitPhulera Feb 6, 2026
91e5d21
fix(raasi-dhasas): add exalted/debilitated adjustments and fix tara-l…
AmitPhulera Feb 6, 2026
7c7492d
docs: add parity analysis report and epic tracking document
AmitPhulera Feb 6, 2026
a269d70
fix(ephemeris,kaala): add FLG_TRUEPOS flag and solar date adjustment
AmitPhulera Feb 6, 2026
c36efec
fix(raasi-dhasas): fix 8 raasi dhasa parity issues (R1,R3-R6,R8-R9)
AmitPhulera Feb 6, 2026
287b302
chore: cleanup unused imports and fix kaala jdAdjusted reference
AmitPhulera Feb 7, 2026
13ffcf7
chore: remove outdated parity documents
AmitPhulera Feb 7, 2026
d4f4815
Merge pull request #11 from AmitPhulera/fix/parity-issues
AmitPhulera Feb 7, 2026
98d1bdf
test: port Python tests to TypeScript for parity (339→522 tests)
AmitPhulera Feb 14, 2026
1de81e9
test(drik): add ayanamsa mode and karana parity tests
AmitPhulera Feb 14, 2026
1517e18
feat: port dosha, sphuta, raja-yoga modules and expand parity tests (…
AmitPhulera Feb 14, 2026
dff1d49
test: add Python parity tests across all modules (622→765 tests)
AmitPhulera Feb 14, 2026
f11b75e
feat: port missing modules and expand parity tests (765→913 tests)
AmitPhulera Feb 15, 2026
b9b61ed
feat: port remaining function gaps across 4 modules (913→1082 tests)
AmitPhulera Feb 15, 2026
dd865d8
feat: add ayanamsa mode aliases and interpolation utilities
AmitPhulera Feb 16, 2026
c32a97b
feat: upgrade Swiss Ephemeris WASM adapter with direct ccall API
AmitPhulera Feb 16, 2026
cc2be41
feat: port horoscope modules — 130+ yoga functions, charts, house, dosha
AmitPhulera Feb 16, 2026
f98785e
feat: port compatibility, saham, and KP data modules
AmitPhulera Feb 16, 2026
1e81853
feat: port dhasa modules — aayu, sudharsana, patyayini, mudda, applic…
AmitPhulera Feb 16, 2026
eff77ef
feat: port complete drik.py panchanga engine (193 functions, 174 pari…
AmitPhulera Feb 16, 2026
2301a5b
chore: add node_modules to root gitignore
AmitPhulera Feb 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
# Auto detect text files and perform LF normalization
* text=auto

# Use bd merge for beads JSONL files
.beads/issues.jsonl merge=beads
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,10 @@
/dist
*.pyc
/src/PyJHora.egg-info

# Gas Town
.runtime/
.claude/
.beads/
.logs/
node_modules/
40 changes: 40 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Agent Instructions

This project uses **bd** (beads) for issue tracking. Run `bd onboard` to get started.

## Quick Reference

```bash
bd ready # Find available work
bd show <id> # View issue details
bd update <id> --status in_progress # Claim work
bd close <id> # Complete work
bd sync # Sync with git
```

## Landing the Plane (Session Completion)

**When ending a work session**, you MUST complete ALL steps below. Work is NOT complete until `git push` succeeds.

**MANDATORY WORKFLOW:**

1. **File issues for remaining work** - Create issues for anything that needs follow-up
2. **Run quality gates** (if code changed) - Tests, linters, builds
3. **Update issue status** - Close finished work, update in-progress items
4. **PUSH TO REMOTE** - This is MANDATORY:
```bash
git pull --rebase
bd sync
git push
git status # MUST show "up to date with origin"
```
5. **Clean up** - Clear stashes, prune remote branches
6. **Verify** - All changes committed AND pushed
7. **Hand off** - Provide context for next session

**CRITICAL RULES:**
- Work is NOT complete until `git push` succeeds
- NEVER stop before pushing - that leaves work stranded locally
- NEVER say "ready to push when you are" - YOU must push
- If push fails, resolve and retry until it succeeds

90 changes: 90 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Project Overview

PyJHora is a complete Vedic Astrology Python package based on "Vedic Astrology - An Integrated Approach" by PVR Narasimha Rao and Jagannatha Hora V8.0 software. It provides panchanga calculations, horoscope charts, 40+ dasha systems, 100+ yogas, and PyQt6-based GUIs.

## Build and Test Commands

```bash
# Install dependencies
pip install -r requirements.txt

# Install package in development mode
pip install -e .

# Run all tests (~6500 tests, assumes Lahiri ayanamsa)
# Tests use custom framework, not pytest
python -c "
import sys; sys.path.insert(0, 'src')
from jhora import utils
utils.set_language('en')
from jhora.tests import pvr_tests
pvr_tests.all_unit_tests()
"

# Run subset of tests (edit some_tests_only() in pvr_tests.py to select)
python -c "
import sys; sys.path.insert(0, 'src')
from jhora import utils
utils.set_language('en')
from jhora.tests import pvr_tests
pvr_tests.some_tests_only()
"
```

## Key Architecture

### Core Modules (`src/jhora/`)

- **`const.py`**: All constants - planet IDs (SUN=0 to KETU=8, URANUS=9, NEPTUNE=10, PLUTO=11), house numbers (HOUSE_1=0 to HOUSE_12=11), rasi names (ARIES=0 to PISCES=11), 20+ ayanamsa modes (Lahiri default)
- **`utils.py`**: Helper functions for geolocation, timezone, Julian day conversion, language support (`set_language()`)

### Panchanga (`jhora/panchanga/`)

- **`drik.py`** (183KB): Main panchanga functions - sunrise/set, tithi, nakshatra, yogam, karana, planet positions, special lagnas, upagrahas. This is the astronomical calculation engine.
- **`vratha.py`**: Special day calculations (amavasya, ekadashi, etc.)

### Horoscope (`jhora/horoscope/`)

- **`main.py`** (128KB): Main `Horoscope` class orchestrating all features
- **`chart/charts.py`** (142KB): Divisional charts (D-1 to D-300), bhava calculations, 17 house systems
- **`chart/yoga.py`** (364KB): 100+ yoga calculations
- **`chart/house.py`** (71KB): Aspects, drishti, karakas, stronger planet/rasi calculations
- **`dhasa/graha/`**: 22 graha dasha systems (vimsottari, ashtottari, yogini, etc.)
- **`dhasa/raasi/`**: 22 rasi dasha systems (narayana, chara, kalachakra, etc.)

### UI (`jhora/ui/`)

- **`horo_chart_tabs.py`**: Main multi-tab UI with 100+ pages of data
- **`panchangam.py`**: Simple panchanga UI widget
- **`chart_styles.py`**: South/North/East Indian chart widgets

## Data Structures

Planet positions: `[[planet_index, (rasi, longitude)], ...]`

Charts/houses: `['', '', '2', '7', '1/5', ...]` (planets in each house)

Key namedtuples in utils: `Date`, `Place`

## Language Support

6 languages via JSON files in `lang/`: 'en', 'hi', 'ka', 'ml', 'ta', 'te'

Switch with `utils.set_language('ta')`

## External Dependencies

- **pyswisseph**: Swiss Ephemeris for celestial calculations (required)
- **PyQt6**: GUI framework
- **geopy/timezonefinder**: Geolocation and timezone detection

## Important Notes

- Tests assume `const._DEFAULT_AYANAMSA_MODE='LAHIRI'`
- Ephemeris files in `data/ephe/` required for calculations (JPL compressed)
- Accuracy: 13000 BCE to 16800 CE (Swiss Ephemeris range)
- Some modules marked experimental: `prediction/`, `surya_sidhantha.py`, `khanda_khaadyaka.py`
Loading