-
Dasha bar — shadcn-style redesign
- Active antardasha cell: 2px purple top border + subtle tint replaces indigo bottom shadow.
- Planet row: left-aligned flex with planet symbol + name on left, score on right (replaces centered layout).
- Planet symbols: per-planet color coding (Sun orange, Moon purple, Mars red, Venus pink, Mercury emerald, etc.).
- R4 rank badge: clean purple pill replaces superscript span.
- Header score badge: minimal pill (border + faint bg) replaces 2px bordered box.
- Nav buttons: 26×26px shadcn style.
- DI row: CSS class-based (antara-di-row/planet/strong) with separator dot.
- Current period (not hovered): always shows dates + subtle purple top marker.
- Full dark mode support for all new styles.
-
Share chart link — include name field in shared link
-
Share chart link — short ID (?share=abc1234), 90-day expiry, auto-fills and calculates on open
-
Print report — restore Planets Analysis & House Analysis headings and footer on last page
-
Profile name search — any word match restored
- Typing any word in a name now finds profiles (e.g. typing 'Ravi' finds 'Srikanth Ravi Kumar').
- Safe to use contains-match here: query is always filtered by user_id so only that user's profiles are scanned.
-
KP Horary — A4 print report with South Indian chart, dasa summary, ruling planets
- Completely rewrote kp-print-report.js to generate an A4 KP horary print layout matching the reference design.
- Left column: panchang info box, sign-based South Indian chart (4×4 grid with all planets/cusps), Dasa Summary (9 mahadasa × 9 bhukti).
- Right column: Ruling Planets table, Cuspal Positions, Planetary Positions, Significators (A/B/C/D).
- Chart center shows name, date, time, place, lat/lon, TZ, ayanamsa, nakshatra, lagna, tithi, bal.dasa.
- Panchang bar CSS updated to match rva-softwares exactly (Tailwind classes, correct SVG icons per item type).
-
KP Horary — KP tables redesigned to match rva-softwares style
- Removed merged section-header card; tables now render as standalone rounded cards.
- Dark mode updated to gray-900/gray-800/gray-700 palette (was near-black).
- Table header text updated to gray-700/gray-300 for better contrast.
-
Print Report — fix spurious sub-rows: correct Lord/Karaka like-with-like comparison, tolerance-based inv change detection
-
Print Report — page 2 space savings: remove Planet/House headings, summary footers, page footer and padding
-
Print Report — KP tables match screen: SignLord (blue), sssLord (teal), full 5-lord columns, correct significator A/B/C/D columns
- KP Planets: added SignLord (blue) and sssLord (teal) columns; [R] badge inline in planet name; 10 columns matching screen.
- KP Houses: added SignLord and sssLord columns; 9 columns matching screen.
- Significators Planet/House: fixed A/B/C/D column mapping with correct colors (purple/orange/pink/teal).
-
Print Report — Planet/House Analysis match screen: SL/Inf column, score+planet cells, inverted display, summary footers
-
Print Report — fix inline progression sub-rows missing in Planet/House tables
- ps.year = birthYear + dayOffset (days, not years), so filter ps.year<=birthYear+40 only passed first 40 days.
- Fix: filter by ps.day<=40*365 instead — all sign-change events within first 40 years of life.
- House Analysis: remove dedicated Sign column, fold abbreviation (Ar/Ta/Ge…) into # cell as small text.
- Planet Analysis: replace full sign name with short abbr + house number (e.g. Ta H2 instead of Taurus (H2)).
-
Print Report — reorganize to 3 pages (Alan Leo+Planet/House on p2, Dasha+Varga on p3)
- Page 2 now: Alan Leo graph + Planet Analysis + House Analysis (with 40-year inline progression rows).
- Page 3 now: Dasha 9 + Varga Charts (D7/D9/D10).
- Prevents overflow when Planet/House tables are tall with many progression sub-rows.
-
House Analysis — redesign table to 5 columns with inline planet names
- Removed separate Planets and Karaka Planet columns.
- Occupant cell now shows score + effective planet inline (e.g. 46 Ju°).
- Karaka cell now shows score + karaka planet inline in purple (e.g. 16 Ve).
- Yearly period rows updated to match new 5-column layout.
-
Print Report — fix inline progression scores missing in Planet & House tables
- When birthYear=0 (Time Chart default), maxProgYear was 0+40=40, filtering out all real progression years (e.g. 1987+n).
- Fix: only apply 40-year cap when birthYear>1900; otherwise allow all years through.
-
House Analysis — align year rows across all columns using <tr> sub-rows
- Previous approach stacked <div>s inside each <td> independently — different column heights made rows misalign.
- New approach: one unified timeline, each change event rendered as a proper <tr> spanning all columns.
- Each year now appears on the same horizontal line across Planets/Occupant/Lord/Karaka/Total.
- Changed values are colored; unchanged values shown in gray so the year row is always complete.
-
KP Horary — fix Significator Planet View and House View columns
- Planet View was showing star lord name / sign lord / sub lord (planet names) — now correctly shows house numbers: bhava of star lord (A), planet's own bhava (B), houses owned by star lord (C), houses owned by planet (D).
- House View had wrong column mapping from old significators object — now computes A/B/C/D using same algorithm as /rva-softwares/: A = planets whose star lord is in house, B = occupants, C = planets whose star lord owns house, D = sign lord.
- Legend updated to match column semantics.
-
Print Report — swap page order + Ctrl+P UX fix
- Page 2 now shows Vimshottari Dasha + Divisional Charts (was page 3).
- Page 3 now shows Alan Leo Progression + Planet Analysis + House Analysis (was page 2).
- Ctrl+P now auto-prints the 3-page report (not the 9-page main page) — uses capture-phase listener + autoPrint flag so iframe content prints on load.
- Added footer to page 3 (Planet/House Analysis page).
-
Print Report — fix house analysis showing '—' scores (field name mismatch)
- HouseOccupantResult API only exposes .score (raw effective-planet capacity), not occupantScore/lordScore/karakaScore/totalScore.
- Print report was reading non-existent fields → all house scores rendered as '—'.
- Fix: compute occ = score×0.6, lord = cap[signLord]×0.2, kar = cap[houseKaraka]×0.2 — same formula as on-screen renderHouseAnalysis.
- Added SIGN_OWNER + HOUSE_KARAKAS constants to print-report.js.
- Same fix applied to per-year progression sub-rows in house analysis table.
-
Print Report — per-year progression scores in Planet & House Analysis
- Planet Analysis: each score cell now shows progression sub-rows (light/perf/res/total – year) for solar-arc sign-change years.
- House Analysis: each occ/lord/kar/total cell shows per-year sub-rows from progScores.
- rva-engine.js rvaPrintData() now exposes progScores (_progScores) for use in print report.
-
Print Report v2 — 3-page layout, in-page preview, live SVG charts
- Page 1: Panchang · Natal + Progression SI charts side-by-side (live DOM SVGs from engine) · Planet Analysis · House Analysis.
- Page 2: Alan Leo progression bar chart (canvas capture via toDataURL) · Vimshottari Dasha grid with current period highlighted.
- Page 3: D7/D9/D10 divisional grids · KP planets + cusps · Significators planet/house · Western aspect matrix.
- Header: clean black — name + meta on left, RVA logo + 'RVA' on right, bottom border. No purple banner.
- Footer: single line — RVA logo · website URL · report info · practitioner contact.
- Preview opens as in-page modal (not a popup). User reviews, then clicks Print.
- Fix: logos in header/footer now use fully inline SVG (presentation attributes) — no external fetch, renders correctly in srcdoc iframe.
-
Strongest Planet — Mercury now wins Libra when multiple DB planets and DB winner is debilitated
- Bug: when multiple planets had Dig Bala but none had R1, the code fell through to Sequence Order. planets.sort() mutated the array; debilitation-skip then picked Mars (next in sequence) instead of Mercury (next DB planet).
- Root cause: missing else-clause for the 'multiple DB, no R1' case — it never resolved within the Dig Bala rule category.
- Fix: added else-clause that sorts DB planets by sequence and skips debilitated ones, so the winner stays within the Dig Bala category. Applied to strongest-planet.astro, powerful-planet.ts, and dasha-influencer.js.
-
Print Report — one-click printable Kundali report from live chart data
- New teal Print FAB button (bottom-right, above AI Prompt) opens a print-optimised window with the full chart data.
- Page 1: Birth Chart + Progression Chart (SVG, full fidelity) | KP Planets + House Cusps tables.
- Page 2: KP Significators (Planet View + House View) | Vimshottari Dasha bhukti tables (3 mahashas per row).
- Page 3: Planet Capacity (Light / Performance / Resource) | House Analysis — both pulled from live in-memory state.
- Page 4 (optional): Western Aspects matrix, shown only when the Aspects tab has been opened.
- Charts are captured as SVG (not canvas screenshots) so they print at full vector quality.
- print-report.js exposes window.printReport(); rva-engine.js exposes window.rvaPrintData() for cross-script data access.
-
KP Planets & House Cusps tables now appear side-by-side at 150% zoom on Safari Mac
- At 150% browser zoom on Mac, the CSS viewport shrinks below 1024px so the lg: breakpoint no longer triggered the 2-column layout — both tables stacked vertically.
- Fix: changed the grid breakpoint from lg (1024px) to md (768px) so the side-by-side layout holds at ~960px viewport (150% of 1440px).
-
Strongest Planet — Mars now wins Leo when multiple planets have Dig Bala
- Bug: when multiple planets in a sign all qualified for Dig Bala, the rule was skipped entirely and Sequence Order took over — making Moon win over Mars in Leo (Scorpio ascendant chart).
- Fix: added R1 tiebreaker — if any planet is physically in its own Dig Bala house (R1), it wins over planets that qualify only via indirect rules (R2–R8).
- Applied to all 4 copies of the logic: powerful-planet.ts (rva-softwares, planet-capacity), strongest-planet.astro, dasha-influencer.js, and dasha-analysis-calculator.astro.
-
Rewrote /rva-software/ feature documentation
- Added Planet Capacity (Light/Performance/Resource), Dasha Influencer, Alan Leo Progression Graph, Ashtakavarga Transit Strength, Panchang bar, KP ayanamsa variants, Verify Birth Time, and Strongest Planet Finder sections.
- Removed outdated 'Upcoming Features' section (Ashtakavarga is now live).
-
Progression chart — Venus (and any planet) showing 00:00:00 at sign boundary
- Root cause: ephemeris-120 API rounded planet lon to 3 decimal places (149.9996→150.000), but stored sign from the unrounded value. The display computed 150%30=0 → 00:00:00 in the wrong sign.
- Fix: new roundLon() helper caps the rounded value just inside the original sign (149.999) when rounding would cross a sign boundary. Applied to all standard planets, outer planets, and house cusps.
- Also fixed formatDegree min+1=60 overflow (29:60:00→30:00:00) and added sign-boundary tolerance in adjustChartDataForKP for the D1/progression chart path.
-
Profile Notes — moved to form bar; date/time narrower; AI Prompt label inside button
- Notes icon moved from floating bottom-right button into the form bar (between gear and Submit). Shows when a profile is loaded, hidden otherwise. Only one FAB (AI Prompt) remains at bottom right.
- Date input narrowed: 140px → 120px. Time input narrowed: 110px → 95px. Frees horizontal space in the form bar.
- AI Prompt label moved inside the button (CSS ::after) so it sits directly below the icon. Button shape changed from circle to rounded rectangle (14px radius, 52×56px).
-
Profile Notes — icon size, name chip width, resizable textarea; AI Prompt label
- Trigger button reduced from 40px to 36px to match other icon sizes; drawer header icon constrained to 15px.
- Profile name chip max-width increased (140px → 200px) so longer names like 'Hari Babu Bonda' show more.
- Notes textarea: resize:none → resize:vertical with min-height 60px — drag bottom-right corner to expand.
- Added 'AI Prompt' text label above the AI FAB button so users know what it does.
-
Profile Notes — Add/Save button text now white in light mode
- Button text was hardcoded #000 (black), showing as black on purple (#663399) in light mode. Changed to var(--primary-foreground) so it uses white in both light and dark themes.
- Fixed timing issue: profile-notes.js now polls for an already-loaded profile on init, so the pen icon appears even when ProfileIntegration fires before the deferred script loads.
-
Profile Notes — add, edit, delete per-profile notes from a desktop drawer
- A pen icon appears in the bottom-right corner (above the AI FAB) when a profile is loaded. Click it to open a 330px notes drawer.
- Notes are stored in D1 (profile_notes table) per user + profile. Fetched lazily on drawer open — zero impact on page load.
- Toolbar: B (bold), I (italic), • List (bullet), — (divider). Select text then click B or I to wrap.
- Full CRUD: add, inline edit, delete. Newest note shown first. Desktop-only (hidden below 1024px).
-
Engine moved to deferred external file — HTML now parses before 256KB of JS executes
- The entire 5250-line RVA Engine IIFE was inlined in the page, forcing the browser to parse and execute ~256KB of JavaScript before it could render anything. It's now in public/js/rva-engine.js loaded with `defer` — same code, just delivered as an external resource so HTML parsing is unblocked.
- Inline CSS (221 lines, ~5KB) moved to public/css/rva-softwares.css and loaded via a <link> tag. Reduces initial HTML payload and allows the browser to cache the stylesheet independently.
- Auto-submit timeout replaced: was 500ms outer + 800ms inner (1.3s total). If lat/lon are already in the URL params / storedData they're available immediately, so we submit right away. Otherwise polls every 100ms up to 2s for profile-integration to fill them. Profile auto-load from saved profiles now triggers chart ~1s faster.
- Translation helpers (_tPlanet, _tSign, _tRetro) no longer query localStorage on every render call. Language is cached at IIFE init and updated via the languageChanged custom event.
-
Chart-first render: defer capacity chain until Planet Capacity scrolls into view + other loading wins
- Previously every form submit fired 7+ API calls in parallel or cascaded (ephemeris + retrograde/analyze + 6-step capacity chain: powerful-planet + light + performance + resource + combine + planet). The chart had to wait in line behind all of them. Now retrograde/analyze + the capacity chain only fire when the Planet Capacity section (rva-planet-mount) scrolls into view — users who only want to see the chart save 7 API calls per submit.
- Deferred head scripts: chart.min.js, config.js, tooltips.js all gained `defer` — they no longer block the HTML parse. Safe because all three are only touched inside function bodies (new Chart, window.AppConfig, window.tooltipUtils) that fire after DOMContentLoaded.
- Google Fonts: combined Inter + Lato into a single stylesheet request (was two), and added `crossorigin` to the googleapis.com preconnect (was missing — preconnect was wasted without it).
- sessionStorage cache for /api/auth/me: was fetched on every page load for logged-in users. Now cached for 10 minutes, keyed on the token so logout/login invalidates.
- Killed the setInterval polling (100ms × 50 tries) that was looking for the profile dropdown wrapper. Replaced with a one-shot MutationObserver + 'ui:initialized' event listener so we attach the moment the component is ready, no polling.
- IntersectionObserver rootMargin tightened from 200px to 50px — lazy blocks (Alan Leo, KP, Aspects, now Planet Capacity too) no longer pre-fetch when the user is still 200px away.
-
Panchang is now opt-in (default OFF) — saves one API call per submit for users who don't need it
- Previously the panchang bar was shown by default and /api/astro-modules/daily-panchang was fetched on every form submit, even for users who never look at it. Now the toggle in Settings defaults to OFF, and the API call is skipped entirely when disabled (Promise.resolve(null) fills its place in the pipeline).
- Bar also starts with 'hidden' in HTML so there's no skeleton flash on page load. applyPanchangState() reveals it only when the user has opted in AND the data is populated.
- Users who had explicitly turned the toggle ON (localStorage.panchangEnabled === 'true') keep it ON. Users who never touched the toggle (no localStorage entry) will now see it OFF — this is the intended behaviour change.
-
Chart planets + house cusps: pink hover effect for a friendlier UI cue (light + dark mode)
- Mousing over a planet glyph or a house cusp (Roman numeral) in the SVG chart now fades its colour to pink (#ec4899) with a 150ms transition. Tooltips still appear as before — the hover colour is an additional cue that the glyph is interactive.
- Scoped to 'svg .planet-text', 'svg .house-element', and 'svg .house-text' so it only targets SVG text elements; the div-based South Indian chart styles are unaffected. '!important' is required because charts.js sets each text element's fill via an inline style/fill attribute.
- Dark mode fix: global.css recolors these glyphs via '[data-theme="dark"] svg text[fill="..."] { fill: #ffffff !important }' at specificity 0,2,2 — the base hover rule tied and cascade-order made the hover lose. Added a matching 'html[data-theme="dark"] svg .planet-text:hover' override at specificity 0,3,2 so the pink colour wins in dark mode too.
-
Reload button: positioned top-right of KP cards; removed duplicate on Western Aspects
- KP Planets card: wrapped the heading in a flex/justify-between row so the lazy-block 'Reload' button now lands at the top-right of the card instead of dropping to the bottom (the lazy-block code anchors the button to the heading's flex parent — the card had a bare h4 with no flex wrapper, so 'parentElement' was the card div and the button got appended after the table).
- House Cusps card: same flex wrapper applied for visual consistency (no Reload button here — the lazy-block only registers one button per container, on the first heading).
- Western Aspects: removed the duplicate dynamic 'Reload' button. The section already has a static 'Recalculate' button on the right side that does the exact same thing (clears the aspects cache and re-renders). Added a 'skipButton: true' option to registerLazyBlock and pass it for Western Aspects only — so the lazy-block's auto-load-on-scroll behavior is preserved but no extra button is added.
-
KP tables mobile: remove unwanted gaps between columns (especially House Cusps Star column)
- Root cause: Tailwind's 'w-full' set table width to 100% of the card, and our 'min-width: 540px' forced it wider than content needed on mobile. With auto table-layout, the browser distributed that extra ~200px across columns — and most of it landed on the Star column, producing the big empty gap between Star and Sign Lord on House Cusps.
- Fix: on mobile, override the table width to 'auto' (size to content) and drop the min-width. Columns now sit at their natural width with no extra padding distributed. Horizontal scroll still kicks in if natural content exceeds the card (e.g. on the wider KP Planets table).
-
KP tables mobile: 'Bhava' → 'B' header + tighter cell spacing
- Mobile (<lg) header abbreviation: Bhava → B (in KP Planets table). Desktop keeps the full word. Done via responsive Tailwind spans.
- Reduced cell padding from py-2 px-2 (8px) to 6px 4px on mobile, and dropped table min-width from 620px to 540px. The whitespace between columns is now noticeably tighter — same number of columns, less wasted gap.
-
KP tables: remove sticky-column shadow line + further header abbreviations on mobile
- Removed the 2px box-shadow that was rendering as a vertical line beside the frozen Planet/House column. Sticky behavior still works (via solid cell background); just no visual divider.
- More mobile header abbreviations: Planet → PL (capitalized to match style), Sign → SI (both Planets and House Cusps tables). House → H stays. Desktop (≥1024px) still shows the full words.
-
KP tables mobile: 'Planet' → 'Pl' / 'House' → 'H' header + reliable horizontal scroll
- First-column header is abbreviated on mobile (<lg): 'Planet' → 'Pl', 'House' → 'H'. Desktop (≥1024px) keeps the full word. Done via responsive spans, no JS.
- Re-added `min-width: 620px` on `.kp-sticky-table` under the mobile media query. Previous attempt removed it assuming the table would shrink to fit — but at 12px font with nowrap cells the content is ~534px min, which under some browser table-layout heuristics can end up clipping columns without triggering scroll. Forcing min-width > card width guarantees overflow, which guarantees the horizontal scrollbar appears and the sticky first column becomes meaningful.
- Cleaned up duplicate scrollbar CSS, explicit `overflow-x: auto` on the scroll container.
-
KP tables: restore default 12px font on mobile (matches Significators table)
- Previous mobile CSS shrunk KP tables to 10–10.5px to squeeze in all columns. User feedback: that reads smaller than the neighbouring Significators table which stays at text-xs (12px). Removed the font-size and padding overrides — KP tables now use the same 12px / py-2 px-2 as the rest of the page.
- Kept the width-saving tricks (2-line lord headers, Star cell wrapping, no forced min-width) so all columns still fit the card without horizontal scroll at 12px.
-
KP tables mobile: drop min-width, keep 2-line 'Sign / Lord' headers, let Star cell wrap — fits a phone screen with no horizontal scroll
- Earlier mobile CSS was flattening the 2-line 'Sign Lord' / 'Star Lord' / 'Sub Lord' / 'SS Lord' / 'SSS Lord' headers onto one line (via `th br { display: none }`), which made the lord columns eat horizontal space. Restored the 2-line headers on mobile to match the desktop look.
- Allowed the Star cell to wrap (`white-space: normal`) so 'U. Bhadrapada (4)' breaks into two lines instead of stretching the column. Every other cell stays single-line.
- Removed the forced `min-width: 520px/560px` on mobile — the table now shrinks to fit the card width, so on a 375–430px phone all 10/9 columns are visible without horizontal scroll. Sticky first column is preserved in case the table still overflows on very narrow screens.
-
KP Star column: Uttara/Purva prefix abbreviation now actually matches the source names
- Previous fix used map keys like 'U.Bhadrapada' — but the nakshatra source in kp-sublords.ts uses full Indian names ('Uttara Bhadrapada', 'Purva Phalguni'). So the map never matched and the column still read 'Uttara Bhadrapada (4)'. Updated keys to the actual source names: 'Uttara Bhadrapada' → 'U. Bhadrapada', 'Purva Phalguni' → 'P. Phalguni', etc.
-
KP tables mobile: horizontal swipe was broken — removed overflow-y:hidden
- Prior fix set 'overflow-y: hidden' on the scroll container, which on iOS can block horizontal swipe gestures. Removed that rule and added 'touch-action: pan-x pan-y' so the browser explicitly allows both horizontal table scroll and vertical page scroll.
-
KP tables mobile: actually freeze Planet/House column during horizontal scroll (was silently broken)
- The sticky first column was intended but not working — Tailwind's Preflight sets 'border-collapse: collapse' on tables by default, and that breaks 'position: sticky' on <td>/<th>. Added 'border-collapse: separate; border-spacing: 0' on .kp-sticky-table to let sticky actually take effect.
- Hardened the sticky rules: solid backgrounds on the frozen first cell (so scrolled row text never bleeds through), a row-hover override on the frozen cell, and an 'overflow-y: hidden' on the scroll container so the horizontal scroll is clean.
- Rules are no longer gated behind max-width:1024px — they're always on (desktop fits the card, so there's nothing to stick). Added min-width to the first column (44px / 38px on <480) to keep the Planet/House label from visually collapsing.
-
KP tables: keep full 'Bhadrapada', only abbreviate the Uttara/Purva prefix with a space (U. Bhadrapada)
- Previous abbreviation was too aggressive — 'U.Bhadra' lost the distinctive '-pada' ending. New rule: only the prefix is shortened (Uttara → 'U. ', Purva → 'P. ') with a space after the period, and the core name is kept full: 'U. Bhadrapada (4)', 'P. Bhadrapada', 'U. Phalguni', 'P. Phalguni'.
- Ashadha is kept as the shorter 'Ashada' spelling (P. Ashada / U. Ashada) to match the most common display form. Single-line wrapping preserved via nowrap on mobile.
-
KP Planets + House Cusps tables: compact mobile layout with 2-letter signs and shortened nakshatra names
- Sign column now uses 2-letter codes (Ar, Ta, Ge, Cn, Le, Vi, Li, Sc, Sg, Cp, Aq, Pi) instead of 3-letter (Ari, Tau, Gem, …) — Cn disambiguates Cancer from Cp (Capricorn).
- Nakshatra names shortened in the Star column: Ashwini → Aswini, Mrigashira → Mrigasira, Ardra → Aridra, Pushya → Pushyami, P./U.Ashadha → P./U.Ashada, Shravana → Sravana, Shatabhisha → Satabhisha, P./U.Bhadrapada → P./U.Bhadra. Format changed from 'Name - pada' to 'Name (pada)'.
- Mobile: reduced table min-width from 680px to 560px (520px on <480px phones), tightened cell padding, added nowrap on cells — less horizontal scroll on phones while all columns remain visible.
-
Alan Leo year-aspect table: short planet names + mobile-responsive columns
- Dropped the redundant long planet name from the Natal/Progressed cells (was 'Ju Jupiter', now just 'Ju'; Midheaven stays as 'X') — short codes were already shown and the full name was pure noise.
- On mobile (<md), hide the R, +/-, and Base columns so the table fits a phone screen — Natal, EffR, Deg, Progressed, EffR, Deg, Aspect, Orb, and Final remain visible. Reduced cell padding to px-1 on mobile for more room.
- Mobile-only header abbreviations: Natal → Nat, Progressed → Pro, Aspect → Asp. Aspect names also abbreviated on mobile: conjunction → Conj, sextile → Sex, trine → Tri, square → Sqr, opposition → Opp. Full words remain at md+ breakpoint.
-
North chart: house numbers no longer overlap planets in crowded houses; removed tooltip from house numbers
- Houses 5, 6, 8, 9 (corner triangles) had their green house number label sitting on top of planet text when multiple planets occupied the same sign — numbers now placed at the outer edge of each triangle, away from the planet text anchor
- Removed hover tooltip from green house-number labels (1–12) — tooltip was redundant since the sign code is already visible inline
-
Planet tooltip: 2-letter sign code + HH:MM:SS (Me | Ta 15:23:45 | Krittika-4 (Su))
- Tooltip now reads e.g. 'Me | Ta 15:23:45 | Krittika-4 (Su)' — 2-letter sign code matching the NI chart house labels (Ar Ta Ge Cn Le Vi Li Sc Sg Cp Aq Pi) and HH:MM:SS for degree within sign (was Tau 15°23'45").
-
North chart: show sign short code next to each house number (1 Ar, 2 Ta, …)
- Each of the 12 green house labels now carries the 2-letter sign code for that house based on the current ascendant (Ar Ta Ge Cn Le Vi Li Sc Sg Cp Aq Pi) — e.g. a Virgo ascendant reads '1 Vi', '2 Li', '10 Ge'.
-
North chart: constant-size labels — drop degrees (to tooltip) when a house is crowded
- Previously crowded houses either dropped planets or shrank the font; now the label stays at 13px and instead drops the degree suffix — so a busy house shows 'Me Su' side-by-side while a calm one still shows 'Me 19:31'. Full DD:MM remains on the hover tooltip via data-longitude.
-
North chart: never drop planets, fix house tooltip sign, keep green house numbers in dark mode
- Crowded houses previously dropped any planet past maxY (e.g. Mercury silently missing next to Sun+cusp) — now compresses through tiers (13px → 11px → 2-per-line → name-only) so every planet renders; full degrees still visible on hover tooltip
- House-number hover used to always label H1 as Aries regardless of ascendant (buildChartData was falling back to Aries); now populates window.astrologyApp.chartsLoaded.natal with the actual signData + ascendant
- Dark mode was repainting the green NI house numbers pink (#f68e8e); restored to the light-mode green
-
Advanced Settings: remove Graha Hiding; House System fixed to Placidus
- Graha Hiding dropdown removed from the Advanced Settings panel
- House System dropdown now shows only Placidus (other options removed)
- Settings grid reflowed from 4 to 3 columns to match the remaining fields
-
Verify Birth Time popup: correct sunrise (was off by ~2h)
- The /api/astro-modules/daily-panchang endpoint returns sunrise as an epoch-ms number, not a string — the popup was treating it as a string and sending garbage to /api/btr/verify
- Now converts the epoch ms to HH:MM:SS using the birth place's timezone offset (matches /btr/ behavior, plus the +4 min Vedic adjustment)
- Summary strip sunrise, LMT, and LMT & Sunrise values now match the full /btr/ page for the same input
-
Verify Birth Time popup: global styles + HH:MM:SS + explicit Use button
- Tatwa pills, dark Nadi header, and match badges weren't rendering because Astro's scoped CSS doesn't cover innerHTML-injected rows — styles made global (vbt-* prefix keeps them isolated)
- Nadi table now has a 'Use' button column instead of row-click auto-apply — birth time only changes when you explicitly choose a row
- Use buttons (both Ranked candidates and Nadi table) now write the full HH:MM:SS value, matching the seconds-precision time picker on the form
-
Verify Birth Time popup: /btr/ look + click-row-to-rectify
- Added summary strip above the Nadi table — Weekday, Sunrise, LMT, LMT & Sunrise, Star Lord, Nadi Row, Tatwa, Planet 90/V, Gender/Star, Ascendant — same 10 tiles as the full /btr/ page
- Tatwa cells are now colored pill badges (FemJala / MalePrithvi / MaleAkash / FemVayu / MaleTejo) in both Ranked candidates and the Nadi table, not plain colored text
- Nadi table has the dark-navy header bar and highlighted active weekday + sign-type columns
- Click ANY row in the Nadi table to rectify birth time to that row's T2 (HH:MM) — same behavior as /btr/
- API /api/btr/verify now returns sunrise/LMT/final-time strings so the popup can render the summary without extra calls
-
Verify Birth Time popup: visual polish
- Cleaner panel shell — rounded card with soft shadow, gradient header, subtle section dividers
- Scan controls: uppercase micro-labels, focus ring on inputs and selects, primary-tinted Run button with lift-on-hover
- Candidate table: sticky column headers, row hover, best/current rows now use a left-edge color bar + subtle tint (no more heavy full-row wash)
- Match indicators turned into small circular badges (green tick / muted cross) instead of plain characters
- Use button is now a pill; mobile tightens padding and font-size for narrow viewports
- Status bar shows as a left-accent info block; error state uses a matching red accent
-
Verify Birth Time: clock icon button next to the settings gear
- Moved Verify Birth Time from a standalone button below the form to an icon button inside the form bar, right before the settings gear
- Keeps the Submit split-menu (Save / Edit / Delete) reserved for profile management — Verify stays a pre-submit data action
- Same popup and Nadi Tatwa engine; only the toggle location changed
-
Verify Birth Time popup (Nadi Tatwa) — rectify without leaving the form
- New 'Verify Time' button below the birth-data form opens an inline popup
- Set a scan window (default −10 / +5 minutes), pick gender, optionally auto-detect sign type
- Runs the Nadi Tatwa rectification via a new /api/btr/verify endpoint — same engine as /btr/
- Shows ranked candidate times with T1 / T2 / row / tatwa / antar / gender / 90-min planet / Vinod planet, plus a visual Nadi table slice centered on your row
- Click 'Use' on any candidate — writes the bucket-midpoint T2 back into the birth time field, ready to submit
- Engine extracted to src/lib/rva/nadi-tatwa.ts so the API and /btr/ page share the same math
-
Planets Analysis progressed capacity uses v4 total (no double-light)
- Sub-row capacity values in Planets Analysis were recomputed locally with the pre-v4 formula (perf×0.6 + res×0.4)×light — this double-applied light and used stale weights
- Now reads capacity.total directly from the API response, matching the v4 formula (perf×0.7 + res×0.3) used by the Dasha Bar and natal main row
- Fixes the Jupiter sub-row showing 49/11 when Dasha Bar showed 64 for the same progressed year
-
RVA_MASTER: section checkboxes, age range, and presets
- Age range inputs (0-120) with auto-synced year display — think in ages, not just years
- Section checkboxes: Chart, D9 Navamsha, Dynamic Natal, Capacity, House Analysis, Dasha/Bhukti, Progression
- Uncheck any section to trim prompt size for NotebookLM's paste limits
- Presets: Quick (Chart+Capacity+Dasha), Full (all on), Timing (Dasha+Progression+Dynamic)
- Preferences saved to localStorage — your selections persist across visits
- Focus filter (Career/Marriage/Health/Wealth) still narrows house analysis
-
RVA_MASTER: dasha/bhukti show DI-connected bhavas and houses
- Each Mahadasha and Bhukti line now includes Dasha Influencer's bhava (whole-sign) and house (Placidus)
- Shows the sign where the DI planet sits + strongest planet in that sign
- Gives AI the house connections needed for timing and area-of-life predictions
-
RVA_MASTER: Dynamic Natal Chart positions in AI prompt
- Shows progressed positions of Ma/Me/Ju/Ve/Sa at start/end of range when they differ from natal
- Su/Mo/Ra/Ke and cusps remain frozen per Dynamic Natal Chart Rule 1
- Lists sign-change years within the selected range
- Helps AI identify when dynamic planets have moved signs or flipped retro/direct
-
RVA_MASTER: structured AI prompt with range filter and focus areas
- RUN RVA_MASTER header signals AI this is a structured data prompt
- Range picker (From/To year) + quick chips (5y/10y/60y/All) — filters dasha and progression to selected years only
- Focus filter (Career/Marriage/Health/Wealth) narrows house analysis to relevant houses
- Pre-computed capacity scores (Light/Perf/Res/Total) inline — AI interprets numbers instead of guessing
- Dasha timeline range-filtered with capacity + DI scores per Maha/Bhukti period
- Progression summary: year-by-year +/- score with top positive and negative aspect
- Compact ~60-80 line format optimized for NotebookLM paste limits
- House analysis includes Planet/Occ/Lord/Karaka yearly change sub-rows (range-filtered)
-
KP Tables: consistent planet degrees across all tabs
- KP Tables API was dropping seconds from birth time during local→UTC conversion
- Increased planet degree precision from 2 to 6 decimal places in retrograde/analyze API
- All tabs (Birth Chart, KP Tables, etc.) now show identical planet positions
-
KP New ayanamsa: fix ~22-second planetary degree offset
- KP New (NKPA) was using Swiss Ephemeris built-in Krishnamurti (KP Old) instead of the custom NKPA formula
- Applied custom adjustment (Lahiri - NKPA) to all planet longitudes, house cusps, and outer planets
- Fixed in birth-chart, retrograde/analyze, alan-leo, capacity/progression, ashtakavarga/transit-strength APIs
- Degrees now match V1 XE Man reference software within 1-2 arc-seconds
-
Alan Leo: slow planet star-lord follows raw retro, not degree
- Ju/Sa/Ur in progression now keep their NATAL nakshatra when raw motion is Direct
- Switch to progressed nakshatra only when the planet is physically retrograde
- Degrees always take the progressed value (unchanged)
- Fixes wrong Ra/Ke flip on Jupiter — e.g. 2029 Ju square Ma now scores -36 (was +36)
-
AI Prompt: one-click chart export for LLM analysis
- Floating AI bot button (bottom-right) copies a ready-to-paste chart summary to the clipboard
- Includes D1 planets with sign, degree, nakshatra, pada, star lord, retrograde and bhava
- Includes D9 Navamsha with position from the D9 ascendant
- House Analysis scores with yearly progression changes (Occupant / Lord / Karaka / Total)
- Full Mahadasha + Bhukti scorings with DI and R4 values
- Alan Leo yearly progression aspects — choose 60 / 80 / 100 / 120 years on hover
- Preamble + 7 interpretation prompts included so the LLM knows exactly what to analyse
-
Dasha Bar: R4 scores + dasha planet scoring
- Pulled R4 scores from the Rule 4 table in Dasha Bar
- Score the dasha planet itself (not the star lord) in Dasha Bar
- Default scores for the Dasha Influencer
Software Updates
Changelog
Day-to-day changes across every RVA software — features, fixes and improvements. 89 updates across 5 softwares.
-
Charts page: complete overhaul — dasha widget, progression, transit, share, polish
- Dasha Timeline — rva-softwares style antardasha widget (nav buttons, expandable bukthi boxes, year timeline) on Charts page.
- Current bukthi highlighted in green; prev/next mahadasha navigation; correct highlighting when navigating.
- Alan Leo western progression bar chart replaces Gantt; year-range control (+/- 10yr, All) to zoom any life period.
- Transit Ashtakavarga line chart from /api/v1/ashtakavarga/transit-strength with year +/- control.
- D9 Navamsha now renders correctly as default right-side chart (was showing transit despite D9 selected).
- Left/right chart selects now functional — choosing any divisional chart (D1–D60) loads and draws it.
- Planet Positions table fully dynamic from API data; nakshatra column fixed (was [object Object]).
- Sade Sathi status card (Rising/Peak/Setting/Not Running) computed from transit Saturn vs natal Moon.
- Panchang cards updated to Gatsby accent-border style (4px colored top stripe, white bg, border).
- Share link button in toolbar — creates 90-day KV link; ?share= auto-fills and submits the form.
- Removed redundant 'Birth Charts & Divisional Charts' heading; renamed 'Dasha Timeline & Analysis' to 'Dasha Timeline'.
-
Mobile birth form readability
- Widened mobile date field so 'dd-mm-yyyy' shows in full
- Shrunk Name field so Date and Time stay readable side-by-side
-
Print report, Move House button, panchang restyled to match /rva-softwares/
- Print Report: new 🖨 Print Report link at bottom of results opens a formatted A4 print modal (chart + 4 KP tables). Ctrl+P shortcut supported.
- Move House: removed from settings panel; new 'M' button before settings icon opens popup with house 1-12 selection. Button shows M·N when active. Resets to Original.
- Panchang bar: redesigned to match /rva-softwares/ exactly — bigger icons, label on top (muted), value bold below, violet/blue/yellow/orange icon colors.
- Sign names use 2-letter abbreviations (Ar/Ta/Cn/Le etc.) in all KP tables.
- Su, Mo, Ra, Ke no longer show [R] retrograde marker.
-
All KP tables + aspects restyled to match /rva-softwares/ exactly
- 4 KP tables (Planets, House Cusps, Significators Planet/House): restyled with white rounded-xl panels, slate-50 thead, hover rows, colored lord columns (blue/purple/orange/pink/teal) matching /rva-softwares/ exactly.
- Planet Aspects grid: each cell now shows aspect symbol + (A)/(S) status on line 1 and exact orb° on line 2.
- House Aspects grid: now computes actual western aspects between planet degrees and house-cusp degrees client-side.
- Western Aspects list: flat list restyled with white panels, slate-50 headers, hard aspects in red.
-
All 42 Kundali Matching concept pages — complete rule library
- Created 41 dedicated concept pages covering all Vedic, extended South Indian, and Western synastry matching rules (#1–42).
- Pages: /dina-kuta, /gana-kuta, /yoni-kuta, /rashi-kuta, /graha-maitri, /rajju, /vedha, /vashya, /mahendra, /stree-deergha, /varna-kuta, /nadi-kuta, /moon-hemmed, /moon-associates, /astakavarga-matching, /kuja-dosha, /malefics-matching, /ascendants-match, /ascendant-lords, /seventh-houses, /seventh-lords, /eighth-lords, /eight-planets-matching, /ascendant-moon, /venus-mars, /venus-position, /attractions-synastry, /exchange-of-views, /bondage, /family-attachment, /bad-aspects, /position-malefics, /five-year-progressions, /transits-rule, /individual-marriage-yoga, /seventh-uranus, /seventh-lord-retrograde, /similar-combinations, /dasha-significance, /male-female-planets, /rahu-ketu-match.
- Shared CSS (kuta-concept.css) for all pages: meta card, varna badges, compatibility tables, example blocks, callouts.
- All 42 sidebar entries updated from hash anchors to dedicated page URLs.
- Old /concepts/kundali-matching/varna-kuta page removed.
-
Dasha heading colors — groom purple, bride pink to match print design
- Groom 'Current Dasha' heading now uses brand purple (#7c3aed) matching the print report, was dark navy (#1d4ed8).
- Bride heading keeps pink (#be185d).
-
Fix calculation — apiSuccess meta optional + .ok/.success mismatch
- apiSuccess() meta parameter made optional so section APIs (moon-vedic, other-vedic, western) can call it without chart-level meta.
- Frontend now checks response.ok instead of response.success to match the ApiResponse envelope schema.
-
Fix 'Cannot read ayanamsha' crash on chart calculation
- Removed unused chart.meta.ayanamsha read in calc-service.ts that threw when chart meta was momentarily undefined.
- Added optional chaining (chart.meta?.julianDay) for defensive safety throughout computeChart.
-
Fix 500 error on calculate — tz field normalization + real error messages
- charts.ts API now maps tz → timezone so frontend timezone values are correctly parsed.
- Frontend now reads the JSON error body before throwing, showing the actual server error instead of a generic HTTP 500 message.
- Section API calls (moon-vedic, other-vedic, western) isolated — updating one rule cannot affect others.
-
Birth chart style matched exactly to RVA Software
- Background color changed from #ffffdc to #fefddc (cream match).
- Planet text: 13px (was 12px), normal weight, orange house cusps rgb(255,87,34) (was red).
- Center info block: left-aligned at x=106 with clip-path, 27px line spacing, timezone added.
- Sort order: ascending for Aries–Virgo signs, descending for Libra–Pisces (matches rva-engine).
- Compact mode (>6 items): houses 1-per-line, planets 2-per-line at 11px with DD:MM format.
- North Indian chart: updated colors and positions to match RVA Software layout.
-
Print report redesign — black badges, Vedic combined, Rasi/Nakshatra/Charan mid-section
- Score badges changed from purple to black; Final Score badge now blue.
- Scores section: 3 badges (Astakoot, Vedic combined, Western) + Rasi/Nakshatra/Charan middle + large Final Score.
- Vedic badge shows combined Moon Vedic + Other Vedic score out of 100.
- Header table: Nakshatra, Rasi, Charan in separate columns; Marriage Date replaces Manglik.
- Factor table columns renamed: S.No / Points / Scored (was # / Max / Score).
-
One-page A4 print report — dynamically built from live chart data
- Print FAB (bottom-right) generates a compact A4 portrait page on demand.
- Header table: groom/bride names, birth date, time, nakshatra, manglik status.
- Score banner: Ashtakoot, Moon Vedic, Other Vedic, Western, Overall, Grade.
- Three factor tables (Moon Vedic / Other Vedic / Western) in a 3-column grid.
- Both natal charts cloned as SVG side-by-side; current Dasha (Maha / Antar) below.
- Life graph captured from live canvas as PNG and included at foot of page.
-
Share icon disabled until Submit; 60-day Alan Leo graph; charts always one horizontal line
- Share button now visible but grayed-out before Submit, enabled after calculation.
- Share button repositioned: after Translate icon, before Gear+Submit.
- Alan Leo graph reduced to 60 data points (was 120) for faster rendering.
- Charts always stay on one horizontal line (flex nowrap + SVG scales within container).
-
Chart.js local, sticky print FAB, charts closer, progression labels cleaned up
- Chart.js served locally (was CDN — caused 'Chart is not defined' when CDN blocked).
- Print button moved to sticky FAB at bottom-right corner.
- Progression tabs: removed 'GROOM/BRIDE NATAL CHART' subtitle text.
- Charts layout changed to flex-centered — natal and progressed charts closer together.
-
South/North toggle, centred tab buttons, dasha design, date alignment, Alan Leo auth fix
- South / North Indian chart style toggle button added to Charts & Dasha header.
- Print button added (Ctrl+P also works) — all chart panels visible in print.
- Tab buttons (Birth, Groom Progression, Bride Progression) centred.
- Dasha Antardasha card now has a distinct purple left-border accent.
- Marriage date field aligned with Bride row controls (same place-field width).
- Alan Leo API auth: Referer header accepted as fallback when browser omits Origin.
-
Marriage date field, nakshatra below names, progression +/− year control, dasha design, closer charts
- Marriage date picker added to Groom row in the form bar.
- Nakshatra / moon sign info moved to sit directly below couple names in summary bar.
- Progression year control replaced with styled − / + buttons (like RVA Software).
- Current dasha redesigned to single-line 'Mahadasha - Planet date to date' style.
- Charts gap reduced so natal and progressed charts appear side-by-side more compactly.
- Alan Leo graph error handling improved; credentials and timezone fallback fixed.
-
Full report UI: birth charts, Vimshottari dasha bars, Vedic & Western score columns, life graphs
- Charts & Dasha section placed above score columns.
- Dasha bars (groom + bride) rendered below birth charts using dasha-timeline component.
- 3 score columns: Moon Vedic (50pts), Other Vedic (50pts), Western (100pts) with A/B/C/D grade badges.
- Life graph shows progressed aspect scores age 0–70 for both partners.
- Planetary Positions section removed.
No updates yet. Check back soon.
No updates yet. Check back soon.
No updates yet. Check back soon.
No updates yet. Check back soon.
No updates yet. Check back soon.
-
Click any Nadi row to rectify the birth time
- Rows are now clickable — the birth time updates to that row's T2 (bucket midpoint, so recomputation lands back on the same row) and the calc re-runs automatically
- Hover cursor turns into a pointer; the currently matched row stays non-clickable to avoid no-op re-runs
- Pairs naturally with the T2 column — scan the table for a row whose planet/tatwa pattern fits known life events and click to lock it in
-
Nadi table shows T2 (clock time) alongside T1
- New T2 column next to T1 in the 480-row Nadi table
- T2 = T1 reversed through the LMT and sunrise adjustments — i.e. the real wall-clock birth time that maps to that row
- Makes it easier to scan rows and pick a rectified birth time without running the math in your head