A running log of what's been added or changed in the Astrology 101 quick reference, freshest first.
Heard from
Click a name to see only the releases that came from their feedback.
v4.72.7 · current
10 May 2026
The site has moved from https://sreebalakrishnan.in/astrology101 to https://atv-companion.sreebalakrishnan.in — its own subdomain, no path prefix. All hardcoded URL references in the codebase swept and updated.
Files updated
release-notes.html — four prose example URLs in old release notes (v4.30.0 hero share URL, v4.62.0 deep-link example, v4.30.1 mitigation note, v4.62.0 copy-anchor example).
workbook-avatar-template.md — the Matsya avatar deep-link example.
.github/workflows/deploy.yml — the comment at the top of the workflow now reflects the new URL.
What stays unchanged
All inter-page links are relative (href="learning-companion.html", href="elements.html", etc.), so they keep working at any host without modification.
The deploy target — still static.app, same project ID, same workflow. Sree pointed the new subdomain at the same static.app deployment, so no GitHub Action change needed.
Cloudflare Web Analytics (v4.72.6) — token-based beacon, hostname-agnostic. Already collecting clean traffic on the new subdomain.
Side benefit for analytics
The Cloudflare dashboard was configured for atv-companion.sreebalakrishnan.in from the start. Until today, traffic from sreebalakrishnan.in/astrology101 still got counted (token does the auth, not the hostname), but the dashboard's hostname grouping showed "(other)". With the move, the dashboard hostname now matches the actual traffic — clean grouping in the Cloudflare console going forward.
Deferred — _root/
The _root/index.html file still has an og:url pointing at the old sreebalakrishnan.in. That folder is excluded from deploys (per the rsync exclusions in the workflow), so it's not in production. Left untouched as cosmetic-only.
v4.72.6
10 May 2026
Cloudflare Web Analytics is now live across all 23 pages — page-views only, no cookies, no fingerprinting, no individual tracking, no banner needed. Sree can finally see which pages the cohort actually opens (is anyone reading elements.html? does interpret.html stick? is jupiter-tracker.html getting traffic?) without compromising the calm-page property the rest of the site has protected.
Why Cloudflare Web Analytics, not GA4 / Plausible
Free at our scale (~30-cohort site).
No cookies, no fingerprinting — GDPR-clean by default. No banner needed.
Token-based beacon means it works regardless of which hostname or path the page is served from. Same setup keeps working when (or if) we move from static.app to Firebase Hosting.
One vendor, no analytics middleman — same DNS / CDN ecosystem we'd use anyway.
What changed
Snippet added before </body> in all 23 HTML pages (verified via grep — every page reports 1 occurrence of cloudflareinsights).
The "how today's sky was built" technical pane on the home page used to claim "No analytics. No tracking." Updated to be honest: "One privacy-respecting analytics call — Cloudflare Web Analytics (page-views only, no cookies, no fingerprinting, no individual tracking) so Sree can see which pages the cohort actually opens. No third-party trackers." — so the prose matches reality.
What it tracks
Page URL · referrer · approximate country · browser/device family · time of visit. Not tracked: IP addresses (anonymised on Cloudflare's edge), individual users (no cookies / persistent identifiers), button clicks or scroll depth, anything that could re-identify a cohort member. The dashboard answers "is this page being read?" — not "who read it?"
Open follow-ups
If, in a few weeks, Sree wants events too ("did anyone open the Cabinet drawer?", "how many people clicked the technical pane?") — Cloudflare doesn't do custom events; we'd add Plausible alongside (~$9/mo) or wait until Firebase rollout brings Firebase Analytics. Filed for later.
v4.72.5
10 May 2026
Tidy on the changelog itself — five contributor-attribution corrections + three name canonicalisations across the release-notes archive. The contributor-chip index at the top of this page is auto-generated from data-credits attributes, so cleaning the credits cleans the chip row too.
Re-attributions
v4.70.2 — the KB import line was floating without an owner. Now properly credited to Sree ("imported KB class transcripts 39–43").
v4.59.0 + v4.58.0 — both said "Vikram + Yash Khataokar (ATV brand book)". Yash is the designer; Vikram shared the design files. Updated both entries to credit Yash for the brand book and Vikram for sharing.
v4.71.8 — was credited to "Sree's mentor". In this app's context, Sree's mentor is Vikram. Updated.
v4.62.2 — was "Cohort feedback via Sree (Devanagari on Ether) · Sree (pricing — Option B, build but unlink)". Both items came from Sree directly. Consolidated to a single Sree credit.
v4.62.3 — credited to "Vikram Devatha" — same person as everywhere else. Canonicalised to Vikram. (The full name "Vikram Devatha" stays in the page body where it's an intentional formal naming on the pricing page dedication.)
Name canonicalisations
Arpi / Apri → Arpitha (one canonical form, four spots in body prose + one cohort credit list).
Vikram Devatha in data-credits → Vikram (one entry).
Yash Khataokar in data-credits → Yash (two entries).
Why this matters
The contributor index at the top of release notes parses every data-credits attribute and builds clickable chips per name — clicking a chip filters the changelog to releases that person shaped. Without canonicalisation, the same person showed up as multiple chips ("Arpi" + "Arpitha", "Sathvi" + "Sathvika"). Now one chip per person, and clicking it surfaces every release that name actually contributed to.
Going forward
Rule of thumb when adding new data-credits: use the canonical first name only (Arpitha, Sathvika, Vikram, Yash, Sree, etc.). Sub-clauses in parentheses are fine for context. If unsure who deserves credit, ask or attribute to Unknown.
v4.72.4
10 May 2026
Four targeted fixes in § Four — The Planetary Cabinet after Sree caught a vocabulary mismatch between LC's UI and what Vikram actually says in class. The page used "Honoured / Dishonoured" as poetic UI labels. Vikram never uses those words in transcripts — he says exalted / debilitated or the Sanskrit Uchhasthāna / Nīchasthāna (Uccha / Neecha). Fixed.
1 · Vikram's vocabulary added next to the UI labels
Cabinet lede now reads: "Where a planet is honoured (exalted · Uccha) or dishonoured (debilitated · Neecha)…". Both table headers (Wheel of Honour + Learning Companion · nine planets) carry the secondary terms in a smaller muted style. Both sub-ledes echo the pairing. The data-structure keys (honoured / dishonoured) are kept internal — only visible labels changed.
2 · "Count 7 from exaltation" rule surfaced
Vikram states this rule three times across S23–S25 — "if you count 7 from exaltation, you'll reach debilitation". Verified astronomically: every classical pair (Sun-Aries↔Libra, Moon-Taurus↔Scorpio, Mars-Capricorn↔Cancer, Mercury-Virgo↔Pisces, Jupiter-Cancer↔Capricorn, Venus-Pisces↔Virgo, Saturn-Libra↔Aries, plus Rahu/Ketu) is exactly 6 signs apart = 7th house counting inclusively. A saffron-bordered shortcut callout now sits at the top of the "How exaltation and debilitation work" story panel.
3 · Vikram's "fear-mongering" caveat captured
Inside the same panel, a saffron-outlined pull: "Debilitation is used as a fear-mongering tool — you have to do shanti, you have to do homa. Don't get caught in that. The cancellation rules exist; we'll see them slowly." (Vikram, S25). Important teaching disposition that was missing from the page.
4 · Forward-pointer to Neechabhanga in § Yogas
Same callout closes with a soft "stay tuned for Neechabhanga Raja Yoga in § Yogas later" pointer. § Yogas currently only carries Parivartana (the one yoga Vikram has formally taught at beginner level); when Neechabhanga lands there, this pointer becomes a deep-link.
What's not changed
Story panel substance, the cabinet narrative, the Wheel of Honour data, Court Call quiz, and § Five (Planets) — all left alone. The story is exactly as Vikram tells it; we just added Vikram's actual terminology so when learners go back to the recordings, the words match what they read here.
Specific exaltation degrees
Worth noting: Sun 10° Aries, Mercury 15° Virgo, etc. are not in our KB. Vikram doesn't teach them at this level — sign-granularity only. So the page correctly stops at sign-level too. If degrees ever get added to planets-classical.json, they'll naturally surface here.
v4.72.3
10 May 2026
Two small but important touches in the home-page "how today's sky was built" modal — making the sidereal frame impossible to miss.
1 · Sidereal · Lahiri tag in the modal header
Right next to the title "how today's sky was built" a small saffron sub-tag now reads · sidereal · Lahiri — visible the moment the modal opens, regardless of which pane is active. Tells you what frame the chart is in before you read a word.
2 · One-line callout at the top of each pane
A saffron-bordered first line on each pane explains it plainly:
Learner pane:"Sidereal · Lahiri. The chart is aligned to the actual stars (the zodiac your eyes see), not the seasons — we subtract the Lahiri ayanāṁśa (~24°) from every position so the signs read the way Vikram teaches."
Technical pane:"Sidereal · Lahiri. Engine returns geocentric tropical longitudes; we subtract the Lahiri ayanāṁśa (linear approximation, ≈24.10° at 2026-01-01, +50.3″/yr) before mapping to a sign. Output matches Swiss Ephemeris to within ~1 arcminute."
Both callouts sit ABOVE the first heading, so readers see the framing before any architecture detail.
Why this matters
Anyone arriving from a Vikram cohort needs to see "sidereal" in the first second. Anyone arriving from a Western-astrology background needs to know we're not in their frame. One word, one badge, one line — done.
v4.72.2
10 May 2026
Two changes to the home-page "how today's sky was built" modal. The learner pane was rewritten so it leads with "the math runs live in your browser" as Step 1, instead of burying that as Step 5 under "once a month a program runs". The modal is now link-shareable — there's a § button in the header that copies a deep-link to whichever pane is open, and pasting that URL anywhere reopens the page right at that view.
1 · Learner pane reordered
The old order had readers walking past four steps about static computation before learning the page is actually live. New order:
Step 1 · The math runs live in your browser (~80 KB JS lib, no server, computes for this exact moment)
Step 2 · Tropical → sidereal Lahiri (the ayanāṁśa step)
Step 3 · The Lagna marker (real-time, location-aware)
Step 4 · The chart layout (CSS Grid, named template areas)
Step 5 · It works without internet too (the static fallback, demoted to its proper role)
The technical pane was already correct from v4.71.8; trimmed the "(v4.71.8)" version stamp and updated the footer signature to v4.72.2.
2 · Deep-linkable + copy-link button
Three URL hashes now open the modal directly:
#how-it-was-built — opens with the learner pane (default)
#how-it-was-built-learner — explicit learner pane
#how-it-was-built-technical — opens straight to the technical pane
A small § button in the modal header copies the right URL for whichever pane is currently active. Click it, paste anywhere, recipient lands on the right view. Hash is updated when the user switches tabs (so the URL always reflects what's on screen) and cleared when the modal closes. Back/forward navigation also works — hashchange handler opens or closes the modal as the URL evolves.
Use cases
WhatsApp Vikram a link directly to the technical pane. Drop the learner-pane URL in a cohort message. Embed the hash in a class invitation so newcomers land on the explanation. Same modal, three audiences, three shareable URLs.
v4.72.1
10 May 2026
Made the cross-link bidirectional. elements.html already deep-linked into Learning Companion's #qualities anchor + back to the reference in its footer. The other direction was missing — LC's "Elements, Modes & Duality" section had no inline pointer to the new lab; readers in that section couldn't see it. Fixed.
What changed
Inside LC's § Two — Elements, Modes & Duality section, just below the "Pairing of the four Mahāśaktis" subhead and above the four-up element grid, a new saffron-bordered callout: "→ See the cohort's break-out exercise alive on the Elements lab — image, song, food, brand, animal, news per element, gathered across Sessions 11, 13, 17 & 18b. Plus a 'which element is showing up?' check and a personal element album."
That makes the cross-reference symmetric:
elements.html → LC: top nav, footer "Back to the reference", and the body cross-references section that points to learning-companion.html#qualities.
LC → elements.html: More menu (already in place from v4.72.0) plus the new contextual callout inside § Two.
Why this matters
The Elements lab is where the felt-sense lives; the Qualities section is where the formal definitions live. A learner reading "Earth = practical, grounded, Mahasaraswathi" wants the option to step sideways into "what did Aditya share that felt like Earth?" without hunting through a menu. Now they can.
v4.72.0
10 May 2026
A new peer page — elements.html — bringing back Vikram's break-out exercise from across the year. Sessions 11 (Earth), 13 (Water), 17 (Fire), 18b (Air + synthesis), and 22 (the "which element is showing up?" check). What you remembered as one early exercise was actually a four-part arc; this page collects all four into one place.
What's on the page
The gallery: tabbed picker between Earth · Water · Fire · Air. Each element panel shows six tiles (image, song / story, food / meal, brand, animal / cartoon, news / personality / memory) populated with what cohort members actually brought back from their break-out rooms. Names attached: Anil, Aysha, Kanika, Surbhi, Aditya, Neesha, Sreekandh, Merve, Shobana, Kajal, Rashmi, Shashank and others. Vikram's framing quote sits at the top of each element.
The check — "Which element is showing up?" Five mini-scenarios modelled on Session 22: a war veteran returning home, a startup founder pivoting, a grandmother's dal, a dream about flying, an activist standing in front of a bulldozer. Click an element you sense; reveal explains the mix and points back at the cohort source. Vikram's S22 conclusion built into the feedback: "every situation has a mix — the question is which two are doing the work."
The personal album: four textareas — one per element. "Write one image from your life that feels like Earth / Water / Fire / Air." Saved to localStorage under elements-album-v1. Nothing leaves the device. Mirrors Shashank's photo-album exercise from S18b.
Vikram's intent, captured at the top
The pull-quote on the page is the one I think you'll keep coming back to: "Images can be very powerful way of connecting with planets, signs, houses, elements… that itself will be a gateway to your intuition. That is what we are trying to tap into — intuition, not memory." (Vikram, Session 17.)
Cohort names
I attributed each tile to whoever shared it in class — first names only, matching the convention ether.html already uses for retreat attendees. The transcripts capture them speaking openly in class, but if anyone would prefer their tile anonymised ("a cohort member shared…"), it's a one-line edit per tile.
Wired into the More menu of every page
Elements now shows up in the More menu across all 17 active pages, between Where am I and Interactive · beta — discoverable from anywhere on the site.
Pedagogical arc
Set up by Yin/Yang and Cardinal/Fixed/Mutable in Sessions 8–9; layered on top in 11/13/17/18b; re-applied in S22 with a movie clip; carried forward into chart interpretation when Vikram asks the cohort to name "sign, element, modality, duality" for each house. The element-as-felt-sense built in this exercise becomes the raw material for those readings.
What's deferred
The "balance the elements" diagnostic Vikram ran in S17 (which element is over-active in your chart, which is under-active) belongs alongside the personal album but needs the chart-reading flow to be wired in — that's a v4.72.x follow-up. Also: image upload into the personal album (currently text-only) is filed as a future addition — keeping it simple for v1 to ship today.
v4.71.8
10 May 2026
The home-page chart is now real-time sidereal. Planet positions are computed live in the browser via astronomy-engine (Don Cross, MIT) and converted to Lahiri sidereal client-side. The static today-sky-data.js file stays as a graceful offline fallback. Three goals coexisted: real-time freshness, sidereal correctness, and works offline. We hit all three.
What's new under the hood
Live computation path: computeLive(date) runs at page-load. Calls Astronomy.GeoVector(body, date, true) for Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn. Uses the analytic mean-node formula (Meeus 47.7) for Rahu; Ketu is +180°. Subtracts Lahiri ayanāṁśa to get sidereal. Sub-arcminute accuracy; the page displays to the degree.
Offline fallback: if astronomy-engine isn't loaded (offline / CDN blocked / file:// without internet), load() falls back to window.__todaySkyData — the same Python-generated snapshot as before. Same shape, same Lahiri values, just frozen at the last refresh.
Late-arriving CDN handling: bootLoad() renders once on DOM ready, then watches for Astronomy to become available over the next 2.5 s. If it arrives after first paint, the chart re-renders seamlessly with live data — no flicker, no flash of stale content.
Lagna stays real-time either way: it's pure client-side math (GMST → RAMC → atan2 → quadrant fix → Lahiri), no library needed.
Why this honours "the page works without internet"
Same constraint as before. The CDN script is async + non-blocking. If it never arrives, the page renders normally from the static fallback. If it arrives late, we re-render. If it's blocked entirely, no error surfaces — the user sees yesterday's snapshot, sidereal Lahiri, exactly as they did in v4.71.7. The only meaningful change for offline users: the Moon's intra-day motion isn't tracked. Sun-sign reading is fine; Moon is within ~6° of correct.
"How it was built" pop-up updated
The technical pane on the home page now reflects the new architecture — live computation as the happy path, the static file as fallback, the boot sequence with the late-arrival retry. Vikram and the engineering-curious can click "how it was built" in the centre cell of the chart to see the full picture, including the exact astronomy-engine calls and the Meeus formula for Rahu.
What this opens up
Real-time motion. The Moon now visually shifts signs within a day if you reload at the right moment. Retrograde detection becomes a one-line addition (v.x sign change). Birth-chart overlay is now a small extension rather than a re-architecture — same engine, just a different date.
v4.71.7
10 May 2026
Stats page refreshed against the live numbers. The page had been frozen since around v4.7.0 — claiming "7 HTML pages, 18.7K lines, 58 transcripts." Reality at v4.71.7: 22 pages, 47.6K lines, 43 numbered transcripts (May 2025 → 3 May 2026), 14 MB of knowledge base on disk, 128 release entries, 36 named contributors. Also patched tools/build-stats.py so it auto-discovers HTML pages instead of carrying a hardcoded list of seven.
Numbers refreshed across the page
Vikram's class: 73 → 76 decks; 58 → 43 session transcripts (numbered the way Vikram numbers them in class — the 58 was over-counting by including redirect stubs); 553K → 605K words parsed; 3.4 MB → 14 MB knowledge base on disk.
Quick Reference card: 10,491 → 12,833 lines in learning-companion.html.
Cohort: 53 → 128 release entries; 10 → 36 named contributors. Contributor chip row expanded from 10 to 18 prominent names plus a "+ 18 more" tail link.
Per-page table: the old 7-row table grew to a top-12-by-size table, with a "+ 10 smaller pages" rollup row so the totals still reconcile.
Why the script was wrong
tools/build-stats.py had a hardcoded list of seven pages: the original set from v4.29.0 (when stats.html first shipped). Every page added since — index, interpret, where-am-i, sripati, ether, jupiter-tracker, layers, catch-up, reflect, interactive, about, pricing, plus a few redirects — was invisible to the script. Patched html_stats() to root.glob("*.html"), so future bumps pick up new pages automatically.
What the page itself looks like now
Same structure — four sections (Vikram's class, Static HTML, Quick Reference, The cohort, How it stays honest). Same visual language, same stat-card grid. Just truthful numbers throughout. The closing "Auto-counted, not hand-counted" callout finally lives up to its name now that the script auto-discovers.
v4.71.6
10 May 2026
Two small ones. Sree's Loom intro is now embedded on the home page (replacing the dashed placeholder that's been sitting there since v4.68.0), and the build pipeline got a quiet upgrade so it stops leaving .bak artifacts behind every version bump.
1 · Loom intro embedded
The "A short introduction from Sree" section on the home page now renders the actual Loom video — 2d286ea…f8dec — in a responsive 16:9 frame. Lazy-loaded (loading="lazy"), so it doesn't fetch the player until the user scrolls down to it. The page itself still works without internet — the iframe just doesn't play if you're offline.
2 · Build hygiene — no more .bak files
Earlier today's bumps used sed -i.bak, which always writes a sibling backup file. That cluttered the working directory with 18 *.bak files (~3.4 MB) per bump and snuck three *.bak2 files into git. Switched to a Python file-rewrite that doesn't create artifacts. .gitignore hardened to also catch *.bak2 and *.bak.* patterns as a belt-and-braces against future incidents.
What didn't change
The home page layout is unchanged. The chart, centre cell, "how it was built" modal (v4.71.1), and Daily Gem all stay where they were. The Loom is the same 60-second slot it has always occupied — just with content in it now.
v4.71.4
10 May 2026
Final cut on the LC search. The masthead search bar is gone. The modal — the experience you called "very refined" — is now the only search surface. Opened from the always-visible Search pill (top right), the / keyboard shortcut, or the bottom-of-page "Search again" CTA. The example chips moved into the modal's empty state, where they now belong.
What's gone
The masthead search input (#heroSearchInput) and its surrounding form.
The "Try: Houses · Cabinet · Aspects · …" chip row below the masthead. Same six chips now live inside the modal's empty state, where they're useful when the user actually wants to search.
The "Press / or tap Search" hint — unnecessary now that the Search pill is always visible at the top right.
What changed
Sticky search pill is now always visible. Previously it faded in once the masthead scrolled away. With the masthead bar gone, the pill is the affordance — no reason to hide it.
Modal empty state shows the six example chips. Click any chip → modal pre-fills and runs the search.
/ shortcut, "Search again" CTA, sticky pill — all converge on the same single openSearch() entry point.
Why this won
Three iterations on this in a single day: v4.62.0 added the masthead bar; v4.71.2 demoted it to a passive trigger; v4.71.3 fixed its chip examples; v4.71.4 just removed it. The lesson — your instinct from the start was right: one canonical search experience is better than two, even if the second one looks helpful. The modal's depth (500+ indexed items, drawer-or-jump dispatch, keyboard nav, diacritic-folding) was always the answer.
Cleanup deferred
The masthead-search JS IIFEs (the typeahead at line 12242, the form-submit handler at 12655) are kept as dead code for one more release. They self-skip when the form/input doesn't exist (if (!input || !box) return;). Same for the .lc-masthead-search-* CSS rules. Removing them is a follow-up.
v4.71.3
10 May 2026
Two fixes on the LC search experience. The example chips below the search bar were showing diacritic Sanskrit (Mūlatrikoṇa, Kāla Puruṣa) — terms nobody types and that, when clicked, returned "No matches in the Companion" because the search index keeps the IAST source ("mūlatrikoṇa") and the user's typed form ("mulatrikona") never matched. Two layers, both fixed.
1 · Chips are now English / typeable
Replaced Drishti · Parivartana · Mūlatrikoṇa · Kāla Puruṣa with Houses · Cabinet · Aspects · Yogas · Avatars · Ascendant. Every chip now shows a term a learner could plausibly type AND the modal returns useful results for. The Sanskrit terms are still findable — just not held up as the example.
2 · Diacritic-folding in the search
Added a two-step Sanskrit fold to searchQuery(). Step 1: phonetic transliteration of consonants users would write with "h" or "i" — ṛ → ri, ṣ → sh, ś → sh, ñ ṅ ṇ → n, ṭ → t, ḍ → d, ḥ → h, ṁ ṃ → m. Step 2: NFD-strip the remaining combining marks so ā ī ū become a i u, then lowercase. Result:
"Drishti" typed by user → folds to drishti · index entry "Dṛṣṭi" → also folds to drishti → match.
"mulatrikona" → matches "Mūlatrikoṇa" in indexed content.
"shiva" → matches "Śiva".
"vishnu" → matches "Viṣṇu".
"purusha" → matches "Puruṣa".
The fold is cached per index entry on first hit, so the runtime cost stays at one String.normalize per entry per session.
What's deferred
The masthead's dead-code helpers from v4.71.2 (KW array, render(), submitWith(), pushRecent()) are still untouched. They cause no harm but should be cleaned up in a follow-up. And the section-level content for Mūlatrikoṇa as a standalone concept (degrees per planet, why it matters in interpretation) still isn't a first-class drawer in the Companion — only mentioned inside planet content. Filed for v4.72.x.
v4.71.2
10 May 2026
LC search UX cleanup. The masthead search bar (added in v4.62.0) ran its own inline suggestions dropdown and on submit opened the canonical "/" search modal — so users were effectively answering the search question twice. Now the masthead bar is a passive trigger: focusing or clicking it opens the same modal directly. One search, one place. The modal — the experience you said felt "very refined" — is now the single source of truth.
What changed
Masthead input: focus, click, and Enter all open the modal directly. No inline dropdown, no two-data-source mismatch, no second search.
/ shortcut: now opens the modal directly. Previously it focused the masthead input, which then opened the modal — a two-step path.
Chips ("Try: Cabinet · Drishti · Yogas · Parivartana · Mūlatrikoṇa · Kāla Puruṣa") still work — clicking pre-fills the modal with that query.
Sticky search pill (appears once the masthead scrolls off-screen) still opens the modal.
Modal itself: unchanged. Same ranking, same drawer-or-jump behaviour, same keyboard nav.
What got dropped
The inline dropdown's curated KW array (~50 hand-picked keywords), the recent-searches store at the masthead level, the "did you mean…" Levenshtein logic, and the exact-match preview block. The modal's SEARCH_INDEX (500+ items, page-aware) is richer than KW ever was, so nothing the user could find before is missing now. The dead-code helpers in the original masthead IIFE are kept for one release as a safety net; they'll be removed in a follow-up.
Why this won
Two surfaces with different indexes were the problem. The bar was promising a search the modal then re-did, with results from a different (richer) source — confusing. Demoting the bar to a thin trigger keeps the visual affordance ("you can search here") and the canonical /-shortcut behaviour everyone learned, while removing the redundancy entirely.
Why a v4.71.2 not a v4.72.0
This is small and surgical — about 30 lines of code touched in the masthead IIFE plus the / handler — and it's a UX tidy on top of the v4.71.x line. Group B from the sessions 39–43 mining (four-intent rewriter, yoga first-pass, "feel the planet" prompts, retrograde line) is the next minor release.
v4.71.1
10 May 2026
Two changes on the home. First — dropped the "what's notable today" list under the chart; the page is now just the chart, the centre cell, and Daily Gem. Second — added a "how it was built" trigger inside the centre cell. Clicking it opens a single modal with two tabs: For learners (plain English, no code) and Technical (astronomy formulas, code excerpts, file structure). Two artifacts, one launch surface.
For learners
Five short steps in plain language: where the planets actually are; the tropical → sidereal (Lahiri ayanāṁśa) step; the South Indian chart layout; the live Lagna marker; why the page works without internet. No code, no equations. Designed to be readable by someone three weeks into Astrology 101.
For Vikram + the engineering-curious
Nine sections: stack at a glance, ephemeris generation (PyEphem + the Rahu mean-node analytic formula), the Lahiri linear approximation, the JSON+JS dual-output trick (and the file:// CORS bug behind it), the CSS-Grid named-area chart layout, the full Lagna calculation with the quadrant-correction step (and the bug we hit at noon when atan2 landed 180° off), the four anchor-time verification, the monthly refresh routine, and the file list. Code excerpts are short and inline.
Why the "notable today" list went away
Sree's call: keep the home page minimal. The page now reads: chart, centre cell with date/time/location/how-built, Daily Gem. Nothing else. The notable-today list duplicated what the chart already shows visually, and the link-out actions belong on the Learning Companion, not the home.
How to open it
Click the dotted "how it was built" link inside the centre square of the chart. The modal opens with the For learners tab active. Toggle to Technical for the depth. Esc or the backdrop closes it.
v4.71.0
10 May 2026
Group A from the sessions 39–43 mining: four procedural fixes Vikram has been hammering on in the Google Doc reviews. All land in Interpret · beta's Path A (House walk).
1 · "Bracket your sources" hint on the writing pad
Above the textarea is a new dismissable hint: after each word, note where it came from in brackets — wisdom (Jupiter) through reflection (yin). If brackets reveal a wrong source, the line is wrong even if it sounds right. Source: Session 41, Vikram's most-repeated correction across the cohort's submissions. Saved-as-dismissed in localStorage (astro-mychart-pad-bracket-hint-v1) so it stays out of the way after you've internalised it.
2 · Live "8-billion-people" warning above the textarea
As you type, if your sentence combines the karaka keyword for the current house and the house keyword without any sign building block (yang/yin, cardinal/fixed/mutable, fire/earth/air/water, or a sign name), a soft saffron warning surfaces: "Karaka of House N is [planet] — that pairing is true for everyone. Combine [planet]'s keyword with the sign [planet] sits in, not with House N's keyword." Detection is word-boundary regex over the textarea contents; the warning is non-blocking and disappears the moment the line passes the test. Source: Session 41 — the rule that already existed as a static reminder in the self-check is now a live nudge in the moment of writing.
3 · "Don't chase the dispositor" callout in Step 3
Inside the Pati / Ruler block, a new saffron-tinged stop sign: "When you reach planet-in-sign, write. Don't chase the dispositor further — Mercury → Sagittarius → ruled by Jupiter → in Cancer → ruled by Moon… 'all this is not needed.'" Source: Session 41, near-verbatim from Vikram. The depth-first dispositor walk was a recurring failure mode in submissions; this catches it before the user starts.
4 · Step 4b · "Aspects on the Karaka"
A new sub-step appears immediately after the Karaka block: "Look at your chart. Is anything aspecting your [karakaPlanet]? Count this separately from aspects on House N itself — the two questions are different." Includes Vikram's worked example for the 9th: nothing aspects the 9th, but Mars aspects Jupiter (the karaka of the 9th) — and that aspect carried the read. The card also includes the rule-of-thumb aspect rules (everyone aspects 7th; Mars also 4+8, Jupiter 5+9, Saturn 3+10). Read-only learner prompt — no aspect engine yet (deferred to a separate KB+JS effort).
What didn't land in this release
The other recommendations from Group B (four-intent sentence rewriter on the synthesis card; first-impressions yoga-scan card; experiential "feel the planet" prompts on Path B; retrograde line on each planet card) are queued for v4.72.0 onwards. They depend on slightly more data (yoga rules, retrograde detection) and on a separate UX cut.
Cohort homework rhythm
Across all five sessions Vikram repeats: make sentences for each planet in each sign yourself, then look at the deck. Eventually a "this week's homework" strip should pull from the latest transcript and surface near the path-intro card. Filed for a follow-up.
v4.70.3
10 May 2026
Hotfix on the LC search dropdown. Clicking the search bar showed all suggestions stacked vertically and centre-aligned because the .hero-suggest-* CSS rules were missing entirely (probably dropped during a much earlier merge). The JS was rendering the right HTML; the styles just weren't there. Now the dropdown panel renders as intended — group headers, two-column rows (label on the left, category pill on the right), the foot row with ↵ hint, and the "did you mean…" + exact-match preview blocks.
What was missing
Twelve rules covering .hero-suggest, .hero-suggest-group, .hero-suggest-group-h, .hero-suggest-item (the flex-row row that holds the label and the category pill), .hero-suggest-name, .hero-suggest-cat, .hero-suggest-foot, .hero-suggest-empty, .hero-suggest-dym, and the exact-match preview block (.hero-suggest-preview + name + cat + blurb).
How it slipped through
Pure CSS regression. Nothing in the JS ever surfaced an error — every class name resolved, every node rendered, the keyboard nav worked. It just looked broken. A reminder to run a manual visual check on the LC search dropdown when touching anything in the masthead area.
v4.70.2
10 May 2026
Tidy on the home chart: the date was being shown twice (once above the chart, once inside the centre cell). Kept the inside one. And added the most-asked-for marker on the chart — the Lagna / Ascendant, computed live for the current moment at the centre-cell location. Plus a KB-only update: class transcripts 39–43 ingested.
Cut · remove duplicate date above the chart
The masthead used to read "10 May 2026 in the sky" while the centre cell also showed "10 May 2026". Now the heading is a static "today in the sky" and the date lives only in the centre cell, where it sits alongside time and location. One clear source of truth.
Add · Lagna / Asc marker on today's chart
The chamber whose sign is currently rising at the location gets a small saffron ASC badge in the top-left and a saffron border.
Computed live using the standard formula — atan2(-cos(RAMC), sin(ε)·tan(φ) + cos(ε)·sin(RAMC)) — then shifted into the sidereal zodiac by subtracting the current Lahiri ayanāṁśa. The whole thing runs client-side in JS, no server dependency.
Coordinates come from a small lookup of common cohort cities (Auroville, Pondicherry, Chennai, Bengaluru, Mumbai, Delhi, and a handful more). Anything else falls back to Auroville's coordinates — good enough for v1; proper geocoding can come later.
Re-renders when you change the centre-cell location, so the Asc updates correctly. It also changes through the day — every ~2 hours a new sign rises — which is the whole point of marking the Lagna in the first place.
KB · class transcripts 39–43 imported
Five new class transcripts came in — Ether Debrief & Sun (5 April), The Moon and Houses (12 April), Improving Interpretations & 9th House (19 April), Mars (26 April), and Mercury & 10th House (3 May). Each is now a markdown file in astrology-101-knowledge-base/transcripts/ with the established naming convention. _mapping.json, INDEX.md, and HANDOFF.md all updated. Caught one duplicate file in the source folder ((38).docx ≈ (37).docx) — flagged in the KB notes.
Caveat for the Asc marker
This is the current Lagna at this location, not your personal birth Lagna. To mark your own Lagna we'd need your birth time + birthplace, which is a v4.71+ piece (a tiny "set my chart" form that overlays a separate marker). For now the saffron Asc badge answers "what's rising right now" — useful for muhūrta-style reading and for getting familiar with how the wheel turns through the day.
v4.70.1
10 May 2026
Hotfix on Today's Sky on the home. The chart was rendering empty because the data was loaded via fetch(), which fails on file:// origins (CORS). And the chart layout was a custom one rather than reusing the proven .stage + .chamber pattern from Interpret · beta. Both fixed.
The two issues
Empty chart: when you opened index.html as a local file, the JS couldn't fetch('today-sky-data.json') due to file-origin restrictions. So today was always null, no planets rendered.
Custom chart layout: I'd written a fresh layout for home with my own grid placement. But interpret.html already had a beautiful, proven .stage + .chamber layout — chambers with sign name + Sanskrit + glyph + planets pinned to the bottom. Reuse what works.
Fix · script-tag data loading
The Python generator now writes two files: today-sky-data.json (for any future server-side use) andtoday-sky-data.js (a thin wrapper that sets window.__todaySkyData = {...}). The home now loads via <script src="today-sky-data.js">, which works on file:// — no CORS, no fetch. Browser script tags don't have origin restrictions for local files in the same directory.
Fix · adopt the interpret.html chart layout
Switched to the same .stage grid (4×4 with named grid-areas: pi ar ta ge / aq cc cc ca / cp cc cc le / sa sc li vi) — Pisces top-left, signs going clockwise around the perimeter, centre cell cc for the date label.
Each sign cell is a .chamber with the same internal structure as Interpret: glyph + sign name + Sanskrit, divider line, planet pills pinned to the bottom.
Planet pills use 2-letter codes (Su · Mo · Ma · Me · Ju · Ve · Sa · Ra · Ke) with per-planet colour theming and hover tooltips showing exact degrees.
Aspect ratio 1:1, max-width 560px on home, scales down to 96vw on mobile — same responsive behaviour Interpret uses.
Refresh routine — unchanged
Run python3 scripts/generate_today_sky.py on the 1st of each month. It now writes both files (JSON + JS wrapper) in 15 seconds.
v4.70.0 ships in the same release window — the home rebuild, Daily Gem migration, copy-anchor pattern, and version bump all stand. This hotfix is purely about getting the chart to actually render.
v4.70.0
10 May 2026
A major rearchitecture. Home is now the "today" page — Today's Sky chart at the top showing where every graha is in the sidereal sky right now, plus the Daily Gem migrated from LC, auto-rotating every visit. The home search bar is gone. Per-section copy-link pills have been replicated across every chrome page (LC, Astronomy, Mercury Spectrum, Jupiter Tracker, Kālapurusha, Ether, Reflect, Where am I, Catch up, About, Release Notes). The LC inline-search refactor (search results render inline instead of in a modal) ships in v4.70.1 — splitting it out to keep this release stable.
New on home · Today's Sky
South Indian chart with all 12 sign cells laid out fixed. Today's planets (Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu) are placed in their sidereal sign. Today: Sun in Aries 25°, Moon in Aquarius 2°, Jupiter in Gemini 25° (about to ingress Cancer — matching what Vikram said in class today).
"What's notable today" list under the chart — six placement annotations (Sun, Moon, Jupiter, Mars, Venus, Saturn) with sign meaning + cabinet role + link to the relevant page (LC drawer, Mercury Spectrum, Jupiter Tracker).
Lahiri ayanamsha applied (≈24°06′ at 2026 epoch, drift +50.3 arcsec/year). Standard Vedic sidereal frame.
Data pipeline · sidereal positions are precomputed by a Python script (scripts/generate_today_sky.py using PyEphem) into today-sky-data.json. Sree refreshes once a month; the home reads today's entry on load. If a date is missing, the page gracefully falls back to yesterday's data with a soft note.
Hover any planet glyph in a sign cell to see its exact degree.
Daily Gem · home
Migrated from the LC Rāśi chakra centre to the home page, prominently placed under Today's Sky.
Auto-rotates every visit. Twenty curated quotes drawn straight from Vikram's transcripts and decks — including today's auction-game line.
"Tap for another →" rerolls; "Open in Companion →" jumps to the relevant section.
The LC Rāśi centre is now just the wheel — gem widget no-op'd. Cleaner.
Home search bar · removed
Per the rearchitecture decision, the home search input + typeahead dropdown is gone. Search lives on the LC, where it belongs. The home becomes a quiet, contemplative landing — Today's Sky, Today's Piece, three rooms.
Per-section copy-link · site-wide
The pattern shipped on Sripati in v4.65.1 has now been lifted to every chrome page. Hover any section heading on desktop (or just look for the always-visible pill on touch) and you get a small § link button — click to copy the canonical URL with anchor. Eleven pages got the module: LC, Astronomy, Mercury Spectrum, Jupiter Tracker, Kālapurusha, Ether, Reflect, Where am I, Catch up, About, Release Notes. Standalone JS — walks every section[id], no markup changes required.
What's deferred to v4.70.1
LC inline search results (replacing the modal — search results render inline as you type, no double-click)
These are the biggest UX wins from the demo with Anil, but they touch the LC search engine internals deeply enough that I'm splitting them into a follow-up release this week so v4.70.1 stays stable. Today's release ships the home rebuild + copy-anchor pattern — the most user-visible new features.
Today's Sky pipeline · refresh procedure
To refresh the data: open the workspace, run python3 scripts/generate_today_sky.py, and it regenerates today-sky-data.json for the next 13 months. Takes about 15 seconds. Set a calendar reminder for the 1st of each month.
v4.69.1
10 May 2026
A Jupiter release. New peer page The Jupiter Tracker, built straight from today's session — Vikram's auction game where everyone bid 100 coins on financial security, recognition, pleasure, good fortune, protection, wisdom, children. Eight slider pairs from false expectation to divine grace, three reflection prompts, an embodiment practice that surfaces from your lowest score, and the auction story as the page's origin.
The eight pairs
Drawn directly from the auction-game arc and the discussion that followed. Each pair carries a small embodiment practice that surfaces when you score low on the shadow side:
Excessive optimism ↔ Grounded faith — delusion (the casino) vs. clear-eyed hope.
Holding back / hoarding ↔ Generosity — the auction itself. Sat back fearfully, vs. spent at the right moment.
Doubting blessings ↔ Counting blessings — Jupiter as gratitude.
Rigid beliefs ↔ Open to wisdom — Jupiter the guru who can also be taught.
Bookish knowledge ↔ Lived wisdom — Vikram's exact false-expectation example: "I know, because I read a book."
Closed to mentors ↔ Receptive to guidance — Jupiter as receiver, not just giver.
Heavy / joyless ↔ Joyful / expansive — bliss is the bright side; sadness is its absence.
Vikram's three reflection prompts
Embedded as private textareas on the tracker, saved only in your browser:
Where in your life have you felt protected? Even if it didn't appear as protection in the moment.
What appeared as a loss — a failure, a missed opportunity — that turned out to be a blessing in disguise?
One blessing you received in life, but you don't fully feel you deserved.
Embodiment practice surfaces from the shadow
When you slide a pair into the shadow side (≤ 5/10), a small saffron card appears at the bottom with one practice for the day. Hoarding low → give one thing away. Doubting blessings low → name three blessings before sleep. Bookish knowledge low → take one teaching you know intellectually and apply it once today. If everything is on the grace side (≥ 7/10), the card congratulates you and asks you to name one blessing you're inhabiting before the moment passes.
Cross-app updates triggered by the class
Catch up — Session 39 added as the most-recent card.
Where am I — Jupiter unlocked from TBD this year to a graded topic, linking to the new tracker.
More menu (site-wide) — Jupiter Tracker sits alongside Mercury Spectrum on every page.
What's next
LC Planets · Jupiter content (currently a stub) and LC Yogas · Hamsa Yoga / Guru-Chandala / Dhana Yoga full write-ups land in v4.69.2. Today's release ships the tracker and the cross-app links so the cohort can use the page tonight while the class is fresh.
v4.68.2
10 May 2026
Search gets a serious upgrade. The home dropdown now has recent searches, did-you-mean for misspellings (especially Sanskrit), category groups with italic headers, and an exact-match preview card with one-line blurbs for ~80 keywords. The Learning Companion gets its own masthead search bar, a sticky pill that appears once the masthead scrolls away, a "/" keyboard shortcut, and a "Couldn't find it?" CTA at the bottom. Inspired by Google, Notion, Spotlight, Algolia DocSearch.
Why this happened
From Anil's demo: he didn't know he could search the LC until Sree pointed at the small pill. Search exists; the *signal that you can search* was missing. From everyone: a basic typeahead doesn't help much when learners half-remember a Sanskrit name like "Krishn" or "Sripathi." Search needs to be smart enough to handle imperfect spelling, and visible enough that nobody has to ask if it's there.
Home search — four new states
Empty state (clicked, not yet typed) — shows your last 5 recent searches at the top, then a curated "where most learners start" list (Cabinet, Aries, Matsya, Drishti, Signature, 1st house, 7th house, Moon).
Typing state — results grouped by category (sign / planet / house / avatar / element / mode / duality / concept / page) with subtle italic headers, like Spotlight. Each item shows a one-line preview of its blurb on hover.
Exact match preview card — when the typed query exactly matches one keyword, a saffron-bordered card shows above the rest with the blurb visible. Like Google's knowledge panel, smaller. ~80 keywords have hand-written one-sentence blurbs.
Did-you-mean — Levenshtein distance ≤ 2 catches typos. "krishn" → "did you mean Kṛṣṇa?", "sripathi" → Sripati Paddhati, "mathya" → Matsya. Especially helpful for the cohort who half-remembers Sanskrit names.
Empty state (no results) — same three CTAs as v4.68.1, with warmer wording: "Nothing in the Companion matches 'foo' — yet." The "yet" matters.
Learning Companion — search becomes findable
Masthead search bar directly under the H1 — same shape as home, with LC-tuned starter chips: Cabinet · Drishti · Yogas · Parivartana · Mūlatrikoṇa · Kāla Puruṣa. Same typeahead engine; on Enter, opens the existing LC search modal with the query already filled in.
Sticky search pill appears top-right (top-bottom on mobile) once the masthead leaves the viewport. "⌕ Search · /" — always one click away from any depth in the page.
"/" keyboard shortcut opens the search modal from anywhere on the page. Standard pattern from GitHub / Linear / Notion.
Bottom-of-LC empty-state CTA — for the explorer who reaches the bottom without finding what they wanted. "Couldn't find what you were looking for? Search again · or tell Sree what you wanted." Reuses the WhatsApp feedback pattern.
Recent searches — privacy
Lives in localStorage only (astro-recent-searches-v1). Last 5 queries. Nothing leaves the browser. Cleared if the user clears their site data; not synced anywhere.
Inspired by
Google's autocomplete + did-you-mean. Notion / Linear / Stripe Docs's command-palette pattern (recent + categorized + group headers). Apple Spotlight's italic group headers + the idea of preview cards. Algolia DocSearch's hierarchical breadcrumbs. We deliberately skipped Cmd+K overlay, trending searches, and other power-user patterns that would feel app-y rather than reading-room. The contemplative tone stays.
Easy to extend
The keyword inventory is one array of {q, cat, alt, blurb, popular} objects at the top of the typeahead module — currently ~80 entries with most concepts having one-line blurbs. As learners surface searches that fall through to the empty state (and feedback comes in via WhatsApp), the list grows. The module is shared (same logic) between home and LC.
v4.68.1
10 May 2026
Two upgrades to the home search. Typeahead suggestions as you type — a curated dropdown of ~85 keywords (signs, planets, houses, avatars, concepts, app pages) with category labels. Plus a richer empty-state: when nothing matches, learners can search anyway, jump into the Companion to explore, or send Sree a WhatsApp with their query pre-filled.
Typeahead on home
~85 curated keywords spanning the six big categories: sign (12 + Sanskrit), planet (9 + Sanskrit), house (12 with Sanskrit + nicknames like "Lagna" or "M.C."), avatar (10), concept (Signature, Cabinet, Drishti, Parivartana, Retrograde, Ayanamsha, Sripati, Bhāva Chalit, Mūlatrikoṇa, Kendra, Trikoṇa, Purushārtha, Mahāśakti, Nakshatra, Nirvāṇa Shatakam, …), and page (Reflect, Interpret, Where am I, Catch up, etc.). Easy to extend — the array sits at the top of the typeahead script in index.html.
Fuzzy match — exact match wins, prefix beats substring, name beats alt-spelling. So "matsya" exact-matches Matsya, "mat" prefixes it, "fish" substrings via the alt list. Sanskrit and English variants are treated as alts of each other (typing "Mesha" finds Aries; typing "Surya" finds Sun).
Keyboard nav — ↑↓ to move, Enter to submit selection, Tab to fill the input, Escape to close. Click works the same on mobile.
Category labels on the right of every suggestion (sign / planet / house / avatar / concept / page) so the learner can see where the result lives before clicking.
Highlighted match — the typed substring is shown in italic saffron inside each suggestion, so the matching letters jump out.
Empty-state — when nothing matches
If the typed query matches none of the 85 keywords, the dropdown shows a small panel with three CTAs:
Search anyway → submits the query as-is to the Learning Companion (in case it matches deeper content the typeahead doesn't index — the LC search engine covers a lot more ground).
Open Learning Companion → for the explorer who'd rather browse than search.
Tell Sree what you wanted → opens WhatsApp with the message pre-filled: "Hi Sree, I searched the Astrology 101 Companion App for "[query]" but didn't find what I was looking for. Could you help?" Lowest-friction feedback channel — closes the gap between confused-learner and Sree-can-fix-it.
Same empty-state inside the Learning Companion
The full LC search engine (the modal that opens when you click the search pill or land via ?q=) also got the upgrade — when its index returns nothing, the same three CTAs show up: Open Learning Companion · Tell Sree what you wanted. Both empty-states use the same WhatsApp number and the same pre-filled-message pattern.
Keyword set is a starting point
~85 entries is curated, not exhaustive. As learners surface searches that fall through to the empty state (and feedback comes in via the WhatsApp link), the inventory will grow. The data structure (an array of {q, cat, alt} objects) is intentionally simple so adding new entries is a one-line edit.
v4.68.0
10 May 2026
Bundle of onboarding upgrades after Anil's demo. A new Catch up page for missed classes (Vikram's #1 ask from the seniors group). A shareable ?role=senior URL flag that auto-flips Learning Companion to Reference + All (Sarika ask). A dark-mode audit so iOS Safari stops bleeding system dark through the cream theme. Plus a Loom-intro placeholder on home, ready for Sree to record into.
The strongest signal from Anil's demo was unspoken — when he said "I missed the Sripati class. I'll learn from this instead." Time-poor seniors miss classes; the app should be the way they catch up. The new page lists every Astrology 101 session, newest first, each with one paragraph on what was covered, an in-class Vikram quote, and direct links to the deeper material. The page also accepts ?session=37 to filter to one session — used by the per-page "If you missed this class" cards (see below).
Per-peer-page · "If you missed this class…" cards
Pattern shipped on Sripati and Astronomy first. A small saffron-bordered card sits between the masthead and the body, naming the class the page covers (session number + date), telling you what's on the page in one sentence, and linking back to Catch up filtered to that session. Will propagate to the other peer pages in a follow-up.
Shareable ?role=senior URL flag
Sarika asked for a way to share a link that opens the Companion already in Reference mode with level All — no soft-locks, everything open. Now possible. Append ?role=senior to any Learning Companion URL and the page applies the settings on load (and persists them, so reload keeps them). Also accepts ?mode=reference and ?level=all as direct overrides. A small toast confirms "Senior view: Reference mode · all sections open".
For Vikram's seniors-group share: https://atv-companion.sreebalakrishnan.in/learning-companion.html?role=senior
For specific control: ?mode=reference&level=all or any other valid combination.
Dark-mode audit + fix
From Anil's demo: "I just don't like a black background." Likely iOS Safari was bleeding system dark mode through despite our color-scheme: light only meta. Fixed by adding html { color-scheme: light; background-color: var(--bg); } as an explicit rule on every page (16 pages updated). Forces the cream background at the html element so no dark colour can leak through from system preferences.
Home additions
"Missed a class?" strip below the three rooms — quiet saffron-bordered card linking to catch-up.html.
Loom intro placeholder below that — a 60-second walk-through Sree will record. The slot is already wired; once recorded, replace the placeholder with the Loom embed iframe.
What's next
Roll the "If you missed this class" pattern to Mercury Spectrum, Kaalapurusha, Ether. Add catch-up entries when each new session lands. Record the Loom and replace the placeholder.
v4.66.0
10 May 2026
Major release. The home page is rebuilt around search instead of nine equally-weighted doors. read.html is renamed to interpret.html with a clearer label — Interpret your chart · beta — and the old URL redirects. The cohort photo, the blue file, and the nine-door grid all moved to a new About page. Site-wide regression run.
Why this happened
Vikram is about to share the app with the seniors group and worried it would feel overwhelming. The diagnosis was that the home page was asking visitors to make a structural choice (nine doors) before they had tasted anything. For seniors with prior 101 context who just want to look something up, the right mental model is search, not a museum of rooms.
The new home
Search bar dominates. Large, centred, autofocused on desktop. The form posts to the existing Learning Companion search engine via ?q=… — no new infrastructure, just promoting what was already there.
Six starter chips below the search bar — Aries · Mars · the 7th house · Sripati · Matsya · retrograde. Each runs the search for that term. Picked to span signs / planets / houses / avatars / peer-page / phenomenon so the first click reveals the breadth.
Three rooms below, not nine cards: Learning Companion · Interpret · beta · Reflect. One line of value each. The depth (Sripati, Astronomy, Where am I, Mercury Spectrum, Kālapurusha, Ether, Layers, Stats, Interactive) lives in the More menu, one click away.
Opt-in four-step walk-through. A small grey link — "First time here? · A four-step walk-through →" — opens an in-page overlay: 1. pick your name → 2. look something up → 3. read your own chart → 4. sit with one prompt. Anyone who doesn't want a tour ignores it.
Footer stays quiet. Single link to the new About page ("How this came to be →"), version + release notes link, update checker.
read.html → interpret.html (renamed; old URL redirects)
The page formerly known as Read · beta is now Interpret your chart · beta. The label change reflects what the page actually does — interpret your own chart house by house using Vikram's procedure.
interpret.html is the canonical URL going forward. read.html still resolves — it's now a 0-second redirect with a small "moved" card showing the new name in case the redirect is blocked.
All internal links and nav labels across the 14 site pages have been updated. Where am I's topic deep-links and pricing.html were also updated.
About page · how this came to be
A new about.html is the home for the longer story: the cohort photo from the Ether retreat, the infamous blue-file origin story, and the full nine-door "All the rooms" grid that used to live on the home. Existing inbound URL anchors like #cohort and #origin are preserved on the About page.
Pedagogy notes
Three principles guided the rebuild: give value in under sixty seconds before asking the visitor to make choices; one primary action on the landing page, not nine; depth available, not advertised. Net effect: the home went from ~24 visible routes to roughly 9 (search + 6 chips + 3 rooms), with everything else one click away in More.
Regression
Verified across all 14 active pages: every page eyebrow + footer reads v4.70.1, every PAGE_VERSION constant is on '4.70.1', every More menu has both Interpret · beta and About entries, and every internal href="read.html" has been swapped to interpret.html. The redirect file at read.html handles any cached or external links to the old URL.
v4.65.1
10 May 2026
Every section heading on Sripati Paddhati now has a small § link button next to it. Hover the heading on desktop, or just look for the pill on mobile, click it, and the link to that exact section is copied to your clipboard — ready to paste into a chat with Vikram or Arpitha.
How it works
Hover (desktop) — the § link pill appears next to the heading. Click to copy.
Tap (mobile) — the pill is always visible at slightly reduced opacity. Tap to copy.
What gets copied — the canonical URL with the section anchor, e.g. https://atv-companion.sreebalakrishnan.in/sripati.html#rashi-vs-bhava. The URL bar updates too, but the page does not scroll.
Confirmation — the pill flashes saffron, briefly reads "✓ copied", and a toast at the bottom confirms "Link copied — ready to paste & share."
All nine sections plus Sources — every numbered section gets the button. So you can deep-link directly to Four ways to look at the sky, Rāśi chart vs Bhāva Chalit, the worked example, the workbook, anything.
Why this is useful
Sripati is the longest peer page in the app and the conversations it triggers usually circle around one specific section — "how does the trisection work again?" or "can you re-read the bit about M.C. and zenith?" Sending a friend the right paragraph beats sending them the whole page and saying "scroll to § Five." This makes that one click.
The pattern is light-touch and self-contained — pure JavaScript walking each section[id], no markup changes needed. If it lands well on Sripati, it can be lifted into the other peer pages in a follow-up release.
v4.65.0
10 May 2026
Substantial update to astronomy.html. A new opening section makes the geocentric foundation explicit — the chart is the visible sky from where you stand — and the Stellarium Lab at the end is rebuilt around deva.guru + Stellarium open at the same time, on the same birth details, so the chart and the sky reveal themselves as one thing.
New § One — The Geocentric View
Every section that follows depends on this one. Vikram explicitly names the geocentric frame on the whiteboard in Session 18 ("we have the geocentric view, and because the earth is tilted, the equator is going to be tilted…"); the page now opens with that quote and unpacks what it means. Vedic astrology is not abstract. It is what the eye can see, slowed down enough to study.
Vedic astrology = the visible sky from the observer. Nothing in the chart is calculated from a Sun-centred frame. The chart is the sky as you would see it from the spot where you were born, at the moment you were born.
Astronomy and astrology are intertwined. The next eight sections (solar system, ecliptic, coordinates, celestial equator, eclipses, retrograde, precession, the Stellarium lab) are astronomy concepts first; the astrology grows out of them. If a later section feels arbitrary, the geocentric frame underneath it has not yet clicked — come back to § One.
The four anchor points — Lagna, M.C., Descendant, I.C. — described as positions on the visible sky, with what each cusp means.
Cusp · zenith · nadir — three terms students mix up, now disambiguated. Includes the one-liner that ties everything to Sripati: M.C. and zenith coincide only at the equator; the drift at higher latitudes is exactly why Sripati exists.
Rebuilt § Nine — The Stellarium Lab · sky & chart side by side
The previous Stellarium Lab told you to open Stellarium and step outside. The new version pairs Stellarium with deva.guru and walks the cohort through using both together — the realisation Vikram is pushing is that the chart on your screen and the sky outside your window are the same thing. One is the geometry written down. The other is the geometry, alive.
Two-window framing — left: deva.guru with your South Indian chart; right: Stellarium showing the actual sky for the same birth details. The exercise is to verify the chart against the sky: the sign rising in Stellarium's east should match the Lagna; each planet's sign on the chart should match where Stellarium places it on the ecliptic.
Seven-step procedure from Deck 22 (Your Sky at Birth): get details → open deva.guru → open Stellarium → cross-check signs → step outside, face the azimuth, estimate altitude (a fist at arm's length is roughly 10°) → write a few lines about what you noticed.
Parashara's Light named explicitly for serious students wanting Sripati cusps, divisional charts, dashas, transits in one place.
Watching retrograde happen live — speed up time in Stellarium and see the loop. What BPHS describes in eight technical terms is just this loop, sped up.
Why this matters — pulled forward as its own subhead. Spending an hour with deva.guru and Stellarium open at the same time is the single highest-leverage thing a learner can do between sessions. Many 101 concepts simply will not click until the geocentric sky is something you have seen, not just read about.
Renumbering & TOC
Inserting the new § One pushed the existing eight foundations down: Solar System → § Two, Ecliptic → § Three, Coordinate Systems → § Four, Celestial Equator → § Five, Eclipses → § Six, Apparent Motions → § Seven, Precession → § Eight, Stellarium Lab → § Nine. The TOC was updated to "Nine foundations" and the masthead now leads with "Astronomy and astrology are intertwined — the chart is the visible sky, slowed down enough to study." URL anchors (#solar-system, #ecliptic, #coords, #celestial-equator, #eclipses, #motions, #precession, #stellarium) are unchanged so any inbound links still resolve.
Sources
Primary source for the new § One is Vikram's whiteboard moment in Session 18 · Retreat Debrief, Parashurama & Stellarium, where he explicitly names the geocentric view while drawing the celestial equator. Same session is the source for the rebuilt § Nine framing.
v4.64.1
10 May 2026
Deep-linking pass on Where am I. Every topic now points to the right place to actually go and study it.
Where the links go
The page was already grouping topics by section and giving you a place to take stock — but the source citation underneath each topic was just text. Now those citations are real links that take you to the relevant section in the rest of the app, and the surfaced items in the What to discuss next panel at the bottom are clickable too.
Astronomy topics → astronomy.html (with deep anchors for ecliptic and precession)
On each topic card — the source citation underneath the topic name is now a quiet underlined link with a small → at the end. Click it to jump straight to that material.
In the What to discuss next panel — the items in Re-read these, Take to peer group, and Bring to Vikram are now clickable. The page becomes a real launchpad, not just a list of bookmarks-on-paper.
TBD topics stay un-linked — there's nothing to link to yet for Jupiter / Venus / Saturn / Rahu / Ketu or the nine pending avatars. They'll wire up automatically when those teachings ship.
v4.64.0
10 May 2026
Substantial update to Sripati Paddhati. A new foundations section on the visible sky, plus two layers of clarity from a late-night WhatsApp with Arpitha on house systems.
New § Two — The language of the sky
Before any house system can land, the vocabulary has to. A new foundations section now sits right after Origin, covering the words people most often confuse:
Geocentric view — explicitly named as the foundation. Vedic astrology is what an observer standing on this earth would actually see overhead. The chart is the visible sky, slowed down enough to study. Without that frame, none of the cusps make sense.
The four anchor points — Ascendant (Lagna), Medium Coeli (M.C.), Descendant, Imum Coeli (I.C.) — each in its own card with what it means and where it sits in the sky.
Cusp · zenith · nadir — three terms people regularly mix up. Cusp = a house boundary (or its midpoint, in Sripati). Zenith = the point directly overhead the observer. Nadir = the point directly underneath. M.C. and zenith coincide only at the equator — which is precisely why Sripati Paddhati exists.
Spend time with the actual sky — a small list of tools the cohort can use to do what Vikram keeps asking: deva.guru for browser charts, Parashara's Light for desktop depth, and Stellarium as the planetarium that makes the chart stop being abstract.
"Four ways to look at the sky" — Arpitha's framing
§ Two retitled to Four ways to look at the sky. The systems grid now reads as four genuine alternatives rather than three plus a dismissive footnote: Whole Sign, Equal House, Sripati Paddhati, and the KP system. Beginners often reach for Equal House; traditionalists prefer Whole Sign or Sripati. KP astrologers — what most Indian astrologers in popular practice will reach for — uses Placidus underneath. All four are now described on their own terms, not in opposition to each other.
New § Three — Rāśi chart vs Bhāva Chalit
The conceptual layer the old page was missing. The four house systems aren't competing answers to the same question — they feed two different charts:
Rāśi Chart (D-1) — answers which sign is a planet in? Determines dignity, strength, and yogas. Fed by Whole Sign.
Bhāva Chalit (the house chart) — answers which house is a planet actually influencing? Adjusts boundaries based on the exact Ascendant degree. Fed by Equal House (beginner-friendly) or Sripati Paddhati (the unequal, traditional choice).
Both charts can show the same planet sitting in different houses; both are true, each answering a different question. The page now makes that explicit, and quotes Arpitha's framing verbatim in a callout.
Section renumbering + duplicate-§-Five fix
Inserting the new section pushed every subsequent section number down one. Also fixed a pre-existing display bug where two sections both said "§ Five" — Quick Check is now § Six and "When does Vikram use which?" is § Seven, with cross-references closing as § Eight. URL anchors (#origin, #systems, #why, #worked, #workbook, #when, #xref, #sources) are unchanged so any existing inbound links still resolve.
Sources updated
Added the late-night WhatsApp with Arpitha (9 May 2026) to the sources list at the bottom of the Sripati page. Credit where credit is due.
v4.63.1
10 May 2026
Hotfix on Where am I. The stage pills (Aware · Familiar · Confident) weren't saving reliably — tapping a pill toggled it on, then immediately off. Visual flicker was too fast to see; the saved value just looked empty.
Root cause
Each pill was a <label> wrapping a hidden <input type="radio">. Browsers fire two click events when you tap a label that contains a radio: one on the label, then a synthetic click on the input it activates. Both bubbled up to the document-level click handler, which ran the toggle logic twice — first click selected the stage, second click saw the same stage already selected and toggled it off.
The fix
Replaced each pill with a plain <button type="button"> carrying role="radio" + aria-checked for accessibility. State is handled in JavaScript anyway — the radio inputs were doing nothing useful and causing the dual-fire. Single click now fires once, saves once.
v4.63.0
10 May 2026
A new self-assessment page — Where am I — for honest stock-taking across every topic in the 101 journey. Came out of a conversation with Arpitha after our Sripati Paddhati call: the topics one can teach back are the ones that have actually landed. So instead of one more quiz, this is a space to mark each topic as Aware · Familiar · Confident, and write the specific question to take to Vikram next.
Why this exists
Existing quizzes in the Learning Companion test recall — they're useful for getting from aware to familiar. But there's a third stage no quiz can grade: whether you can sit across from someone and teach the topic back to them. That stage is self-knowledge. Where am I leaves the grading to the learner.
Planets · 9 items — 4 covered (Sun, Moon, Mars, Mercury); 5 locked as TBD this year (Jupiter, Venus, Saturn, Rahu, Ketu) since Vikram hasn't taught them yet — no honest grading possible.
Houses · 12 items — names, kārakas, purushārthas, kendras, trikoṇas, panaparas, apoklimas, upachayas, dushtanas, house systems, house lords, planet-in-house.
Avatars · 10 items — Matsya covered (Module 1 in the workbook); 9 locked as TBD.
Interpretation · 5 items — aspects, yogas, the Signature, planetary relationships, reading the whole chart.
Reflective practice · 4 items — the workbook approach, avatars as archetypes, Ether/Nirvāṇa Shatakam, my own chart.
The page itself
Three-stage radio per topic: Aware · Familiar · Confident. Pills are toggle-style — tap the same pill again to clear it.
TBD topics are locked — no stage pills shown, just a quiet "TBD this year" badge and a notes box for whatever question comes up. Nothing to grade until it's been taught.
Per-topic notes — a small textarea labelled "What specifically do you want to revisit — or take to peer group, or to Vikram?" Saves only in this browser.
Source citation on every topic (deck + session refs from the KB) so it's a click away from re-reading the right teaching.
Dashboard at the top — total counts (Aware / Familiar / Confident / TBD), and a per-section progress bar so you can see at a glance which area needs the most attention.
"What to discuss next" panel at the bottom — auto-generated from your answers. Three buckets: Re-read these (Aware → Familiar), Take these to peer group (Familiar → Confident), Bring these to Vikram (Confident — to push deeper or teach back). TBD topics with notes get a fourth bucket: When taught — questions to ask.
Export as checklist — copies a plain-text version to clipboard, marker-style ([●●●] / [●●·] / [●··]) so it screenshots clean for sharing or for keeping a paper trail.
localStorage only. Nothing leaves the browser unless you copy it out yourself. No cohort sharing — ever — by design.
Where it lives
In the More menu, first item. Sripati Paddhati and the existing peer pages are still in there too. Primary nav (Learning Companion · Read · Reflect) is unchanged.
What this is not
Not a replacement for the LC quizzes — those still test recall and are great for the Aware → Familiar move. Where am I sits one layer above: it's the meta-page, the place to take stock between sessions and decide where to spend the next hour of study.
v4.62.5
9 May 2026
Two simplifications on pricing.html. The cohort/special-arrangement section is gone — flat fee for everyone, no exceptions language. And a small coffee analogy now sits inside the price card to make the amount feel concrete and warm.
What changed
Cohort note removed. The previous section that said "if you're a member of Vikram's class, please reach out — we'll work out an arrangement that doesn't feel like double-billing" is deleted. The price is now flat and transparent for everyone, which the lede already said but the section was muddying.
Coffee analogy added inside the price card, below the ₹500 / $10 amounts. Soft dashed-border tile with a small ☕ glyph: "About the price of two Marc's coffees in Auroville. Or one Starbucks tall latte where Starbucks lives. For thirty days of coming back to it between sessions."
Marc's Coffee in Auroville is the in-joke; the Starbucks line covers the global audience. Both make the abstract amount land in everyday terms without being salesy.
v4.62.4
9 May 2026
Real photo of Vikram Devatha now lives in the dedication block on pricing.html. SVG silhouette replaced. Photo treatment tuned for the cream context.
What changed
Image source: assets/vikram.jpg (Sree placed it in the assets folder).
Portrait size bumped 120px → 160px. The silhouette was decorative; the real photo deserves more presence.
Saffron ring: 2px solid var(--saffron) border with a 4px inner padding gap. Frames the photo as an offering rather than a profile thumbnail.
Photo treatment: filter: grayscale(100%) contrast(1.08) brightness(1.02) sepia(0.18); — soft B&W with a warm undertone that sits naturally in the cream background. Removed the previous mix-blend-mode: multiply which was dulling the photo too much.
Alt text: "Vikram Devatha — mentor, Astrology 101". Accessible on screen readers; visible if the image fails to load.
Still unlinked
Pricing page itself remains unlinked from nav and footer. The dedication block is now visually complete — when you and Vikram align on commercials, this is what learners will see at the bottom of the pricing page.
v4.62.3
9 May 2026
Vikram Devatha is named explicitly on the pricing page now, with a dedication block — silhouette portrait + role + offering text — at the bottom of the page. The companion app is built alongside his class, and the dedication makes the relationship clear when commercials become public.
"Vikram Devatha" spelled out in the dedication heading and in the page footer (was previously just "Vikram"). Vikram asked for his full name, by his own preference.
Stylized silhouette portrait in saffron line-stroke — circular frame, soft hand-drawn-style outline of head + shoulders + kurta neckline. SVG, no raster image needed yet. Sits above his name in a subtle bordered card.
Dedication text: "This companion app is an offering — built alongside Vikram's class, in service to the cohort and to anyone who walks the same path after. The teaching is his. The structure here exists to make it easier to come back to between sessions."
Role line: "Mentor · Astrology 101 · All Things Vedic" with a link to allthingsvedic.in.
Photo-swap path documented: a comment in the markup explains how to replace the SVG silhouette with a real photo — drop vikram.jpg in the repo root and replace the <svg> block with <img src="vikram.jpg" alt="Vikram Devatha">. The CSS already includes a soft B&W + multiply blend filter, so the photo lands with a calm tone matched to the brand.
Still unlinked
Pricing page itself remains accessible only by direct URL. No nav link, no footer link. The dedication is ready for whenever you and Vikram align on commercials.
v4.62.2
9 May 2026
Two threads. Devanagari + IAST added alongside the English Nirvāṇa Shatakam verses on Ether. Pricing page built and ready, but intentionally unlinked from the nav until Vikram aligns on commercials.
Devanagari + IAST on Ether
Source: Adi Shankaracharya's Nirvāṇa Shatakam (also called Ātma Shatakam). Six verses, each ending in the refrain चिदानन्दरूपः शिवोऽहम् शिवोऽहम् ॥
Three layers per verse, in order: original Devanagari (saffron, Noto Serif Devanagari) → IAST transliteration in muted italic (cidānandarūpaḥ śivo'ham śivo'ham) → English translation (existing). Reader picks whichever layer they're drawn to; the eye finds its own anchor.
Font: Google Fonts' Noto Serif Devanagari (weight 400/500). Falls back gracefully to system Devanagari fonts on iOS / Android / Windows / Mac.
Lang attribute: each Devanagari block tagged lang="sa" for accessibility / search engines.
The refrain is centred in all three layers — the ceremonial beat that returns at the end of each verse.
Pricing page (built, unlinked)
New file: pricing.html. Standalone, brand-aligned, accessible by direct URL only. Not linked from More menu, not from footer — Sree picked Option B from the proposal: build it now so it's ready when commercials get blessed.
Honest single price — no anchor discount: free first month, then ₹500 / month for India, $10 / month for elsewhere. Same access for everyone. No tiers, no feature locks.
Cohort callout: a separate section reaching out directly to members of Vikram's class. "If you're already paying for the class, please reach out — we'll work out an arrangement that doesn't feel like double-billing."
What's included: explicit list of every page and what stays available — Learning Companion, Read · beta, Reflect, all peer pages, future pages.
Why unlinked: published commercials change the brand posture. The honest move is to talk to Vikram first and align before the cohort sees pricing language. The page exists at /pricing.html for direct preview when needed.
What's deferred
No banner anywhere. The Style toggle, Your name, and existing menu items are unchanged. The pricing page is genuinely a draft — copy can be revised, payment integration isn't built yet, no Stripe / Razorpay button. When commercials are agreed, those land in a separate release.
v4.62.1
9 May 2026
Two interactive layers added to Sripati Paddhati: an animated 7-step derivation that walks through the cusp math one tap at a time, and a 3-question workbook to lock in the concept. Both KISS-aligned — no auto-play, no over-engineering.
Animated derivation
Replaces the previous static worked-step blocks. Same numbers, same math (from deck 66), but now it's a tap-Next walk where each step adds an element to the wheel SVG and updates the math text panel beside it.
Step 0: the given chart (Asc 22° Aquarius, M.C. 25° Scorpio). Steps 1-7: convert Asc to longitude → convert M.C. → trisect the quadrant → 12th cusp → 11th cusp → house extents (midpoints) → symmetry to I.C. + Desc + the other quadrants.
Visual: a simple SVG circle with cusps appearing as saffron points, labels animating in, the trisection arc highlighted at step 3. Tap-only — no auto-play. Sree's call: non-technical users like control over pacing.
Progress bar + Replay button. Once all 7 steps are revealed, the page can be re-walked from scratch with one tap.
Three-question workbook
Three classical MCQs, each with a per-question Reveal answer button:
Concept: "In Sripati Paddhati, a cusp is..." — the answer is *the midpoint of a house*, not the boundary. Lock the conceptual flip.
Math: "Given Asc 22° Aquarius and 10th cusp 25° Scorpio, what is the 11th cusp?" — answer 264° / 24° Sagittarius. Tests the trisection mechanic.
Geometry: "As you move toward higher latitudes, Sripati houses become..." — answer *unequal*. Ties back to Vikram's class quote on why Sripati exists.
Reveal-on-demand: think first, then tap to reveal. Correct option highlights in saffron with a checkmark; explanation appears below the dashed divider.
Whole-page persistence: localStorage['astro-sripati-workbook-v1']. Once all three are revealed, the workbook stays in its "complete" state on reload, with a small saffron banner confirming it.
What we deliberately didn't build
Latitude slider on the celestial sphere (idea #2 in the proposal), live cusp calculator (idea #3), and three-system planet comparison (idea #4) were considered and deferred. They're rich but the static math + animated derivation + 3-MCQ check is enough teaching surface for v1. Will revisit if Vikram or Kanika asks for "what would change at the equator" or wants to plug in their own chart.
v4.62.0
9 May 2026
New peer page — Sripati Paddhati — built from class material. Plus search prominence: a search bar on Home that lands you in Learning Companion's search modal with your query pre-filled, and a brief shortening of the Sripati section inside Learning Companion (now teaser + jump link).
Sripati Paddhati page
Source material: Vikram's Session 37 (Sripathi Paddhathi and Houses, 1 March 2026, 2h 14m), Session 38 (SP method houses, starting interpretations), and decks 62, 65, 66, 69 (House Systems v1 → v4).
Six sections:
Origin — Sripati, 11th-century Indian astronomer-mathematician, author of Siddhānta Śekhara.
Three systems compared — Whole Sign · Equal House · Sripati · (Placidus noted but not used in class). Each card shows the rule and when it applies.
Why Sripati exists — the geometry — M.C., Zenith, Ecliptic, latitude. Vikram's quote about the equator vs higher latitudes, embedded as a class-source pull.
Vikram's worked example — full step-by-step math for 22° Aquarius rising, 25° Scorpio M.C. case. Cusp 1 → cusp 10 → quadrant size → trisect → cusps 11, 12 → midpoint → house extents.
When Vikram uses which — Whole Sign is the default for chart reading; Sripati comes in for latitude-aware comparisons.
Added to More menu on all 12 other pages, slotted after Astronomy (subject affinity).
Brand-aligned: same masthead pattern, Switzer Extralight body, Libre Caslon Text headlines, full Sripati legacy theme override included.
Search prominence
New search bar on Home: prominent input pill below the hero ornament — "Search the companion app — signs, planets, houses, avatars…". Submitting (Enter or tap "Search →") navigates to learning-companion.html?q=<query>.
URL ?q= handler on Learning Companion: a small inline script reads the query parameter on page load and auto-opens the existing search modal with the query pre-filled. Results render immediately — one tap from Home gets you to a result.
Search index unchanged: still auto-built from the Learning Companion DOM via buildSearchIndex(). Adding new sections automatically becomes searchable. No manual index regeneration needed.
Skipped Option B (cross-page index) — KISS. Learning Companion already has the dense reference; cross-page navigation is one click away from any result.
Learning Companion section trim
The Sripati Paddhathi card inside the House Systems block on Learning Companion has been shortened — keeps a 2-paragraph teaser, then drops a saffron-italic jump link to the full page. Avoids duplication; depth lives on the dedicated page.
Note on the index
Sripati Paddhati's content lives on its own peer page, so it's not yet inside Learning Companion's auto-built search index. Searching from Home for "sripati" or "paddhati" will surface the existing teaser inside Learning Companion (which links to the new page). A future cut may add cross-page indexing if it becomes friction.
v4.61.3
9 May 2026
Sree spotted that the site nav looked different across pages — index and Kaalapurusha had no .site-nav CSS rule at all (only .site-nav .primary and aria-current selectors), so the nav fell back to default browser styles. Mercury Spectrum and Astronomy carried an older shorter .site-nav block left over from before v4.59 (no flex layout, just margin + font + underline). Result: those four pages had different nav padding, alignment, and link styling than the unified version on Learning Companion / Read / Reflect / Layers / Ether / Interactive / Stats / Release Notes.
Fix: pasted the standard nav CSS block (the one used by the majority) into all four outliers. All 13 pages now share identical nav layout, padding, link styling, separator styling, and hover behaviour. Confirmed via grep — every page has the canonical .site-nav { padding: 22px 0 14px; display: flex; ... } rule.
v4.61.2
9 May 2026
Body paragraphs site-wide now use Switzer Extralight (weight 200) instead of regular (400). Cohort feedback channelled through Sree pointed at the brand book's body example: "Switzer Extralight, 27pt." We weren't loading the 200 weight before, and the body wasn't requesting it. Both fixed: Fontshare import now includes 200 alongside 300-700, and body { font-weight: 200 } applied across all 13 pages. Reads lighter, more deck-like, closer to Yash's specimen.
v4.61.1
9 May 2026
Three urgent fixes from Sree's iPhone Safari testing of v4.61.0.
1 · Settings popover pills weren't working
The Settings popover on Learning Companion opened correctly, but tapping Mode / Level / Aa pills inside did nothing. Cause: the existing .mode-pill, .level-pill, and #a11yToggle click handlers attached at script-parse time using document.querySelectorAll — but the popover HTML lives at end of body, parsed AFTER those scripts. So the handlers attached to zero elements. Fix: switched to event delegation on document — clicks bubble up regardless of when the pills are rendered. Mode, Level, and Aa now all respond correctly.
2 · More menu rendered off-canvas on iPhone
On narrow viewports where the site nav wraps to a second line, the More button could end up at the LEFT side of its row. The dropdown's position: absolute; right: 0 then placed it off the visible canvas, partially hidden behind page content. Fix: on viewports under 600px, the More menu now uses position: fixed anchored to the top-right of the viewport. Always fully visible, regardless of where the More button sits in its wrapped row.
3 · Some users seeing the page in dark mode
A few demo viewers reported the page rendering "all black" — caused by iOS Safari (and other browsers) auto-applying their system dark mode preference to our cream-coloured page. The cream palette doesn't survive auto-inversion well. Fix: added <meta name="color-scheme" content="light only"> to all 13 pages. Browsers now know to render the page exactly as designed in cream, regardless of system dark mode setting. Light-only by design, by tradition, by Vikram's deck aesthetic.
Follow-up — proper skin picker
Sree also asked for a user-selectable skin (light / dark / sepia / etc.) so individual learners could match their preference. That's a bigger build — token mapping for each skin, dropdown in Settings, persistence. Deferring to a future release. For now the Style toggle in the More menu still offers ATV-brand vs Legacy as the two flavours; both are light.
v4.61.0
9 May 2026
Two fixes on Learning Companion. The top of the page was eating ~800-900px on iPhone before content appeared — site nav, Mode switcher row, Level filter row, Search button, masthead. Sree asked for a non-technical reorg with KISS in mind. Picked Option B from the proposal: collapse Mode + Level + Aa into a single Settings button next to Search. The page lands faster on mobile; controls stay one tap away. Also fixed a Rāśi Chakra spacing bug where Aquarius / Cancer / Capricorn / Leo chambers (rows 2-3) had a noticeable extra gap between planet glyphs and the bottom sign glyph compared to other chambers.
Top-section reorg
Removed two full rows from above the masthead: the Mode switcher (Mode + Learning/Reference + hint sentence + Aa button) and the Level filter (Show content for: + 5 level pills + Search button).
New compact toolbar sits after the masthead and before the content (where it logically belongs — settings for the page you've now arrived on, not preamble): two pills, Settings and Search.
Settings button shows the current state inline as a summary: "⚙ Settings · Reference · All". Tapping opens a centred popover with three sections — Mode, Level, Accessibility — and a Done button. Esc / outside-click / Done all close it.
Aa accessibility toggle moved into the Settings popover (under Accessibility section). It used to occupy a fixed slot in the Mode row; now it lives where it makes sense — alongside other page-tuning controls.
Existing JS handlers untouched. setMode(), setLevel(), and the a11y toggle all find their pills/button at the new location via the same selectors. No logic was rewritten — just a structural relocation.
Why Option B over A or C: Sree picked it after considering all three. The compact-toolbar option (A) kept three pills visible, settings-drawer (B) collapsed them behind one button, hide-masthead-for-repeat-visitors (C) was the most aggressive. B wins for non-technical users on a small phone — one button, predictable, no overwhelm. Mode and Level are rarely changed in practice; defaults work for most.
Rāśi Chakra chamber spacing
The bug: in the 4×4 Rāśi Chakra grid, side chambers in rows 2 and 3 (Aquarius, Cancer, Capricorn, Leo) appeared taller than chambers in rows 1 and 4 (Pisces, Aries, Sagittarius, etc.). The extra height showed up as a gap between the planet glyphs (top half) and the bottom sign glyph.
Cause: grid-template-rows: repeat(4, 1fr) let the centre cell (which spans rows 2-3 with title + Do-you-know pill + Moon-today block) push those rows taller than 1fr would otherwise allow. Combined with justify-content: space-between on each cell, the gap between content blocks scaled with cell height — bigger cell, bigger gap.
Fix: switched grid template to repeat(4, minmax(0, 1fr)) on both columns and rows. This forces equal sizing regardless of content. Also pinned the bottom sign glyph with margin-top: auto instead of relying on space-between distribution — keeps the bottom alignment consistent across all 12 chambers.
Same fix style as v4.57.0's read.html chamber overflow fix. Same principle: explicit > implicit when grid sizing matters.
v4.60.0
9 May 2026
Limited personalisation, local-only. The app can now hold a learner's first name (or nickname) and use it sparingly across a handful of high-value touchpoints. Stays on-device — no accounts, no backend, no OAuth. KISS, in Sree's words.
How it works
First-visit prompt on Home, above "Where to start" — a small inline card asking "What should we call you?" with a text input + Save / Skip. Save persists the name; Skip closes the card permanently. Either action sets a "prompted" flag so it doesn't reappear.
Storage: localStorage['astro-mychart-name-v1']. Trim + max 30 chars. Single key, single device, persists across pages on the same domain.
Edit / clear from the More menu — new "Your name" item appears below page links and beside the Style toggle. Same place on every page. Opens a centered popover with current name pre-filled + Save / Clear / Cancel.
Default behaviour with no name: existing copy is unchanged (your call — clean fallback, no "friend" / "you" placeholder).
Where the name shows up
Home hero subhead — when set: "Welcome back, Sree. The companion app for Vikram's class — material we're learning…"
Home "Where to start" eyebrow — "Where to start, Sree"
Learning Companion first-visit welcome card — "New here, Sree?" instead of "New here?"
Interpret · beta walk-through writing pad — placeholder becomes "Sree, three characteristics. Start with one. Saved automatically as you type."
Reflect landing lede — "Hi Sree — pick an avatar to sit with. Each set of prompts is sourced from the Companion Workbook…"
Light hand by design. Vikram's class is humble; sprinkling the name in 50 places would feel uncanny. Five touchpoints anchor the personal feel without overdoing it.
Tone
Context-sensitive — warm at entry points, casual where instructional. "Welcome back, Sree." at the door of the app, "Sree, three characteristics." at the writing pad. It's a learning app, not a corporate one.
Mechanics for future authors
To add a new personalised touchpoint anywhere, decorate a DOM element:
data-name-template="...{name}..." — replaces {name} with the saved name. Element is hidden when no name set.
data-name-template="..." + data-name-fallback="..." — uses the fallback text when no name set, swaps to template text when set.
data-name-placeholder="..." + data-name-placeholder-fallback="..." — same idea for textarea/input placeholders.
The site-wide JS auto-applies templates on page load and after every name change. Adding a new spot doesn't require touching the migration script.
Why no OAuth
Considered Google / MS sign-in for cross-device persistence. Rejected for this round: adds backend, OAuth flow, account state, security review, GDPR concerns. The cohort reads on one device mostly. Local storage covers ~95% of the value at <5% of the complexity. Worth keeping in mind for a future release if a class member explicitly asks.
Validation
Trim whitespace, max 30 characters. Anything else goes — nicknames, special characters, spaces, emoji. It's their name, they decide.
v4.59.0
9 May 2026
The pilot landed; this is the cascade. Every page in the app is now ATV brand-aligned by default — Terracotta Ember, Charcoal Ash, Sunlit White, Switzer body, Libre Caslon Text headlines. Quick Reference is renamed to Learning Companion (Vikram's call, more global appeal). The site nav is redesigned: four primary anchors plus a More dropdown for the deep dives. The style toggle (ATV ↔ Legacy) lives inside the More menu, available on every page, persisting across navigation. Old quick-reference.html URL is preserved as a redirect so external bookmarks don't 404.
Phase 1 · Site-wide brand cascade
11 pages updated: index, learning-companion, kaalapurusha, mercury-spectrum, astronomy, ether, layers, reflect, interactive, stats, release-notes. Same tokens as the v4.58.0 read.html pilot — Terracotta Ember #BC8146 for accents, Charcoal Ash #282826 for type, Sunlit White #F8F4E1 family for backgrounds.
Per-page custom tokens remapped:
Avatar family colors (in Learning Companion): Map → Stormy Sky dark #556168, Mechanics → Deep Forest #32413B, Practice → Muted Mauve dark #584B4B, Story → Terracotta Ember #BC8146. Distinct enough to differentiate, all brand-aligned.
Sage green (Mercury Spectrum + Astronomy) #5a7a5c → custom Deep Forest mid #3D5650. Keeps the thematic green accent, brand-aligned.
Gold #a8843a → Sunlit White tint #A3986D.
Forest #4a5d2e → Deep Forest #32413B.
Hardcoded values across pages: ~60 hex values and rgba tints in inline styles, JS-injected toasts, WhatsApp FAB tooltips, first-visit tip cards, SVG diagrams (astronomy ecliptic), update banners — all migrated to brand tokens via Python script that protected html.theme-legacy override blocks.
Fonts loaded site-wide: Switzer via Fontshare CDN + Libre Caslon Text via Google Fonts, with Cormorant + Spectral kept as fallbacks for graceful degradation.
Favicons + theme-color metas updated to Sunlit White #F4EEDA + Terracotta Ember "101" on every page.
Phase 2 · Site-level theme toggle
The toggle that lived as a fixed top-right pill on read.html is now integrated into the More menu — last item in the dropdown, after a divider. Cleaner, doesn't compete with page content.
Same localStorage key (astro-mychart-theme-v1) so the choice persists across pages. Toggle on Home, browse to Reflect, your style follows.
Apply-on-load inline script at the top of <body> on every page sets the class before first paint — no FOUC when reloading or navigating in Legacy mode.
Each page's html.theme-legacy override carries that page's pre-v4.58 tokens (including custom snowflakes), so the legacy view is faithful to how the page looked before this release.
Phase 3 · Nav redesign
Old nav had 12 links wrapping to 3 lines on mobile. New nav has 4 primary + a More dropdown:
Reflect elevated to primary at Sree's call — same tier as Learning Companion / Read, since it's where the cohort's reflection work lives.
Active-page indication: the current page's link is rendered in saffron (aria-current="page"). When viewing a More-menu page, the More button itself goes saffron — so users always know where they are.
Dropdown behavior: click to toggle, click-outside or Esc to close, full keyboard nav. Mobile-friendly (touch-target sized), mobile media query tightens spacing.
Phase 4 · Quick Reference → Learning Companion
New file: learning-companion.html (copy of the old quick-reference.html with the renamed title, masthead, and JS pageLabel).
Old URL preserved: quick-reference.html now serves a brand-aligned "Page moved" page with a 3-second meta-refresh + manual button. External bookmarks and class-share links continue to work.
Internal hrefs updated: ~50 link references across 13 pages migrated from quick-reference.html to learning-companion.html.
Visible labels updated: every "Quick Reference" mention in body text, link text, CTAs, and cross-references now says "Learning Companion." Code comments referencing historical "Quick Reference" are kept as-is.
Vikram picked the name; "Companion" reads globally without Sanskrit-fluency required, while keeping the warmth of the original frame.
Sanity-check pass
All 13 active pages: nav present, theme toggle present, fonts loading, legacy override functional, version stamped at 4.59.0, internal links clean.
HTML structure balanced (open/close tags) on all pages.
Title tags consistent: [Page] — Astrology 101 Companion App.
aria-current correctly set on Home / Learning Companion / Read · beta / Reflect when those pages are active; More button highlighted on the eight pages in the dropdown.
Redirect from quick-reference.html verified — meta-refresh + JS fallback both fire.
Per-page custom tokens (family-*, sage, forest, gold, qr-*) remapped to brand-aligned values; legacy override block restores originals when toggled.
Known follow-ups (not blocking)
The brand book references Libre Caslon Condensed specifically; it's not on Google Fonts. We're using Libre Caslon Text as a near-match. When Yash provides the actual Condensed font file, we'll self-host and swap.
The WhatsApp feedback FAB still appears on the 11 non-read pages. Read · beta replaced it with a footer link in v4.58.2; the others may follow if the FAB feels noisy in usability testing.
Once Vikram has spent time with the brand-aligned look, we may simplify or remove the legacy toggle. For now it stays as the comparison surface for the usability test.
v4.58.2
9 May 2026
The green WhatsApp feedback FAB sits bottom-right on every page. On Interpret · beta, the writing pad is fixed at the bottom of the viewport — so the FAB was overlapping the textarea and competing for attention while learners were trying to write. Removed the FAB on this page only and replaced with a small inline Send feedback link in the footer next to Check for updates and Release notes. Other 11 pages keep the FAB unchanged. Same WhatsApp pre-fill text and same target number; just calmer surfacing.
v4.58.1
9 May 2026
Companion to v4.58.0. Adds a style toggle on Interpret · beta so Vikram can flip between the new ATV brand-aligned design and the pre-v4.58 legacy design without leaving the page. Top-right pill button labelled Style · ATV brand / Style · Legacy. Choice persists in localStorage; default is ATV brand. Apply happens before first paint via an inline script in <body>, so there's no flash of the wrong theme on reload.
How it works
CSS overrides via html.theme-legacy. The brand-aligned tokens live on :root. Adding a class to <html> swaps every CSS variable back to the pre-v4.58 values — Cormorant + Spectral fonts, saffron, purple-toned ink, golden-cream background, indigo gradient. Both font sets stay loaded so flipping is instant.
Body gradient too. The page's ambient radial gradients (top-left + bottom-right) use literal rgba tints, not variables, so the legacy override redeclares them with the original saffron + indigo values.
Persistence. Choice saved to astro-mychart-theme-v1. An inline script at the top of <body> reads the saved value and applies the class before any visible paint, so the page never flashes the wrong theme.
Known artifact
A handful of CSS rules use literal rgba values for subtle tints (drawer chip backgrounds, chamber border-shadows, etc.) — these were converted to Terracotta Ember in v4.58.0 and stay that way regardless of theme. So legacy mode looks almost identical to pre-v4.58 but a few shadows carry a slight warm undertone. Won't materially affect Vikram's read of the comparison; flagged here for honesty.
The pitch to Vikram
"Open read.html. The page you see is the brand-aligned version — Terracotta Ember instead of saffron, Switzer body, Libre Caslon headlines. Tap the Style pill in the top-right to flip back to how it looked yesterday. Toggle between them. Tell me which one wins."
v4.58.0
9 May 2026
Pilot release. Interpret · beta is now visually aligned to the official ATV Brand Guidelines (Vikram + Yash, Sept 2025). The other 11 pages are unchanged — they keep the legacy palette and serif body until Vikram has eyes on the new look. Sree requested all three migration stages on read.html in one go so Vikram can see the full intended look in one place.
Stage A · Color migration
Saffron #b8410e → Terracotta Ember #BC8146. The hot saffron was the app's signature — softer, less alarming Terracotta Ember from the brand mid-tones. All 27 hardcoded rgba(188,129,70,...) values for shadows and tints converted to rgba(188,129,70,...).
Ink #1f1a2e → Charcoal Ash #282826. Old purple-toned dark replaced by the brand book's neutral. Six rgba(40,40,38,...) shadow values converted to rgba(40,40,38,...).
Background family migrated to Sunlit White tints.--bg is now #F4EEDA (slightly warmed Sunlit White), --surface is true Sunlit White #F8F4E1, --bg-deep uses tint -1 #E0DCCD. Cards still pop against the page bg.
Indigo #2a3270 → Stormy Sky #6E7D85. The body background-image's secondary radial gradient softens; two rgba(110,125,133,...) values converted.
Hardcoded color blocks updated: the version-toast helper, the WhatsApp FAB tooltip, and the first-visit tip card all carried direct hex values for historical reasons. All converted to the new palette.
Favicon updated — Sunlit White bg with Terracotta Ember "101", Libre Caslon as the family hint.
Theme color meta tag updated to #F4EEDA for browser chrome / iOS safe-area tinting.
Stage B · Switzer for body
Added Switzer via Fontshare CDN (the brand book's secondary typeface, free from Indian Type Foundry / Fontshare): https://api.fontshare.com/v2/css?f[]=switzer@200,300,400,500,600,700.
--body token: 'Switzer', 'Spectral', system-ui, sans-serif. Spectral remains as a fallback if Fontshare is offline.
Body now reads in a modern sans against the serif headlines — the actual brand pairing. Reading density on long-form blocks (release notes prose, walk-through guidance, drawer keyword strings) was tested as part of the swap.
Stage C · Libre Caslon Text for display
Added Libre Caslon Text via Google Fonts as a near-match for the brand book's Libre Caslon Condensed. Condensed isn't on Google Fonts; we'll swap to the actual condensed file once Yash provides it.
--display token: 'Libre Caslon Text', 'Cormorant Garamond', 'Times New Roman', serif. Cormorant remains fallback for graceful degradation.
Display feels closer to the brand book's deck slides + IG creatives.
Why pilot, not big bang
Migrating all 12 pages at once locks in the new look before Vikram has seen a real surface. Doing read.html alone gives him a single, in-depth page to react to — chart + walk-through + drawer + writing pad all in one. If he says yes, we cascade colors and fonts to the other 11 pages in v4.59.0. If he wants tweaks, we adjust on read.html only — cheap to revert.
Known cross-page artifact
While the pilot is live, clicking from read.html to any peer page (Quick Reference, Kaalapurusha, etc.) will show a visible style shift — peer pages still use Cormorant Garamond display + Spectral body + the saffron palette. This is expected and temporary; flagged here so the cohort isn't surprised.
Source
Brand book: astrology-101-knowledge-base/sources/ATV-Brand-Guidelines-2025-09.pdf (preserved verbatim). Working derivative: astrology-101-knowledge-base/style-guide.md (the doc I reference before any color or typography change going forward).
v4.57.1
9 May 2026
Hotfix on the Self-check section inside Path A walk-through cards. On iPhone-width screens, each check item was rendering as four narrow columns — checkbox, then "My / sentence / stayed / about" word-stacked, then "this / house" word-stacked, then the rest. Caused by display: flex on the <label> with loose text and <strong> inside: each became its own anonymous flex item and shared horizontal space, wrapping into single-word columns. Fixed by wrapping every label's text content in a single <span> so it's one flex item with normal text flow. Also added a defensive CSS rule (.selfcheck-list label > span { flex: 1 1 auto; min-width: 0; }) so future authors can't trigger the same bug. Wrapped the Path B labels too for consistency. Sree caught it on his actual phone reading the 2H Pisces card.
v4.57.0
9 May 2026
Two fixes on Interpret · beta, both from Sree's eyes-on testing. The Quick Reference drawer inside each walk-through card was eating ~485 vertical pixels before the user reached the analysis card — nine attribute tiles laid out, six of them irrelevant for the current sign. It's now compacted to one prominent tile per dimension with chip-row alternates. Separately, on mobile some planet glyphs were getting clipped at the bottom of their chambers because long deck-61 keyword strings (9H, 11H) were wrapping to 3-4 lines and pushing the planets past the chamber's bottom edge.
Quick Reference drawer · compact mode
Three rows instead of nine tiles. Per dimension (Dualities, Modalities, Elements), the drawer now shows the relevant tile in full — saffron border, full keyword line — with the alternates rendered as small italic chips beneath. "Compare:" introduces the chip row.
Tap a chip to swap. Tapping Yin (or any alternate) swaps it into the prominent slot with its keywords visible. The previously-prominent tile becomes a chip. So all 9 tiles' content is one tap away — nothing is hidden.
Picks reset on navigation. Each new house or planet anchors back to that sign's actual attributes — your Modalities pick on House 1 doesn't carry over to House 2. The drawer keeps its open/closed state per session as before.
Avatars section unchanged. Still shows only the avatars of planets sitting in the current house (Path A) or the current planet (Path B).
Estimated savings: ~60% vertical real estate when the drawer is open. The analysis card now appears above the fold on most laptop screens; on mobile it's roughly one swipe closer.
Chart chamber overflow · mobile fix
The bug. The deck-61 keyword strings landed in v4.56.0 inside each chamber. The longer ones — "Awards, Recognition, Friends, my status" (11H), "My learning, teacher, higher education, long distance travel" (9H) — wrapped to 3-4 lines on iPhone-width screens. Combined with overflow: hidden on the chamber, planet glyphs sitting below the divider got clipped past the chamber's bottom edge. Sree caught it on his own chart: Sun + Mercury at 11H Sagittarius were partially cut off, and several planets were invisible.
The fix. Two CSS changes: (a) -webkit-line-clamp on .chamber-house-kw caps the keyword to 2 lines on mobile, 3 lines on desktop, with overflow ellipsis on the rare chamber that needs more; (b) margin-top: auto on the chamber divider pins the divider + planets to the chamber's bottom edge, so planet glyphs are always visible inside the chamber bounds — keyword length can no longer push them out.
The full keyword string is still readable in the walk-through card and in the per-house Pati / Karaka blocks, so nothing is lost — the chamber just stops trying to show the entire string when there isn't room.
Why both shipped together
Both came out of Sree's same testing pass — open the chart, scroll to the walk view, see what's in front of you on a phone. The drawer audit and the clipping bug were two halves of the same answer to "is read.html actually usable in your hand?" Shipping them as one release keeps the version history readable.
v4.56.1
8 May 2026
Tightening pass on yesterday's deck-61 keyword landing. Sree spotted the obvious — there's plenty of room inside each chamber, so the 12-card legend grid below the chart was redundant. The full keyword strings now sit in the chamber itself; the legend grid is gone. The chart view is lighter, and each chamber carries the complete reference instead of a one-word teaser.
Chamber keyword: short → full. Each chamber now shows the complete deck-61 keyword string in saffron italic — "Resources, Family, my support" instead of just "Resources". Multi-line wrapping handled by the chamber CSS; font sized down to clamp(9.5px, 1.25vw, 11.5px) to fit comfortably alongside sign name + sanskrit + planets.
Legend grid removed. The 12-card "📜 House meanings" grid below the chart is gone, along with all .house-legend-* CSS rules. The chart visualization is the legend now.
Single framing line replaces the legend. Below the chart sits one short rule: "Keywords inside each chamber are from Vikram's class · deck 61. They attach to the house number. For your chart, House 1 is your Lagna · [Sign]. (In the cosmic Kālapurusha chart, House 1 is always Aries.)" Same teaching point, one paragraph instead of a 12-card grid.
Renamed function: renderHouseLegend() → renderChartFrameRule(). Same Lagna-aware rendering, leaner job.
Why this lands
Information is closest to where you read it. Looking at a chamber and reading "Hobbies", then scrolling down to a card to see what 3H actually means in full, was an avoidable jump. Now the full string is right inside the chamber.
The chart view loses about 200 vertical pixels — meaningful on phones, where this page already runs long.
One source surface to maintain instead of three (chamber + legend + walk-through). Walk-through still shows the keyword inline at the writing moment, unchanged.
v4.56.0
8 May 2026
The South Indian chart on Interpret · beta now speaks. Vikram's per-house keyword map from deck 61 (Kinds of Houses, continued) lands inside each chamber and as a legend grid below the chart. Each chamber gains a single short keyword on a new line under the sanskrit (Self · Resources · Hobbies · Home · …). Below the chart, a 12-card legend shows the full keyword strings verbatim from class — and a frame line clarifies that keywords attach to the house number, not the sign: in your chart, House 1 is your Lagna; only the Kālapurusha cosmic chart defaults House 1 = Aries.
What landed
New data const HOUSE_KEYWORDS baked into read.html, keyed by house number 1–12, sourced verbatim from Vikram's deck 61 chart slide. Each entry has a short form (one word) and a full form (Vikram's complete keyword string).
Inside each chamber on the chart visualization: a small italic saffron-coloured keyword line below the sanskrit, computed from the chamber's house number (which depends on the user's Lagna via Whole Sign).
For your Aquarius Lagna chart: Aquarius chamber shows "Self"; Pisces chamber shows "Resources"; Aries chamber shows "Hobbies"; etc.
For an Aries Lagna chart: Aries chamber shows "Self"; Taurus chamber shows "Resources"; etc.
Same word on House 1 across all charts; different chamber position depending on Lagna.
House meanings legend below the chart. A 12-card grid with header "📜 House meanings · from Vikram's class (deck 61)". Each card shows house number + computed sign + the full keyword string. The card for House 1 gets a saffron border to mark it as the user's Lagna chamber.
Lagna-vs-Kālapurusha framing line above the legend grid: "Keywords attach to the house number. For your chart, House 1 is your Lagna · [Sign]. (In the cosmic Kālapurusha chart, House 1 is always Aries — that's a different teaching frame.)" Makes the rule that confused students at Vikram's class explicit.
Inside each Path A walk-through card: the existing "What this house means" block now leads with Vikram's deck 61 keyword line in saffron italic — "Vikram's keywords (deck 61): Resources, Family, my support." — followed by the existing full-sentence house meaning. Two registers, same source, walk-through cohort sees the keywords inline at the writing moment too.
The full keyword map (deck 61)
1H · Myself
2H · Resources, Family, my support
3H · My hobbies, siblings, effort
4H · My home, mother, emotions, fixed assets
5H · My creations, children, romance, entertainment
6H · My health, competitors, diseases, uncle
7H · My commitments, spouse, business
8H · My challenges, obstacles & hurdles, longevity
9H · My learning, teacher, higher education, long distance travel
10H · Government, Father, Boss, my work
11H · Awards, Recognition, Friends, my status
12H · Expenses, Subconscious, my morning practice
Why this lands
The chart was reading as signs + planets — abstract. With each chamber labelled Self · Home · Partner · Career, the chart maps directly to life areas at a glance. The cohort no longer has to mentally translate "this is the 7th from Aquarius" into "this is partnership".
The Lagna-vs-Kālapurusha framing prevents the standard novice confusion: assuming House 1 always equals Aries because that's how Kālapurusha is drawn. The legend names the rule directly, with the user's actual Lagna sign in the saffron text.
Single source of truth: HOUSE_KEYWORDS feeds three surfaces (chart chamber · legend grid · walk-through card). Update once, ripple to all three.
All content is from Vikram's class deck 61 — no public-internet sources, no paraphrase. The principle from v4.54.1 holds.
v4.55.3
8 May 2026
Two corrections on Read · beta. One: the Path B Step 1 line was rendering "undefined · mutable · yang" — a code bug where SIGNS[sid].element was read instead of the correct SIGN_ATTR[sid].element. Fixed; now reads "fire · mutable · yang". Two: Sree's-chart references (Sun in Sagittarius 11H · Aquarius Lagna) removed from in-page surfaces. The page now leans entirely on Vikram's class material — deck 72 Sun in Aries 2H, deck 73 Moon in Taurus 2H — for worked examples. Per-planet cards already carry Vikram's deck-sourced examples.
What changed
Bug fix · "undefined · modality · duality" in the Path B Step 1 sign-attributes line. The variable referenced SIGNS[sid].element, but the SIGNS object only carries name/sanskrit/glyph; element lives in SIGN_ATTR[sid]. Corrected to attrs.element.
Synthesis Examples in the destination card · Sree's-chart tab removed. The relocated Synthesis Examples card after House 12 / Planet 9 used to have two tabs (Vikram's teaching · Sree's chart). Now shows only Vikram's deck 72 Sun in Aries 2H teaching example. Tab toggle removed; single-pane.
Path B intro card · worked example switched to Vikram's deck 72. Used to combine Vikram's Sun in Aries 2H with Sree's chart (Aquarius Lagna · Sun in Sagittarius); now strictly Vikram's class example.
Per-planet examples (Sun → deck 72, Moon → deck 73, etc.) shipped in v4.55.2 stay as is — those are already Vikram-sourced.
Why this lands
The undefined was a small render bug that misread the user's chart attributes — easy fix, big readability win on every Path B step.
Removing Sree's-chart references keeps the page squarely focused on Vikram's class material as the source of truth. The KB still carries Sree's worked example (worked-example-sun-in-sagittarius-11h.md) for archive; in-page surfaces stay teacher-only.
v4.55.2
8 May 2026
Each planet card on Path B (Interpret · beta) now carries Vikram's deck-sourced Parts of Speech worked example for that specific planet. Sun's card surfaces deck 72's "Sun in Aries 2H" example with both Vikram synthesis sentences. Moon's card surfaces deck 73's "Moon in Taurus 2H" example. Cohort members reading the Sun see Vikram's Sun example; reading the Moon see his Moon example. Same framework, different planets — the room for the learner's voice within each.
What landed
New data const PLANET_PARTS_EXAMPLE baked into read.html with verbatim Parts of Speech mappings + synthesis sentences from Vikram's class decks.
New per-planet card block (after Step 3) titled "📖 Vikram's example · Parts of Speech". Renders a small five-row table (Noun · Verb · Adverb · Adjective · Area) plus the two synthesis sentences plus deck attribution.
Sun · deck 72 · Sun in Aries 2H:
"The self expresses outwardly by leading warmly the family"
"The self shines by leading the family with warmth"
Moon · deck 73 · Moon in Taurus 2H:
"Emotions inward, fixed and grounded, family"
"Reflecting on my emotions supports me"
Mars (deck 76), Mercury (deck 77), Jupiter, Venus, Saturn, Rahu, Ketu — placeholder shown until Sree captures their deck slides: "Vikram's worked example for this planet hasn't been captured from class yet. Will land here when the deck arrives."
Why this lands
The Synthesis Examples relocated to the Synthesis destination card in v4.55.1 are universal (Sun in Aries 2H — Vikram's general teaching example). Per-planet examples are contextual: when walking the Sun, Vikram's Sun example is right there; when walking the Moon, his Moon example. Right reference, right moment.
The two synthesis sentences per planet show the room for voice within the framework — same five parts, different phrasings. Cohort sees Vikram modelling the very thing he protects: "the framework structures the line; the learner phrases it."
Placeholder pattern keeps the gap visible. As more class decks are captured, examples drop in without restructuring.
v4.55.1
8 May 2026
A focused cleanup pass on the Path A (house) walk-through after Sree's deep-scan review of Interpret · beta. The per-house card was carrying material that belongs to Path B (Parts of Speech grammar) or duplicated material the new intro card already carries (the inline 8-step procedure). v4.55.1 strips both, rewrites the self-check to ask Path-A-relevant questions, makes the page-level subject frame path-aware, relocates the Synthesis Examples to the Synthesis destination, and adapts the drawer's avatar section header per path. The per-house card now collapses from ≈8 elements below the prompt to ≈3.
What was removed from per-house cards (Path A)
📐 "Two anchors before you write" expander — three sub-cards (Parts of Speech, Intention, Synthesis Examples) all gone from house cards. Parts of Speech is Path B's grammar map (Planet=Noun, Duality=Verb, Modality=Adverb, Element=Adjective, House=Area) — it doesn't model Path A's procedure (Sign+House → Planet+House → Ruler+Sign → Karaka+Sign). The Intention principles are still surfaced via the self-check's prediction warning.
📋 Inline 8-step procedure <details> — duplicated material now in the Path A intro card (v4.55.0 walkIdx === 0). Cohort sees it once on entry; per-house cards no longer carry the full procedure inline.
Self-check rewritten for Path A
Old self-check asked Parts-of-Speech questions (Noun · Verb · Adverb · Adjective · Area) — wrong framework for Path A.
New self-check asks Path A discipline questions the cohort actually needs to verify:
"My sentence stayed about this house — not the Lord's other house, not the Karaka's other placement."
"I used one building block per sentence — didn't combine two."
"I did not combine the Karaka keyword with the house keyword — that's universal, not personal."
"My line passes the 8-billion-people test — specific to me, not true for everyone with this Lagna."
Intention radio (Conversation / Invitation / Remedy / ❌ Prediction) stays — the principle applies to both paths.
Path B self-check (4 boxes — Noun · Verb · Adverb · Adjective) stays as is. Parts of Speech is Path B's framework.
Walk-frame is path-aware
The "📍 Subject" frame at the top of every walk-through card was hardcoded to "you are analysing this house". Now adapts:
Path A:"📍 Subject: you are analysing this house — keep every sentence about this house. The Lord's other house, the Karaka's other placement — those are different analyses, not extras to fold in here."
Path B:"📍 Subject: you are analysing this planet — keep every sentence about the planet, not its house. The house it sits in is reference for placement only — not the subject of these sentences."
Synthesis Examples relocated
The two-tab Synthesis Examples card (Vikram's Sun in Aries 2H · Sree's Sun in Sagittarius 11H) moved out of the per-house card and into the Synthesis destination card (after House 12 / Planet 9). It belongs at the destination — that's the advanced sentence form learners are working toward, after Path A or Path B is mastered.
New label inside the Synthesis card: "📝 What an advanced line looks like — Once Path A or Path B is mastered, the strict step-by-step gives way to a single sentence that combines planet + sign + house — Vikram's 'Parts of Speech' synthesis."
Drawer Avatars section adapts per path
Path A: drawer's avatar section header reads "Avatars in this house" (existing), shows avatars of all planets sitting in the current walk-through house.
Path B: header reads "Avatar of this planet", shows the single avatar of the current walk-through planet. Empty state copy adapts too: "— place this planet in your chart to see its avatar."
Drawer's contextual highlighting (Dualities/Modalities/Elements) also adapts — on Path B it tracks the sign of the current planet; on Path A it tracks the sign of the current house.
Net effect
Per-house card collapses from ≈8 elements below the exercise prompt to ≈3 — pointer + 8-billion-people test + self-check. The card breathes.
Per-planet card unchanged — Path B genuinely uses Parts of Speech.
Synthesis card is now a richer destination — frequency dashboards plus the advanced-form examples.
The two paths feel more distinct. Each surface carries only what its path needs.
v4.55.0
8 May 2026
A two-path rearchitecture of Interpret · beta. Vikram teaches two distinct interpretation procedures — Path A for analysing a house (8 steps), Path B for analysing a planet (3 steps) — with different combination rules for each. The page now offers them as two equal first-class doors from the chart view. Each path has its own intro card with a step-by-step worked example, a class transcript quote with timestamp, and deck citations. All inline. All sourced from Vikram. No public internet.
Two doors on the chart view
The single "📖 Begin the walk-through →" button is replaced by a two-card grid: 📖 Read a house (12 cards · 8 steps each) and 🪐 Read a planet (9 cards · 3 steps each). Equal weight, clear scope, separate flows.
Cohort members pick which procedure they're running before any sentences are written. The subject of analysis is named explicitly from the door onward.
Path intro cards · the procedure made visible before walking
A new Path intro card sits at walkIdx === 0 at the start of each walk. Four sections per intro:
The steps — Path A's 8 or Path B's 3, with combination rules and the explicit "never combine X with Y" constraints.
A worked example — strict step-by-step, one building block per sentence. Path A uses the Cancer Ascendant case from deck 63, re-derived legally per the May 2026 procedure (with the deck's forbidden sentence flagged as a learning anti-pattern). Path B uses Sun in Sagittarius (Sree's own placement, deck 72-sourced) showing three Step 1 sentences plus Step 2 (friendship with Jupiter) and Step 3 (Budha-Aditya Yoga if Mercury joins).
From Vikram's class — verbatim transcript quotes with timestamps. Path A surfaces Session 41 (Apr 19, 2026, 35:02): "If you are analysing a house, what is the order? First sign and house. Then planets in that sign. Then ruler of the house in which sign… Then Karaka." Plus Session 41 1:41:30 on the Step 2 / Step 4 boundary. Path B surfaces Session 39 (Apr 5, 2026, 1:49:30) on the Parts of Speech grammar.
Sources from class — explicit deck and session citations: deck 63, deck 67/74, the May 2026 PDF for Path A; decks 72/73/76/77 plus Sessions 39/40/42/43 for Path B.
Path B walk-through · 9 planet cards, 3 steps each
One card per planet (Sun · Moon · Mars · Mercury · Jupiter · Venus · Saturn · Rahu · Ketu) in Vikram's class order. The subject is the planet, never its house.
Step 1 · Planet in Sign. Surfaces the planet's archetype (avatar pairing — Sun→Rāma, Moon→Krishna, etc., with QR-sourced keyword list) and the sign's building blocks (yang/yin · cardinal/fixed/mutable · fire/earth/air/water).
Step 2 · Planet vs sign owner. Computes the naisargika (permanent) friendship between the planet and the ruler of the sign it sits in. Three outcomes: "sees X as a permanent friend / enemy / neutral". Special case: planet in its own sign reads "at home — rules where it sits."
Step 3 · Conjunctions. Detects other planets sitting in the same sign in the user's chart. Surfaces the friendship with each. Empty-state: "No other planets sit in [sign] (no conjunctions). Skip Step 3."
Empty-state for unplaced planets: if a planet isn't in the user's chart, the card invites them to place it. Pad hides on empty-state cards.
Naisargika friendship table (BPHS standard) baked inline into read.html — the same table Interactive's Court mode uses.
Path-aware writing pad and notes
House notes save under astro-mychart-notes-v1 (existing key). Planet notes save under astro-mychart-notes-planet-v1 (new key). The two stores never collide.
Pad header adapts to path: "Analysing House 5 · Children — write your line about this house" vs "Analysing Sun · Sūrya — write your line about this planet".
Exercise prompt adapts: "My drive is in Aries. Three characteristics. I am ___." (Path A, House 3) vs "My Sun is in Sagittarius. Three characteristics. I am ___." (Path B).
Self-check on Path B drops the "Area · House" tickbox (skipped in Path B per Vikram's rules) — just Noun, Verb, Adverb, Adjective.
Synthesis examples card relabelled
The v4.51.0 worked-examples card inside the "📐 Two anchors before you write" expander used to be labelled "Worked examples — same framework, two charts", which mis-suggested it modeled the strict step-by-step procedure. Per Sree's rejig: those two examples (Sun in Aries 2H · Sun in Sagittarius 11H) actually combine planet + sign + house in one sentence — that's the advanced synthesis form Vikram says comes after mastering Path A or Path B.
Relabelled to: "Synthesis examples · advanced form — two charts — what the line looks like once Path A or Path B is mastered." The strict step-by-step worked examples now live inside each path's intro card, where they belong.
Why this lands
The agent read across six class transcripts (Sessions 35, 39, 40, 41, 42, 43) and confirmed: Vikram explicitly distinguishes Path A from Path B (Session 41, 35:02), and the cohort's most common confusion is collapsing them. v4.55 separates them at the architecture level — different doors, different procedures, different note stores, different pad copy.
Each path now declares its rules at the front (intro card), shows what a clean line looks like (worked example), points at the class material it came from (transcript quote + deck citation), then walks the cohort through the procedure step-by-step. Reference and discipline before writing.
Everything inline. Everything Vikram. The principle from v4.54.1 (no .md links from read.html) holds throughout — every quote, example, and citation is rendered inside the page.
What's next
Compound friendship — Path B Step 2 currently surfaces permanent (naisargika) friendship only. Temporary friendship (whose-sign-each-other-is-in) lands in v4.56.
Path A Step 6 (aspects) — Vedic drishti, including Mars 4/8, Jupiter 5/9, Saturn 3/10. Lands in v4.57.
Path A Step 7 (Parivartana) — auto-detect mutual exchanges between sign rulers. Lands in v4.58.
"Currently in" persistent tag — small toggle to switch between paths mid-walk without losing notes. Polish; lands when cohort feedback asks.
v4.54.1
8 May 2026
Hotfix on top of v4.54.0. Sree caught that the new "↗ See Vikram's 8-step procedure" link inside Interpret · beta pointed at a raw .md file in the knowledge base — wouldn't render in a browser, wrong artefact for users. The principle: any reference material from inside the page lives inside the page; no links to MD. v4.54.1 inlines the entire 8-step + 3-step procedure as a tap-to-expand <details> block right where the link used to be.
What changed
Removed the .md href that v4.54.0 added next to the 8-billion-people test note.
Replaced with an inline collapsible — "📋 Vikram's 8-step procedure for analysing a house — tap to expand" — that contains, all in-page:
Path A · the 8 steps for analysing a house (Sign + House → Planets in House → Planet relationships → Ruler in Sign → Karaka in Sign → Aspects → Parivartana → Repeated patterns).
Path B · the 3 steps for analysing a planet (Planet in Sign → Planet-to-Owner relationship → Conjunctions / aspects).
The combination-rules table — what to combine, what to never bring in, the explicit "Karaka + house keyword = ❌ never, same for everyone" row.
The seven Golden Rules — verbatim from Vikram's house-interpretation guidance.
Native HTML<details> with custom styling — no JS, no nav, no external dependency. Tap-to-expand, tap-to-collapse, browser-native accessibility.
The principle this codifies
Pages in the project (read.html, learning-companion.html, etc.) never link to .md files. MD lives in the KB as source-of-truth for the team; user-facing surfaces inline whatever they need.
If a reference is small enough to inline, it's inline. If it's too large to inline, it's another peer page. The KB is for builders, not readers.
v4.54.0
8 May 2026
Sree spotted that two of his class references — older deck 63 (Interpreting the Ascendant) and the newer house-interpretation guidance PDF — teach moves that contradict each other. A deep read of six class transcripts (Sessions 35, 39, 40, 41, 42, 43) confirmed: deck 63's worked example combines a Lord keyword with the house-of-Lord's-placement keyword, which Vikram explicitly forbids in Session 41 (April 19, 2026). v4.54 makes the subject of every analysis visible inside Interpret · beta, surfaces the 8-billion-people test prominently at the writing moment, and adds a KB correction note that re-derives deck 63's example using the May 2026 procedure.
The diagnosis
Vikram teaches two interpretation paths. Path A · analysing a HOUSE (8 steps); Path B · analysing a PLANET (3 steps). The path determines which combinations are legal in a sentence.
The boundary that catches everyone: when a planet sits in a house, its role flips depending on which path you're on. Path A Step 2 = planet keyword + house keyword (no sign building blocks). Path A Step 4 = ruler keyword + sign building blocks (no house keyword). Path B Step 1 = planet keyword + sign building blocks (no house at all). Three different sentence templates for the same chart fact.
Deck 63's worked example writes "My identity is linked to my higher education" — combining Lord (Moon → identity) with house-of-Lord-placement (9th → higher education). The May 2026 guidance flags this as a forbidden combination. Deck 63 actively models the move Vikram now catches you on.
The 8-billion-people test from the guidance PDF: "is this true for everyone with this Lagna?" If yes — the sentence is universal, not specific. The most common offender: combining the Karaka keyword with the house keyword (Karaka is the same for all 8 billion people).
What landed in Read · beta
Subject made explicit on every walk-through surface. The walk-card eyebrow now reads "House N of 12 · subject of this analysis"; the writing pad's tag reads "Analysing House N · [House Word] — write your line about this house"; the framing line at the top of the walk-through reminds: "📍 Subject: you are analysing this house — keep every sentence about this house. The Lord's other house, the Karaka's other placement — those are different analyses, not extras to fold in here."
The 8-billion-people test surfaced at the writing moment. A new saffron-bordered note above the writing pad: "📍 The 8-billion-people test. If your line is true for everyone with this Lagna — it's universal, not yours. Specifics come from your sign + your Lord's placement + your Karaka's placement, never from the Karaka keyword combined with the house keyword." With a deep link to the canonical 8-step procedure document.
What landed in the KB
New file astrology-101-knowledge-base/deck-63-correction-may-2026.md — a companion note alongside decks/63-interpreting-the-ascendant.md that:
Marks each of deck 63's sample sentences as ✅ legal or ❌ forbidden under the May 2026 guidance, with the specific Step number from Path A.
Re-derives the Cancer-Ascendant example using the 8-step procedure cleanly.
Cites Session 41 (April 19, 2026) where Vikram explicitly distinguishes Path A from Path B at 35:02, names the Step 2 / Step 4 boundary at 1:41:30, and answers Marie's identical question at 1:43:30: "If you do Sun in Aries, you can analyse Sun in Aries, but in that case you are analysing the soul, the identity, the true nature of the person, and nothing to do with the 9th house. Here my task is to analyse the 9th house."
INDEX.md updated to reference the correction note in the cross-deck reference documents section.
Why this lands
The biggest source of confusion in chart interpretation is collapsing the subject. With the subject visible at three places on every walk-through card (eyebrow, frame, pad tag), drift is much harder.
The 8-billion-people test is the single rule that catches the most universal-not-personal sentences. Surfacing it at the writing moment, not buried in a deck deep in the KB, makes it a check rather than a footnote.
The deck 63 correction note prevents a quiet inheritance of the wrong move. Cohort members who learned interpretation from deck 63 first will see exactly which sentences need re-derivation under the new rules.
What's next
Path B in Read (v4.55+) — add a "Read a planet" walk-through alongside "Read a house". Currently only Path A is surfaced.
Cut B2 (planet-to-planet relationships) — Step 3 of Path A, when 2+ planets share a house.
v4.53.0
8 May 2026
A sticky writing pad now lives at the bottom of the viewport on the Interpret · beta walk-through. Sree caught the friction: the textarea was buried below the references, so writing meant scrolling between read and write. The fix — pin the textarea as a fixed bottom-banner that stays visible while the user scrolls up to re-read the drawer, the Pati block, the Karaka block. Writing happens with references in view, not after them.
What landed
The per-house textarea moved out of the inline walk-exercise block and into a new fixed-position bottom banner (.walk-pad). Body-level so it can overlay the viewport.
Default state: expanded. The pad shows: house tag ("House 5 · Children — write your line"), the exercise prompt sentence, the textarea, a "✓ saved" indicator, and an "⌄ Collapse" button.
Collapse / expand. Tap "⌄ Collapse" to shrink to a slim 46px header (just the tag + saved indicator + "⤢ Expand"). Tap to bring the textarea back. State persists per browser (astro-mychart-pad-expanded-v1).
Auto-focus on expand. Tapping the collapsed pill expands and focuses the textarea so writing starts immediately.
Auto-save preserved. Same debounced 280ms save to astro-mychart-notes-v1 per house. Saved indicator pulses inside the pad on each save.
Visible only during the walk-through, houses 1–12. Hidden on the synthesis destination, on Setup, and on Chart views.
Coexists with the WhatsApp FAB. Pad has 80px right-side padding so the FAB stays accessible. WA FAB sits visually above the pad (z-index 200 vs 100).
Page padding adjusts. Body gets padding-bottom: 64px when collapsed, 220px when expanded — content can scroll past the pad without being hidden under it.
Inline pointer where the textarea used to be. A small dashed-border note inside walk-exercise says: "↓ Your reflection lives in the writing pad at the bottom of the screen — always visible, even while you scroll up to read references. Tap '⌄ Collapse' to hide it; tap '⤢ Expand' to write." Cohort members aren't surprised by where the textarea moved to.
Why this lands
The walk-through has accumulated rich references — drawer (Vikram's keyword grids), Pati block, Karaka block, planet placements. All of it is meant to inform the user's "I am ___" sentence. With the textarea inline at the bottom, writing meant losing sight of the references; with it sticky, writing happens with the references one scroll away.
Default-expanded means the writing surface is visible the moment the user lands on a house — no hidden affordance to discover.
Collapse-on-demand means cohort members who want a clean read of the references can shrink the pad to 46px and still see what house they're on + that their previous notes are saved.
The mobile experience benefits most: scrolling on a phone between top-of-card references and bottom-of-card textarea was the worst case of the old layout. The pad fixes it without compromising desktop.
Implementation note
The pad's textarea event handler reads walkIdx at save time, so navigating between houses (via Prev/Next buttons or the 12-dot progress bar) updates the pad's tag, prompt, and value automatically. One textarea, one save handler, twelve houses.
v4.52.0
8 May 2026
Cut B1 of the deeper interpretation layers from Vikram's recently-shared house-interpretation guidance lands on Interpret · beta. Two pieces: a new Karaka · Natural significator block on every walk-through card (Step 5 of the guidance), and a new Synthesis destination card after House 12 that surfaces what the cohort member's chart emphasizes across duality / modality / element (Step 8). Both stay strictly in the fact-surfacing register — Vikram's principle is honored throughout: the system shows the data, the learner draws the meaning.
Cut 1 — Karaka block on every house
New block on each walk-through card, between Pati · Ruler of this house and The Exercise: "Karaka · Natural significator".
Three lines per card:
"The natural Karaka of this house is [Planet · Sanskrit], holding the keyword [keyword]" — the keyword is curated to overlap with the house's own keyword (per Vikram's Step 5 instruction).
"Your [Planet] sits in your [N]H · [House word] ([Sign])" — with the house tag rendered as a tappable jump that takes the reader to the Karaka's house. If the planet isn't placed yet, a soft "Place [Planet] in your chart" line.
The combination rule, surfaced explicitly: "Combine [keyword] with the sign's building blocks — never with the house keyword. The Karaka is the same for all 8 billion people; that pairing would be universal, not yours."
Karaka mapping (per BPHS, light keyword overlapping with house theme):
1H — Sun · vitality
2H — Jupiter · abundance
3H — Mars · courage
4H — Moon · nurture
5H — Jupiter · wisdom
6H — Mars · discipline
7H — Venus · love
8H — Saturn · depth
9H — Jupiter · dharma
10H — Sun · authority
11H — Jupiter · expansion
12H — Saturn · release
Cut 2 — Synthesis card after House 12
New 13th card at the end of the walk-through. The "Next house →" button on House 12 is now "See synthesis ✦"; tap → a synthesis card replaces the per-house card, with the title "What your chart emphasizes."
Three frequency dashboards — duality, modality, element — each as a small saffron bar chart. Counts are tallied across the user's placed planets (signs are deterministically assigned to houses by Whole Sign and would always sum evenly, so the meaningful signal comes from where the planets cluster).
Emphasis callouts per category. If a single quality leads, surfaced: "Emphasized: Mutable · appears ×4 across your placements." If two qualities tie, surfaced as: "No single modality dominates — nothing emphasized." Per Vikram's Step 8, ties yield no emphasis.
Closing frame: "This is what Vikram's Step 8 surfaces — the qualities that show up repeatedly across your placements. The interpretation of what that emphasis means is yours to make."
Progress bar gains a 13th node — a small saffron ✦ at the end. Tappable from any house to jump straight to the synthesis. Active when on the synthesis card.
Empty-state graceful: if no planets are placed, the synthesis card prompts the user to add some via the existing setup screen.
Why this lands
Karaka is the fourth foundational house factor (alongside sign, planets-in-house, ruler) — without it, the walk-through stopped two-thirds through the procedure. With v4.52 every house card now reflects Steps 1, 2, 4 and 5 of Vikram's eight.
The synthesis is the destination for the walk-through — a reason to walk all twelve houses rather than dipping in and out. Cohort members who finish see what their chart actually emphasizes, in three clean rows. The pedagogy is faithful: it's a frequency report, not a horoscope.
Both pieces strictly preserve Vikram's principle from v4.49–v4.50. Karaka surfaces a fact (the natural significator) plus a combination rule. Synthesis surfaces frequencies. Neither writes a sentence for the user.
What's coming next
Cut B2 (v4.53) — Step 3: planet-to-planet relationships when 2+ planets share a house, surfacing compound friendship/enmity using the naisargika table from Interactive's Court mode.
Cut B3 (v4.54) — Step 6: aspects on the house, with the relationship-with-Karaka twist.
Cut B4 (v4.55) — Step 7: Parivartana detection.
Cut B5 / B6 later — the alternate Planet path + the "Before You Begin" pre-analysis frame.
v4.51.0
8 May 2026
A worked-examples card joins the "📐 Two anchors before you write" expander on Interpret · beta. Two tabs — Vikram's teaching (Sun in Aries 2H) and Sree's chart (Sun in Sagittarius 11H · Aquarius Lagna) — each show the Parts of Speech table mapped to that placement, plus the synthesis sentence(s). Same framework, two charts, two voicings each. The teacher's example anchors the framework; the learner's example shows what the framework actually yields when a real cohort member uses it on their own chart. The room for the learner's own voice becomes visible.
What landed
New card inside the Two-anchors expander, after the Parts of Speech and Intention cards: "📝 Worked examples · Two walk-throughs — same framework, two charts."
Tab 1 · Vikram's teaching — Sun in Aries 2H. Parts of Speech table (Noun: Sun · Self · Verb: Aries · Yang · Outward · Adverb: Cardinal · Initiates · Adjective: Fire · Warmth · Area: 2H · Family · Wealth · Speech) with Vikram's synthesis: "The self shines by leading the family with warmth." Sourced from class deck 72 (Sun).
Tab 2 · Sree's chart — Sun in Sagittarius 11H, Aquarius Lagna. Same Parts of Speech table mapped to the real placement (Verb: Sagittarius · Yang · Adverb: Mutable · Spontaneous · Adaptable · Adjective: Fire · Transformative · Expansive · Area: 11H · Recognition · Community · Gains) with two synthesis sentences for the same fact: "The self expresses outwardly, spontaneously and transformatively, in the area of recognition and community" · or · "The self shines transformatively by spontaneously seeking recognition and vision."
Tab choice persists per browser (astro-mychart-we-tab-v1). Default opens to Vikram's teaching since that's the class-canonical reference; learners toggle to Sree's chart to see what the framework yields on a real placement.
Frame line below both panes: "Same framework, two charts, two voicings each. Your sentence will be different again — that's the room Vikram protects."
New canonical reference in the KB
New file astrology-101-knowledge-base/worked-example-sun-in-sagittarius-11h.md captures Sree's complete walk-through for the cohort to reference. Pairs with Vikram's teaching example in decks/72-sun.md.
Cross-referenced from interpretation-framework.md and the KB's INDEX.md "Cross-deck reference documents" section. Two worked examples, both findable from one place.
Why this lands
The framework alone (Parts of Speech, the Intention) is abstract. Worked examples make it concrete. Two examples — teacher's and student's — make it more than concrete: they make the room for voice visible. The same five-cell table yields different sentences. Word choice is where the learner shows up.
Sree's chart specifically shows two synthesis sentences from one placement — directly modelling the principle from v4.49 / v4.50: the framework structures the line, the learner phrases it. Two phrasings is the proof, in the page itself, that the framework doesn't dictate the voice.
Closed-by-default expander means cohort members who already know the framework aren't crowded by the examples. Two taps reveal a teacher example and a student example side-by-side at the moment of writing.
v4.50.0
8 May 2026
Two craft anchors from Vikram's class now sit with the writing surface on Interpret · beta. Above each per-house exercise textarea: a small expander — "📐 Two anchors before you write" — opens to show his Parts of Speech grammar map and the four Intentions (with prediction explicitly struck out, since year-1 of the class doesn't read for prediction). Below the textarea: a "🪞 Self-check" panel that asks the learner to verify their own line against both anchors — five tick-boxes for the grammar, a four-radio for the intention, with a saffron warning if the learner picks "Prediction." The system asks the questions; the learner answers — same Vikram principle as v4.49, deepened.
Anchor 1 — Parts of Speech
Vikram's grammar-as-interpretation map. Each chart factor maps to a part of speech: Noun · Planet (what is acting); Verb · Duality (outward / inward — the direction of expression); Adverb · Modality (initiates / sustains / changes — how the action happens); Adjective · Element (the kind / quality); Area of life · House (where it shows up).
Carries Vikram's worked example from deck 72 — for Sun in Aries 2H: "The self shines by leading the family with warmth." Learners can build sentences for any placement by walking the five roles.
Anchor 2 — The Intention
Four framings the same fact can land in. Three are right for year-1 of the class; one is explicitly excluded: ~~To predict the future~~. The other three:
To initiate a conversation — open question. "Have you ever spoken to an audience?"
To invite a course of action — offered invitation. "Can you try presenting what you know, and see how you feel?"
To remedy the planet — suggested re-orientation. "Consider presenting what you know."
The principle: the chart is not a forecast tool. Prediction-framing closes possibility; the other three open it.
The self-check
Parts of speech check — five tick-boxes the learner ticks themselves: did your line name the planet? the direction? the how? the quality? the area of life? No grading. The user judges. State persists per-house in localStorage.
Intention check — radio with four options. Prediction is rendered with a strikethrough so the visual frame is unambiguous. If the learner selects "Prediction" anyway, a small saffron warning appears: "Vikram's class: not for prediction. Re-frame your line as a conversation, an invitation, or a remedy."
The system asks; the learner answers — same as v4.49's principle, but operationalised into a small feedback loop. The page never grades or rewrites; it scaffolds the learner's own check.
Other
Both expanders persist open/closed state per browser (astro-mychart-anchors-v1, astro-mychart-selfcheck-open-v1). Closed by default — a learner who already internalises the anchors isn't crowded by them. Self-check answers persist per-house under astro-mychart-selfcheck-v1.
New canonical reference file in the knowledge base — astrology-101-knowledge-base/interpretation-framework.md — captures both anchors with the worked example in one place. Future surfaces (Quick Reference, Interactive, future workbook integrations) can link to this single source rather than re-stating it.
Why this lands
v4.49 honored Vikram's principle by removing the system-generated interpretation. v4.50 goes further: it teaches the learner the craft of writing their own. Both anchors come from Vikram's class — the page just surfaces them at the moment they're useful.
The self-check is the most direct expression of "Just don't let the computer take away the human": it's the human checking the human, with the system holding the questions. No grading, no rewriting, no nudging beyond the prediction warning that Vikram explicitly named.
Closed-by-default means experienced cohort members aren't burdened. Open-when-needed means the anchors are one tap away during the writing moment.
v4.49.0
8 May 2026
Vikram reviewed Read · beta and sent a clear principle: "Just don't let the computer take away the human. We need to make sure people use their mind and intellect to do the interpretation." He flagged the per-planet line on each walk-through card — "Moon in Aries — energized initiating bold changes" — and asked whether it was learner-written or system-generated. It was system-generated, baked from his class decks 72–77. v4.49 corrects this. The system now only surfaces references; the learner writes the sentence. Plus Sudha's earlier "Pati of the House" sketch lands in the same release — it fits the same principle, surfacing facts not interpretations.
Cut 1 — Honor Vikram's principle
The system-generated planet line is gone. Per-planet pills inside "Planets in this house" used to render lines like "Moon in Aries — energized initiating bold changes", baked from Vikram's per-sign one-liners in decks 72 (Sun), 73 (Moon), 76 (Mars), 77 (Mercury). Removed. Each pill is now factual only: "Moon · Chandra · in Aries".
"↗ See [Planet] in Quick Reference" link added per planet. Tap takes the reader to QR's deep-linked planet section (learning-companion.html#planet-moon, etc.) where Vikram's classical material on that planet lives — Parashara / Phala Deepika / Uttara Kalamrita, plus the deck-derived attributes. Opens in a new tab so the walk-through stays in place.
Framing line at the top of every walk-through card:"Reference is given — open the drawer for Vikram's keywords. Interpretation is yours — write your own line in the box." Sets the contract explicitly so the principle is visible, not just felt.
Placeholder text removed. Previous releases showed a "more from class — coming" line for Jupiter / Venus / Saturn / Rahu / Ketu (planets whose decks aren't yet drafted). With no system-generated lines for any planet, this placeholder also goes — there's nothing missing to flag.
Cut 2 — Pati of the House (Sudha's sketch)
New block on every walk-through card, between "Planets in this house" and "The exercise": "Pati · Ruler of this house".
Three lines, all factual:
"[Sign] is ruled by [Planet · Sanskrit]" — for Virgo and Scorpio, surfaces both rulers (Mercury + Rahu, Mars + Ketu) per Vikram's framing.
"Your [Planet] sits in your [N]H · [House word] ([Sign])" — with the house tag rendered as a tappable jump that takes the reader to that house's walk-through card. If the planet isn't placed yet: "Place [Planet] in your chart to see where this house's energy plays out."
"Where the lord lives is the next layer of the read — that connection is yours to make." — a one-time generic frame, not a per-pair interpretation.
No 144-cell "lord of X in Y" interpretation matrix. The fact is surfaced; the reading is the learner's work — same principle as Cut 1.
Why this lands
Vikram's principle is the reason the page exists — astrology as a tool for self-inquiry, not horoscope-generation. The previous walk-through quietly violated this by handing over the synthesis. With the planet line removed, the page returns to its proper role: scaffold the reading, never perform it.
Sudha's Pati ask was already aligned with this principle — she sketched "Pati of the House. Eg Mercury. Where is it placed? Same step to be repeated", deliberately stopping short of interpretation. The block we ship matches her sketch line for line.
Three layers, three roles, all clearly separated:
Drawer — Vikram's keywords (Dualities · Modalities · Elements · Avatars in this house).
Walk-through card — the facts (sign, planets, ruler, ruler's placement).
Textarea — the user's voice (the "I am ___" exercise).
The QR jump links mean the full Vikram corpus on each planet is one tap away — without re-baking it into Read. Quick Reference stays the source of truth; Read borrows by reference.
Note for Vikram
The 1H card carries a short Lagna-character description in classical attributes (e.g. "fixed · air · masculine — a body that thinks differently, stands apart, friend to all. Ruled by Saturn"). It describes the sign, not the placement — a reference, not an interpretation. Kept in v4.49. Happy to drop if you'd prefer strict adherence.
v4.48.0
8 May 2026
Two refinements to the v4.47 quick-reference drawer on Interpret · beta, both from Sree's reviewing eye. One: the duality / modality / element descriptions are now Vikram's exact keyword lists pulled verbatim from Quick Reference — no drafted paraphrase. Same words on both surfaces. Two: the Avatars section is now contextual-only — it shows only the avatars of planets actually placed in the current house, with explicit "Avatar · Planet · English" tagging, instead of all ten regardless of placement.
Cut 1 — QR-sourced keywords
The drawer's Dualities, Modalities, and Elements tiles now carry the same keyword lists shown in Quick Reference — Vikram's class lists, copied verbatim from QR's ELEMENTS / MODALITIES / POLARITIES constants (only the positive field, since the drawer is light-only).
Each tile carries the deity pairing the way Vikram introduces them: Fire · Mahakali, Earth · Mahasaraswathi, Air · Maheshwari, Water · Mahalakshmi; Cardinal · Brahma, Fixed · Vishnu, Mutable · Shiva; Yang · Nara, Yin · Stri.
Drawer header pill updated to "light only · from class" so the source is visible without clicking through.
Cut 2 — Contextual avatars
The Avatars section header now reads "Avatars in this house" and renders only the avatars of planets actually placed in the current walk-through house. Empty house → small note: "— no planets placed in this house, so no avatar surfaces here."
Each avatar tile is tagged explicitly: Matsya · Ketu · Fish, Krishna · Moon · Cowherd, etc. So the planet-avatar mapping is visible in the tile itself — no need to remember it separately.
Avatar tiles carry the keyword list directly from QR's AVATARS.keywords array — "flood, preservation of knowledge, beginning, divine warning, intuition, first sign" for Matsya, etc. Same words as the avatar drawer in QR.
Kalki removed from the data — QR's AVATARS is 9 entries (Matsya through Buddha), one per classical planet. Kalki is the future avatar with no planetary correspondence in this teaching, so it never had a place to surface.
Why this lands
The drawer's purpose is to support the cohort with material they already recognise. Drafted one-liners — even Vikram-flavored ones — introduced subtle word drift between this page and Quick Reference. Pulling QR's exact keyword lists removes that drift entirely.
Contextual avatars match how the walk-through reads. The user is reading about this house, with these planets in it — the avatars they need are the ones whose planets sit here, not all ten unprioritised.
Maintenance: when Vikram updates a keyword list in the future, the change goes once into QR's ELEMENTS/MODALITIES/POLARITIES/AVATARS constants, and we re-paste the same lines into read.html. Single source of truth, two surfaces.
v4.47.0
8 May 2026
A quick-reference drawer lives inside the walk-through on Interpret · beta. Collapsible. Shows the four foundational grids — Dualities, Modalities, Elements, Avatars — in light-only descriptions, matching year-1 of Vikram's class. As you walk through your houses, the drawer adapts: tiles for the current sign's duality · modality · element get a saffron border, and the avatars of any planets in this house light up too. So general look-up and contextual learning happen in the same surface.
What landed
New "📖 Quick reference" drawer at the top of the walk-through view, just below the 12-dot progress bar. Tap to expand; tap to collapse. Open/closed state persists per-browser (astro-mychart-drawer-v1) so once you open it on House 1, it stays open through Houses 2–12.
Header carries a small "light only" pill — explicit signal that the shadow side of each attribute is deliberately omitted in year 1. (Shadows can layer in later as the class progresses.)
Elements — Fire · Earth · Air · Water (spark / ground / thought / feeling).
Avatars · daśāvatāra — all ten, paired with their planet (Matsya·Ketu, Kūrma·Saturn, Varāha·Rahu, Narasimha·Mars, Vāmana·Jupiter, Paraśurāma·Venus, Rāma·Sun, Krishna·Moon, Buddha·Mercury, Kalki·future). One light-side line each.
Contextual highlighting — when the drawer is open, tiles for the current walk-through house's sign attributes (its duality, modality, element) get a saffron-tinted border + soft saffron wash. The avatars of any planets placed in this house also highlight. As you advance houses, the highlights move with you.
Built into read.html only — kept the change tightly scoped to the walk-through where it's most useful. May broaden to the chart and setup views in a later release if cohort feedback asks for it.
Why this lands
The walk-through is dense — house meaning, sign description, planets, exercise. The drawer answers the natural side-question ("wait, what does Mutable mean again?") without breaking the flow or sending the user back to Quick Reference.
Light-only is pedagogically intentional. Vikram introduces the shadow side later in the year; surfacing both before students are ready muddies the foundation. The "light only" pill makes the constraint visible rather than hidden.
Contextual highlighting makes the drawer feel aware rather than static — your current house's attributes are the ones you most want to read about, and they find your eye first. The full grid stays available so you can browse beyond the current placement.
v4.46.0
8 May 2026
Two changes on Interpret · beta. One: Sudha caught that the chart was rotating per-Lagna (her Virgo Lagna landed in the top-left corner). The South Indian chart format is canonical — signs sit fixed in their positions; only the house numbers move with the Lagna. Restored to match Quick Reference + Interactive. Two: Cut 2 of the chart-interpretation arc — the per-house walk-through. Twelve cards, navigated one at a time, each carrying Vikram's deck-sourced one-liner for the planets present, plus his "My ___ is X. Three characteristics. I am ___" exercise with an auto-saving textarea.
Cut 1 — South Indian chart layout fix
The chart's grid-template-areas was rotating by Lagna. Now signs are pinned to their canonical positions: Pisces top-left, Aries / Taurus / Gemini across the top, Cancer / Leo down the right, Virgo bottom-right, Libra / Scorpio / Sagittarius across the bottom (right-to-left visually), Capricorn / Aquarius up the left.
House numbers (1H · 2H · ...) are now labels inside each chamber, computed via Whole Sign from the Lagna pick. The Lagna chamber gets the saffron border + "Asc" tag — wherever it sits.
Match with Quick Reference and Interactive Lab: same chart shape across the whole site, no surprises.
Cut 2 — The per-house walk-through
New "📖 Begin the walk-through →" button on the Chart view. Opens a third view: twelve cards, navigated with Previous / Next, with a 12-dot progress bar at the top that lets you jump to any house and shows which houses you've already written notes for.
Each card shows: What this house means (Vikram-flavored one-liner per house) → Your sign here (Whole Sign computed; the 1H card uses a Lagna-character description from classical attributes) → Planets in this house (with Vikram's per-sign one-liner from his class decks) → The exercise.
Vikram's per-planet × per-sign one-liners baked from class decks 72 (Sun), 73 (Moon), 76 (Mars), 77 (Mercury) — 48 lines, in his exact wording. Examples: "Sun in Leo — enthusiastically focus on passion"; "Mars in Capricorn — act strategically and build with discipline"; "Mercury in Pisces — think peacefully while communicating my emotions". Whole Sign math means the right line surfaces for each placement automatically.
Placeholders for Jupiter · Venus · Saturn · Rahu · Ketu — Vikram's decks for these planets aren't drafted yet. The walk-through shows a soft "coming as Vikram's class material lands" line where their interpretations will go. Sree drops them in as the decks arrive.
The exercise — Vikram's frame from Sudha's voice note: "My [house word] is X. Three characteristics. I am ___." with a textarea below. Auto-saves to localStorage (key astro-mychart-notes-v1) on input, debounced 280ms — same pattern as Reflect. A small "✓ saved" tag fades in beside the textarea after each save. The 12-dot progress bar marks dots dark for houses you've written in.
Notes persistence is independent of the chart — clearing the chart doesn't wipe your reflections, and vice-versa.
What's still coming — Cut 3
Signature card — Lagna · Moon · Sun trio assembled into a single short reading at the end of the walk-through.
📋 Copy my reading — exports the full house-by-house with your typed answers as plain text, the same shape as Reflect's copy button.
Per-planet one-liners for Jupiter / Venus / Saturn / Rahu / Ketu as Vikram's class material arrives.
Lagna character paragraphs in Vikram's voice (the current 1H copy is interim, derived from classical duality / modality / element / ruler attributes).
Why this lands
Sudha's catch on the chart layout was right — the South Indian format is canonical, the rotation was a regression. Restoring it keeps consistency across the page and matches what she's seen in class.
Cut 2 turns the chart from a static rendering into a guided reading. The cohort can now sit with each house in turn, in Vikram's voice, with a place to write.
Surfacing Vikram's deck-sourced one-liners as 48 ready-to-use lines (instead of asking him to draft from scratch) means Phase B shipped without waiting on new content. The placeholders for the remaining five planets make the gap visible without faking it.
v4.45.0
8 May 2026
A new beta peer page — Interpret · beta — opens the chart-interpretation arc Sudha sketched in her voice note. Phase A ships the shell: pick your Lagna, place your nine planets, and see your South Indian chart with sign labels computed via Whole Sign. The walk-through (house by house, "I am ___" exercise, Signature, full reading) lands in Phase B. Cohort can use Phase A immediately to render the chart Vikram cast for them.
What landed in Phase A
New file read.html. Two views: Setup (Lagna picker + nine planet dropdowns) and Chart (the South Indian rendering with the user's planets in their houses). Auto-switches: first visit shows Setup; once a Lagna is saved, return visits land on the Chart with an Edit button.
Lagna picker — a 12-tile grid (Mesha → Meena), one tap to select. Sanskrit + English names, planetary glyphs.
Nine planet placements — Sun · Moon · Mars · Mercury · Jupiter · Venus · Saturn · Rahu · Ketu, each a dropdown of houses 1–12 with house words ("Self · Lagna", "Wealth · Dhana", ...). Optional "— not yet" for any planet you don't know yet, so the page works with partial data.
Whole Sign math — once a Lagna is picked, the 12 chambers are labeled automatically (Lagna sign in 1H, next sign in 2H, etc.). The 1H chamber is highlighted with a saffron border + "Asc" tag.
localStorage persistence — chart saves to astro-mychart-v1 on every change. Load on next visit. Clearing browser data clears the chart — by design. ↻ Start over button with confirmation.
Privacy callout — "Your chart and notes are saved only in this browser's local storage. Nothing leaves your device. There is no account, no server, no log."
Wired into the site — Read replaces the "I want to read my own chart · coming soon" tile on the index where-to-start map; added as a peer card; "Interpret · beta" added to the site nav of all 11 other pages; first-visit tip card; WhatsApp FAB; update checker.
Roadmap visible inside the page — the "What's coming" section lists Phase B (walk-through), Phase C (Signature + full reading), 📋 Copy export, the birth-detail compute path, and aspects/yogas/dashas as future layers.
What's next — Phase B
Walk-through copy for all 12 houses, drafted from Vikram's class transcripts. The pattern Sudha sketched: "My [house word] is X. Three characteristics. I am ___." with a textarea under every prompt.
Twelve sign-on-1st descriptions (the Lagna pass) — sourced from Vikram's voice, classical references as scaffolding.
Sun / Moon / Lagna-lord per-house lines (≈36 lines) for the planet-in-house interpretation. Wider grid (108 lines) follows.
Signature card — Lagna · Moon · Sun trio, the line Vikram opens every chart conversation with.
📋 Copy my reading — same pattern as Reflect's plain-text export.
Why this lands
Most cohort members already have their chart from Vikram. Phase A turns "I have a piece of paper from Vikram" into "I have a live chart on the page", in two minutes of setup. The walk-through then makes that chart legible.
Manual entry was chosen over birth-detail computation deliberately — Vikram's pedagogy is you should know your Lagna, and the act of typing it in reinforces that. The compute path is queued for later, primarily for non-cohort visitors.
Shipping Phase A on its own (no interpretation copy yet) lets the chart-rendering UX get cohort feedback before we invest in 100+ paragraphs of per-sign-per-house copy. If the picker or Whole Sign math feels off, we hear about it now.
v4.44.0
8 May 2026
Sudha tested the Interactive Lab on her phone and sent five precise WhatsApp notes — voice felt mono, audio wasn't continuous, "Currently in this chamber" should read in Sanskrit, the Prince scene was highlighting Libra instead of Virgo, and the Workbook overview's Module 4–6 links weren't opening. v4.44 closes all five. Plus visible "coming soon" placeholders for the bigger asks she sketched — per-scene content slicing, an Elements page, and a chart-interpretation mode — so the cohort can see what's queued.
Cut A — Prince → Virgo highlight bug
The Prince scene was leaking the previous scene's active selection. If you'd tapped Venus on the Inner Circle scene (where Venus sits in Libra) and then stepped back to the Prince, Libra stayed lit instead of Virgo. Fix: nextScene() / prevScene() now clear activeSignId + activePlanetId before re-rendering. Highlights always match the current scene.
Cut B — "Pati / Ruler" Sanskrit relabel
The chamber detail card now uses Sudha's preferred Sanskrit framing. In Office mode the top row reads "Pati / Ruler:" and the duplicate "Office of (mūla-trikoṇa)" row is suppressed (it was redundant). In Exalted / Debilitated modes the top label adapts ("Exalted here (uchcha)" / "Debilitated here (neecha)") so it always describes what's actually shown. In Story mode it reads "Pati / Ruler in this chamber".
Cut C — Workbook Modules 4–6 broken jumps
Modules 4 (Navagrahas → #planets), 5 (Chart Interpretation → #cabinet) and 6 (Houses → #houses) all link to sections marked data-level="beginner". On the default Foundations level filter those sections are CSS-hidden, so the hash jump landed on an invisible target — looked like the link was dead. Fix: workbook-module link clicks now check the target's data-level and, if it's hidden by the current filter, bump the filter to that level before scrolling.
Cut D — Continuous narration
When 🔊 read-aloud is on, scenes now auto-advance the moment the voice finishes — no taps needed. The chamber-highlight + narration-card stay in sync because each scene transition re-renders the stage with the new placements. Implementation: chains utterance.onend to nextScene() with a _speechCancelled flag so manual prev/next/toggle doesn't accidentally double-advance.
If both autoplay and read-aloud are on, the speech chain takes over and the fixed-interval timer is suspended (otherwise they'd race each other). Toggling read-aloud OFF mid-play hands control back to the timer at the chosen Slow / Normal / Fast speed.
Cut E — Less-mono voice
Best-available voice picker — preferring Indian-English natural / neural voices (e.g. iOS's Rishi, Android's Veena) over the default flat one. Falls back gracefully on platforms where richer voices aren't installed.
Gentle per-scene rate + pitch variation (even-numbered scenes lean a touch slower / lower; odd-numbered scenes a hair brighter) so the cabinet doesn't feel like one monotone read-through. Capped subtle so it stays Vikram's voice, not a performance.
Coming soon — visible placeholders
Per-scene content slicing on the Interactive Lab — listed in the page's "What's coming" section. Sudha's broader UX ask (only the active scene's chamber + detail show; everything else dims) so reading + listening sync without overwhelm.
Elements page — added as a subtle coming soon tile on the Where-to-start map. Five element doors with one or two practices Vikram recommends per element (pending Vikram's input on the practice list).
Chart Interpretation — also as a coming soon tile on the Where-to-start map. Sudha sketched a pedagogy in her voice note: per-house meaning → per-Lagna description → identify via duality / elements → fill-in exercise → Signature → full house-by-house reading. Queued as the v5.0 chapter-marker because of scope.
Why this lands
Sudha's notes were precise, fast, and three-of-five were small bugs. Shipping them inside 24 hours respects the rhythm she sent them in.
The "coming soon" placeholders make the bigger asks visible to the rest of the cohort without committing to a delivery date — they signal direction while keeping flexibility.
The "Pati / Ruler" rename is a small change with a big pedagogical effect — it pulls the cabinet section into Vikram's classical vocabulary, the way Sudha intuitively reads it.
v4.43.0
8 May 2026
As the page has grown — Quick Reference, Interactive, Reflect, Kālapurusha, Mercury Spectrum, Astronomy, Ether, Layers, Release Notes, Stats — finding the right door has gotten harder for someone arriving fresh. v4.43 keeps the help integrated rather than building a separate guide. Two layers: a "Where to start" map on the home page that routes by intent, and a first-visit tip card on every peer page that says, in one line, what this page does and how to use it.
Layer 1 — Where-to-start map on the home page
New section between the origin paragraph and "How it started" — eight intent-based cards, each phrased as "I want to…": look something up, learn the cabinet as a story, sit with a reflection prompt, see my body in the chart, understand the science underneath, see one planet across its range, read about the retreat, know how this came to be.
Each card carries a short detail line and routes to one peer page (Quick Reference, Interactive, Reflect, Kālapurusha, Astronomy, Mercury Spectrum, Ether, Layers).
The existing "Three places to start" Quick Reference teaser is unchanged — it remains the QR-specific onboarding moment.
Layer 2 — Per-page first-visit tip card
A self-contained snippet (CSS + DOM injection + JS) drops a saffron-bordered card at the top of each peer page on first visit. One line of guidance, a "Got it" dismiss button, and localStorage persistence per page (key astro-tip-seen-{page}) — once dismissed, it never shows again on that browser.
Tip copy is page-specific:
Quick Reference — "Tap any tile — sign, planet, house, avatar — and a drawer opens. The toggle in the top-right switches Learning ↔ Reference."
Interactive — "Tap ▶ Story to watch Vikram's cabinet assemble. Or switch to Storybook for one card at a time. Speed and 🔊 read-aloud sit in the prefs row."
Reflect — "Pick an avatar, then write into the prompts. Notes save automatically in this browser. 📋 Copy my reflections to export them as plain text."
Kālapurusha — "The kundali laid into Vishnu's body — head to feet. Tap any limb to see the sign and house mapped onto it."
Mercury Spectrum — "A single planet across its range — friend, neutral, enemy. Score yourself on each axis and the meaning emerges."
Astronomy — "The science under the symbolism — ecliptic, ayanamsha, eclipses. Read top-down, or jump via the section nav."
Ether — "Notes from the retreat — Chidambaram, Nirvana Shatakam, the great secret. Read at your own pace."
Layers — "Eight chapters mark how this page came to be. Skim the timeline, or read the longer arc inside each layer."
Release Notes — "Freshest at the top. Each entry credits whose feedback shaped it."
Stats — "By the numbers — source corpus, build size, contributors. A quick portrait of how this page is made."
The card uses runtime DOM injection — it inserts itself after the first <header> on each page, so it sits between the page hero and the main content without disturbing existing layout.
Why this lands
The cohort grows in size and arrival pattern. Some land on the home page first; some are sent a deep link straight into Mercury Spectrum or Reflect. Both paths now get oriented — Layer 1 for the front-door arrival, Layer 2 for the deep-link arrival.
Integrated onboarding (rather than a separate help page) keeps the page itself the teacher. The tip dismisses in one tap and never returns; help is present exactly when needed and absent thereafter.
Layer 3 — gentle pulses on first-visit elements — is deliberately deferred to v4.44, pending a few rounds of cohort feedback on whether Layers 1 + 2 already do the work.
v4.42.0
8 May 2026
The 💬 feedback button — previously only on Quick Reference — now lives on every page. Whichever page someone is reading, they can fire a pre-filled WhatsApp message to Sree without losing their place. The pre-fill auto-detects the page (Layers, Mercury Spectrum, Reflect, Interactive, etc.) so feedback always arrives with context.
What landed
Site-wide WhatsApp FAB on all 10 non-Quick-Reference pages: index, kaalapurusha, mercury-spectrum, astronomy, ether, layers, reflect, interactive, release-notes, stats.
Self-contained snippet (CSS + button + JS) injected just before </body> on each page. No global stylesheet dependency — each page works standalone.
Pre-fill text: "Hi Sree, sharing feedback on Astrology 101 Companion App (vX.Y.Z · page: [Page Name]):". Page name auto-derived from document.title.
Quick Reference's existing FAB (richer — uses section-aware context) is unchanged.
Why this lands
Sree noticed feedback was friction-heavy from the peer pages. If someone was reading Layers and wanted to say something, they had to navigate elsewhere first. Now the button is exactly where the thought happens.
The page-tagged feedback text means cohort messages auto-route in Sree's head ("oh, that's about the Interactive Lab" vs. "that's about the workbook").
v4.41.1
8 May 2026
Vikram noticed the Matsya Check-in framing was retelling the myth — which is already the next section in the drawer. He sent a sharper line, swapped in tonight: "Before you read or hear the story, take a little time to reflect on these questions."
What changed
The Matsya Check-in framing in the Quick Reference avatar drawer now reads as an instruction to the reader rather than a paraphrase of the story.
workbook-avatar-template.md updated to match — the Check-in worked example now models Vikram's preferred shape (instruction first, prompts second), so the workbook team's future drafts for Kūrma → Buddha follow this pattern.
Why this lands
The Story section already tells the myth. Repeating it in the Check-in was redundant and pulled the reader's attention away from their own life. The new framing puts the focus where the Check-in intends it: on the reader, before they hear the story.
v4.41.0
8 May 2026
A new peer page — Reflect — gives the workbook prompts room to breathe. The eleven Matsya reflection clusters, which used to live inside an expandable inside the Matsya drawer, now also have a focused full-page experience with a textarea under every prompt. Notes save automatically to your browser. "📋 Copy my reflections" exports everything as plain text, ready for a journal, a doc, or a WhatsApp message. Notes never leave your device.
What landed
New file reflect.html. Two views: a landing page with all nine avatar tiles (Matsya live, Kūrma → Buddha shown as "Coming soon" until their workbook drafts arrive), and a per-avatar reflection view loaded by URL hash (reflect.html#matsya).
Each reflection cluster on the focused page shows the theme + Vikram quote + 1–2 prompts, with a textarea under every prompt. Auto-saves to localStorage on input (debounced 280ms). Subtle "saved" tick fades in beside the textarea after a write.
📋 Copy my reflections button — top and bottom of the page — generates a plain-text export (avatar name · today's date · Vikram's intro quote · for each cluster, theme + quote + Q&A pairs). Clipboard copy with a "Reflections copied" toast. Empty answers render as A: — so the structure stays readable.
↻ Clear my notes button — confirmation dialog, then wipes only this avatar's localStorage entries. Other avatars' notes are untouched.
Privacy callout at the bottom — "Your notes are saved only in this browser. Nothing leaves your device unless you copy them out."
The Matsya drawer in Quick Reference now shows a "↗ Open in Reflect mode" link at the top of the reflection-clusters expandable. Same data, focused full-page version.
"Reflect" added to site nav across all pages, alongside Layers and the other peer pages. Reflect peer card on the index.
Why this lands
The Matsya drawer is getting rich — eleven reflection clusters + chart application + yoga + pranayama + ritual + check-in/out. Sree noticed reading them inside a side-modal drawer wasn't doing the depth justice. A full-page Reflect view honours the material and gives space to actually sit with a prompt.
The textareas turn the prompts from "things to read" into "things to think with." The copy-out button means a session of reflecting can leave the page as a journal entry, an email to oneself, or a thread to share with a peer — without the app holding any of it.
Same-data architecture — Reflect reads the same AVATAR_PRACTICE shape that Quick Reference reads. As the workbook team drafts Kūrma → Buddha, the same reflect.html page will surface their content automatically; no per-avatar HTML to write.
v4.40.0
8 May 2026
Vikram wrote in to ask how the Companion Workbook material can be folded into the learning tool. Most of the Matsya draft (drafted by Marie · Sudha · Mannat · Spandana with Vikram · Megha · Neha) was already integrated; v4.40 closes the remaining gap and lays a template for the other eight avatars when their drafts land. Plus a long-overdue affordance: every drawer is now deep-linkable — tap "🔗 Copy link" inside any open drawer to copy a URL that lands directly back at that drawer.
Cut A — Matsya gap-fill
Two new quiz MCQs added to the Avatars quiz — "Which planet did Parashara associate with Matsya?" (Ketu) and "Ketu is which node of the moon?" (south, descending). Both pulled directly from the workbook.
New Check-in bookend at the top of the Matsya drawer — "In the myth, Matsya first appears in a tiny jar, then a pond, then a river, outgrowing every container until he reaches the ocean. Where do you feel 'too big' for your current container?"
New Check-out bookend at the bottom of the Matsya drawer — invites the reader back to the Check-in container with intuition-led prompts.
The reflection clusters, Find-your-flood (3 tiers), Fish yoga pose, 4-count pranayama, listening-to-nature ritual, and Vikram-quote expandable were already integrated in earlier releases — credited again here for the full picture.
Cut B — Workbook authoring template
New file workbook-avatar-template.md at the project root. Documents the nine-section shape (Story · Planetary Link · Quiz · Check-in · Reflection · Chart Application · Yoga · Pranayama · Check-out) with Matsya as the worked example.
Lets the workbook team draft each future avatar (Kūrma → Buddha) into a known shape that integrates cleanly within ~24–48 hours per avatar, rather than as a re-design each time.
Includes a current-state table — which avatars are drafted, which are header-only.
Cut C — Deep-linkable drawers
Every drawer in Quick Reference — sign · planet · house · avatar — now has a "🔗 Copy link" chip in its title. Tap it: copies a canonical URL like learning-companion.html#avatar-matsya to the clipboard, with a small "Link copied" toast.
URL hashes auto-open the drawer on page load: #avatar-matsya, #planet-mercury, #sign-aries, #house-7. Anyone the URL is shared with lands directly inside the open drawer — no more "scroll down and tap Matsya" instructions.
Closing a drawer strips the hash; opening one updates the hash via history.replaceState so a refresh preserves the drawer.
Practical use — Sree can now send Vikram learning-companion.html#avatar-matsya instead of a description.
Why this lands
Vikram's invitation to "explore how the workbook can be part of the learning tool" deserved a concrete answer with a working example. Matsya is now the gold-standard avatar drawer — every future avatar plugs into the same shape.
The deep-linkable drawers fix a real friction Sree hit when trying to point Vikram at the existing Matsya drawer. Anyone in the cohort can now drop a single URL into a thread and have it open exactly where they meant.
The authoring template puts the workbook team in the driver's seat. Their drafts are the source of truth; Sree's job is integration. The template makes the contract explicit so neither side guesses.
v4.39.0
8 May 2026
Sathvika sent precise feedback on Story mode in the Interactive Lab — "It's moving fast before I finish reading. For me either sound or pictorial representations help me stay attentive. Too many letters, gets confusing." Three direct asks. v4.39 answers all three: a Storybook view with one focused scene per card and no autoplay, a speed control for autoplay (Slow / Normal / Fast, default slowed from 5.5s → 9s), and read-aloud narration via the browser's Web Speech API.
What landed
Story mode now opens with a preferences bar: View · Speed · Read aloud. All three persist in localStorage so your choice carries across visits.
View toggle: Stage · Storybook. Stage is the existing 4×4 chart with autoplay. Storybook is a new layout — one focused scene at a time on a single card with a large planet emblem, the scene number, the scene title, the narration, and ← Back / Continue → buttons. No autoplay in Storybook — you advance when you're ready.
Speed pills: 🐢 Slow (12s) · ⏵ Normal (9s) · 🐇 Fast (5s), only shown in Stage view. Default is Normal — slower than the 5.5s default before, in direct response to "moving fast before I finish reading."
🔊 Read aloud toggle. When on, the browser narrates each scene's title + narration as it appears, using the Web Speech API (no audio files, no external service). Toggle persists. Speech cancels cleanly when you switch scenes, change modes, or close the tab. Pace is set to 92% of default — a touch slower than normal for absorption.
The Storybook emblem auto-detects the most-recently-arrived planet for each scene and shows its glyph (96px) plus its name and role in saffron — e.g. "Sun · King" for Scene 2. Scene 1 (the empty kingdom) shows a neutral ✦ ornament with the label "the cabinet at peace."
Why this lands
Sathvika's feedback was concrete and specific — pace, sound, and text-density. Building exactly to her three asks honours the WhatsApp note and the trust behind it.
Her positive — "having things in an order and highlighting the order is good 👍" — is preserved in both views. Scene numbers stay visible; the linear progression is intact.
Storybook view answers the "too many letters" concern directly. One card. One scene. Big emblem. Continue when ready. No fighting the timer.
Read-aloud means a learner who learns through hearing — not just reading — has a path that fits them. The Web Speech API ships in the browser, so we can give Sathvika the audio layer without recording or hosting any files.
v4.38.0
8 May 2026
The Moon today block moves into the Rāśi Chakra centre itself — visible without a tap. Below the "Do you know? — tap" pill, the chart's centre cell now shows today's paksha, approximate tithi, and the English phase name with a small lunar glyph. The page now feels different every day, even before you've interacted with anything.
What landed
New Moon block inside the centre cell of the Rāśi Chakra. Layout matches Variant A from the design pass: a small "— Moon today —" eyebrow, the moon glyph, and two lines of text — Paksha · ~Tithi N on top, Phase Name below.
The popover that opens when you tap "Do you know?" keeps its content as it was in v4.37 — including its own moon footer. Moon now lives in two places: ambient (in the chart centre) and contextual (inside the popover, alongside the curated insight).
Sizing uses clamp() so the moon block stays legible from desktop down to a constrained iPhone viewport without crowding the centre square.
Why this lands
The Moon footer inside the popover required a tap to discover. For a daily-changing surface, hiding it behind an interaction defeats most of the point — visitors who don't tap never see it. Pulling the block out into the chart centre means today's lunar state is part of the page on first paint.
The chart centre is the natural home — it's already the temporal/oracular spot of the page, and the Moon is the planet of time and rhythm in Vikram's teaching. The Queen sits at the heart of the cabinet anyway.
v4.37.0
8 May 2026
The Rāśi Chakra centre — the popover that used to read "From the class — tap to read" — becomes a richer surface, "Do you know?" Thirty curated insights drawn entirely from Vikram's class corpus (decks, transcripts, retreat notes, peer-group threads), each wearing a small badge that says where it came from. Below the card sits a second always-visible surface: Moon today — paksha, approximate tithi, and English phase name, with a one-line note rooted in Vikram's framing of the Moon as Queen.
What landed — Do you know?
New DID_YOU_KNOW data array — 30 entries authored from Vikram's existing material in the app: the cabinet narrative, the planet sessions, the kālapuruṣa module, the Mercury Spectrum dualities, the Ether retreat, the Astronomy session. No internet sources. Anything that ever needs to come from outside Vikram's corpus would carry a small [outside the class] badge — no such entry exists today.
Six categories of fact, each shown as a small saffron italic badge: from the class · etymology · classical · cross-reference · shloka · observed. The category tells you the register before you read the line.
Random start, no repeats. First open of any session lands on a random unseen entry. localStorage tracks the seen set across sessions; once all 30 have been read the deck reshuffles automatically. A small Start over button resets the set on demand.
A counter (N of 30) reminds the reader the set is curated and finite. The cite line carries the session and date for every entry — provenance is honest.
The centre pill on the chart now reads "Do you know? — tap" instead of "From the class — tap to read."
What landed — Moon today
New moonToday() helper — pure client-side, no API. Computes the lunar phase from a known new-moon reference (2000-01-06 18:14 UTC) and the synodic month (29.530588 days). Derives paksha (Shukla / Krishna), approximate tithi (1–30, ±0.5 day vs true ephemeris), and English phase name (New Moon → Waxing Crescent → First Quarter → Waxing Gibbous → Full Moon → Waning Gibbous → Last Quarter → Waning Crescent).
Lives below the Do You Know? card in the same popover (Option β placement) — single tap from the Rāśi Chakra centre reveals both surfaces. A horizontal divider labelled — Moon today — separates them.
Each phase carries a one-line interpretive note rooted in Vikram's framing of the Moon as Queen — "Building toward purṇimā — the queen gathering her fullness" · "After fullness, the long release. Reflection, integration" · "Amāvasyā — the queen withdraws. A turning point". Not generic moon-phase pop-talk; closer to how Vikram speaks of Chandra in class.
A small moon glyph (Unicode lunar phase, sized into the popover) reflects the current phase visually alongside the text.
Why this lands
The previous "From the class — tap to read" was good but one-note: only direct quotes, only one register. The cohort starts to feel they've seen all the quotes after a few opens. Do you know? opens the corpus wider while staying entirely faithful to Vikram's material — etymology, cross-references, shlokas, the cabinet's hidden symmetries.
The Moon footer makes the page alive day to day. Same URL, but the chart's centre tells you something different about today every visit. Pairs naturally with the curated insight above it: one fact about the cabinet, one fact about the sky right now.
Source discipline matters — Vikram's material is the only material on the page. The badge architecture lets us add to the deck later (more etymology, more cross-references, eventually entries derived from new sessions) while keeping that line bright.
v4.36.0
8 May 2026
A new peer page — Layers — that captures the longer arc of how this came to be. Eight months of milestones, in Sree's voice, named after Vikram's own line: "we learn in layers." Holds the dates that won't fit in release notes — the blue file, the Ether retreat, the V0 prototype on a kitchen table, the kālapurusha rounds with Vikram, the Mercury session that triggered something deeper, May 7's partnership with Sanchi, and the open ellipsis at the end.
What landed
New layers.html peer page, wired into the site nav across all pages between Ether and Interactive · beta.
Eight date-grouped sections: Late 2025 — onwards (the blue file accumulates), Late 2025 / early 2026 (sparks in conversation with Sathvika and Arpitha), March 2026 · Ether retreat (Rashmi's reference-folder need + Vikram naming the end-of-year-project moment + the flashcards seed), Late March – early April (V0), April – early May (the layers click — KB extraction, Mercury Spectrum, Kālapurusha rounds with Vikram, planetary motion shared as PNG, static.app), Early May (Mercury → Budha → Buddhi → the deeper calling), May 7 (Sanchi joins; pitch to Vikram and Mega; pocket reference / learning companion / commercial), and May 8 · today (Interactive · beta with Sathvika).
Each section carries Sree's pulled-out quotes set as italic display blockquotes, with connective prose between them. Vikram's line "we learn in layers" sits as the page epigraph.
The blue-file photo is reused on the Layers page; the Ether retreat is cross-linked.
On index.html, a small "Read the longer arc — Layers →" link sits below the existing "How it started" closing line. The Layers peer card joins the row beside Ether and Interactive · beta.
The closing section is deliberately open — eyebrow "What's ahead", heading "Open", three saffron dots — so the page can keep growing as more layers land.
Why this lands
The personal arc of how this came to be doesn't fit on the index (would bloat the clean landing) and doesn't fit in release notes (wrong register — release notes are feature log). It needed its own room.
The dates and milestones are real and worth remembering — for Sree, for Sanchi, and eventually for whoever picks up where they left off. A timeline page locks them into the project rather than in chat history or memory.
"Layers" as the page title is borrowed from Vikram's class — making the project's own vocabulary the file structure, the same way Uchcha / Neecha / mūla-trikoṇa show up in the Interactive Lab.
v4.35.0
8 May 2026
Two big additions to the Interactive Lab in response to Sree exploring the cabinet and finding it underwhelming: a cinematic Story autoplay and a new fifth mode, Court · Mitra/Shatru, that visualises the friendship layer Vikram emphasises in class.
Cut A — The Cinematic Story
New ▶ Play button in the Story controls. Press it and the cabinet assembles itself scene by scene every 5.5 seconds, all the way through to the closing Uchcha and Neecha tableaux. Manual ← Previous / Next → still work; using either pauses autoplay. After scene 8, the button becomes ↻ Replay.
While playing, the inner 2×2 of the chart swaps from the small mode label into a typeset scene title + narration, so the story sits at the heart of the cabinet rather than below the chart. Empty perimeter chambers dim slightly so the narration breathes.
Just-arrived pulse — when a scene change places a new planet in a chamber, that chamber gets a saffron border-glow pulse for ~1.6s. Your eye is drawn to who just entered the court.
Cut C — Court of Friendships (Mitra / Shatru)
New fifth mode pill: Court · Mitra/Shatru. Shows planets at their offices with an SVG overlay drawn over the chart connecting friend / enemy / neutral pairs.
Visual encoding — solid saffron = mitra (friend) · dashed indigo = shatru (enemy) · faint grey = sama (neutral). On entry, friend lines stroke-draw across the chart so the alliances reveal themselves rather than appearing all at once.
Tap any planet pill → only that planet's relationships stay full-strength; everything else fades to ~7%, isolating one graha's social world. The info card lists their friends, enemies, and neutrals with glyphs.
Friendship table baked in is the BPHS naisargika (natural) mapping, with reasonable defaults for Rāhu / Ketu (both gravitate toward Saturn / Venus / Mercury and away from the luminaries). Easy to override per planet later if Vikram's class teaches it differently.
Why this lands
The cabinet is, at its core, a story Vikram tells. Reading it as a static grid never felt like the experience he creates in class. Autoplay turns the Story mode into a sit-and-watch theatre — closer to how he teaches.
The friendship layer is everywhere in his commentary ("the priest comes to the queen's chambers and is honoured…", "Saturn the servant kneels before the commander…"), but until now the page only showed positions, not the relational web underneath. Court mode makes that visible.
Both cuts add agency where the page had little: a Play button to step back and watch, a Court mode that rewards exploration by tap-isolating each planet's social world.
v4.34.0
7 May 2026
A new experimental peer page — Interactive · beta — opens with the Planetary Cabinet as a stage. Built in response to Sathvika's WhatsApp note that text-heavy reference doesn't always land for her: "I learn through visuals, spatial layouts, 3D representations. Stories help me hold on to things." Rather than re-paint the main reference page, this is a separate room to test ideas in. The first experiment turns Vikram's planetary court narrative into a tappable 4×3 grid of zodiac chambers — the king (Sun) walks into Leo, the queen (Moon) into Cancer, the commander (Mars) into his offices in Aries and Scorpio, and so on. Tap any planet to read its role from Vikram's class. Tap any chamber to see who lives, who is honoured, who is in disgrace there. Four modes: Office (where each planet rules), Honour (where each is exalted), Disgrace (where each is debilitated), and Story (an 8-scene walkthrough of the kingdom assembling).
What landed
New interactive.html peer page wired into the site nav alongside Quick Reference, Kālapurusha, Mercury, Astronomy, and Ether. Marked · beta in nav and on the masthead so its experimental status is visible.
Cast of characters roster strip at the top — all nine planets shown as glyph + name + role (King, Queen, Commander, Crown Prince, Royal Priest, Princess, Servant, two Outsiders) so first-time visitors see the dramatis personae before the drama starts.
The Cabinet stage in South Indian chart format — twelve perimeter chambers around an empty inner core, Pisces top-left clockwise. Each chamber holds the sign name, sanskrit, element badge, and the planets currently sitting in it as glyph + role pills (e.g. ♂ Commander) so what's in each chamber reads at a glance.
Mode pills above the stage: Office · ▶ Story · Exalted (Uchcha) · Debilitated (Neecha). Vocabulary aligned with Vikram's class — uchcha and neecha are the technical terms for what the cabinet metaphor calls glory and the knees. Story is highlighted as the recommended starting point with a "New here?" line above the pills.
Story mode: 8 scenes that build the cabinet one role at a time, each with narration drawn from Vikram's planetary court framing. Prev/Next controls; the closing two scenes are Exaltation (Uchcha) and Debilitation (Neecha).
Animations — chambers fade in clockwise around the perimeter on first load; planet pills slide in when modes change or story scenes advance; the active chamber pulses once on selection.
Info card area: tap a planet (in the roster or a chamber) to see its role plus its office (mūla-trikoṇa), exaltation, and debilitation placements with quotes from class. Tap a chamber to see who lives there, who's exalted, who's debilitated.
Beta callout under the stage: "Built in response to Sathvika's feedback that text-heavy reference doesn't always land. We'll bring what works back to the main page."
"What's coming" section listing the next experiments to try in this lab: aspects (drishti) as light-paths between chambers, kendras as the four power positions, planetary friendships and enmities as relationship lines, and an avatar-journey-through-the-houses path mode.
Peer card on index.html — between the main reference and the existing peer pages — pointing into the lab.
Why this lands
Sathvika's ask was specific and concrete: spatial, visual, story-driven. The reference page is text-first by design (it's a reference); doing visual-first inside the same page would compromise both. A separate peer page lets us go further than we could in the main one — and bring back only what proves useful.
The Cabinet was the right first experiment because Vikram already teaches it as a story, with a king, a queen, a commander, a prince, a princess, a priest, a servant, and two outsiders. The narrative is in his decks; this page just gives it a stage.
Calling it beta on the page itself sets expectations — for the cohort, and for ourselves. Test, learn, port back.
v4.33.0
7 May 2026
A new "How it started" section on the index page, replacing the brief project-level origin paragraph with Sree's actual genesis story — the infamous blue file. Photo of the binder of Astrology 101 printouts that Sree carried before the page existed, with Sree's own words about why he built this: "I don't learn by memory. I need a lot of references all the time. I needed something pocket-friendly and handy." Closes with the deeper register that drives the project: "That was the genesis. But it also coincided with something deep — something touching and resonating for me. I'm still yet to understand why I have a deep calling in this path. But I am in a flow, and that's what matters, right?"
What landed
New assets/blue-file.jpg — the binder photo, resized from the original 4032×3024 / 356 KB to a web-friendly 1200×900 / 49 KB.
New "How it started" section sits between the brief origin paragraph and the cohort section. Eyebrow: "How it started". Heading: "The infamous blue file". Photo with caption. Three paragraphs of narrative in italic display type. Right-aligned attribution: — Sree.
The earlier brief origin paragraph (kitchen-table flashcards) trimmed to keep only the framing line — "Built alongside Vikram's Astrology 101 cohort. Vikram has reviewed it; the cohort is now invited in." The kitchen-table V0 history still lives in the V0 release entry at the bottom of these notes.
Why this lands
The previous origin paragraph framed the project at a meta level — "built alongside Vikram's class, began as flashcards on a kitchen table." True, but impersonal.
Sree's actual answer to "why does this exist?" is more concrete: he carried a paper binder ("the infamous blue file") and an iPad full of PDFs and still couldn't find what he needed in a hurry. That's the seed.
The closing register — "I am in a flow, and that's what matters" — gives the page permission to be in flux. The project is alive; it's still being built; the why isn't fully clear even to its builder. That honesty matches the contemplative tone of Vikram's class.
v4.32.2 · naming the cohort
7 May 2026
Sree replaced the placeholder names in the cohort lede on index.html with the actual people — and once we started naming, the layers came through. Four groups instead of one inline list: in this picture (the eleven retreat attendees plus Sanchi), co-facilitating with Vikram (Suraj, Megha), the larger learning group (those not at this frame but in the conversations), and mentors who shaped the path. The honest acknowledgment: "the list goes on."
Who's named, by group
In the photo — Meera, Rashmi, Sudha, Sathvika, Arpitha, Anil, Kanika, Shashank, Aditya, Kiron, Shobhana. Plus Sanchi (Sree's partner on this project).
Co-facilitating with Vikram — Suraj, Megha.
The larger learning group — Aysha, Marie, Shweta, Sarika, Kajal, Surbhi.
Mentors — Divya, Siva, Shivangi, Shruthi.
How this lands in the contributor index
All 24 names in this release's data-credits — they all now appear as filter chips at the top of the release notes. Click any chip and you'll see this release (v4.32.2) where their name is on the page.
People who've also shaped specific earlier releases (Sudha, Sanchi, Marie, Mannat, Spandana, Megha, Neha, Arpitha, Vikram) keep all their existing chips — this is additive.
Why this matters
The previous lede repurposed the eight workbook-author names from earlier releases. Honest, but inaccurate to what the photo actually shows. Naming the people actually in the frame — and the broader cohort layers — is the right kind of credit before the page goes wider.
If a name is missing or misspelled, ping the 💬 feedback button at the bottom of the page. Easy to add or correct.
v4.32.1 · typography fix
7 May 2026
Sree noticed the Nirvāṇa Shatakam verses on ether.html were center-aligned, which created orphan-word wraps when English lines ran long ("…nor the organs of generation and elimination" wrapped with "elimination" alone on the next line). Switched the verse body to left-aligned with comfortable line-height. The refrain — "I am pure consciousness and bliss. I am Shiva." — stays centered and saffron, becoming the ceremonial beat that returns at the end of each verse instead of competing with the centred body. Cleaner reading, ritual still present.
What changed
.shatakam-verse { text-align: left } — was center.
.shatakam-verse .refrain { text-align: center } — explicit center alignment now overrides the parent's left-align.
Line-height bumped from 1.7 to 1.8 for better breathing room with left-aligned italic text.
Max-width nudged from 50ch to 52ch — a touch more room before any English line needs to wrap at all.
v4.32.0
7 May 2026
A new peer page — ether.html — built from Sree's reflections after Vikram's Astrology 101 ether retreat in March 2026. Substantial: the five-elements core framework, an element-and-senses table, the practice of pratyahara and Neti Neti, the full Nirvāṇa Shatakam (six verses, beautifully laid out), and a deep dive into the Chidambaram temple — Naṭarāja, Apasmāra, Patañjali and Vyāghrapāda, the Chidambara Rahasyam (the great secret of the empty inner sanctum), the Dīkṣitar priesthood, and the five Pañca Bhūta Sthala temples in South India. Linked from the cohort section on the home page and added to the site nav across all pages.
What landed
New ether.html at the project root. ~24 KB self-contained, peer to Kaalapurusha / Mercury Spectrum / Astronomy.
Hero, key-insight pull callout ("Every object contains all five elements…"), then five sections: Core Framework, Ether — the fifth element, How to experience Ether, Nirvāṇa Shatakam, and the long Chidambaram block.
The Nirvāṇa Shatakam verses get their own treatment — six verses on a cream surface card, italic display type, refrains in saffron, hairline dividers between each verse.
The Chidambaram block has its own callout-styled container with sub-headings for Naṭarāja, Apasmāra, the two sages, the great secret (extra emphasis with an ink-bordered card), the Dīkṣitars, and the cosmic significance (Ānanda Tāṇḍava + the five cosmic acts).
Two tables: Element · quality · sense and the five Pañca Bhūta Sthala temples.
Closes with the question Sree's notes ended on: "Can we take a moment to recognise the space in and around everything?"
Site integration
Added Ether to the site nav across all peer pages — Quick Reference, Kaalapurusha, Mercury Spectrum, Astronomy, Release Notes, Stats — between Astronomy and Release Notes.
The cohort section on index.html now carries a contextual link inside the figure caption: "↗ Read Sree's reflections from the retreat" — points to ether.html.
The peer-pages row on index.html gets an Ether entry alongside Kaalapurusha / Mercury Spectrum / Astronomy / Release Notes / Stats.
Source
The page is a faithful HTML rendering of "The Five Elements and Experience Ether.docx" — Sree's notes after the March 2026 retreat. Light edits for flow only; substance verbatim.
The Chidambaram material in the doc is largely Sree's own synthesis after the retreat, drawing on classical and Tamil Shaivite sources. We're not pulling from Vikram's transcripts here — this is Sree's reflection, attributed in the footer credit.
v4.31.0
7 May 2026
A new "The Cohort" section on the index page, between the origin paragraph and the starting-point cards. A frame from the Ether retreat — Vikram's Astrology 101 cohort, in joyful poses around a small puja plate — sits as a meaningful image with caption and a pull-quote: "I owe a lot to this group." — Sree. Names visible contributors (Sudha, Marie, Mannat, Spandana, Megha, Neha, Arpitha, Sanchi) right inside the body text. Frames the project honestly: Vikram has been the teacher; the cohort has been the second teacher.
What landed
New section on index.html, anchored under the origin paragraph. Eyebrow: "The cohort". Heading: "The class is more than the teacher".
Lede paragraph names eight contributors inline — the same names that appear across release notes via data-credits.
Image of the cohort at the Ether retreat — illustrated style, joyful poses, puja plate in foreground. Saved at assets/cohort-ether-retreat.jpg (1365×1024, 283 KB). Loaded with loading="lazy" so it doesn't block first paint above the fold.
Pull-quote in a saffron-bordered card: "I owe a lot to this group." — Sree
Section credits all eight named contributors via data-credits, so they all pick up in the contributor index at the top of release notes.
Why this matters
The original framing of the project credited Sree & Sanchi as builders and Vikram as teacher. That's accurate but incomplete. Most catches that landed in the page came from cohort members — Sudha's "Light, not Qualities", Arpitha's "everything is locked for me", Marie / Sudha / Mannat / Spandana's workbook drafting. The page is what it is partly because they showed up.
Vikram asked Sree to share the project with the cohort. Before they arrive, naming them on the page is the right move — they walk in and see themselves already there.
v4.30.1 · default flip
7 May 2026
Reverses v4.27.0. With index.html + the welcome card now buffering first-time visitors, the original Learning + Foundations default makes more sense — it matches Vikram's contemplative pedagogy (quizzes unlock as you go, sections reveal progressively) rather than dumping a new visitor into the full reference at once. Cohort members coming via the share URL land on index → see the three starting points → click a card → arrive in Learning mode with the structured walk in front of them. Reference + All is still one tap away in the Mode pill at the top.
What changed
Mode default — 'reference' → 'learning'.
Level default — 'all' → 'foundations'.
Safety fallback in setMode() — if a stored value gets corrupted, lands on Learning rather than Reference.
Returning users are unchanged — their saved preference is honoured. Only first-time visitors see the new default.
Why this is the right move
v4.27.0 flipped to Reference + All to fix Arpitha's "everything is locked for me" moment when she clicked a deep link to #practice. v4.28.0 added the welcome card. v4.30.0 added the index landing page. Together those three pieces handle first-time orientation; the contemplative Learning default is no longer the friction it was.
Vikram's pedagogy is the source — Learning mode mirrors how the class itself unfolds. Defaulting to it respects that rhythm.
Cohort members who want to skim ahead can flip to Reference in one tap. The toggle is in plain sight at the top of the page.
Known edge case
If anyone shares a deep link directly into a later section (e.g., learning-companion.html#practice) — bypassing index — the recipient may land on a locked screen if they're a first-time visitor in Learning mode.
Mitigation: share atv-companion.sreebalakrishnan.in (no hash) by default. Or, if a deep link is needed, mention "switch to Reference in the top-left toggle to see everything." If this becomes a recurring issue we'll add smart deep-link detection that auto-switches modes for the session.
v4.30.0
7 May 2026
A new index.html as the project's landing page — built for the moment Sree shares the link with the wider cohort. Clean intro: hero, one-paragraph origin (kitchen table → Vikram's blessing), three starting-point cards (Wheel of Signs / Planetary Cabinet / Trace Exercise) each linking deep into Quick Reference, a "What's inside" two-column list of all 16 sections, an "Open the Quick Reference →" CTA, and a peer-pages row. Cohort members arriving via the share URL now land somewhere quiet first, instead of straight into the dense Quick Reference. The share URL stays the same — atv-companion.sreebalakrishnan.in — because static hosts auto-serve index.html as the directory default.
What's on the page
Hero — italic eyebrow, the iconic Astrology 101 h1, sub-line: "A companion app for Vikram's class. Holds the material we're learning, structured to come back to between sessions."
Origin paragraph — short and warm. Acknowledges the kitchen-table flashcards (V0), Sanchi & Sree as builders, allthingsvedic.in as the source, Vikram's review.
Three starting-point cards — each a clickable area with a small section eyebrow (§ One / § Four / § Fifteen), name, and one-sentence description. Subtle hover lift. Each links to learning-companion.html#signs / #cabinet / #practice.
What's inside — two-column list naming all 16 sections of the Quick Reference (signs, qualities, avatars, cabinet, planets, signature, relationships, aspects, yogas, houses, systems, categories, purusharthas, kaalapurusha, practice, workbook). Sets scope without overwhelming.
CTA — big italic "Open the Quick Reference →" button; below it, a small line about the 💬 feedback button.
Peer pages row — Kaalapurusha, Mercury Spectrum, Astronomy, Release Notes, Stats — each with a one-line description.
Footer — same praṇāms credit as Quick Reference, version pill, "Check for updates", "Release notes" link, content/build attribution.
Welcome-card coordination
The Quick Reference's first-time welcome card (added in v4.28.0) was beautiful but would now produce a double-welcome for cohort members arriving via index.
Fix: any starting-point click on index.html sets localStorage 'astro-welcomed' = truebefore navigating. So users who came via the index don't see the Quick Reference welcome card again. Direct visitors to learning-companion.html still get it. Two doors, one welcome.
Site nav update
Every peer page (Quick Reference, Kaalapurusha, Mercury Spectrum, Astronomy, Release Notes, Stats) now has Home as the first item in its site nav. Path back to index from anywhere is one tap.
Why this matters now
Vikram has explicitly asked Sree to share the project with the wider cohort. The share URL is the first impression. Landing on a dense reference page demands too much; landing on a quiet intro that says "three places to start" meets the cohort where they are.
The page is intentionally short — one screen on most devices, two short scrolls on phones. It's not designed to be returned to; it's designed to be passed through. Returning users will mostly land directly on Quick Reference (or hit "Home" only when they want to re-orient).
v4.29.0
7 May 2026
A new peer page for the geek-out — stats.html. Big italic numbers under four headings: the source corpus (73 class decks · 58 transcripts · 553K words parsed), the build (7 HTML pages · 1.66 MB · 18,796 lines), the Quick Reference itself (16 sections · 15 quizzes · 14 Vikram quotes · 30 Court Call questions · 9 cabinet roles), and the cohort (53 release entries · 10 named contributors). Plus a per-page breakdown table showing where the bytes live. Linked from the site nav across all pages.
What landed
New stats.html at the project root — peer page next to Kaalapurusha, Mercury Spectrum, Astronomy, Release Notes.
Four sections: Source · the well we drew from, The build · what it became, The core · what's inside the page, The people · who showed up. Each with a stat grid (big italic numbers in saffron / indigo / forest depending on family).
Per-page breakdown table with bytes / lines / words for all 7 HTML pages.
Contributor row at the bottom with chips that link to each person's most-credited release.
Honest mechanics callout: numbers are auto-counted by tools/build-stats.py. The script reads version.json, scans HTML, walks the knowledge base. Run it from the project root and the JSON output goes to stdout — bake the relevant numbers back into stats.html on the next ship.
Tools / build-stats.py
Single-file Python; no external deps. Uses regex + os.walk only.
Contributor parser handles the same edge cases as the JS in v4.22.0 — splits on · only outside parentheses, strips trailing parentheticals, filters out prose-token noise like "Name" / "context" from release-note examples.
Saved as tools/build-stats.py in the repo. Future maintenance: run when stats feel stale, copy numbers into stats.html.
Site nav
Quick Reference, Kaalapurusha, Mercury Spectrum, Astronomy, Release Notes — all five pages get a new Stats link in their site nav.
v4.28.2 · fix
7 May 2026
Sree noticed that the V0 entry didn't get a copy-link 🔗 button like every other release. Root cause: the deep-link script's versionToId() regex required three dot-separated digits (v4.20.1), so it skipped over V0 and v1 entirely. Patched the regex to also match no-dot and one-dot versions. V0 now resolves to #v0, v1 baseline to #v1, and both pick up their hover-revealed copy-link buttons. Send release-notes.html#v0 to anyone who wants to land directly on the origin story.
The regex change
Was: /v(\d+)\.(\d+)\.(\d+)/ — three dotted digits required.
Now: /[Vv](\d+)(?:\.(\d+))?(?:\.(\d+))?/ — case-insensitive leading letter (so capital V in V0 matches), and the second/third number groups are optional.
ID generation joins whatever digits matched with hyphens: V0 → v0, v1 → v1, v4.28.2 → v4-28-2.
v4.28.1 · UX fix
7 May 2026
The V0 origin block at the bottom of these release notes finally has its visual. Sree shared the original prototype — "Vedic Astrology Explorer", a single dark-themed HTML file from before the cream-and-saffron rebuild — and rather than embed a static screenshot, we copied the actual file into the repo as v0.html and dropped it into the V0 entry as a live <iframe>. Lighter than an image, scrollable, and fully interactive: tap a chart cell, change the ascendant, watch the houses rotate. The V0 narrative was rewritten to match what the iframe actually shows — first digital build (after the kitchen-table flashcards), 73 class decks + 50 sessions, no avatars or cabinet yet, just chart geometry and a flashcard tab.
What landed
Copied the V0 HTML (~150 KB, self-contained, zero external deps) into the project as v0.html.
V0 figure block now renders an <iframe src="v0.html"> with loading="lazy" and a sandbox scope that allows scripts + same-origin (so the chart works) but nothing else.
A small "↗ Open V0 standalone" link below the iframe opens the prototype in a new tab for full-screen exploration.
Caption updated to acknowledge the iframe is live and scrollable.
iframe styled with a dark default background (#0d1224) so the frame feels seamless before the V0 content paints.
V0 narrative — rewritten
Was: "Sree started building flashcards. A few dozen cards. The flashcards became digital."
Now: that line plus the actual V0 description — "Vedic Astrology Explorer, a dark-themed prototype drawn from 73 of Vikram's class decks and 50+ session notes. South Indian chart layout: signs fixed in the grid, houses rotating with the chosen ascendant. A side panel with the four element groupings — Agni, Prithvi, Vayu, Jala. Tabs across the top: Chart, Flashcards, Deep Dive, Planets. No avatars yet, no cabinet, no reflection prompts."
The "What V0 was" list expanded to call out the maths line (House = ((Sign − ASC + 12) mod 12) + 1), the four element groupings, the four tabs, and the original footer credit ("Created from 73 class decks & 50+ sessions of Astrology 101 — A study in BPHS").
Why iframe over image
An image would've been ~500 KB after compression and lost the geometry interaction.
The iframe is 150 KB, lazy-loaded (no impact on page load until scrolled to), and lets readers actually use V0 — change the ascendant, see the houses move. The contrast with the current Companion App is more felt than told.
v4.28.0
7 May 2026
v4.27.0 fixed Arpitha's first-time pain about locked sections. Then she asked a second question: "Now what do I need to check Anna?" — even with everything visible, she didn't know where to start. v4.28.0 answers that with a soft nudge: a small welcome card appears once on the first visit, offering three concrete places to begin (the wheel of signs, the Cabinet, the Trace exercise). Once dismissed (or once a learner taps any of the three), the card never shows again. Returning users see nothing. Plus a small refresh of the masthead sub-line to invite first-timers in.
Welcome card · three places to start
Saffron-bordered card sits between the masthead and the grounding bookend.
Eyebrow: "New here?" · Title: "Three places to start".
Three suggestions, each with a deep link to the relevant section:
Tap any tile in the wheel of signs — see how cross-references open.
Open the Planetary Cabinet — a story version of how the planets relate.
Try the Trace exercise in Practice — embodied recall.
"Got it →" button dismisses the card.
Tapping any of the three links also auto-dismisses — the card disappears 250ms after the tap, so navigation completes first. Either way, the dismissal flag (localStorage 'astro-welcomed') is set.
Returning users with the flag set: card never renders. Zero clutter for the regulars.
Masthead sub-line refresh
Was: "The companion app for Vikram's class. Tap any sign, planet, or house to cross-reference."
Now: "The companion app for Vikram's class. New here? Tap any sign, planet, or house tile — a drawer opens with how it connects to everything else."
The "New here?" framing inside the masthead gives first-timers a doorway even before they see the welcome card scroll into view.
Why this and not a tutorial
The cohort comes for Vikram's contemplative pedagogy. A modal walkthrough or guided tour would feel wrong — too directive, too app-like. A small one-time card that gets out of the way matches the tone.
The three suggested entries are the page's most "showable" moments — a sign drawer demonstrates the cross-reference pattern; the Cabinet introduces Vikram's voice; the Trace exercise is concrete-handed.
If a first-timer ignores the card and just scrolls, nothing's lost — the masthead sub-line still gives them the same doorway in plain prose.
Reset hint (for testing)
To see the welcome card again on a device that's already dismissed it: open browser DevTools → Application → Local Storage → remove the astro-welcomed key, then reload.
v4.27.0
7 May 2026
First-time visitors now land on Reference + All instead of Learning + Foundations. Direct response to user testing — Arpitha (cohort) opened the page from a deep link to #practice, saw locked sections, and messaged: "I don't understand Anna · Everything is locked for me." The Learning-mode default put her behind hard locks she hadn't earned yet, and the Foundations level filter further hid most content. Reference mode + All filter shows the whole page open from the first tap. Returning users keep whatever they last picked.
What changed
Mode default — 'reference' instead of 'learning'. The eyebrow now reads "all things vedic · the companion app · v4.27.0" with the right-side hint "— everything available, study tools optional" instead of "— quizzes unlock as you go."
Level default — 'all' instead of 'foundations'. The full set of sections is visible from load.
Safety fallback in setMode() — if a stored value gets corrupted somehow, it now lands on Reference rather than Learning. Same direction as the new defaults.
Returning users with a saved preference are unchanged. Only first-time visitors and anyone with a corrupt localStorage get the new defaults.
Why this is right
The cohort comes in via deep links from WhatsApp ("check the practice section", "look at the cabinet"). They need to land on the destination, not on a locked screen that requires them to first complete checks they don't yet know exist.
Learning mode is still one tap away for anyone who wants the structured walk.
v4.26.0
7 May 2026
A retroactive entry at the very bottom of these release notes — V0 · how it started. The page has had twenty-five-some releases now, but it began before any of them: as a stack of paper flashcards that Sanchi and Sree built during their annual year-planning ritual. Until now there was no record of that. This release adds it — a short narrative section at the foot of the changelog, plus a placeholder for the photograph of the original cards (Sree to share next; will be embedded at ~640px wide).
What was added
A new V0 · how it started section anchored at #v0, the chronologically first entry in the changelog (visually at the bottom of the page).
Three short paragraphs covering: the annual year-planning ritual; the decision to build flashcards for Vikram's class; the path from paper deck → digital flashcards → quiz → section → page → companion app.
A figure block with a dashed-border placeholder where the photo of the original flashcards will land. Caption: "The original deck. The annual-year-planning sit-down where this began."
A "What V0 was" / "What it became" pair so the contrast between then-and-now is on the page.
Credits on the section: "Sanchi · Sree (the annual year-planning ritual)" — picks up automatically into the contributor index at the top of the page.
Image, when it lands
Sree shares the photo → I resize to ≤640px on the long edge → embed inline (data URI or alongside as a small file). The placeholder swaps out automatically.
If you'd rather link to a hosted version (e.g. a Drive image), say so and I'll wire it that way instead.
v4.25.3 · UX simplification
7 May 2026
Sree pointed out that the feedback FAB's two-path approach (auto-screenshot via html2canvas + Web Share on mobile, wa.me deep link on desktop) added friction. On mobile the user clicked, waited for a screenshot, then got a system share sheet — they expected WhatsApp. Now the click does exactly what the button promises: opens WhatsApp with prefilled context. One predictable behaviour everywhere — iPhone Safari, Android Chrome, Mac Safari, desktop Chrome. Learners attach a screenshot manually if they want to send one (one extra tap on mobile, drag-drop on desktop).
What changed
The 80-line sendFeedback() function with capability detection, html2canvas loading, canvas capture, and navigator.share() orchestration is now a one-line call to openWhatsAppDeepLink().
Removed the lazy html2canvas CDN dependency entirely (~50KB saved on first feedback click).
Removed the HTML2CANVAS_CDN constant and the loadHtml2Canvas() helper.
Tooltip on the button stays: "Send feedback".
What stayed
The prefilled message context — version + section name — still goes through. Sree still gets "Hi Sree, sharing feedback on Astrology 101 Companion App (v4.25.3 · section: Avatars):" when a learner taps from the Avatars section.
Phone number constant (WA_PHONE = '919880337337') unchanged. Single point to edit.
"Click button → button does what its label says" beats "click button → smart things happen, sometimes". The cohort doesn't need to discover what the FAB does on first try.
Most feedback won't need a screenshot. For the ones that do, mobile users tap-and-hold the screen for the system screenshot, then attach in WhatsApp — already a familiar gesture.
v4.25.2 · UX fix
7 May 2026
Sree spotted that the v4.25.1 popover was rendering with a transparent background — the page's lede text bled through the card, making the Vikram quote unreadable. Root cause: the CSS used var(--cream) in seven places, but --cream was never actually defined as a token in :root. CSS silently fell back to the initial value (transparent). Fix: add --cream: #F8F4E1 to the root token set as an alias for the existing --surface. The popover card now renders with an opaque cream surface; the .ground-btn and .reflect-btn hover states (which also referenced --cream for on-saffron text colour) also start rendering correctly. Backdrop opacity also bumped from .42 to .58 for cleaner separation between the popover and the page beneath.
What was broken
The popover card (.vw-card) had background: var(--cream). With the variable undefined, the property fell back to initial = transparent. The page text behind the card was visible through it.
Other latent breakages: .ground-btn:hover, .reflect-btn:hover, the Court Call .court-opt background, and a few other places had var(--cream) fallbacks. They've been silently broken for a while; this ship fixes them all.
The fix
Added --cream: #F8F4E1; to the main :root token block, with a comment noting it as an alias for --surface.
Bumped the popover backdrop from rgba(40,40,38,.42) to rgba(40,40,38,.58) — darker, so the popover now visually pops off the page even on light viewport conditions.
Lesson
CSS custom properties fall back silently when undefined. Worth a sweep eventually for any other accidentally undefined tokens — but not urgent. The visible breakage is fixed.
v4.25.1 · UX fix
7 May 2026
v4.25.0 stuffed the rotating Vikram quote and three jump pills directly into the Rāśi Chakra's 2×2 centre cell. On iPhone Safari (and any narrow viewport) the long quotes overflowed into Scorpio and Libra below — exactly the kind of UX paper-cut that makes a page feel unfinished. Fix: the centre cell now holds a compact "✦ From the class — tap to read" pill. Tapping it opens a centred popover (works identically on iPhone, Android, Safari, Chrome) with the full quote, attribution, ↻ another reroll, and the three jump pills. No overflow ever; one interaction pattern across all devices.
What changed in the centre cell
Removed the inline quote, citation, jump pills, and reroll button from inside the cell — they were the source of the overflow.
Cell now shows three lines: Rāśi Chakra (title), the wheel of signs (label), and a tappable saffron-bordered pill "✦ From the class — tap to read". Three lines, all short, all guaranteed to fit on the smallest viewport.
The new popover ("Vikram wisdom card")
Tap the pill → backdrop fades in, card scales up from centre. Lives in a new #vwBackdrop + #vwCard pair injected into the body, separate from the existing drawer/chant overlays.
Card shows: small "From the class" eyebrow, the full Vikram quote in italic with saffron quote-marks, attribution line "— Vikram, Session N · Title · Date", an ↻ another reroll button, and the three jump pills (Mahāśaktis, Cabinet, Kālapurusha) along the bottom.
Closes on backdrop click, ESC, or the × in the top-right corner. Jump pills also close the popover before navigating, so the target section is visible immediately.
Card max-width is 520px and max-height 80vh with internal scroll — long quotes from any session fit cleanly.
Quote rotation (small extra)
The reroll now avoids picking the same quote twice in a row — it tracks the last shown quote in sessionStorage and excludes it from the random pool. Subtle but makes ↻ another feel responsive instead of occasionally re-showing the same line.
Length filter (was 240 chars in v4.25.0) is gone — the popover scrolls if needed, so longer Vikram quotes are now in the rotation too.
Why the popover pattern
Hover doesn't exist on touch — so a hover-expand wouldn't work for the cohort, who'll mostly be on phones. A tap-to-open popover gives the same interaction model on iPhone, Android, Mac Safari, desktop Chrome.
The cell stays clean for browsing the wheel itself; the wisdom is one tap away when you want it. Same way macOS menu-bar items reveal richer content on click.
v4.25.0
7 May 2026
Two ideas Sree was thinking out loud about. (1) The four-grid centre of the Rāśi Chakra used to say "the wheel of signs · tap any sign to expand" — informational but inert. It now holds a rotating Vikram quote drawn at random from the existing VIKRAM_QUOTES const, with full attribution and a small ↻ another reroll button. Below the quote, three jump pills — Mahāśaktis · Cabinet · Kālapurusha — link to related sections. The page comes alive every visit; voice stays Vikram's. (2) A new WhatsApp feedback FAB sits next to the floating ॐ button — one tap opens WhatsApp at +91 9880337337 with prefilled context (version + which section the learner is on). On modern mobile browsers it captures a screenshot via html2canvas + Web Share API and attaches it to the message; on desktop it falls back to the wa.me deep link.
Rāśi Chakra centre · quote + jump links
The 2×2 centre cell that previously held the static title now renders a Vikram quote on every page load, randomised. Source: the existing VIKRAM_QUOTES const we baked in v4.8.0.
Each quote shows the body of the line, opening and closing italic quote marks (in saffron), and a small attribution: "— Vikram, Session N · Title".
A subtle ↻ another button below the quote rerolls the centre cell only — no full board re-render. Click it as many times as you like.
Three jump pills below the reroll: ↗ Mahāśaktis (links to #qualities), ↗ Cabinet (links to #cabinet), ↗ Kālapurusha (links to #kaalapurusha). The three concepts most directly connected to the wheel of signs.
WhatsApp feedback · two-path FAB
New 💬 button sits 96px to the left of the chant ॐ FAB, in WhatsApp green (#25d366). Tooltip on hover: "Send feedback".
Mobile path — if the browser supports the Web Share API with file sharing (most modern Chrome / Safari on phones): the FAB lazy-loads html2canvas from CDN, captures the visible viewport, packages it with prefilled text, and opens the native share sheet. The learner picks WhatsApp from the share targets and sends. Screenshot is attached automatically.
Desktop / unsupported path — the FAB opens https://wa.me/919880337337?text=... in a new tab with the prefilled context. The learner attaches a screenshot manually if they want to.
Prefilled text format: "Hi Sree, sharing feedback on Astrology 101 Companion App (vX.Y.Z · section: [section name]):". Section is detected from the active TOC pill or the section currently in the viewport.
Phone number is hardcoded in the JS as WA_PHONE = '919880337337' — single point to change if it ever needs to.
html2canvas is fetched lazily — no impact on page load. Library is ~50KB minified and only requested on first feedback click.
Why this matters
The cohort is about to start using the page (per USER_TESTING.txt). A frictionless feedback channel matters more than a perfect one. WhatsApp is where these conversations already live.
Auto-screenshot on mobile means a bug report or "this looks weird" moment is one tap away from being a real artefact for Sree — not a written description of something that's hard to picture.
v4.24.0
7 May 2026
The project gets a working name — Astrology 101 Companion App. Small, reversible rebrand: the iconic Astrology 101 h1 stays, but the eyebrow now reads "all things vedic · the companion app · v4.24.0" and the sub-line under the masthead now says "The companion app for Vikram's class." Page titles in browser tabs across all five HTML files updated. USER_TESTING.txt header rebranded. Footer line on the Quick Reference now reads: "Astrology 101 Companion App — a pocket reference distilled from Vikram's class, alongside the Companion Workbook."
Why this name (for now)
The shortlist that went out — Lagna, Smriti, Akasha, Sandhya, Antardrishti, Chitra, Sutra. All Jyothish-rooted. None chosen yet — Vikram and Sanchi haven't weighed in. This is a working name to use in the meantime, easy to revert when a final name lands.
"Companion" is honest about the project's role — it sits alongside Vikram's class and the cohort's workbook, neither replacing nor competing with them.
What didn't change
The h1 stays Astrology 101 (with "101" in saffron italic). Iconic, memorable, working.
The favicon, the design palette, the section structure — all untouched.
When a final Sanskrit name lands, swapping it in is a 6-line edit (page titles, eyebrows, footers, demo deck, USER_TESTING).
v4.23.0
7 May 2026
The cohort's Companion Workbook gets surfaced inside the page in three ways. (1) A new cross-cutting view table inside the Avatars section — Avatar / Planet / Brain region / Trauma / Life expression for the nine drafted avatars (Table 3 from the workbook). (2) A new § Sixteen — Companion Workbook section at the bottom showing all six modules, each with its main goal, learning outcomes, and a link to the page section it maps to. (3) Inside the avatar drawer for the eight unfilled avatars (Kurma → Buddha), a small "in progress" block tells readers exactly what's coming and credits the drafting team — so Sudha sees her own name on the work in flight.
1 · The cross-cutting view (Table 3)
Inside the Avatars section, below the existing tile grid: a 9-row table mapping each avatar to its planet, the brain region the trauma lives in, the trauma type, and how it tends to show up in life. Direct extract from the Companion Workbook draft.
Avatar names are clickable — opens the matching avatar drawer.
A small caveat below the table: "Read these as patterns to recognise, not diagnoses."
Kalki is not in the source — table shows nine rows.
2 · The new Companion Workbook section
New § Sixteen at the bottom of the Quick Reference. Contains all six modules from Learning Outcomes.docx: Avatars of Vishnu, Building Blocks of Signs, Astronomy, Navagrahas, Chart Interpretation Basics, The 12 Houses.
Each module shows its main goal, four learning outcomes, and a status pill — Drafted (green) for Module 1 (Avatars), Outcomes only (plum) for Modules 2-6.
Each module also links to its corresponding page section: Module 1 → Avatars, Module 2 → Elements / Modes / Duality, Module 3 → Astronomy peer page, Module 4 → Planets, Module 5 → Cabinet, Module 6 → Houses.
Footnote acknowledges the workbook is being authored alongside Vikram's class — this section is a roadmap, not the workbook itself.
3 · "Workbook content — in progress" block in avatar drawers
For the eight avatars whose workbook drafts are still in flight (Kurma, Varaha, Narasimha, Vamana, Parashurama, Rama, Krishna, Buddha), each drawer now carries a small dashed-border note: "Reflection clusters and embodied practice for [Avatar] are being drafted by Marie, Sudha, Mannat & Spandana with Vikram, Megha & Neha — due August 2026. Once landed, this drawer will hold the same depth as Matsya's."
Honest signaling. The team's names are visible to anyone using the page — including Sudha herself, who'll see her own name three places (Cabinet workbook authors, Module 1 coverage, and the per-avatar note).
Matsya remains the gold-standard exemplar from v4.18.0 — eleven reflection clusters and a full practice block. The pending block does not show on Matsya.
What's blocked and what isn't
The integration scaffolding is now ~95% in place. Once Marie / Sudha / Mannat / Spandana finish drafting an avatar's content, dropping it into the AVATAR_PRACTICE const surfaces it everywhere — drawer, table, no further code work.
Same for Modules 2-6 exercises. When activities are drafted, they extend the WORKBOOK_MODULES const without touching the rendering layer.
Source rule still holds: nothing in this page imports from outside the workbook + Vikram's transcripts. We wait on the cohort, we don't fill in for them.
v4.22.0
7 May 2026
The contributor index that finishes Cut C from the planning conversation. A new "Heard from" panel sits between the masthead and the first release. It auto-extracts every name from data-credits across the page, shows them as filter chips with counts, and lets you click any name to see only the releases credited to that person. The "All" chip resets. Combined with v4.21.0's deep links, the trail is now fully self-evident — for Sudha, Vikram, Sanchi, the Companion Workbook authors, or anyone else whose feedback shaped a version.
How it works
On page load the script scans every section.release[data-credits], parses the credit string (handles · and parentheticals like "Sudha (Light/Shadow catch)"), tallies each name, and renders one chip per contributor with the release count.
Click "Sudha" → only the four Sudha-credited releases stay visible (v4.21.0, v4.20.0, v4.18.0, v4.13.0); everything else hides via a .is-filtered-out class. A status line below the chips shows "Showing 4 releases credited to Sudha" with a "Show all releases" link to reset.
Adding a contributor later requires zero code change — just set data-credits="Name · context" on the section element. The script re-tallies on next page load.
Resilience
Same parser handles compound credits — "Marie · Sudha · Mannat · Spandana · Vikram · Megha · Neha (Companion Workbook authors)" correctly attributes a release to all seven names while stripping the trailing parenthetical.
Releases that survived without external credit (most of v3.x and the solo Sree builds) are unchanged. They show in the "All" view and disappear when a name is selected — exactly what you'd expect.
What's still ahead
Project naming — separate decision. Shortlist sent: Lagna · Smriti · Akasha · Sandhya · Antardrishti · Chitra · Sutra. Once chosen, masthead, eyebrows, footers, demo deck, and USER_TESTING.txt all rebrand in one ship.
v4.21.0
7 May 2026
Sree wanted to point Sudha at the specific releases that came from her feedback. So this page now does two things: (1) every release section gets an anchor ID and a small 🔗 button next to its heading — click to copy a deep link to the clipboard. (2) Releases that came from external feedback show a small "Heard from: …" credit line, so the trail is self-evident. Six versions credited so far — Sudha (v4.13.0, v4.20.0), Vikram (v4.10.0, v4.14.0, v4.15.0, v4.17.0), Sanchi (v4.16.0, v4.17.0), and the Companion Workbook authors (v4.18.0).
Deep links
Each release section's id is now v4-21-0, v4-20-1, v4-20-0, etc. — derived from the version. The browser URL becomes release-notes.html#v4-20-0 when you scroll to it.
Hover any release's heading and a small 🔗 button shows. Click it: the link is copied to your clipboard and a small toast confirms. Paste it anywhere — WhatsApp, Slack, an email — and the recipient lands directly on that release.
The targeted release picks up a soft saffron tint when its hash matches the URL — so the right one is visually obvious when someone follows the link.
Heard from
Releases that came from external input now display a small italic line below the header: "Heard from: Sudha" (or whoever the credit goes to). Lifted directly from data-credits attributes on the section element.
For Sudha specifically: v4.13.0 (Light/Shadow vocabulary catch), v4.20.0 (Yogas section + drawing exercise from her WhatsApp). For Vikram: v4.10.0 sign-drawer enrichment, v4.14.0 + v4.15.0 astronomy work, v4.17.0 Phase-1 from his post-call plan. For Sanchi: v4.16.0 (joining as PM, co-credit) and v4.17.0 (owns the user-testing loop). For the workbook authors: v4.18.0 (Matsya gold-standard pulled from the Companion Workbook draft).
Adding a credit later is a one-attribute change — just data-credits="Name · context" on the section element. The script picks it up automatically.
Why
From Sree: "Sometimes I need to refer to a specific release — for example Sudha asked me for changes, I'd like to show her she was heard." Now the page does the showcase work itself.
v4.20.1 · hotfix
7 May 2026
Hotfix. Sree spotted that the Mode toggle ("Learning / Reference") and the level filter ("Show content for: Foundations / Beginner / …") were not clickable after v4.20.0 shipped. Root cause was a temporal-dead-zone error in v4.20.0's INIT block — initTraceExercise() was being called before its const TRACE_PLANETS and const traceState declarations executed, which threw a ReferenceError that killed the rest of the script and prevented the toggle handlers from binding. Fix: moved the initTraceExercise() call to immediately after its const declarations, with a code comment explaining why. Toggles work again. No content changes; v4.20.0 features (Yogas section, drawing exercise) all intact.
v4.20.0
7 May 2026
Two of Sudha's bigger asks land. A new Yogas section sits between Aspects and Houses (§ Nine — everything below shifts up one number), holding Parivartana with Vikram's verbatim framing and a placeholder note for the yogas he has named but not yet taught. A Trace the symbols drawing exercise sits at the bottom of Practice — nine planet glyphs, faded as a guide, draw on top with finger or mouse.
Yogas section · Parivartana, sourced honestly
Audited the 41 Vikram transcripts before building. Across 38 sessions Vikram has explicitly defined exactly one yoga at beginner level — Parivartana Yoga (exchange of Lords). Mahapurusha, Gajakesari, Raja Yogas, Dhana Yogas, Vipareeta and the rest get named in passing or deferred to later planet study, but never worked.
Per source discipline ("only what Vikram says — public sources need a check first"), the section ships with just Parivartana fully built, plus a deferred-yogas note acknowledging what's coming. As Vikram covers more yogas, the YOGAS_DATA const is a one-place edit to add them.
The Parivartana card carries: the one-liner ("Two planets sit in each other's ruling signs. Both become important."), Vikram's "yoga means combination" definition, the conditions (two-planet loop, three-planet loop, why four-or-more loops are not Parivartana per Vikram), the effect on dispositorship and exalted-planet amplification, and Vikram's nuanced take on debilitation cancellation (read in shades, not binary). Citations to Sessions 24, 25, 26.
Quiz check-in (3 questions) added. Reflective prompt: "Are there two areas of your life that keep referring back to each other — neither one finished without the other? That cyclical, mutual dependency is what Parivartana feels like."
Numbering: Yogas is § Nine. Houses → § Ten, Systems → § Eleven, Categories → § Twelve, Purusharthas → § Thirteen, Kālapurusha → § Fourteen, Practice → § Fifteen.
Trace the symbols · drawing exercise (Phase A)
Sudha's idea: "As a fun exercise what if people could draw symbols of the planets or Houses and Signs." Built. Sits at the bottom of the Practice section under the existing flashcards / quiz blocks.
Phase A is planets only — nine glyphs, ☉ through ☋. The current planet's glyph appears at low opacity behind a 240×240 canvas; trace over it with finger (touch) or mouse. Buttons: Previous, Clear, Hide / Show guide, Done → Next.
"Done" planets persist in localStorage. The little progress line shows "3 of 9 traced" so a learner can come back over multiple sittings.
Future phases: Phase B will add the 12 sign glyphs, Phase C the house numerals in Devanagari. Same scaffolding, just more entries in the TRACE_PLANETS array.
Why no Gajakesari, Raja Yogas, etc.
Sudha asked for a section of yogas at beginner level "those covered by Vikram for us." Honest finding from the transcript audit: the only one fully covered is Parivartana. Importing classical-text definitions (Brihat Parashara, Phala Deepika) for the rest would break our source rule.
The deferred-yogas footer in the section signals this to readers explicitly — and gives us a clean place to add them as Vikram teaches them.
v4.19.0
7 May 2026
A recall-side audit caught what we'd been avoiding: most quizzes and flash cards were still riffing on the original v4.5 content, even after twelve versions of source material had landed (cabinet, vikram_story, astronomy → meaning, workbook). The Cabinet quiz was the only one that had been refreshed. v4.19.0 closes three of the worst gaps — Avatars quiz, Cabinet flash card deck, Planets quiz with astronomy content.
Avatars quiz · refreshed for vikram_story content
The previous three questions were trivial planet-mappings ("Rama = Sun?", "Krishna = Moon?"). Replaced with three Vikram-grounded questions:
Q1 — Matsya: what does the small fish ultimately do once it outgrows the sea? Hint quotes Vikram, Session 4 directly: "There is a huge flood coming in seven days. The fish tells him: tie your boat to my horn."
Q2 — Kurma: what is the turtle's role in the Samudra Manthan? Hint quotes Session 7: "This turtle is still. Not moving. Swimming against the currents, not moving — just supporting the entire mountain as the churning continues."
Q3 — Mapping: Matsya, with its themes of compassion, surrender to transformation, and the impossible becoming possible, maps to Ketu. Hint covers the wider Kurma → Saturn, Varaha → Rahu, Krishna → Moon, Rama → Sun set.
Reflective prompt rewritten to invite the reader into the specific stories tested — Matsya's "danger first, then a strange blessing", Kurma's "still in the storm".
Cabinet flash card deck · new
The Cabinet section had a quiz and a game (Court Call) but no flash cards. Added a new Cabinet deck programmatically generated from the CABINET const — 27 cards across the nine planetary roles.
Three card types per planet: "What role does X play?" (king, queen, commander, prince…), "Where is X honoured?" (in whose chambers — exaltation), and "Where is X disgraced?" (debilitation). Sign answers come with their Sanskrit names.
Sits in the deck picker between Avatars and Sanskrit. Beginner-tier. Same lenient front-of-card / back-of-card mechanics as everything else.
Planets quiz · astronomy → meaning
Replaced the third Planets question (the generic "Jupiter exalts in Cancer" recall) with a Vikram astronomy → meaning question on Mars: "Why is Mars red, fast-rotating, and bordered by an asteroid belt — and what does the chart inherit from this?"
Hint surfaces the chain Vikram teaches in the v4.14 callouts: red → anger / blood / fire; fast rotation → strength; asteroid belt between Mars & Jupiter → battle; throws asteroids at Earth → destruction.
The exaltation knowledge displaced from this quiz is still tested via the Planets flash card deck (which carries Uccha/Neecha cards for every graha).
Avatars deck · vikram_story themes card
While we were in there: the Avatars deck (which was only 3 cards per avatar — name, planet, English meaning) gained a fourth card per avatar that surfaces the v4.12 vikram_story themes: "Which avatar carries these themes: 'compassion, surrender to transformation, the impossible becomes possible'?"
30 new cards total (3 per avatar × 10 avatars). Same lenient mechanics.
What's still on the list
Sign drawer enrichment recall (v4.10's 5 modules + year-rhythm) — not yet in any quiz or deck.
AVATAR_PRACTICE recall (the workbook material we shipped in v4.18) — Matsya is the only one populated; we'll add deck/quiz coverage as Marie/Sudha/Mannat/Spandana land the other nine.
Practice quiz refresh — still generic; needs grounding in real session/workbook material.
v4.18.0
7 May 2026
A four-part build directly informed by the Companion Workbook draft (Marie, Sudha, Mannat, Spandana — with Vikram, Megha, Neha) and the cabinet section's deferred Phase B. Matsya becomes the gold-standard avatar drawer with eleven reflection clusters and a full embodied-practice block; the same scaffolding is now ready for the other nine avatars as workbook content lands. The Cabinet section grows a self-contained game called Court Call. Section eyebrows pick up subtle family colours so the page reads as four threads, not fourteen sections.
1 · Matsya — the gold-standard drawer
The Matsya drawer now carries two new expandables built directly from the Companion Workbook's Matsya page: "Sit with this — eleven reflection clusters" and "Practice with this — embodied & integration".
The eleven clusters each open with a Vikram quote (lifted verbatim from the workbook draft, which itself draws from Session 26 onwards) followed by 2–3 prompts. Themes range from "Loss and renewal — letting go of what defines you" through "Patience as a path to insight" to "Service is part of healing".
The Practice block introduces three skill tiers — beginner, intermediate, advanced — with subtly coloured borders (forest, saffron, ink). It carries chart-application prompts ("look at where Ketu is in your chart") at all three tiers, the Fish Pose with chart-aware modifications, an extended-exhale pranayama, and a threshold-crossing ritual.
Why Matsya only, for now: this is the template. Marie/Sudha/Mannat/Spandana are still drafting the others. As workbook content arrives, each avatar drawer will pick up the same two expandables — no further code work needed, just data.
At the bottom of the Cabinet section, a new module: "Court Call — a game". Press "✦ Play a round →" and you get five questions drawn at random from a 30-question bank: role identification (king, queen, commander, prince…), office (moola trikona), honour (exaltation), dishonour (debilitation), and story logic.
Every wrong answer reveals Vikram's exact framing — e.g., "Saturn, the servant, is on his knees in front of the commander of the army." (Session 23). Right answers get the same gloss, just with a different opening.
End-of-round summary lists each question with a tick or cross and your score ("3 of 5 — better than last time"). Best round persists in localStorage. No timer, no leaderboard. Replay reshuffles.
This was Phase B of the Cabinet, promised in v4.11. Now it's in.
3 · Section family colour coding
Every section now carries a data-family attribute that places it in one of four threads: map (signs, qualities, planets, signature, houses, kaalapurusha — indigo), story (avatars, cabinet — saffron, the existing accent), mechanics (relationships, aspects, systems, categories, purusharthas — forest), and practice (the practice section — plum).
The eyebrow text (§ One, § Two, etc.) and the small horizontal rule under each section heading now pick up the family colour. The rule also widens slightly (38px → 56px) for visibility. Everything else stays saffron.
Goal: at-a-glance grouping without redrawing the navigation. The page reads as four threads now, not fourteen sections.
4 · Workbook-block CSS (reusable scaffolding)
Added shared CSS for .workbook-block, .workbook-cluster, .workbook-quote, .workbook-prompts, .practice-block, and .practice-tier[data-tier]. The same primitives will hold every avatar's reflection clusters and practice content as the workbook expands.
Practice-tier accents: beginner gets a forest border, intermediate saffron, advanced ink — visually consistent with the family colour coding above.
v4.17.0
7 May 2026
Phase 1 from the post-call plan. Four items shipped together: rename "Test yourself" to "A check-in" everywhere; add a writeable reflection space inside every section's check-in (the workbook gap Vikram pointed at); a single accessibility toggle for larger text + higher contrast; and a USER_TESTING.md doc with the seven questions for the first cohort. This is the version we'd ship to user testing next.
Rename · "Test yourself" → "A check-in"
Sudha and Vikram both flagged that "test" doesn't match the class's pedagogy. Sanchi suggested check-in. The summary line now reads "✦ A check-in — 3 questions, no score". Same lenient mechanics, gentler register.
14 quiz blocks renamed; the global click handler in the demo deck's slide 12 also updated.
Reflection space — the workbook gap closed
Below the existing reflective prompt at the bottom of each check-in, every section now carries a small "Sit with this — write what comes" textarea. Type freely. The text persists in localStorage per section, restored on every visit.
Two actions below the textarea: Copy to clipboard (formats the section title + check-in date + prompt + your note for pasting into a journal, WhatsApp, anywhere) and Clear.
Why this lands: from the call, Vikram said "the only thing making this different from the workbook is space for reflection. The moment you bring that in, this completely replaces the workbook." So we did.
No server. Notes live on the device for now. Phase 2 (login + sync) is the obvious next step.
Accessibility — larger text + higher contrast
A small Aa button next to the mode toggle. Tap it to flip the page into accessibility mode. Persists in localStorage.
When on: root font size scales up, headings and prompts grow proportionally, muted greys shift toward higher-contrast ink, border lines thicken. Quiz options get more padding; reflection textarea gets larger.
Targeted at our senior learners — Hiran, Meera, anyone who has flagged the page as too tight. One toggle, no granular controls; we want the simplest mental model.
USER_TESTING.md — for the cohort
New file at the project root: USER_TESTING.md. Contains the seven cohort questions (Vikram's three + Sree's three + Sanchi's contextualisation lens) plus a deadline schedule for the first round (cohort confirmed by 9 May, page out by 10 May, two-week window through 23 May, first synthesis to Vikram by 26 May).
Sanchi owns the synthesis loop. Voice notes accepted. Three signal types we listen for: stop signals (urgent), resonance signals (good), friction signals (easy wins).
What's deferred from Phase 1
Color coding (Vikram's suggestion to differentiate sections by accent colour) — deferred. Lower urgency than reflection.
Subtle visuals/images per section — deferred. Wait for cohort feedback before adding visual elements.
Quiz rewrite against learning outcomes — blocked on Vikram's Google Drive folder. Coming when it lands.
Brief reading pass over decks — Vikram acknowledged typos/duplicates exist. Larger conversation for Phase 2.
Mechanics
Two new localStorage keys: astro_reflect_notes (per-section reflection text) and astro_a11y (accessibility-mode preference).
Reflection textarea uses debounced auto-save (350ms) — no save button needed. Tiny "✓ saved" confirms.
Accessibility toggle is plain CSS body-class — no layout reflow surprises.
Small italic credit line added to the footers of all five pages: Quick Reference, Kaalapurusha, Mercury Spectrum, Astronomy, Release Notes.
Demo deck (demo.html) title slide meta updated from "Sree · for Vikram" to "Sree & Sanchi · for Vikram."
Content attribution unchanged — All Things Vedic / Vikram remains the author of the source material. The line distinguishes content (Vikram's) from page build (Sree & Sanchi's).
v4.15.0
7 May 2026
Phase B of the astronomy work — a new astronomy.html peer page sitting alongside Kaalapurusha and Mercury Spectrum. Eight foundations covering Solar System, Ecliptic, Coordinate Systems, Celestial Equator, Eclipses, Apparent Motions, Ayanamsha, and the Stellarium Lab. All material from Vikram's transcripts and decks; nothing borrowed from elsewhere.
Eight sections
The Earth in the Solar System — seven visible navagrahas, cosmic scale exercise from Deck 10
The Ecliptic & the Zodiac — Sun's path, 360° / 12 × 30°, the Rigveda 1.164.48 quote
Coordinate Systems — Az/Alt and RA/Dec, with Vikram's "go outside, face the direction, be still" instruction from Deck 22
The Celestial Equator — 23½° tilt, the equinox intersections
Eclipses & the Lunar Nodes — Moon's tilted orbit, Rahu and Ketu as the two crossings, the two conditions for an eclipse
Apparent Motions & Retrograde — the eight motions of BPHS 29.21–23 (Sama, Manda, Vakra, etc.)
The Stellarium Lab — the hands-on prompts that bring it together
Each section has
A Vikram quote callout at the top, attributed to the session and deck
Body explanation drawn from Vikram's deck (markdown summary) and the relevant transcript
A custom saffron line-drawing diagram (no borrowed images)
A cross-reference back to where this lands in Quick Reference
Site nav
All four existing pages updated. Site nav now reads: Quick Reference · Kaalapurusha · Mercury Spectrum · Astronomy · Release Notes.
Astronomy is a peer page like Kaalapurusha and Mercury Spectrum — no Learning-mode frontier integration; available always.
Source discipline
Every section is sourced from Vikram's transcripts (Sessions 5, 11, 13, 14, 15, 17, 18, 19, 25, 26) and decks (4, 8, 10, 20, 22, 24, 27, 28, 29, 31, 36, 47).
Where I needed words to bridge Vikram's framings I used the deck summary's phrasing, which is itself a faithful summary of the slide content.
Diagrams are custom SVG line-drawings — no borrowed images. The decks' original diagrams reference public sources (scienceabc.com, timeanddate.com); I drew minimal saffron equivalents to keep the page's design language honest.
If anything in the page reads as off-doctrine or borrowed, flag the section and I'll revise.
v4.14.0
7 May 2026
Phase A of the astronomy work — the science under the symbolism, surfaced inside the Quick Reference. The astronomy mappings already baked into the page (which were buried inside an "intermediate" classical block) are now first-class. Plus small Vikram-quote ledes in §1 Signs and §10 House Systems explaining the astronomy under the structure.
Per-planet "From the sky" section
Promoted PLANET_CLASSICAL.astronomy[] to its own labelled section in the planet drawer: "From the sky · why this graha feels the way it does." Now visible at all learning levels (was hidden under "intermediate" before).
Currently displays for Sun, Moon, Mercury, Mars (the four planet-decks ingested so far). Each shows physical fact → karaka mapping in Vikram's framing — e.g., Mars: "Red in colour → anger, blood, fire" · "Asteroid belt between Mars and Jupiter → battle" · "Has asteroids in its own orbit → commander."
Venus, Jupiter, Saturn, Rahu, Ketu will gain the same when their dedicated decks are ingested. The render gracefully omits the section where data isn't yet present.
Astronomy ledes in §1 and §10
§1 Signs — small italic line under the lede: "From the sky — 'the path that the Sun takes along the Earth — that is the ecliptic. The ecliptic is a very important concept for us; we will be using this a lot.' The 360° wheel of signs is this ecliptic, divided into twelve 30° slices." (Vikram, Session 13)
§10 House Systems — small italic line under the lede: "From the sky — 'At the equator, the Medium Coeli and the Zenith are the same. But if I go north — or south — it moves away from the zenith. That's what brings us to Sripathi Paddhathi.' The differences between systems are latitude effects on the geometry of the ecliptic." (Vikram, Session 37)
What's next — Phase B
A dedicated astronomy.html peer page (alongside Kaalapurusha and Mercury Spectrum) — eight sections covering the Earth in the Solar System, the Ecliptic & Zodiac, Coordinate Systems, Celestial Equator, Eclipses & Lunar Nodes, Apparent Motions, Ayanamsha & Precession, and Stellarium Lab notes.
All material restricted to Vikram's transcripts and decks. No public sources without explicit confirmation. Coming next as v4.15.0.
v4.13.0
7 May 2026
Light / Shadow vocabulary fix in §2 (Elements · Modes · Duality), caught by Sudha. The subheading on every element / modality / duality card was reading "Qualities"; Vikram\'s actual pair across the transcripts is "Light" and "Shadow". Also aligns the Quick Reference vocabulary with the Mercury Spectrum sister page, which was already using Shadow and Light.
Sourced in Vikram\'s words
Multiple direct transcript quotes confirm the pair: "I have separated this list of keywords into 2. The top is the light and the bottom is the shadow." · "We could discuss the light and shadow exactly." · "From the shadow to the positive to the light."
He uses "positive" and "light" interchangeably; "light" is the cleaner default.
What changed
The subheading on each of the nine quality cards (4 elements + 3 modalities + 2 dualities) now reads Light instead of Qualities.
The §2 lede was updated: "Each shows positive expression and shadow tendencies" → "In Vikram\'s framing — each carries a light side and a shadow side, the two faces every sign holds."
No layout changes. No data shape changes. Two strings.
What\'s intentionally unchanged
The section anchor #qualities stays — changing it would break the demo deck\'s live-link buttons, the search index, learning-mode frontier, and any deep-links you\'ve already shared. The visible section title is "Elements · Modes · Duality" regardless.
Classical citations that contain the word "qualities" (Phala Deepika, Sarvartha Chintamani) stay verbatim — we don\'t paraphrase classical texts.
General English usage of "qualities" elsewhere on the page (Avatars lede, Trikonas description) stays.
Credit
Caught by Sudha (a power user) as a vocabulary mismatch with what Vikram says in class. Confirmed against transcripts before changing. The kind of catch that keeps the page honest to its source.
v4.12.0
6 May 2026
"How Vikram tells it" — every avatar drawer now opens an expandable with Vikram's actual scene-by-scene narrative from class. Sourced verbatim from Sessions 4, 7, 10, 12, 16, 18a, 20–22, 27, and 31, with light editing only for grammar and flow.
What's new in each avatar drawer
A new "✦ How Vikram tells it" expandable below the existing structured story.
Each story is broken into 5–7 named scenes — for example Matsya: Satyavrata at the river → A fish that speaks → The fish outgrows → And then a horn → The flood, the boat, the horn → The themes.
Session attribution at the top of every expandable (e.g., "From Vamana Avatar & Signature — Session 16 · August 31, 2025.") and a closing citation line.
Light edits only for grammar and reading flow where the spoken Teams transcript was choppy. Substance verbatim — including Vikram's asides like the grandmother's teaching during Narasimha ("Treat everything with respect — even in something as insignificant as a pillar of your house, there is something significant") and the flute farewell in Krishna ("I will not play this for anyone else. This is something I have played only for you").
Kalki is omitted — he is the avatar yet to come, and Vikram does not narrate his story in class.
Existing structured story field is preserved on every avatar — the at-a-glance summary on the avatar grid and at the top of the drawer is unchanged. The new expandable is a deeper second layer for learners who want the actual classroom telling.
Mechanics
New AVATAR_STORIES data const baked next to AVATARS — keyed by avatar id, each with session metadata + an array of scene objects (label + text).
drawerForAvatar() renders the expandable using the same .cab-story CSS as the cabinet story expandable in §4 — consistent typography, scene labels, citation footer.
No layout changes to the avatar grid, the planet drawer, or any other page surface.
Why this matters
Avatars are the mythological backbone of the course — Vikram returns to them across the year. Until now the page summarised each avatar in encyclopedic prose; the actual classroom telling was nowhere on the page.
This is the second layer of "From the class" content (after the cabinet story in v4.11) that turns the page from a reference of facts into a vessel for Vikram's voice. Tap any avatar, expand the story, and the page reads as if you're back in his Tuesday class.
v4.11.1
6 May 2026
Android rendering fix for the zodiac and planet glyphs. They were rendering as colour emoji on Android (oversized squircles overflowing the chakra cells), where they should render as plain saffron text. Caught by a learner using Android.
Root cause
Unicode characters like ♈ ♉ ♂ ☉ ♄ have both text and emoji presentations. Without an explicit hint, the browser/OS picks whichever its default font supplies. iOS/macOS render them as small monochrome text glyphs (correct for our layout); Android falls through to Noto Color Emoji and renders them as oversized colour squircles that overflow the chakra cell layout.
This was probably present since the Rāśi Chakra first shipped — only became visible when an Android user looked at it.
The fix
Appended Variation Selector-15 (U+FE0E) to every astrological glyph in the data — the standard Unicode mechanism to force text presentation. ♈ → ♈︎, ☉ → ☉︎, etc. Applied to all 12 zodiac signs and all 9 planets.
Added belt-and-suspenders CSS: font-variant-emoji: text + an explicit serif fallback chain on the .cell .glyph and .cell .ruler elements.
Visible result: on Android, the chakra glyphs now render as small saffron-coloured text glyphs that fit cleanly inside each cell — matching iOS/macOS.
v4.11.0
6 May 2026
A new top-level section: The Planetary Cabinet. Vikram tells the cabinet as a story across Sessions 23–25 — a wise old king, his queen, the prince, the princess, the commander, the priest, the servant, and the outsiders. The page now honours that story with a dedicated section between Avatars and Planets.
What's in the new section
Vikram quote callout — pinned to the section: "Even debilitation, you can explain it with the story… It is not given in the scriptures. There is no hard and fast rule. Make the story yours."
The Royal Court — nine cards arranged by tier: royal (Sun, Moon, Saturn), inner-circle (Mars, Mercury, Venus, Jupiter), outsiders (Rahu, Ketu, dashed border). Each card shows the role, Sanskrit name, office, where the planet is honoured, where dishonoured. Tap any card to open the planet drawer.
Read the cabinet story — an expandable panel containing Vikram's full narrative from Session 23, sectioned by character: The wise old king · The queen's wisdom · The crown prince · The princess · The commander of the army · The royal priest · The servant · The outsiders · How exaltation and debilitation work. Light edits for flow; substance verbatim.
Wheel of Honour — a 12-row table, sign-side view: Sign · Lives here · Honoured here · Dishonoured here. Click any sign or planet to drill into its drawer.
Quick Reference — a 9-row table, planet-side view: Planet · Role · Office · Honoured in · Dishonoured in.
Test yourself — three cabinet questions: who is the king, why Saturn debilitates in Aries (story logic), where Jupiter exalts (the priest in the queen's chambers).
Drawer enrichments
Planet drawer — a new "Role in the cabinet" chip at the top of every planet drawer, with the planet's Sanskrit role title and a one-line cabinet quote. Sun → King · Rāja. Mars → Commander of the Army · Senāpati. Saturn → Servant · Bhṛtya.
Sign drawer — the exalt/debil "why" lines now prefer the cabinet's story-logic explanation over the generic framings introduced in v4.10.0. Sun in Aries reads "The king at his glory in the chambers of the commander of the army." Saturn in Aries reads "The servant on his knees in front of the commander of the army." (Vikram, Session 23).
Mechanics
New CABINET data const baked next to PURUSHARTHAS — single source of truth for role, office, honour, dishonour, and the story-logic "why" for each planet.
Section numbering updated: Cabinet is § Four; everything from old § Four (Planets) onward shifts +1. Practice is now § Fourteen.
SECTION_ORDER, SECTION_TITLES, TOC, QUIZZES, VIKRAM_QUOTES — all updated with cabinet entries. Learning-mode frontier respects the new ordering: Cabinet unlocks after Avatars quiz is complete.
Coming next (v4.12.0): Court Call — a game inside the Cabinet section to test cabinet understanding.
Why this matters
The cabinet is one of Vikram's load-bearing pedagogical frames — he says "we will be using the planetary cabinet even for the next topic." It explains why exaltations and debilitations land where they do, which previously had to be memorised.
Two complementary visuals (court hierarchy = planet-side, wheel of honour = sign-side) let learners see the dance between the two — the system clicks when you can flip between them.
Everything in the section either quotes Vikram directly, follows his story logic, or surfaces existing KB data. No invented per-planet personality content.
v4.10.0
6 May 2026
Sign drawers, enriched. Five new modules per sign — year rhythm, anatomy, exalt/debilitate "why", nakshatras, and a resonant avatar — surface KB material that was already there but never reached the drawer. The drawer reads as a body-mapped artefact now, not a label table.
What's new in each Sign drawer
Year rhythm. Small italic line at the top of the drawer placing the sign in the seasonal arc Vikram references in class — e.g., Aries: "the start of spring — the impulse that initiates the wheel"; Pisces: "end of winter — dissolution, return to source, the wheel closing". Cardinal signs get the start-of-season framings; mutables get the cusp framings.
Anatomy · Kālapurusha House N. Body part name (English + Sanskrit), the classical includes description ("eyes, brain, skull..."), and the source citation (BPHS / Saravali / Phaladeepika). Sourced from anatomical-map.json, which the page already had baked in but wasn't surfacing in the sign drawer.
Exalt/Debilitate "why". Each exaltation and debilitation pill now carries a short italic line explaining the reasoning. E.g., Sun in Aries — "The king rises with spring's first fire."; Mars in Cancer — "The warrior softened by the tides of feeling." Drawn in the spirit of Vikram's Session 23 framing: "Look at where a planet exalts and you'll understand the sign."
Nakshatras. Static pills listing the 2.25 nakshatras each sign holds, with ¼/½/¾ pada annotations for the ones that span sign boundaries (Krittika ¼ in Aries, Krittika ¾ in Taurus, etc.).
Resonant avatar. Each sign now links to its primary daśāvatāra correspondence via the ruler-to-avatar mapping. A clickable pill plus a short why-line — e.g., Cancer → Krishna · Cowherd with "Moon rules Cancer — Krishna, lunar, nurturing, full of feeling." Tap opens the avatar drawer.
What stayed the same
All existing modules (Element/Modality/Duality, Ruler, Moola Trikona, Exaltation, Debilitation, Kālapurusha House) are unchanged in content. The drawer just got six new sections layered in.
No data migration. New SIGN_LORE const baked into the page next to SIGNS_DATA.
Why this matters
The sign drawer used to read like a structural label — Fire Cardinal Yang, ruled by Mars, Sun exalts here. Correct, but flat. Now you tap into a sign and it tells you where in the year you are, what part of the body it owns, why exaltations land where they do, the nakshatra slices, and which avatar it resonates with. Reads as a living slice of the wheel.
All sourced material is either from the existing KB (anatomical map, avatar profiles) or composed faithfully from Vikram's structural teaching — no per-sign quotes invented out of thin air.
v4.9.2
6 May 2026
Visibility fix for the Grounding overlay (and Chant Mode by extension). The modal was reading as cream-on-cream — the page bled through too much.
What changed
Backdrop darker. Both the Grounding and Chant overlays now use a deeper ink-toned backdrop (rgba 0.55 → 0.82) with a stronger blur (5px → 8px). The page underneath drops away properly.
Grounding modal lifts off. Background switched from --cream (same as page) to --surface (brighter), border tinted faint saffron, and a much stronger drop-shadow. Reads as a raised paper card now, not part of the page.
No layout or content changes — purely contrast.
v4.9.1
6 May 2026
Two small fixes from learner feedback.
What changed
Spelling. Yin's Sanskrit name corrected from Sthri → Stri (स्त्री). Updated in three places: the dualities data, the search index, and the Sanskrit-term jump map.
Daily Gem randomises on every load. Previously the gem was date-seeded — same one all day across reloads — which could feel stale. Now a fresh gem appears each time the page loads (with a small guard against the same gem repeating back-to-back). The "Show another" reroll button is unchanged.
v4.9.0
6 May 2026
Grounding replaces Ganapati invocation as the page opener — Vikram begins every class with a short grounding (settle, notice, synchronise breathing, set intention), and now the page does too. The Ganapati shloka stays one tap away in the chant tray; nothing is lost.
Top bookend
"✦ Begin with the Ganapati invocation →" becomes "✦ Begin with grounding →". Tap opens a dedicated Grounding overlay.
Once you've completed a grounding today, the bookend gains a small "— grounded today ✓" stamp. Resets the next calendar day.
Inside the Grounding overlay there's a quiet "Or open the Ganapati invocation instead →" link for when you want the shloka first.
The grounding script (verbatim from class)
Vikram opens every session with the same arc — Settle → Notice → Synchronise → Release → Ready. Pulled directly from sessions 1, 2, 4, 9, 13, 18a, 19, 22, etc., with light touches only for punctuation.
Settle:"Find your feet on the floor. Sense if your back is straight. Chin parallel to the floor. You're comfortable. You can close your eyes and bring your attention to your breathing."
Notice:"Just notice. Just become aware of how you are breathing today."
Synchronise:"Now let's synchronise our breathing. I will tell you what I am doing. See if you can follow along."
Release:"Back to normal breathing. Set an intention — not just to learn this subject, but to discover yourself."
Ready:"Take a moment. When you're ready, begin."
The breath circle
Centre of the overlay: a saffron breath circle. During the Synchronise phase it expands on inhale (4 sec) and contracts on exhale (4 sec), with quiet "in" / "out" cues. During settling and release it rests still. On the final Ready phase it fades.
Text-only — no audio, no autoplay. Silent and private.
Pacing — auto with a Next pill
By default the overlay auto-advances through phases — you don't need to do anything.
If you want to move faster, tap "Next →" to skip ahead. The final phase ("Ready") waits for your tap on "Ready — begin study".
Two duration presets at the bottom of the overlay: Short · 90 sec and Full · 3 min. Persists in localStorage.
What stays the same
Chant Mode is unchanged. Same overlay, same 7 shlokas, same 108-bead mala. Tap the floating ॐ button (bottom-right) and the Ganapati invocation is right there in the Invocation group.
Closing bookend is unchanged. Kshama Prarthana → Mukundamala still close the page.
No data migration needed. New astro_grounding_preset and astro_grounded_today keys in localStorage.
Why this change
Grounding is what Vikram actually does at the start of class — every session, the same arc, in his own words. Putting it at the top of the page mirrors how a learner would arrive in his Teams meeting.
The Ganapati invocation is still revered and one tap away — but the page's primary opening is now the body-first practice that comes before any Sanskrit.
v4.8.0
6 May 2026
"From the class" — Vikram's actual voice, threaded through the page. Each of the 13 sections now opens with a short, exact-as-spoken Vikram quote drawn from the class transcripts, attributed to the session it's from. Plus two source-grounding fixes: the Modality quiz hint now reflects Vikram's Brahma/Vishnu/Shiva framing (with the breath analogy), and the Mahāśakti element pairing is properly credited to Sri Aurobindo's The Mother.
Vikram quotes — one per section
A small saffron-bordered "From the class" callout sits below each section heading. The quote, the topical context, and the session attribution (e.g., "Vikram, Session 9 · Roadmap, Dualities & Modalities · June 29, 2025").
Quotes drawn from the freshly-imported transcript layer — actual classroom recordings, not paraphrases. Light edits only for grammar/punctuation flow where the spoken Teams transcript was choppy; substance is faithful.
Examples: on the modes — "The impulse to breathe is Brahma — Cardinal. When I am sustaining the breath... it is Vishnu — Fixed. When I reach the full breath and there is a full reversal... that reversal is Shiva — Mutable." On the daśāvatāra — "Notice how the life form is evolving with each avatar. From the fish came the turtle, and then came the boar — life is gradually moving on to land." On Lagna — "Ascendant means something that has risen. Which are the stars that are rising in the east at that moment?"
Sourced from sessions 9, 16, 23, 24, 25, 30, 32, 33, 35, 37 — across the year, with the right session topically matched to each quick-reference section.
Quiz hint — Modality (Q5)
Replaced the dry "Cardinal initiates, Fixed sustains, Mutable adapts" hint with Vikram's own framing: Cardinal = Brahma, Fixed = Vishnu, Mutable = Shiva, illustrated through the breath cycle.
Cited to Session 9 (Roadmap, Dualities & Modalities · June 29, 2025).
Sri Aurobindo attribution on the Mahāśakti element pairing
The four-Devi-to-element mapping (Mahasaraswati Earth, Mahalakshmi Water, Mahakali Fire, Maheshwari Air) is from Sri Aurobindo's The Mother, not a generic Vedic frame. Vikram explicitly says so in Session 13.
A small italic attribution line now sits under the "Elements & Mahāśaktis" subhead in §2 (Elements, Modes & Duality).
What stays the same
Quotes are visible in both Learning and Reference modes — they read as reference too. In hard-locked sections they're hidden along with the rest of the section's content (the existing lock rule already covers this).
No data shape changes. Returning users just see the new callouts when sections open.
Why this matters
Earlier feedback (v4.5.1, v4.6.1) caught two cases where the page had drifted from class material — the gunas mapping and the "(movable)" parenthetical. Adding direct Vikram voice throughout makes that drift much harder, because the page now speaks in the class's own register, not a generic-Vedic-astrology composite.
Fellow learners reading this page should now feel Vikram is in the room with them.
v4.7.0
6 May 2026
New page: Mercury Spectrum. A 21-pair self-reflection slider tool, ported from a separate dark-mode prototype into the project's cream-and-saffron design system. Linked from the site nav alongside Kaalapurusha so it's a peer page, not a standalone.
What it is
21 sliders across 5 sections — Mind, Communication, Action & Expression, Relationships, Dharma & Purpose — each a Shadow ↔ Light pair like Distraction ↔ Presence, Reacting ↔ Responding, Knowing the teaching ↔ Living the teaching.
A live average across all 21 spectrums updates as you slide. A wise-note textarea for private reflection. Copy-results button packages everything into a clipboard-friendly text block.
No data stored. Reset wipes the slate. Designed as a daily / weekly check-in.
Design — port from dark to cream
Original prototype was dark navy + gold, EB Garamond + Cinzel. Restyled to cream + saffron, Cormorant Garamond + Spectral, matching Quick Reference and Kaalapurusha exactly.
Slider gradient now reads Shadow (saffron) → midpoint (rule) → Light (sage), keeping the two-pole language without breaking the page palette.
Card vocabulary, button shapes, masthead pattern, and footer all mirror Quick Reference. Drops cleanly into the suite.
Wired into the suite
Site nav on every page now reads: Quick Reference · Kaalapurusha · Mercury Spectrum · Release Notes.
Mercury Spectrum bakes in the same PAGE_VERSION + version.json update-checker as the others — returning users will see the banner when a new version ships.
v4.6.1
6 May 2026
Quiz wording fix. Removed an inaccurate "(movable)" parenthetical from the Cardinal-signs question and tightened the hint to match the deck's own language.
What changed
"Which set lists the four Cardinal (movable) signs?" → "Which set lists the four Cardinal signs?". Cardinal in the decks means initiating, not "movable" — and "movable" doesn't appear anywhere in the source PDFs.
Hint now cites deck #73 Moon's exact phrasing: "Initiates, sustains, or changes."
v4.6.0
6 May 2026
Hard locks for Learning mode. Sections beyond your current frontier no longer just dim — they show only their heading and a "🔒 Locked" poster. The next section opens after you complete the current section's quiz, one at a time. The page now has a real pace.
What changed
Soft dim → hard hide. A locked section's content is no longer readable. The section heading stays visible (so the TOC and the page rhythm read normally), and the body is replaced by a centred "Locked · Sit with [previous] first · Take me there →" poster card.
Tighter frontier. Previously the section just past the frontier was pre-unlocked as a preview. Now only sections through the last-completed one are open. Sit with Signs → complete its quiz → Elements opens. Then Avatars. Then Planets. One at a time.
"Peek anyway" removed. The escape hatch that briefly let learners see ahead is gone in Learning mode. The pace is enforced. Switch to Reference mode when you want everything available — a one-click toggle in the masthead area.
TOC pills show a 🔒 next to locked sections and dim to ~45% opacity. Clicking still scrolls to the section so the learner can see what's coming, but lands on the locked poster, not the content.
Frontier strip wording updated: "Now: Elements · 11 more to open" — clearer signal that locks are real.
Search results for content in locked sections now show a small 🔒 locked badge. Clicking the result scrolls to the locked poster instead of the deep target.
Jump pills from inside drawers (e.g., a sign drawer's "● Water · Mahalakshmi ↗" jump) reroute the same way — they take you to the locked poster if the destination section isn't open yet.
Drawers stay fully populated. Drawers are cross-references — gutting them based on lock state would break the page as a reference. Sign drawers still mention their planet, modality, element, etc., even if those sections aren't open yet. The lock applies to section as destination, not to information about a section appearing elsewhere.
Daily Gem tidbits can still surface from any section; tapping a gem-link opens the relevant drawer (drawers are unlocked) — consistent with the rule above.
Reference mode is unaffected
The mode toggle is unchanged. Reference mode shows the original level switcher, has no dimming, no locks, no frontier — everything is available, quizzes available for revision.
You and Vikram can flip to Reference mode any time as a kind of "show-me-everything" override without losing your Learning-mode progress.
Mechanics
New helpers in JS: isSectionLocked(sectionId), sectionIdForTarget(targetId), resolveLockedTarget(targetId). The reroute logic is centralised so all click paths behave consistently.
CSS uses display: none !important on all direct children of a locked section, with reverts for .section-head and the new .section-locked-poster. No JS micromanagement of inner elements.
Frontier formula: section[N] is open iff N === 0 OR SECTION_ORDER[N-1]'s quiz is complete.
v4.5.1
6 May 2026
Quiz content fix — pulled a question that imported a mapping from outside the knowledge base. Aligned the Modality (Cardinal/Fixed/Mutable) question to the language Vikram actually uses in the decks, and corrected a Sanskrit spelling.
What changed
Modality question rewritten. The previous Cardinal/Fixed/Mutable → Gunas (rajas/tamas/sattva) question implied a mapping that, while a common framework in some streams of Vedic astrology, does not appear in the class decks. Replaced with a question grounded in deck #43 and deck #73's "Building Blocks of the Signs" framing — Modality describes how a sign acts: initiates, sustains, or adapts.
Sanskrit spelling. Vrshchika → Vrishchika, matching the spelling in HOUSES_DATA.
Why this matters
The page is meant to reflect Vikram's class material, not generic Vedic-astrology content. When a quiz question asserts a mapping that's not in the source, it muddles what's in your training versus what's a general framework. This fix keeps the quizzes inside the world of the decks.
If something in a future quiz question doesn't ring true to the class, point it out — happy to do another KB pass.
v4.5.0
6 May 2026
Two modes — Learning and Reference — and a soft quiz at the end of every section. The page now has a built-in pace for first-time learners while staying a forever-reference for the rest of us. Driven by ideation with Vikram on how to make the page less overwhelming for new students.
Learning ↔ Reference mode
A small mode pill in the top strip — ◉ Learning · ○ Reference. Persists in localStorage. First-time visitors land in Learning mode by default.
Learning mode: the level switcher disappears (the frontier drives visibility instead), a "Now: Signs · 12 to go" frontier strip appears at the top, and sections beyond the next-to-cover are softly dimmed with a "opens after you sit with [previous]" veil. Curious learners can still tap "peek anyway →" to see ahead.
Reference mode: the original level switcher returns, no dimming, no frontier strip, no progressive locks. Everything is available — quizzes too, just collapsed by default for revision.
Soft quizzes — three per section
At the end of every section, a "✦ Test yourself — 3 questions, no score" disclosure. Tap to expand.
Multiple choice. Tap an answer → it's marked correct or struck through, the right answer lights saffron, and a small explanation appears with a "see this on the page →" deep-link where helpful.
No score, no fail. Completion is engagement-based: once you've answered all three questions (right or wrong), the section ticks. Wrong answers are learning moments, not punishments.
Each quiz closes with a reflective prompt that bridges objective recall ("which signs are Cardinal?") into subjective integration ("where in your life do you tend to be cardinal?").
Section ticks appear on the TOC pill; the quiz block itself turns saffron-bordered when complete. State persists in localStorage so you can come back tomorrow.
Frontier-driven progression (Learning mode)
The "frontier" advances every time a section's quiz is completed. By default Signs and Elements/Modes/Duality are open; the rest are softly dimmed.
13 sections · 39 questions in total. Sit with one section, complete its quiz, the next opens.
"Full circle" message appears once all 13 are sat with — with a gentle nudge to try Reference mode.
Mechanics
QUIZZES data const baked in next to the other data — easy to extend or revise. SECTION_ORDER mirrors the TOC and drives the frontier.
Two new localStorage keys: astro_mode (learning/reference) and astro_quiz_state (per-section seen/correct/choices/complete).
Learning mode overrides level-class CSS so that nothing inside a visible section is hidden — the frontier is the only gate.
Existing search jumps still work; deep-linking into a locked section softens it for the duration of the visit.
v4.4.1
5 May 2026
Patch fix. Search and jump pills now land cleanly below the sticky table of contents — section headers and inner cards are no longer clipped when you deep-link to them.
What changed
Inner deep-link targets (.qt-card, .cat-card, .purush-card, .anat-card, .avatar-card) now carry their own scroll-margin-top so the sticky TOC doesn't overlap the top of the target.
Section-level scroll-margin-top increased from 64 px to 80 px to account for the level switcher row.
Behaviour: searching for water and clicking the result now scrolls so the Water element card sits below the TOC pill bar — its title and "qualities" line are fully visible.
v4.4.0
5 May 2026
Chant Mode. The page becomes a sacred reading session — open with the Ganapati invocation, sit with the study, close with the prayer of forgiveness. A focused chant overlay supports any of the seven shlokas with Devanagari, transliteration, meaning, an optional karaoke line-highlight, and a tap-to-count 108-bead mala.
Bookend the page
A small italic line just under the masthead — "✦ Begin with the Ganapati invocation →". Tap it to enter Chant Mode with Gananam Tva.
A matching line just above the footer — "✦ Close with the prayer of forgiveness →". Opens Kshama Prarthana; the overlay then offers a Next: Mukundamala (offering) step so the closing flows naturally.
Both are opt-in micro-copy. A learner who doesn't chant won't even notice them.
Floating ॐ button + tray
A small saffron ॐ button bottom-right of the viewport, always reachable.
Tap it → a tray opens listing all seven shlokas grouped by purpose: Invocation (Ganapati), Mahāśakti element mantras (Saraswati, Lakshmi, Mahishasura Mardini, Maheshwari), Closing (Kshama Prarthana, Mukundamala Stotra).
Chant Mode overlay
Devanagari centred and large, transliteration below in italic, English meaning in body type, source as a quiet attribution.
108-bead mala — tap the saffron ॐ button to count one repetition. The bead ring fills bead-by-bead, with subtle quartile markers every 27 beads. A small visual celebration when the full mala completes; counter resets if you continue tapping.
Highlight as I chant — toggle on, set tempo (2–10 seconds per line), and the Devanagari highlights one line at a time at that pace. Off by default; tempo preference persists in localStorage.
Reset button to start the mala over. Close with the × button or Esc. Backdrop click also closes.
Sanskrit-term search bug fix
Previous behaviour: searching for water surfaced Sanskrit terms like Mahalakshmi · Deity of Water element with action: null — clicks did nothing.
Now: every Sanskrit term in the index has a sensible jump target. Tapping Mahalakshmi → scrolls to and pulses the Water element card; tapping Trikona → pulses the Trikonas category card; tapping Lagna → opens the 1H drawer; etc. 31 terms mapped.
Mechanics
All seven shlokas baked into the page as a CHANT_SHLOKAS JS const, mirroring astrology-101-knowledge-base/shlokas.json.
No external libs. CSS-only mala bead grid. Karaoke via setInterval; pure CSS pulse on the active line.
Section IDs unchanged. Existing deep-links continue to resolve.
v4.3.0
5 May 2026
Devi mantras land on the four element cards. Each Mahāśakti card now carries the matching shloka — Devanagari, transliteration, English meaning, and source — folded behind a tap-to-reveal disclosure so the card stays clean by default.
What's new
Fire / Mahakali → Mahishasura Mardini (Adi Shankara, Shivarahasya Purana 53.1) — Durga slaying the buffalo demon, in Mahakali's iconic form.
Earth / Mahasaraswathi → Pranodevi Saraswati Mantra (Rig Veda 1.3.10–12) — invocation of Saraswati as source of strength and intellect.
Air / Maheshwari → Maheshwari Gayatri Mantra — She who rides the bull, holding the trident.
Water / Mahalakshmi → Lakshmi Gayatri Mantra (Taittiriya Aranyaka 10.1.7) — meditation upon the consort of Vishnu.
How it shows up
Inside the Elements & Mahāśaktis section (§ 2), each element card has a new italic-saffron "ॐ {Mantra title} · tap to reveal" line at the bottom.
Tapping reveals a soft saffron-tinted block: Devanagari (centred, larger), transliteration (italic), English meaning, and the source citation.
Closed by default to keep the four-card grid scannable.
Source & mechanics
Sourced from Shlokam.pdf by Vikram (allthingsvedic.in). The PDF is image-based; pages were rendered and read visually.
Full extraction lives at astrology-101-knowledge-base/shlokas.json — all 7 shlokas including Ganapati invocation, Kshama Prarthana (forgiveness), and Mukundamala Stotra (offering). Only the four Devi mantras surface in the UI for now; the others are kept for future use.
Baked into the page as MAHASHAKTI_SHLOKAS JS const. renderQualityCard emits the disclosure block when idType === 'element'.
v4.2.x
5 May 2026
Global search. Press / or Cmd+K (or tap the new Search pill in the level row) to open a command palette that searches every sign, planet, house, avatar, section, Sanskrit term, classical signification, anatomical region, and reflective prompt on the page. v4.2.1 patches a click-handler bug on result rows.
How it works
Open with /, Cmd+K, or the visible Search · / pill next to the level switcher.
Navigate with ↑↓; select with Enter; close with Esc or by clicking the backdrop.
Results above the user's current level still appear, tagged with a small beginner / intermediate / advanced pill.
Selecting one auto-bumps the level switcher so the page is in the right state when the result lands.
What gets indexed
Primary entities — signs, planets, houses, avatars by name + Sanskrit + key fields.
Sections — section title + lede.
Sanskrit glossary — every term + definition from the practice deck.
Classical significations — every item across BPHS (Parashara), Phala Deepika, Uttara Kalamrita, Sarvartha Chintamani, Hora Sara, both for houses (deck #67) and for the four planets so far (Sun, Moon, Mars, Mercury).
Anatomical map — Sanskrit angas + organs from the kaalapurusha consolidation.
All in-page JS, no external libs. Search index built once at boot from the same data structures everything else uses — when more decks land, the index grows automatically.
Modal lives at the document root so it overlays everything, with backdrop blur. Pure CSS aesthetic match to the cream-and-saffron design system.
Click delegation handles result clicks, pill taps, backdrop clicks, and the close button via a single listener.
v4.1.0
5 May 2026
Two ambient delights. A Daily Gem surfaces a tidbit from the knowledge base on every visit — a planet karaka, an avatar one-liner, a Sanskrit term, an Uttara Kalamrita signification, an astronomy → meaning pairing. And italic Sanskrit terms inside drawers now reveal a tiny gloss popover on hover.
Daily Gem
A small saffron-tinted card appears just below the masthead with Today's gem · {date}.
Sources baked from existing data: planet karakas, avatar one-liners, Sanskrit terms (with definitions), Uttara Kalamrita house significations, astronomy → meaning pairings (Mars: red colour → anger, blood, fire), and anatomical map snippets.
Date-seeded — the same gem stays put for that calendar day. Show another rerolls without changing the seed; Open [thing] deep-links to the relevant drawer.
Level-aware — only pulls gems from content visible at the current learner level. Switching from Foundations to Beginner reroots the gem onto a fresh date-seeded pick from the larger pool.
Total pool size is around ~120 gems pre-seeded; will grow as more deck content lands.
Glossary popovers
Sanskrit terms inside any drawer now carry a dotted-saffron underline and reveal a small ink-on-cream popover on hover or focus, with the one-line gloss pulled from the existing Sanskrit terms practice deck.
Implementation: a glossify(html) wrapper monkey-patches openDrawer, scanning text-between-tags for known terms and wrapping them in .gloss spans with data-gloss. Pure CSS popover. Skipped on terms shorter than 4 characters to avoid false positives.
Mechanics
No new file. Both features live entirely inside learning-companion.html.
Section IDs unchanged. Deep-links continue to work.
Gem refreshes on level change; clicking the gem's Open link opens the relevant drawer (planet, sign, house, avatar) via the existing click delegation.
v4.0.0
5 May 2026
Staged learning. The Quick Reference now adapts to where you are in the curriculum — Foundations, Beginner, Intermediate, Advanced, or All. Following Vikram's suggestion that the full page is overwhelming for someone just starting out, content unlocks as the learner progresses through his roadmap (Deck #16).
The level switcher
A new pill bar sits above the masthead: Show content for: Foundations · Beginner · Intermediate · Advanced · All.
Default level on first visit is Foundations. Selection persists in localStorage (astro101.level).
Sections, drawer blocks, and Practice decks above the chosen level are hidden entirely; the All level shows everything (the previous v3.9 experience).
The sticky TOC pill nav also filters — pills for hidden sections disappear so the nav reflects what's actually on the page.
What unlocks at each level
Foundations — Signs · Elements/Modes/Duality · Avatars · Kaalapurusha (sign-to-house band) · Practice (Signs & Avatars decks). Foundational vocabulary, gentle on first contact.
Intermediate adds — House Systems · House Categories · the Classical significations blocks in Houses and Planets drawers (BPHS, Phala Deepika, Uttara Kalamrita, Sarvartha Chintamani, Hora Sara, Brihat Jataka) · the Anatomical Map block inside Kaalapurusha · the Compound matrix · Practice unlocks the House Systems deck.
Advanced — reserved for what's coming as more decks land (yogas applied, dashas, predictive techniques).
All — every section, every block, every deck, all visible. The previous v3.9 experience.
How sections were assigned (per Vikram's roadmap, Deck #16)
Foundations: signs, qualities, avatars, kaalapurusha, practice
Intermediate: systems, categories; plus the in-section Anatomical Map and the Classical significations drawer blocks across Houses and Planets, and the deck-native Reflect prompts.
If the mapping needs nudging based on Vikram's feedback, every assignment is a single data-level attribute — easy to revise.
Mechanics
Section IDs unchanged. Existing deep-links (#qt-element-fire, #cat-kendra, etc.) continue to work, with the caveat that the target section may be hidden at the user's current level (the deep-link still scrolls; the user can change level to see it).
Each major surface carries a data-level attribute: sections, in-section blocks (anatomical map, classical significations), Reflect groups, Practice deck chips.
CSS rules on body.level-foundations / body.level-beginner / etc. drive visibility — pure CSS, no re-render needed when toggling.
First major version bump because the experience changes for every learner on first visit. Returning users will see the update banner; selecting All recovers the previous full reference.
v3.9.0
5 May 2026
Convergence — the body-silhouette diagram and the Anatomical Map cards now live inside the Quick Reference. The Kaalapurusha peer page slims down to The Journey only — a focused design-diary deep-dive.
What's new in the Quick Reference
§ Twelve Kaalapurusha now ends with a new Anatomical Map block, separated by a thin rule.
Body silhouette diagram — the same 4×4 South-Indian kundali grid with Vishnu's body skeleton overlay that used to live on kaalapurusha.html. Hover or tap any house cell to reveal the organs and systems classical texts associate with it. Saffron skeleton on the cream background.
Twelve anatomical cards below the diagram — each carrying the Sanskrit anga name (Shira / Mukha / Bhuja / Hridaya / Udara / Kati / Vasti / Guhya / Uru / Janu / Jangha / Pada), the sign and ruling planet, the organ list, and the classical citation.
The existing sign-to-house band stays above the body diagram. They're complementary — the band is the index, the body is the picture.
A "↗ See the design journey" link points at the slimmed kaalapurusha.html for users who want the design-diary story.
What's left on kaalapurusha.html
The page now contains only The Journey — Vikram's red-pen sketch, the iteration steps, the houses-vs-signs correction, the dedication, and the Key Learning callout.
Site-nav, masthead, palette, typography, footer all preserved.
URL stable: kaalapurusha.html still resolves; tab-bar, body silhouette, and the Anatomical Map cards are removed (they now live in the Quick Reference).
File size came down from ~756 KB to ~732 KB (the page weight is dominated by the design-iteration imagery in The Journey, which stays).
Source & mechanics
Per-house anatomical data extracted into astrology-101-knowledge-base/anatomical-map.json — same shape as houses-classical.json and planets-classical.json, ready for downstream features.
Baked into the Quick Reference as an ANATOMICAL_MAP JS const so no runtime fetch is needed.
The body overlay SVG paths and the per-cell geometric icon SVGs port over verbatim from the kaalapurusha page; only the colour tokens are remapped to the Quick Reference's cream + saffron palette.
Section IDs unchanged. Existing deep-links (#kaalapurusha) still land on the same section; cards inside the new block are tap-routed to their corresponding house drawer.
v3.8.0
5 May 2026
The Kaalapurusha page now reads as a chapter of the same project. Same fonts, same warm cream palette, same masthead pattern as the Quick Reference — but every distinctive thing about that page (the body silhouette, the three-tab structure, the design-journey story, the dedication at the centre) is preserved.
What changed on the Kaalapurusha page
Typography — Cormorant Garamond (display) + Spectral (body) replace Noto Serif + Manrope. Italic accents in saffron throughout.
Palette — cream background with paper-grain noise and soft radial accents (matches Quick Reference). Ink, ink-soft, muted, saffron tokens replace the previous warm-brown palette.
Masthead — added at the top: italic eyebrow ("all things vedic · v4.2.0"), Kālapurusha title in Cormorant, italic sub-line, and the same star-ornament divider used on the Quick Reference.
Tab-bar — restyled from uppercase tab labels to italic Cormorant pills matching the sticky TOC of the Quick Reference. Active tab is ink-on-cream; hover is saffron.
Anatomical Map cards — saffron number badges, cream surfaces, soft drop shadows, italic citations. Reads as the same family as the Quick Reference's drawer cards.
The Journey timeline — same content, retypeset in the Cormorant + Spectral system. Numbered markers in saffron.
Body silhouette + dedication — preserved exactly. The cosmic body, the kundali grid, and the line at the centre stay as the page's heart.
Mechanics
Tailwind config left intact; harmonization is layered on top as a single CSS block at the end of the existing style block, using !important overrides on body / fonts / colors. Easy to revert if needed.
No structural HTML changes inside the tab content — only the masthead block was inserted between the site-nav and the tab-bar.
Two font families now load (Noto Serif + Manrope kept as fallbacks; Cormorant Garamond + Spectral added as primary).
v3.7.0
5 May 2026
Section order reshuffled to match Vikram's pedagogical flow. Building blocks (Signs, Elements/Modes/Duality, Avatars) now sit at the top; Planets follow; the dynamics (Signature, Relationships, Aspects) come next; Houses and the framing sections close the page. No copy or data changes — purely structural.
New section order
§ 1 Signs, § 2 Elements · Modes · Duality, § 3 Avatars — the foundational vocabulary, top of page.
§ 4 Planets — the grahas arrive carrying both rulership and avatar.
§ 5 Signature, § 6 Relationships, § 7 Aspects — how the grahas interact.
§ 8 Houses, § 9 House Systems, § 10 House Categories — where they land.
§ 11 Purusharthas, § 12 Kaalapurusha, § 13 Practice — framing and study.
What stayed the same
Section IDs unchanged (signs, qualities, avatars, …) — every existing deep-link, bookmark, and cross-reference pill keeps working.
No copy was touched. No data changed. Reflect panels, Classical significations, Drishti rules — all identical.
Sticky pill TOC, scroll-tracked active state, and all jumps continue to function.
v3.6.0
5 May 2026
Planet drawers caught up with house drawers. Sun, Moon, Mars, and Mercury now carry the same kind of Classical significations block — Parashara, Phala Deepika, Uttara Kalamrita, plus Vikram's signature astronomy → meaning mappings. Reflect prompts now also surface deck-native versions in Vikram's wording, alongside the friendlier peer-distilled set.
Planet drawer · Classical significations
For each of Sun, Moon, Mars, Mercury the drawer now ends with a Classical significations block (mirrors the house drawer pattern):
Astronomy → meaning — the deck's own pairings (e.g. Mars: "Red colour → Anger, blood, fire"; Mercury: "Iron core → Nervous system").
Parashara · BPHS — the cohesive Brihat Parashara Hora Shastra signification line.
Phala Deepika — the comma-separated list (e.g. Sun has 30 items, Mars 38, Mercury 20).
Uttara Kalamrita · Kalidasa — the long encyclopaedic list (Mars: 98 items, Moon: 77).
Venus, Jupiter, Saturn, Rahu, Ketu gracefully omit the block until their decks arrive.
Reflect panel · deck-native prompts now surface
Mars (→ Narasimha), Sun (→ Rama), Moon (→ Krishna), and Mercury (→ Buddha) drawers now show two prompt sources side-by-side: Friendly framing (peer-distilled) and From the deck (Vikram's own wording).
Mercury / Buddha gap is filled — the peer set had no Buddha prompts, so the drawer was previously empty. Now it carries Vikram's four prompts straight from Deck #77 Mercury.
Each source is attributed in the panel so it's clear which is which.
Two new decks ingested
Deck #76 Mars and Deck #77 Mercury joined the knowledge base — extracted text, per-deck markdown summaries, INDEX.md / THEMES.md updated, manifest extended.
New companion file: astrology-101-knowledge-base/planets-classical.json — same shape as houses-classical.json, ready for downstream features.
Existing reflective-prompts.json extended with deck_prompts + deck_prompts_source fields on the four affected avatars (Rama, Krishna, Narasimha, Buddha). Peer-distilled prompts kept untouched.
v3.5.0
5 May 2026
House drawers got dramatically deeper. Every house now carries the classical significations from four of the source texts Vikram cites — straight from Deck #67 (The Houses ver 2).
What's new in the house drawer
A new Classical significations block at the bottom of the drawer, separated by a thin rule. Five sources, each in its own attributed sub-block:
BPHS · Parashara — the one-line English translation of the Brihat Parashara Hora Shastra Chapter 11 verse for that house.
Uttara Kalamrita · Kalidasa — the encyclopaedic comma-separated list (some houses carry 30+ items).
Hora Sara · Prithuyasas — short, often a single phrase.
Brihat Jataka · Varahamihira — the two alternate-name schemes (e.g. for 4H: kinsman · home).
The drawer eyebrow now lists alternate Sanskrit names where the deck has them: 6H reads Rog / Ari, 7H reads Kalatra / Yuvati / Jaya, 8H reads Aayur / Randhra, 9H reads Bhagya / Dharma.
Every block is attributed to its source so you can tell which tradition you're reading.
Source & mechanics
Data extracted from extracted/67. The Houses ver 2.txt by a subagent, saved as astrology-101-knowledge-base/houses-classical.json.
Baked into the page as a HOUSE_CLASSICAL JS const — no runtime fetch.
Devanagari source verses are kept out of the UI (extraction was garbled); only the clean English translation is shown.
v3.4.1
5 May 2026
Drawers gained a contemplative tail. Planet and Avatar drawers now end with a Reflect panel — peer-distilled journaling prompts pulled straight from the knowledge base. The Quick Reference is no longer just a lookup tool; it's a place to sit with a question.
What you'll see
Planet drawer — a soft saffron-tinted Reflect panel that surfaces the prompts associated with that planet's avatar (open Sun → Rama-themed prompts; open Ketu → Matsya-themed prompts; and so on).
Avatar drawer — that avatar's prompts, directly.
Mercury (→ Buddha) and Kalki are not in the peer-distilled set yet, so their drawers gracefully omit the panel rather than show empty.
Sign drawer is intentionally left as-is — element/modality/duality reflect prompts felt diluted there. The path from a sign to a prompt now flows through the planet (sign → ruler planet pill → planet drawer with Reflect).
Source & what's next
Prompts come from astrology-101-knowledge-base/reflective-prompts.json — peer-distilled by another agent and stored alongside the rest of the knowledge slice.
Baked into the page as a REFLECT JS const at build time, so no runtime fetch is needed (works on file:// too).
Stage 2 — the Mercury exercise, guided 7-minute writing rounds inside the Practice section — is parked, ready to build when this lands well.
v3.3.0
5 May 2026
Drawer pills now deep-link into the page. Tap Fire / Cardinal / Yang / Kendra / Dharma — anything informational — and the drawer closes, the page scrolls to the right card, and the card pulses saffron so the eye lands.
What jumps where
Sign drawer — Element / Modality / Duality pills jump to that card in the Elements, Modes & Duality section.
House drawer — Category pills (Kendras, Trikonas, Panaparas, Apoklimas, Upachayas, Dushtanas, Marakas) jump to that card in House Categories. The Purushartha pill jumps to the right card in Purusharthas.
Planet drawer — the Special Aspect block now has a "See full Drishti rules" jump to the Aspects section. The Avatar block has an "Open avatar" pill that opens the avatar drawer with story + keywords.
Shareable deep links
Every jump updates the URL hash (#qt-element-fire, #cat-kendra, #pur-dharma, etc.).
Visiting a deep-link URL on first load auto-scrolls and pulses the target card.
Visual signal
Jump pills carry a small ↗ arrow at the end and a saffron underline on hover, so they're distinct from the existing sign / planet / house cross-link pills (which open another drawer).
The pulse animation runs once per jump (saffron glow that fades over 1.6s).
v3.2.0
5 May 2026
Major content expansion: Sanskrit names everywhere, three new sections, and a substantially deeper Avatars area.
Terminology
Polarity → Duality across the page (heading, drawer labels, flashcard prompts).
Descendant → Partnerships for the 7th house.
"Natural sign" → "Kaalapurusha sign" in the house drawer.
Rasi Chakra (the wheel of signs) clarified vs. Rasi Chart (a person's chart laid into that wheel) in the Signs lede.
Signs § One
Sanskrit name on every sign tile — Mesha, Vrishabha, Mithuna, Karkataka, Simha, Kanya, Tula, Vrischika, Dhanus, Makara, Kumbha, Meena.
Element legend gives a one-line descriptor for each Mahāśakti (Mahakali — fierce, transformative; Mahasaraswathi — skill, organisation; etc.).
Lede now anchor-links to "Mahāśaktis" so they're easy to find.
Planets § Two
Sanskrit name (Sūrya, Chandra, Budha, Shukra, Mangala, Guru, Shani, Rāhu, Ketu) and a one-line karaka ("what the planet stands for") on every tile.
Planet drawer adds a Karaka section and a Natural Relationships block.
Houses § Three
Sanskrit name on every row (Lagna, Dhana, Sahaja, Sukha, Putra, Ari, Yuvati, Randhra, Dharma, Karma, Labha, Vyaya).
Expanded keyword sets — every house now carries 4–6 significations rather than 1.
7H name changed to "Partnerships". 12H name changed to "Moksha Sthana" with "Liberation, expenses, foreign, solitude".
House Systems § Four — new
Brand new section explaining Full Sign (default), Equal House, and Sripati Paddhathi.
Includes a small SVG of the North Indian chart layout with a mnemonic for drawing it ("diamond on top, square outside; Lagna in the top diamond; houses stay put, signs rotate").
Elements, Modes & Duality § Six
Heading subsection renamed from "Polarity" to "Duality".
Elements heading now reads "Elements & Mahāśaktis".
Signature § Seven — new
New section with the four-step recipe for computing a chart's signature (Duality × Modality × Element across the nine grahas) and a short note on why it's useful.
Aspects § Eight
Fuller Drishti copy: rationale for special aspects, orb-of-influence note.
Cardinal / Fixed / Mutable now anchor-link to the Qualities section.
Relationships § Nine — new
New section covering Natural, Temporary, and Compound planetary relationships.
Five compound grades pill row — Great Friend, Friend, Neutral, Enemy, Great Enemy.
5-step rule from the deck for determining a Natural Relationship (BPHS 3:55).
Compound matrix table from the deck (Natural × Temporary → Compound, BPHS 3:57–58).
Tappable planet tiles open the planet drawer with friends/enemies/neutrals listed.
Avatars § Ten
Each card now shows the story (2–4 sentences), themes, and keyword pills inline.
Tapping opens a dedicated Avatar drawer with story, keywords, themes, and a clickable planet pill.
Kaalapurusha § Twelve
Tighter lede explaining its role anchoring the "Kaalapurusha sign" references in the Houses section.
Practice § Thirteen
290 cards across 9 decks (was ~180 in v2).
New decks: House Systems, Signature, Relationships.
New cards: Sanskrit names for signs / planets / houses, planet karakas, avatar English meanings.
Project structure — new
The project is now a small three-page set: Quick Reference, Kaalapurusha (the full anatomical-map deep-dive), and Release Notes (you're reading it).
A site nav at the top of every page connects all three.
The Kaalapurusha section of the Quick Reference now links out to the deep-dive page.
index_3.html renamed to learning-companion.html.
Update mechanism — new
version.json sits next to the HTML pages as the single source of truth for the current version.
Each page bakes in its own PAGE_VERSION constant (currently 3.4.0) and silently fetches version.json on load (and on tab focus, throttled to 30s).
If the manifest reports a newer version, a saffron banner slides in at the top of the page: "A newer version is available — Refresh now / Later / What changed?". Tapping Refresh now reloads with a cache-busting query string.
A manual "Check for updates" link in each page's footer triggers the same check on demand and shows a quick toast either way.
Cache-control meta tags in every <head> as a belt-and-braces measure for caches that respect them.
Future-me, when shipping a new version: bump version.json; bump PAGE_VERSION in each page's update-checker; bump the visible badges (eyebrow line in learning-companion.html, footer line in all three pages); add a release-notes entry. Returning users will see the banner on their next visit.
Some Sanskrit terms in v3 use IAST diacritics (e.g. Bhāva, Rāśi, Sūrya) where the decks use plain transliteration (Bhava, Rasi, Surya). Flagged for future normalisation.
v2
prior to 5 May 2026
Added active recall — the reference became something you could study with, not just look up.
What was new in v2
Practice section — brand new. Two modes:
Flashcards — flip-to-reveal, with "Got it" / "Review again" buttons that mark cards as known.
Quiz — multiple choice, scored, with best-score saved per topic and length (5 / 10 / 20).
Six study decks — Signs, Planets, Houses, Avatars, Sanskrit, Aspects — plus an "Everything" shuffle.
Progress persisted in localStorage (best scores per topic, learned cards, total reviews).
Wrong-answer review on the quiz result screen, with a one-tap "open in reference" link back to the relevant drawer.
Reset-progress button.
Footer with credits — first time the page acknowledged Vikram and the peer group as the source of the material.
Small correction: the Signs board lede was changed from "North-Indian style chart" (which was a slip) to "South-Indian style chart" — the 4×4 layout always was South-Indian; the wording finally caught up.
Carried over from v1
All nine reference sections, all data, the drawer, the design language.
v1 · baseline
first version
The original quick-reference. Set the design language and the cross-reference drawer pattern that everything since has built on.
Reference sections
The Twelve Signs§ One — 4×4 South-Indian style board, sign tiles with element badge and ruler glyph, central Rāśi Chakra cell.
The Nine Planets§ Two — nine-tile grid (Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Rahu, Ketu) with rulership shown.
The Twelve Houses§ Three — 12-row list with house number, name, one-line keyword, and karaka planet glyph.
House Categories§ Four — seven classifications: Kendras, Trikonas, Panaparas, Apoklimas, Upachayas, Dushtanas, Marakas, each with a description and the houses it covers.
Elements, Modes & Polarity§ Five — quality cards (Fire/Earth/Air/Water, Cardinal/Fixed/Mutable, Yang/Yin) with positive and shadow expressions, and clickable sign & planet chips at the foot of each card.
Aspects — Drishti§ Six — Rāśi Drishti (sign aspects, BPHS 8:1–5) and Graha Drishti (planetary aspects, BPHS 26:2–5) including the Mars / Jupiter / Saturn special aspects.
The Avatars§ Seven — nine-card grid mapping each avatar to its planet with a few themes per card.
Purusharthas — Aims of Life§ Eight — Dharma / Artha / Kama / Moksha and the three houses each governs.
Kaalapurusha§ Nine — sign-to-house default mapping band, with each cell tappable.
Cross-reference drawer
Universal drawer triggered by tapping any sign, planet, or house anywhere on the page.
Subtle paper-grain noise on the body, soft radial accents top-left and bottom-right.
Custom favicon — the cream tile with italic "101" in saffron.
V0 · how it started
before the changelog
Before the page, before the cabinet and the avatars and the trace exercise, before any of the modules — there were paper flashcards. A small stack, on a kitchen table.
Sanchi and Sree were doing their annual year-planning ritual — the practice of sitting down at the start of the year to map intentions, projects, what to keep doing, what to set down. One thread that kept surfacing: how do we hold what Vikram's Astrology 101 class is teaching us? The material was rich; the cohort was warm; the recall was hard.
Sree started building flashcards. Just a deck. Sanskrit names on one side, English meanings on the other. A few dozen cards. Then those cards went digital — and the first build came together as Vedic Astrology Explorer, a dark-themed prototype drawn from 73 of Vikram's class decks and 50+ session notes. South Indian chart layout: signs fixed in the grid, houses rotating with the chosen ascendant. A side panel with the four element groupings — Agni, Prithvi, Vayu, Jala. Tabs across the top: Chart, Flashcards, Deep Dive, Planets. No avatars yet, no cabinet, no reflection prompts. Just chart geometry and a flashcard tab — the recall instinct that started everything.
↗ Open V0 standaloneV0 — the original Vedic Astrology Explorer. Self-contained HTML, dark theme, South Indian chart with rotating houses. Live and scrollable here; opens standalone in a new tab if you'd like more room.
From this seed grew the cream-and-saffron companion app you're reading the changelog of now. The flashcard tab became a full quiz system. One HTML page added drawers, then planets, then houses, then avatars. Then peer pages — Kaalapurusha, Mercury Spectrum, Astronomy. Then a Cabinet, with a Court Call game inside it. Then a Companion Workbook integration with Marie · Sudha · Mannat · Spandana · Vikram · Megha · Neha. Then a feedback channel that goes back to the same kitchen table over WhatsApp.
Twenty-five-some releases later, this is where it began.
What V0 was
A single self-contained HTML file. ~150 KB. Dark theme.
A South Indian chart with the 12 signs fixed in their grid positions and the 12 houses rotating based on a dropdown-selected ascendant. Tap a cell, see the sign details. The maths line at the top: House = ((Sign − ASC + 12) mod 12) + 1.
A side panel listing the four element groupings — Agni (Fire), Prithvi (Earth), Vayu (Air), Jala (Water).
Four tabs across the top: Chart, Flashcards, Deep Dive, Planets. The flashcard tab carried the recall instinct from the kitchen-table deck.
Footer: "Created from 73 class decks & 50+ sessions of Astrology 101 — A study in BPHS". Honest about its source.
No avatars. No planetary cabinet. No reflection prompts. No release notes. No version numbers.
What it became
An Astrology 101 Companion App: 16 sections, 4 peer pages, a workbook overview, a planetary cabinet with its own game, an embodied-practice block (Matsya as gold standard), reflection space per section, a tracing exercise, an accessibility toggle, deep-linkable release notes with contributor attribution, and a feedback channel that returns to the originating kitchen table.
The annual-year-planning ritual is still ongoing — Sanchi and Sree will sit down again at the start of next year. This page will probably be on the table again, slightly transformed, alongside whatever's next.