Skip to main content

Release notes

What's new

A plain-language record of what changed and when. We ship constantly; this page is how we keep ourselves honest about it.

  1. Encyclopedia link graph — browse-by chips + cross-links + enriched breadcrumbs (the 18 group landings from 2.07 now reachable from every encyclopedia surface)

    • Session 2.07 shipped 18 new group landing pages (tarot suits + arcana + nakshatra ganas + planetary lords). They worked, but the only way to find them was to know the URL. Session 2.08 wires them into the rest of the encyclopedia so readers actually discover them.
    • /tarot index: new "Browse by group" chip row with 6 chips (Major Arcana · 22 / Minor Arcana · 56 / Cups · water / Wands · fire / Swords · air / Pentacles · earth). Each section header also got a "Read about <Suit> →" tail link.
    • /nakshatras index: new "Browse by temperament" + "Browse by planetary lord" chip rows — 12 chips total (Deva / Manushya / Rakshasa + Sun / Moon / Mars / Mercury / Jupiter / Venus / Saturn / Rahu / Ketu), each with the proper Vedic glyph (☉ ☽ ♂ ☿ ♃ ♀ ♄ ☊ ☋).
    • Every tarot detail page now cross-links to its suit or arcana group landing from the "Related cards" facet header — e.g. The Fool → "Read about the Major Arcana →"; Ace of Cups → "Read about Cups →".
    • Every nakshatra detail page now cross-links to BOTH its planetary-lord landing AND its gana landing — e.g. Ashwini → "Read about Ketu as lord →" + "Read about the Deva gana →".
    • BreadcrumbList JSON-LD enriched on all 105 detail pages: tarot crumbs now include the suit or arcana group as an intermediate hub (Home › Tarot › Cups › Ace of Cups); nakshatra crumbs include the planetary lord (Home › Vedic astrology › All 27 nakshatras › Ketu › Ashwini). Deeper SERP breadcrumbs + stronger internal-link graph for Google.

    commit ed3b4f5 →

  2. Encyclopedia depth pass — 18 new group landing pages (tarot suits + arcana, nakshatra ganas + planetary lords)

    • The encyclopedia got *deeper*. The /tarot index lists all 78 cards, and the /nakshatras index lists all 27 lunar mansions — but a visitor arriving from "what is the suit of cups?" or "which nakshatras are ruled by Jupiter?" used to land on a 404. They now land on full landing pages.
    • NEW /tarot/suit/cups · wands · swords · pentacles — four suit landings, 14 cards each, with a three-paragraph essay on what the suit *means* in the tradition (water · fire · air · earth, with their gifts and their shadows).
    • NEW /tarot/arcana/major · minor — two arcana-level landings. The Majors are the 22 archetypal stages (Fool to World); the Minors are the 56 cards of daily-life weather. Each gets its own essay on when those readings carry weight.
    • NEW /nakshatras/gana/deva · manushya · rakshasa — three temperament landings, 9 mansions each. The Devas are the celestial nine, the Manushyas are the human nine, the Rakshasas are the raw nine. Includes the classical reading *and* the honest caveat that "Rakshasa" is descriptive, not moral.
    • NEW /nakshatras/lord/sun · moon · mars · mercury · jupiter · venus · saturn · rahu · ketu — nine planetary-lord landings, 3 mansions each. Read by the planet that rules them, with the Vedic context (Vimshottari Dasha periods, atmakaraka, etc).
    • Every group page has a real h1, an essay, the relevant cards/mansions only, BreadcrumbList + CollectionPage + ItemList structured data, and dedicated OG images. Sitemap updated to include all 18 new URLs.
    • Voice on every page is house voice: classical reading + honest caveat. "One lens; never a forecast." No "this means you WILL…"

    commit 5fcc63f →

  3. Full audit + production-ready polish — broken-route sweep, accessibility batch, ops aliases

    • Walked every public surface, every endpoint, every internal link — 198 sitemap URLs, all six report SKUs + samples, all 12 root tools, every auth-gated page, every admin path. Six small bugs found and fixed.
    • Typing /auth now lands on the sign-in form instead of a 404 (was missing a redirect handler).
    • The "Manage profiles" link on /compatibility used to 404 — fixed plus added a clean #profiles anchor on /account so it scrolls right to the saved profiles list.
    • /admin and /admin/blog now redirect editors into the queue dashboard instead of showing the public 404 page (auth still enforced inside).
    • NEW /healthz endpoint — kubernetes / cloud-load-balancer / UptimeRobot / Better Uptime / Pingdom default probe path. Many monitors don't let you customise; this catches them all.
    • GET /api/vitals now returns a 405 with a JSON schema of the expected POST shape instead of a 404. Self-documenting endpoint.
    • Accessibility win: added tabindex="-1" to <main id="main"> on 53 page templates — the "Skip to main content" link now actually delivers keyboard focus to the main content. WCAG 2.4.1 (Bypass Blocks), Level A.
    • Workers-runtime hygiene: replaced a process.env reference (dead code in the Workers runtime) with a proper env-binding check.

    commit 45699fe →

  4. Ultimate product pass: offline shell, service worker, web vitals, dynamic OG, motion-safe CSS

    • CosmicPath is now a proper installable PWA with offline support — install it to your home screen, and even with no signal you get a branded "the sky is here, the signal isn't" page instead of the browser dinosaur.
    • New service worker pre-caches the app shell (icons, CSS, fonts) and serves cached assets stale-while-revalidate — repeat visits feel instant.
    • Web Push handler now lives in the SW (ready for Daily Mirror push the moment VAPID keys are wired — no further code changes needed).
    • NEW /api/og/:type/:slug is now actually used — every blog post without a cover image gets a uniquely-framed social card generated on demand.
    • NEW /api/vitals — captures real Core Web Vitals (LCP, CLS, INP, FCP, TTFB) from real users in the field. ~700-byte client script, beacons on page hide, zero PII.
    • Honoured prefers-reduced-motion — vestibular-safe across every animation, transition, and the starfield. WCAG 2.3.3 AAA.
    • DNS pre-warm for Razorpay + Stripe checkouts — first checkout click no longer pays the TLS-handshake tax.
    • Fixed a stale default OG image (was pointing at a og-default.png that didn't exist).
    • Fixed five pages rendering with invalid Tailwind classes (bg-bg-parchment / bg-bg-paper — neither in the design tokens) — code blocks on error/learn/contact/encyclopedia pages now render with proper warm parchment background.

    commit 732241f →

  5. Encyclopedia rich-results, chat share, print stylesheet, share buttons

    • Every tarot card (78) and every nakshatra (27) page now carries a full BreadcrumbList in its structured data — Google can render breadcrumb SERPs across the encyclopedia.
    • The two encyclopedia indexes (/tarot, /nakshatras) now also emit an ItemList enumerating all entries — list-rich-result eligible.
    • PWA share target wired: text shared into CosmicPath from another app lands in the chat input prefilled.
    • Every blog post gets a share row (X, Facebook, LinkedIn, copy-link) — server-rendered, works without JS.
    • New print stylesheet across the whole site: prints birth charts, snapshots, tarot draws, blog posts as clean B&W pages with the URL footer baked in.
    • NEW /changelog — this page.

    commit 8493880 →

  6. Product polish: broken-link fixes, clean tag URLs, security.txt, build identity

    • Homepage WebPage schema now points at a real OG image (was a 404 link).
    • /manifest.json aliases to the actual PWA manifest — Apple Safari + some Android browsers were 404ing on it.
    • Blog tags now have clean URLs: /blog/tags/love etc. Old ?tag= URLs 301-redirect.
    • Reading time on every blog post: a "~3 min read" badge + machine-readable timeRequired in the schema.
    • PWA manifest got 2 more shortcuts (Snapshot, Birth chart), share_target, and proper screenshots for the Android install prompt.
    • NEW /.well-known/security.txt (RFC 9116) and /humans.txt.
    • NEW /api/health/version returns the deployed git SHA + build time — ops can verify deploy freshness without scraping wrangler.
    • robots.txt tightened: /setup, /profile, /auth/, /gifts/redeem/ no longer indexable; GPTBot + CCBot crawl-delayed.
    • Sitemap: 197 URLs (was 178), now includes /sky, /accuracy, /sealed-letter, plus every active blog tag.

    commit 6c7ce98 →

  7. Structured data on every public page + RSS feed + voice-assistant Speakable

    • 14 more pages got structured data: homepage WebPage, /horoscope + /blog indexes, the 3 calculator HowTos (/compatibility, /snapshot, /tarot/draw), 4 legal pages, 4 tradition pages, /chat.
    • NEW /feed.xml — public RSS feed of the blog, autodiscoverable from every page.
    • Every blog post now declares Speakable spec so Google Assistant + voice readers can read the title + summary aloud.
    • Blog Article schema upgraded to full Google rich-result spec (publisher logo, absolute URLs, inLanguage, keywords).

    commit 929942f9 →

  8. Structured-data overlay phase 2 — Event / HowTo / Product+Offer + 12 more BreadcrumbList

    • 12 more pages got BreadcrumbList: live-sky siblings, pricing, daily prompt, the 4 authed practice pages.
    • /festivals got 22 Event blocks — one per festival, with ISO startDate and EventScheduled status.
    • /birth-chart got HowTo schema: 3 supplies (date / time / location) + 4 steps.
    • All 6 report SKUs got Product + Offer schema with geo-detected currency and stock-status.

    commit df5646d2 →

  9. Structured-data overlay foundation — BreadcrumbList + ItemList

    • NEW shared structured-data builders.
    • BreadcrumbList wired on 15 high-PageRank pages across 3 clusters (tools, trust, live-sky).
    • ItemList on the 2 cluster hubs (/tools, /reports).

    commit 070e1017 →

Older entries live in CHANGELOG.md on GitHub.