Changelog

Release Notes

Every change to the askTIAN API is documented here. Breaking changes are clearly marked.

GET /api/trpc/catalogue.changelogSubscribe via RSS
v3.40.6
2026-04-10LATEST
Type
Endpoint
Description
FIXED
Auth — Bearer token pattern (eliminates sign-in loop)

Rewrote auth flow to use Privy JWT directly as Authorization: Bearer <token> on every tRPC request, matching the pattern used by wallet.asktian.com and chat.asktian.com. The old flow (getAccessToken → POST /api/auth/privy → session cookie) depended on the Privy embedded wallet iframe loading successfully. The iframe was blocked by X-Frame-Options: SAMEORIGIN from privy.asktian.com (Cloudflare proxy), causing getAccessToken() to hang indefinitely and the dashboard to show a permanent 'Completing sign-in…' spinner. New flow: (1) tRPC client calls getAccessToken() lazily in headers() on every request; (2) server/context.ts verifies non-API-key Bearer tokens via PrivyClient.verifyAuthToken() and upserts the user on first login; (3) useAuth.ts simplified — isAuthenticated = privyAuthenticated directly, no session sync needed; (4) SyncErrorBanner and retrySync removed from Dashboard, Playground, and ApiDocs.

v3.40.5
2026-04-09
Type
Endpoint
Description
FIXED
Sign-in loop — switched to PrivyClient.verifyAuthToken()

Replaced manual SPKI/jwtVerify approach in privyAuth.ts with the official @privy-io/server-auth PrivyClient.verifyAuthToken(). The manual approach required knowing the exact issuer, audience, and algorithm — any mismatch caused a 401 loop. PrivyClient handles all of this automatically including JWKS key rotation. PRIVY_APP_SECRET added to ENV. Vitest added: server/privy.auth.test.ts (4 tests).

FIXED
CSP — explicit base-uri, form-action, script-src-attr

Added base-uri: 'self', form-action: 'self', and script-src-attr: 'none' explicitly to the helmet CSP config instead of relying on helmet defaults. Prevents base tag injection, form hijacking, and inline event handler injection.

v3.40.4
2026-04-09
Type
Endpoint
Description
FIXED
Auth — Privy login modal console warning

Capped loginMethodsAndOrder.primary to 4 methods (Privy enforces a maximum of 4). Telegram moved from primary to overflow. Primary is now: email, google, apple, twitter. Overflow: telegram, coinbase_wallet, okx_wallet, metamask, wallet_connect.

v3.40.3
2026-04-09
Type
Endpoint
Description
CHANGED
Dependencies

Upgraded @privy-io/react-auth from 3.18.0 to 3.20.0. Changes: 3.19.1 — fixed invalid email submission in auth modal, fixed MoonPay back button bug; 3.20.0 — added defaultSolanaRpcsPlugin for Solana RPC support, added emailDomain config in PrivyProvider, updated @privy-io/js-sdk-core to 0.60.8.

v3.40.2
2026-04-09
Type
Endpoint
Description
FIXED
Dashboard — Completing sign-in hang (new sign-ins)

getAccessToken() in useAuth was gated on privyReady=true. When the Privy embedded wallet iframe fails to load (custom_api_url proxy not serving iframe HTML), privyReady stays false, so getAccessToken() was never called and syncSession() never ran. Fix: (1) removed privyReady gate from the sync useEffect — sync now starts as soon as privyAuthenticated=true; (2) added 10s timeout to getAccessToken() via Promise.race so it fails fast instead of hanging; (3) moved syncError display outside the loading block so it renders even after loading=false; (4) removed (!isAuthenticated && privyAuthenticated) from the spinner condition so users are not stuck in an infinite spinner if sync has already failed.

v3.40.1
2026-04-09
Type
Endpoint
Description
FIXED
Dashboard — Completing sign-in hang

useAuth loading state no longer blocks on privyReady when a valid session cookie already exists. Previously, if the Privy embedded wallet iframe failed to load (e.g. custom_api_url proxy issue), privyReady stayed false forever, keeping loading=true and the dashboard stuck on 'Completing sign-in…'. Now loading only waits for privyReady when there is no session yet (i.e. a fresh first-time login). Users with existing session cookies see the dashboard immediately regardless of Privy iframe state.

v3.40.0
2026-04-09
Type
Endpoint
Description
FIXED
api_usage table — creditsUsed column

Added creditsUsed INT column to api_usage table (migration applied). All non-predict endpoints (tian.global, tian.eastern, tian.western, tian.eastwest, tian.african, tian.islamic, tian.indian, compatibility.*, almanac.daily, divination.draw, qimen.calculate, liuyao.calculate, meihua.calculate, nameAnalysis.analyze, auspicious.analyzeNumber, ifa.draw, vodun.calculate, hakata.calculate, rammal.calculate, khatt.calculate, jyotish.calculate, anka.calculate, horoscope.calculate, mahabote.calculate, twelvepalaces.calculate) now record their TIAN Points cost in api_usage.creditsUsed on every call. predict.* endpoints also pass their cost (100/150/batchTotal) to trackUsage().

FIXED
GET /api/v1/stats/predict — totalPointsSpent

totalPointsSpent and pointsSpentLast30Days now include creditsUsed from api_usage in addition to predict_binary_usage, predict_multi_usage, and predict_batch_results. The daily volume time series also incorporates api_usage daily points. Two new unified alias fields added: totalPointsConsumed and pointsConsumedLast30Days.

FIXED
mahabote.calculate + twelvepalaces.calculate

Bug fix: these two endpoints were passing statusCode=5 (the credit cost) as the HTTP status code argument to trackUsage(). Corrected to statusCode=200 with creditsUsed=5 in the correct position.

v3.39.0
2026-04-09
Type
Endpoint
Description
FIXED
Homepage hero paragraph

Replaced verbose copy with concise single-line: '29 divination systems across 5 traditions — plus 7 TIAN Blended synthesis endpoints. Structured JSON. Typed responses.'

FIXED
Homepage status pill

Removed 'Base network' from the status pill and from the code block footer status bar.

UPDATED
Homepage hero code block

Code block auto-rotation now pauses when the user hovers over the block, resuming on mouse leave. almanac.daily response example filled with realistic fields: date, dayRating, luckyColor, luckyNumber, auspiciousHours, avoidHours.

UPDATED
GET /systems

Hash-based scroll-to-tradition: navigating to /systems#Eastern (or any tradition) now smoothly scrolls to and briefly highlights the matching section on mount.

v3.38.0
2026-04-09
Type
Endpoint
Description
UPDATED
Homepage hero code block

Code block now rotates through 4 examples (predict.binaryBatch, tian.global, compatibility.birthday, almanac.daily) every 6 seconds with manual tab switcher. Each example shows correct endpoint, body, response, and latency. Amber dot indicators show current position.

UPDATED
Homepage tradition pills

Tradition pills (Eastern/Western/Indian/African/Islamic) now link to /systems#Tradition anchors for direct discovery.

UPDATED
GET /systems

Added id anchors (Eastern, Western, African, Indian, Islamic) to each tradition section for direct deep-linking from the homepage tradition pills.

v3.37.0
2026-04-09
Type
Endpoint
Description
FIXED
Homepage banner badge

Banner version badge is now dynamic — reads CHANGELOG[0].version from trpc.catalogue.changelog instead of the hardcoded 'v3.30.0' string.

FIXED
tian.global catalogue entry

Catalogue description corrected from '29 divination systems' to '28 divination systems (Life Blueprint excluded)'. The tian.global fan-out has always excluded boneWeight; the description now reflects this accurately.

ADDED
Homepage hero

Tradition tag row added between the hero paragraph and CTA buttons: five colour-coded pill tags (Eastern/amber, Western/blue, Indian/orange, African/green, Islamic/teal) give the hero section visual breathing room and immediately communicate the tradition breadth.

v3.36.0
2026-04-09
Type
Endpoint
Description
FIXED
tian.global — all pages

Corrected tian.global credits from 140 to 145 TIAN Points across ApiDocs, Playground, EpistemicAgentGuide (3 occurrences), and Home.tsx TIAN Blended section. System count corrected from 26/35 to 28 across all occurrences.

FIXED
Homepage hero stats

tian.global hero card now shows 28 systems · 145 $TIAN (was 26 systems · 130 $TIAN). Tags updated from all-26 to all-28.

FIXED
Status page

Global TIAN note corrected from '37 traditions · 140 $TIAN' to '28 systems · 145 $TIAN'.

v3.35.0
2026-04-09
Type
Endpoint
Description
FIXED
Homepage hero paragraph

Rewrote hero copy from the bloated 37-tradition/46-endpoint version to the accurate concise form: '29 divination systems across 5 traditions — Eastern, Western, Indian, African, and Islamic — plus 7 TIAN Blended synthesis endpoints and 5 Predict Oracle endpoints.'

FIXED
Homepage hero stats

Endpoint stat corrected from 46 to 49. Third stat replaced from 'TIAN Points / for Predict Oracle' to '5 traditions / 29 divination systems'.

FIXED
Homepage SeoHead

SEO description and ogImageAlt updated to use 49 endpoints, 29 systems, 5 traditions. LD+JSON description also corrected.

v3.34.0
2026-04-09
Type
Endpoint
Description
UPDATED
Homepage banner

Banner 'See what's new' anchor is now dynamic — reads CHANGELOG[0].version from trpc.catalogue.changelog (staleTime 10 min, fallback v3.33.0). Will auto-update with every new version without code changes.

UPDATED
GET /guides/:slug

Individual guide pages now render a per-guide SeoHead using guide title, description, and tags from trpc.guides.list. Each guide has its own canonical URL and OG card.

UPDATED
GET /docs

Docs sidebar now shows 'Developer Guides' (amber, links to /guides) and 'Agent Guide' (zinc, links to /docs/epistemic-agent) below the nav items, giving Docs-first developers a direct path to integration guides.

v3.33.0
2026-04-09
Type
Endpoint
Description
UPDATED
Homepage banner

Banner anchor fixed from #v3.31.0 to #v3.32.0 so 'See what's new' lands on the correct changelog entry.

UPDATED
SiteNav

Guides badge count now driven from trpc.guides.list.useQuery() (staleTime 5 min, fallback 3). Auto-updates when new guides are added without touching SiteNav.tsx.

UPDATED
GET /guides

Added SeoHead with title 'Integration Guides — askTIAN API', description, and keyword set for Telegram bot and app integration discoverability.

v3.32.0
2026-04-09
Type
Endpoint
Description
UPDATED
Homepage banner

Banner anchor fixed from #v3.30.0 to #v3.31.0 so 'See what's new' lands on the correct changelog entry.

UPDATED
SiteNav

Guides nav link now shows a count badge (3) in both desktop and mobile nav, matching the Systems badge pattern.

UPDATED
EpistemicAgentGuide

Added 'More integration guides' callout above the Launch Checklist section, linking to /guides with a brief description of the 3 available guides.

v3.31.0
2026-04-09
Type
Endpoint
Description
UPDATED
Homepage banner

Banner bumped to v3.30.0 with copy referencing the new /guides section, EpistemicAgentGuide Sections 10.5–10.8, and SDK v2.0.0. Banner key updated so returning users see the new message.

UPDATED
SiteFooter

Added Guides link to footer nav pointing to /guides index page.

UPDATED
GET /guides

Added tag-filter row above guide cards. Clicking a tag filters the list; clicking the active tag or 'All' resets. Tags on guide cards are also clickable to filter inline.

v3.30.0
2026-04-09
Type
Endpoint
Description
ADDED
GET /guides

New /guides index page listing all 3 developer integration guides with title, description, audience, version, date, and tags. Accessible from the top nav Guides link.

ADDED
GET /guides/:slug

Individual guide pages rendering Markdown content via react-markdown + remark-gfm. Supports slugs: app-integration, telegram-bot, telegram-bot-api.

ADDED
tRPC guides.list

Public tRPC procedure returning metadata for all 3 developer guides.

ADDED
tRPC guides.get

Public tRPC procedure returning full Markdown content for a guide by slug.

UPDATED
SiteNav Guides link

Guides nav link now points to /guides index page instead of /docs/epistemic-agent directly.

FIXED
Homepage banner anchor

Banner 'See what's new' anchor updated from #v3.25.0 to #v3.29.0.

v3.29.0
2026-04-09
Type
Endpoint
Description
ADDED
docs/telegram_bot_chatapi_wishlist_response.md

Engineering response to Telegram bot Chat API wishlist: resolves session token TTL discrepancy (privyToken=24h vs sessionToken=5min single-use), accepts conversations.list pagination and rate limit headers for v3.30.0, partially accepts conversation metadata (lastMessageAt + messageCount) for v3.31.0, declines bulk deduct (security model), resolves Telegram webhook retry policy (third-party docs + idempotency pattern), defers analytics endpoint.

v3.28.0
2026-04-09
Type
Endpoint
Description
ADDED
EpistemicAgentGuide — Launch Checklist Sprint 4 (Telegram Bot)

New Sprint 4 block added to the Launch Checklist with 11 items covering bot registration, wallet callback URL registration, DB schema, /start, wallet auth flow, message handler, /system two-level picker, /balance and /topup, /history and /new, webhook migration, and message splitting.

ADDED
EpistemicAgentGuide — Wallet Callback Registration note

Amber note added below the checklist explaining how to register the /wallet-callback URL and obtain TIAN_WALLET_API_KEY: email [email protected] with bot username and callback URL; mailto link pre-fills subject and body for one-click submission.

v3.27.0
2026-04-09
Type
Endpoint
Description
UPDATED
Homepage banner text

Banner copy updated from 'Sections 10.5 & 10.6' to 'Sections 10.5–10.8' and version badge bumped to v3.26.0 to reflect all new guide sections.

UPDATED
EpistemicAgentGuide — Launch Checklist Sprint 2

Sprint 2 checklist updated: replaced apiFanout.ts and SSEStreamer items with native SSE stream reference (Section 10.7), added tradition-to-animation mapping item, updated quota enforcement to reference creditsUsed from done event.

UPDATED
EpistemicAgentGuide — Launch Checklist Sprint 3

Sprint 3 checklist updated: Daily Anchor items now reference two-call composition (almanac.daily + horoscope.calculate, Section 10.8) with 90-day and 24-hour cache TTLs, and DailyAnchorData interface migration note.

ADDED
docs/telegram_bot_integration_response.md

Engineering response to Telegram bot integration guide v1.0: 12 sections covering credentials, architecture, DB schema, session token lifecycle, system picker UX, TIAN Blend typing indicator pattern, complete error code reference, webhook setup, message splitting, /history implementation, and sprint plan.

v3.26.0
2026-04-09
Type
Endpoint
Description
FIXED
Homepage banner anchor

Banner 'See what's new' link corrected from /changelog#v3.24.0 to /changelog#v3.25.0 so it lands on the latest changelog entry.

ADDED
EpistemicAgentGuide — Section 10.8 Daily Anchor Pattern

New Section 10.8 documents the Daily Anchor card pattern: interim two-call composition (almanac.daily + horoscope.calculate) with field reference table and cache TTLs, future daily.anchor single-call preview with new luckyHours/dominantTheme fields, and a migration path table mapping interim fields to future API fields.

v3.25.0
2026-04-09
Type
Endpoint
Description
UPDATED
Homepage banner — bumped to v3.24.0

Homepage What's New banner updated to v3.24.0 highlighting EpistemicAgentGuide Sections 10.5 & 10.6 and SDK v2.0.0 typed response interfaces.

UPDATED
Homepage SDK badge — bumped to v2.0.0

Homepage npm install badge updated from [email protected] to [email protected] with updated npmjs.com link.

ADDED
EpistemicAgentGuide — Section 10.7 SSE Contract Alignment

New Section 10.7 documents the complete v3.24.0 SSE event contract: new synthesis_start event, tradition/iconUrl/systemSlug fields on system events, complete event sequence table, TypeScript consumer example, tradition-to-animation mapping, and app-side event type alignment table.

ADDED
docs/app_asktian_integration_guide.md — app.asktian.com integration guide

Comprehensive 13-section developer integration guide for app.asktian.com covering authentication, core bug fixes, tian.global pattern profile, SSE v3.24.0 contract, decision guidance fan-out, daily anchor, compatibility features, SDK v2.0.0 reference, error handling, caching strategy, and roadmap.

v3.24.0
2026-04-08
Type
Endpoint
Description
ADDED
EpistemicAgentGuide — Section 10.5 Western Sign Profile in Agent Prompts

New Section 10.5 covers horoscope.calculate signProfile in agent prompts: source comparison table (tian.global vs horoscope.calculate vs almanac.zodiacSign), wellness prompt builder, and Tarot spread context builder. Includes nav entry.

ADDED
EpistemicAgentGuide — Section 10.6 Zodiac Compatibility Dimensions

New Section 10.6 covers compatibility.zodiac dimensions in agent prompts: dimension overview table, quick compatibility card builder, LLM prompt injection pattern, and upgrade path to compatibility.birthday for Western 4D. Includes nav entry.

PUBLISHED
SDK v2.0.0 — ZodiacCompatResponse, BirthdayCompatResponse, AlmanacZodiacResponse, HoroscopeResponse

SDK v2.0.0 published to npm. Adds four response-shape interfaces for all 4 enriched endpoints so consumers can type their database storage and React props. Fully backwards-compatible with v1.x. Quick Reference table updated.

v3.23.0
2026-04-08
Type
Endpoint
Description
UPDATED
Homepage banner — bumped to v3.22.0

Homepage What's New banner updated to v3.22.0 highlighting that all 4 enriched endpoints (compatibility.birthday, almanac.zodiacSign, horoscope.calculate, compatibility.zodiac) now have full Response Fields tables in ApiDocs.

ADDED
ApiDocs — horoscope.calculate responseFields table

horoscope.calculate endpoint now has a dedicated Response Fields table listing 16 fields: sunSign, moonSign, ascendant, elementProfile, placements, synthesis, signProfile.medical, signProfile.bodyParts, signProfile.herbalAllies, signProfile.symbolism, signProfile.houseRulership, signProfile.mantra, signProfile.majorArcana, signProfile.minorArcana, signProfile.famousPeople, and creditsUsed.

ADDED
ApiDocs — compatibility.zodiac responseFields table

compatibility.zodiac endpoint now has a dedicated Response Fields table listing 8 fields: score, level, description, and dimensions.love/career/wealth/health/marriage (each with label + text from YouApp ZodiacCompatibility dataset). All 4 enriched endpoints now have parity in ApiDocs documentation.

v3.22.0
2026-04-08
Type
Endpoint
Description
FIXED
Playground — tian.global Copy as cURL uses SSE format

getCurlCommand() now generates curl -N with Accept: text/event-stream for tian.global, matching the SSE streaming behaviour. Previously it generated a standard POST curl which would not receive the streamed response correctly.

ADDED
ApiDocs — compatibility.birthday responseFields table

compatibility.birthday endpoint now has a dedicated Response Fields table listing all 15 fields: score, romanceScore, friendshipScore, marriageScore, dimensions.* (5 Chinese zodiac 4D fields), and horoscopeDimensions.* (5 Western 4D fields).

ADDED
ApiDocs — almanac.zodiacSign responseFields table

almanac.zodiacSign endpoint now has a dedicated Response Fields table listing all 20 fields: western.*, chinese.*, chineseProfile.* (7 fields), and westernProfile.* (9 fields including mantra, majorArcana, minorArcana, famousPeople).

v3.21.0
2026-04-08
Type
Endpoint
Description
UPDATED
Homepage banner — bumped to v3.20.0

Homepage What's New banner updated to v3.20.0 with a note about the new compatProfile collapsible panel in the Playground.

ADDED
Playground — Copy as cURL button

All endpoints now have a 'Copy as cURL' button (slate-outlined, Terminal icon) below the Load Sample button. getCurlCommand() maps the current form state to a properly-formatted curl command with Authorization: Bearer at_live_YOUR_API_KEY_HERE header.

ADDED
ApiDocs — tian.global responseFields table

tian.global endpoint now has a dedicated Response Fields table listing all 10 top-level fields including signProfile.westernSign, signProfile.mantra, signProfile.majorArcana, compatProfile.chineseAnimal, compatProfile.partnerAnimal, compatProfile.loveDimensionLabel, and creditsUsed.

v3.20.0
2026-04-08
Type
Endpoint
Description
ADDED
Playground — compatProfile collapsible panel

tian.global Playground sample response now renders a dedicated 'Chinese Zodiac Compat' collapsible panel showing chineseAnimal, partnerAnimal, and loveDimensionLabel (color-coded green/amber/red). Previously, compatProfile was only visible in the raw JSON dump.

UPDATED
EpistemicAgentGuide — Section 10.4 badge updated

Section 10.4 (tian.global Streaming Pattern) badge updated from 'v1.9.0' to 'v3.16.0 · SDK v1.9.0' to show both the API release version and the SDK version, consistent with Section 10.1–10.3 badge style.

v3.19.0
2026-04-08
Type
Endpoint
Description
FIXED
Changelog — scroll-mt on section element

scroll-mt-20 moved from inner div to the <section> element (the hash target) so deep-links like /changelog#v3.13.0 land correctly below the sticky nav.

UPDATED
EpistemicAgentGuide — Section 10.3 badge added

Section 10.3 (Chinese Zodiac Profile — 60-Element Enrichment) now has a v3.9.0 amber badge matching the visual treatment of Sections 10.1 and 10.2.

UPDATED
RSS feed — v3.17.0 entry verified

Changelog RSS feed at /api/changelog.rss verified to include v3.17.0 entry (3 changes). Feed renders correctly with correct <title> and <description> per release.

v3.18.0
2026-04-08
Type
Endpoint
Description
UPDATED
Changelog — v3.17.0 entry added

v3.17.0 entry added to the CHANGELOG data array (banner bump, SDK v1.9.1 Streaming README, EpistemicAgentGuide nav fix). The 'See what's new →' deep-link from the banner now lands on a real section.

UPDATED
SDK README — Quick Start install command clean

SDK README Quick Start install command confirmed clean: npm install asktian-sdk with no stale version pin. No @1.6.0 or earlier version reference in the install block.

UPDATED
EpistemicAgentGuide — Section 10 badge v3.9.0–v3.16.0

Section 10 ('Rich Profiles & 4D Compatibility') badge updated from 'v3.9.0 — YouApp dataset' to 'v3.9.0–v3.16.0 — YouApp dataset' to signal that this section covers multiple releases.

v3.17.0
2026-04-08
Type
Endpoint
Description
UPDATED
Homepage banner: v3.12.0 → v3.16.0

What's New banner updated to v3.16.0 with messaging about TianGlobalStreamChunk streaming type in SDK v1.9.0 — fully typed for-await loop with signProfile and compatProfile on the done event. BANNER_KEY bumped so returning visitors see the updated announcement.

UPDATED
SDK v1.9.1 (npm) — Streaming README section

asktian-sdk v1.9.1 published to npm. Adds a dedicated 'Streaming — tian.global' section to the README with a full for-await loop example using TianGlobalStreamChunk, a type cast note, and v1.9.0/v1.9.1 changelog entries. Quick Reference table updated with TianGlobalDoneEvent and TianGlobalStreamChunk entries. Homepage badge updated to v1.9.1.

UPDATED
EpistemicAgentGuide nav order fix

EpistemicAgentGuide sidebar nav reordered so '10. Rich Profiles & 4D Compat' and '10.4 Streaming Pattern' appear before 'Launch Checklist', matching the DOM render order for correct scroll-spy behaviour.

v3.13.0
2026-04-08
Type
Endpoint
Description
UPDATED
Homepage banner: v3.10.0 → v3.12.0 → v3.13.0

What's New banner updated to v3.13.0 with messaging about tian.global signProfile/compatProfile fields and SDK v1.8.0. BANNER_KEY bumped so returning visitors see the updated announcement.

UPDATED
SDK v1.8.0 (npm)

asktian-sdk v1.8.0 published to npm. Adds 2 new exported TypeScript interfaces: TianGlobalSignProfile (westernSign, mantra, majorArcana) and TianGlobalCompatProfile (chineseAnimal, partnerAnimal, loveDimensionLabel). These type the new signProfile and compatProfile fields returned directly by tian.global.

UPDATED
ApiDocs — tian.global response example

tian.global response example in ApiDocs now shows signProfile and compatProfile at the top level alongside eastern/western/african/islamic blocks, making the new fields immediately discoverable in the docs.

UPDATED
Playground — Load Sample button redesign

The 'View Sample Response' button across all Playground endpoints has been restyled to an amber-outlined 'Load Sample Response' button with FlaskConical icon, visually distinct from live-run actions. A 'Pre-built fixture — no TIAN Points consumed' note appears below each button. Blended TIAN endpoints (with Run Live SSE) are consistent.

UPDATED
tian.global — signProfile + compatProfile in return

tian.global return object now includes signProfile {westernSign, mantra, majorArcana} and compatProfile {chineseAnimal, partnerAnimal, loveDimensionLabel} at the top level. These are derived from almanac.zodiacSign and compatibility.zodiac enrichment data, allowing API consumers to access rich profile anchors in a single tian.global call without a separate almanac.zodiacSign call.

v3.10.0
2026-04-08
Type
Endpoint
Description
UPDATED
compatibility.birthday — dimensions (Chinese 4D parity)

compatibility.birthday now returns a dimensions object (same structure as compatibility.zodiac) with marriage, love, career, wealth, and health sub-fields sourced from the YouApp ZodiacCompatibility dataset, keyed to the two persons' Chinese zodiac animals derived from their birth dates. This gives compatibility.birthday full parity with compatibility.zodiac for Chinese 4D analysis. The endpoint now returns both dimensions (Chinese) and horoscopeDimensions (Western) simultaneously.

UPDATED
Playground fixtures — 4 enriched endpoints

Playground sample responses for almanac.zodiacSign, compatibility.zodiac, compatibility.birthday, and horoscope.calculate updated to include the new enrichment fields: chineseProfile, westernProfile, dimensions, horoscopeDimensions, and signProfile. Developers testing in the Playground now see realistic full responses.

ADDED
EpistemicAgentGuide — Section 10: Rich Profiles & 4D Compatibility

New Section 10 added to the Epistemic Agent Guide covering three agent use-cases: (10.1) Sign Profile — how to use mantra, majorArcana, minorArcana, medical, herbalAllies, and symbolism fields to build daily intention cards and LLM system prompts; (10.2) 4-Dimension Compatibility — how to use dimensions and horoscopeDimensions for relationship report generation; (10.3) Chinese Zodiac Profile — how to use chineseProfile for identity cards and onboarding flows. Includes code examples for all three patterns.

v3.9.0
2026-04-07
Type
Endpoint
Description
UPDATED
almanac.zodiacSign — chineseProfile + westernProfile

almanac.zodiacSign now returns two new enrichment objects. chineseProfile (ChineseZodiacProfile) contains the full 60-element Chinese zodiac profile (12 animals × 5 elements): general overview, personality, strengths, weakness, career, love, and compatibility prose sourced from YouApp dataset. westernProfile (HoroscopeSignProfile) contains the full Western horoscope sign profile: description, personality, strengths, weaknesses, career, love, medical astrology, body parts, herbal allies, symbolism, element, season, house rulership, mantra, major arcana (Tarot), minor arcana, and famous people. Both fields are null if no matching profile is found.

UPDATED
compatibility.zodiac — dimensions (4D)

compatibility.zodiac now returns a dimensions object with 5 sub-fields: marriage, love, career, wealth, health. Each sub-field has a label (e.g. 'Positive', 'Neutral', 'Negative') and a text description sourced from YouApp ZodiacCompatibility dataset. Covers all 144 Chinese zodiac animal pairs. Existing fields (score, auspiciousness, description, chineseCompatibility) are unchanged.

UPDATED
compatibility.birthday — horoscopeDimensions (4D)

compatibility.birthday now returns a horoscopeDimensions object with intro and 4 sub-fields: love, career, wealth, health. Each sub-field has a label and text sourced from YouApp HoroscopeCompatibility dataset. Covers all 144 Western zodiac sign pairs. Existing fields (romanceScore, friendshipScore, marriageScore, astroDescription) are unchanged.

UPDATED
horoscope.calculate — signProfile

horoscope.calculate now returns a signProfile object (HoroscopeSignProfile) keyed to the computed sun sign. Contains medical astrology, body parts, herbal allies, symbolism, house rulership, mantra, major arcana (Tarot card), minor arcana, and famous people for the sun sign. Field is null if no profile is found.

UPDATED
SDK v1.7.0 (npm)

asktian-sdk v1.7.0 published to npm. Adds 5 new exported TypeScript interfaces: ChineseZodiacProfile, HoroscopeSignProfile, CompatDimension, ZodiacDimensions, HoroscopeDimensions. These type the new enrichment fields on almanac.zodiacSign, compatibility.zodiac, compatibility.birthday, and horoscope.calculate.

v3.8.0
2026-04-05
Type
Endpoint
Description
ADDED
twelvepalaces.calculate

Twelve Palaces (十二宮) — Classical Chinese lunar birth fortune system attributed to Guiguzi. Accepts zodiac year, lunar month, lunar day, and birth hour. Derives palace (1–14) and degree via the traditional scoring table. Returns classical poem (詩曰), marriage fortune (婚姻), wealth fortune (財運), fortune title, and LLM synthesis. FORTUNE_DB covers all 29 palace-degree combinations with authentic classical text sourced from the original Guiguzi transmission. Costs 5 TIAN Points per call.

UPDATED
tian.global — 28 → 29 systems, 140 → 145 TIAN Points

Twelve Palaces added to the tian.global fan-out. The procedure now runs 29 systems in parallel (was 28). Credit cost updated from 140 to 145 TIAN Points (29 × 5). LLM synthesis prompt updated to include Twelve Palaces palace name alongside Mahabote, Jyotish, and other Eastern traditions.

UPDATED
Homepage banner: v3.7.0 → v3.8.0

What's New banner updated to v3.8.0 and now mentions both Mahabote (မဟာဘုတ်) and 十二宮 Twelve Palaces as new Eastern systems. BANNER_KEY bumped so returning visitors see the updated announcement.

UPDATED
ApiDocs: isPM Wednesday PM callout box

The isPM parameter row in the mahabote.calculate parameter table now has a small amber callout box explaining that the example date 1990-03-14 was a real Wednesday, making the isPM: true example concrete rather than arbitrary.

UPDATED
ApiDocs: tian.eastern + tian.global mention Mahabote

The tian.eastern and tian.global endpoint descriptions in ApiDocs now explicitly mention mahabote.calculate as one of the 28/29 systems they fan out to, helping developers understand the coverage.

FIXED
SystemPage: Mahabote planet icon CDN hashes

All 8 shiny planet icon URLs on the /systems/mahabote hero section were using placeholder CDN hashes. Fixed to use the correct production hashes. The hover shiny effect on all 8 planet icons now works correctly.

UPDATED
SDK v1.6.0 (npm)

TwelvePalacesNamespace added to asktian-sdk. Exposes tian.twelvepalaces.calculate(input) with full TypeScript types for TwelvePalacesInput (zodiac, lunarMonth, lunarDay, birthHour, language, question). Published to npm as v1.6.0.

v3.7.0
2026-04-02
Type
Endpoint
Description
ADDED
mahabote.calculate

Mahabote (မဟာဘုတ်) — Burmese planetary house system. Accepts birthDate (YYYY-MM-DD), optional isPM flag for Wednesday PM births (Rahu), and optional queryDate for year-chart analysis. Returns natal house chart (7 houses), birth planet, current major and minor periods from the 108-year cycle, Grand Trine and Minor Trine quality, year chart, planetary relationships, fortune score, and LLM synthesis. Costs 5 TIAN Points per call.

UPDATED
tian.global — 27 → 28 systems, 135 → 140 TIAN Points

Mahabote added to the tian.global fan-out. The procedure now runs 28 systems in parallel (was 27). Credit cost updated from 135 to 140 TIAN Points (28 × 5). LLM synthesis prompt updated to reference Burmese tradition alongside Chinese, Vedic, Western, African, and Islamic.

UPDATED
Sitewide count: 47 → 48 endpoints, 35 → 36 traditions

SiteNav Systems badge, homepage hero, Dashboard welcome card, Status page endpoint list, ApiDocs hero, SystemsIndex header, and all JSON-LD structured data updated from 47 to 48 endpoints and from 35 to 36 traditions to reflect the addition of Mahabote.

v3.6.0
2026-03-31
Type
Endpoint
Description
ADDED
GET /api/v1/systems — REST catalogue endpoint

New versioned REST endpoint at /api/v1/systems returns the full 35-entry system catalogue as plain JSON (no tRPC envelope). No authentication required. Response is CDN-cached for 5 minutes (Cache-Control: public, s-maxage=300). The legacy /systems path is preserved as a backwards-compatible alias. Documented in the System Catalogue section of the API Reference.

FIXED
horoscope and boneWeight missing from /systems REST endpoint

The /systems REST endpoint had 33 entries — horoscope and boneWeight were never added when they were introduced in v3.5.0. Both entries are now included with correct dedicated icon URLs, tradition fields, and systemUrl links.

UPDATED
Sitewide count: 46 →47 endpoints, 34 →35 traditions

SiteNav Systems badge, homepage hero, Dashboard welcome card, Playground tian.global label, Status page endpoint list, ApiDocs hero, and all JSON-LD structured data updated from 46 to 47 endpoints and from 34 to 35 traditions to reflect the addition of horoscope and boneWeight.

v3.5.0
2026-03-29
Type
Endpoint
Description
FIXED
SDK v1.4.0: 9 wrong procedure names corrected

DaliuNamespace, XiaoliuNamespace, TaiyiNamespace were calling daliu.calculate / xiaoliu.calculate / taiyi.calculate — all wrong. Correct router names are daLiuRen.calculate, xiaoLiuRen.calculate, taiYi.calculate. CompatibilityNamespace was calling compatibility.calculate (does not exist); split into three methods: compatibility.zodiac, compatibility.birthday, compatibility.bloodType. AuspiciousNamespace was calling auspicious.analyze; corrected to auspicious.analyzeNumber. AlmanacNamespace was calling almanac.get; split into almanac.daily and almanac.zodiacSign. IfaNamespace was calling ifa.calculate; corrected to ifa.draw. All namespace classes and the README method table updated.

FIXED
ApiDocs PATH_TO_SLUG: life-boneWeight key corrected to boneWeight

PATH_TO_SLUG in ApiDocs.tsx mapped /api/trpc/life.boneWeight to "life-boneWeight" but SAMPLE_RESPONSES keys the entry as "boneWeight". The mismatch caused the full sample response panel to show nothing for the Life Blueprint endpoint. Fixed by aligning the slug to "boneWeight".

ADDED
systemContent.ts: horoscope and boneWeight system entries

Western Horoscope (slug: horoscope, tradition: Western) and Life Blueprint / 稱骨算命 (slug: boneWeight, tradition: Eastern) were missing from SYSTEM_CONTENT. Both entries added with full overview, origin, history, howItWorks, goodFor, useCases, famousExamples, keyTerms, apiHighlight, and relatedSystems fields. They now appear in the Systems Index under their respective tradition sections.

FIXED
codeSnippets.ts: 9 wrong SDK method names and 2 missing entries

getSdkMethod() was returning stale method names for compatibility (was compatibility.calculate), auspicious (was auspicious.analyze), almanac (was almanac.get), ifa (was ifa.calculate). Updated to compatibility.zodiac, auspicious.analyzeNumber, almanac.daily, ifa.draw. Added horoscope and boneWeight entries. Added getExampleInput() cases for horoscope and boneWeight so SDK code snippets on system detail pages render correct inputs.

FIXED
systemContent.ts: compatibility and khatt endpoint paths

compatibility endpoint was stored as /compatibility/zodiac (slash-separated) and khatt as /khatt/calculate — both using the wrong path separator. Corrected to dot-notation: compatibility.zodiac and khatt.calculate to match the tRPC router.

UPDATED
Homepage SDK badge: v1.3.0 → v1.4.0

npm install snippet and npmjs.com link on the homepage updated from [email protected] to [email protected].

v3.4.0
2026-03-29
Type
Endpoint
Description
ADDED
8 new standalone divination endpoints

Ifá (ifa.draw), Fa/Vodun (vodun.calculate), Hakata (hakata.calculate), Rammal (rammal.calculate), Khatt al-Raml (khatt.calculate), Jyotish (jyotish.calculate), Anka Shastra (anka.calculate), and Western Horoscope (horoscope.calculate) are now callable as independent endpoints. Previously these systems were only accessible via the tian.african, tian.islamic, tian.indian, and tian.western blended endpoints. Each costs 1 $TIAN per call and accepts birthDate + optional question. Total public endpoint count: 46.

ADDED
Playground: 8 new endpoint forms

All 8 new standalone endpoints now have dedicated form sections in the Playground with birth date input, optional question field, and realistic sample fixture responses. Horoscope additionally accepts a birth hour for improved Ascendant accuracy.

ADDED
ApiDocs: horoscope.calculate endpoint documentation

Western Horoscope endpoint added to ApiDocs with full request schema, sample response, and TIAN Point cost. All 46 public endpoints are now fully documented.

FIXED
Privy sign-in 401 loop — wrong JWT issuer in privyAuth.ts

privyAuth.ts was verifying Privy JWTs with issuer "privy.asktian.com" and "auth.privy.io" — both wrong. Privy always issues tokens with iss="privy.io" regardless of custom domain. Rewrote privyAuth.ts to use the official @privy-io/server-auth PrivyClient.verifyAuthToken() which handles issuer, JWKS, and SPKI key automatically. The /api/auth/privy 401 loop is resolved.

UPDATED
Systems page: 9 new system cards across 6 sections

Systems page fully rewritten with 6 sections (Chinese, Western, African, Islamic, Indian, Life & Oracle). 9 new cards added: Horoscope, Ifá, Vodun, Hakata, Rammal, Khatt, Jyotish, Anka Shastra, Bone Weight Reading, and Predict Oracle. Header updated to "46 Divination Endpoints · 34 traditions".

UPDATED
Sitewide endpoint count: 38 → 46

SiteNav badge, homepage hero, status pill, metrics card, SEO meta, and JSON-LD all updated from 38 to 46 endpoints and from 26 to 34 traditions.

v3.3.0
2026-03-28
Type
Endpoint
Description
ADDED
TIAN Points billing via wallet.asktian.com

predict.binary, predict.multi, and predict.binaryBatch now deduct TIAN Points from wallet.asktian.com on every call. Non-Enterprise callers must pass privyToken (Privy access token from getAccessToken()) in the request body. The server calls wallet.asktian.com POST /api/v1/auth/verify to validate the token and check balance, then POST /api/v1/points/deduct to atomically deduct. Enterprise subscribers bypass deduction entirely. Insufficient balance returns HTTP 402 PAYMENT_REQUIRED with the user's current balance, required amount, and a pre-filled top-up URL.

ADDED
Idempotency keys on all predict deductions

Each verifyAndDeduct call now passes a deterministic idempotencyKey (userId:endpoint:requestTimestamp) to wallet.asktian.com, preventing double-charges on client retries. The key is scoped per user, per endpoint, and per request start time.

ADDED
Fetch timeout + 5xx retry on wallet API calls

All wallet.asktian.com fetch calls now abort after 5 seconds via AbortController. 5xx responses are retried once with a 500ms backoff before propagating the error. This prevents predict endpoints from hanging indefinitely if the wallet service is slow.

UPDATED
predict.binaryBatch: Premium plan now allowed

predict.binaryBatch and predict.batchResult previously required Enterprise subscription. Both endpoints now accept Premium subscribers as well, with TIAN Points deduction applied (80 TIAN Points × N questions). Enterprise users continue to bypass deduction.

UPDATED
ApiDocs: privyToken param added to predict endpoints

predict.binary, predict.multi, and predict.binaryBatch parameter tables in ApiDocs now document the privyToken field with type string? and a full description of when it is required. predict.binaryBatch and predict.batchResult plan requirement updated from Enterprise to Premium or Enterprise.

UPDATED
Pricing page: Predict Oracle TIAN Points cost table

New section on the Pricing page lists all 5 predict.* endpoints with their TIAN Points cost, required plan, and notes. Includes a link to wallet.asktian.com for top-ups.

UPDATED
SDK snippets: privyToken in predict examples

getSnippets() in codeSnippets.ts now injects privyToken: '<privy_access_token>' into the SDK example input for predict.binary, predict.multi, and predict.binaryBatch, with a comment explaining when it is required vs optional.

FIXED
Get API Key button: Privy login race condition

The Get API Key button on the homepage and the Sign In button in SiteNav called privyLogin() before the auth.me tRPC query resolved, causing Privy to throw 'Attempted to log in, but user is already logged in'. Fixed by guarding all login() calls with authLoading check — if auth state is still loading, the click is a no-op. SiteNav Sign In button also gains disabled={authLoading} to prevent double-clicks.

v3.2.0
2026-03-26
Type
Endpoint
Description
ADDED
PWA manifest.json

Added manifest.json to client/public with name, short_name, icons (192×192, 512×512), theme_color (#09090b), and display: standalone. The site is now installable as a PWA on iOS and Android, and mobile browser chrome matches the dark theme.

ADDED
Changelog RSS feed (/api/changelog.rss)

New Express endpoint at /api/changelog.rss serves the full CHANGELOG as a valid RSS 2.0 feed with atom:link self-reference, XML-escaped content, per-release <item> blocks, and Cache-Control: public, max-age=3600. Developers can subscribe to release notes directly in their feed reader.

ADDED
Subscribe via RSS button on Changelog page

Orange RSS icon button added to the Changelog page hero section next to the endpoint code block. Links directly to /api/changelog.rss and opens in a new tab, surfacing the feed to visitors who don't inspect <head>.

UPDATED
Critical JS modulepreload

Vite build plugin now injects <link rel="modulepreload"> for the entry chunk (assets/index-*.js, ~113 KB) into the built index.html. Browsers that support modulepreload (Chrome, Edge, Firefox 115+) fetch this script in parallel with HTML parsing, reducing LCP on cold visits by ~100–200 ms.

UPDATED
React Query staleTime / gcTime

Global QueryClient default staleTime raised from 30 s to 5 min; gcTime set to 10 min. Navigating back to any previously visited page is now instant with no re-fetch spinner. Per-query overrides (staleTime: 0 on Status, staleTime: Infinity on Changelog) still take precedence.

UPDATED
DB composite indexes on predict tables

Added composite (userId, createdAt) indexes on predict_binary_usage, predict_multi_usage, and predict_batch_results. Dashboard history queries (WHERE userId = ? ORDER BY createdAt DESC) now hit a single index instead of scanning the userId index then sorting.

v3.1.0
2026-03-25
Type
Endpoint
Description
UPDATED
SDK v1.2.2 (npm)

SDK README fully rewritten to document all 5 predict.* methods with typed input/output examples, a pricing table, error handling reference, and a changelog. SDK v1.2.0 and v1.2.1 deprecated on npm with migration message pointing to v1.2.2.

ADDED
ApiDocs: Predict Oracle Quick-Start section

New sidebar section with a 3-step walkthrough (get key → call predict.binary → read confidence). Includes a curl/SDK tab block, annotated response, confidence threshold table, and a Try it live button that deep-links to the Playground pre-filled with predict.binary.

UPDATED
Homepage hero code example

Hero code block replaced from divination.draw to a 2-question predict.binaryBatch call with matching response tab (two results, totalCreditsUsed, batchId). Homepage View Docs CTA updated to deep-link to /docs#predict-quickstart.

ADDED
Playground: ConfidenceGauge component

New ConfidenceGauge component renders a horizontal 0–100 bar with four colour-banded threshold zones (red <50, orange 50–64, amber 65–74, emerald ≥75). Full gauge appears in predict.binary and predict.multi result panels; compact variant appears in each predict.binaryBatch question card and in Dashboard Batch History expanded rows.

ADDED
Playground: Copy-as-SDK button

Copy-as-SDK button appears below the run buttons for all predict.* endpoints. Copies the ready-to-run TypeScript SDK snippet to the clipboard. Snippet reflects live form values (question text, options, resolution date) — not hardcoded defaults.

ADDED
Playground: Reset defaults link

Reset defaults link added to predict.binary, predict.multi, and predict.binaryBatch forms. One click restores the canonical example values without a page refresh.

ADDED
Playground: predict.batchResult endpoint

predict.batchResult added to the Playground endpoint selector with a batchId input field and a 3-question sample fixture (2 succeeded, 1 timed out).

UPDATED
ApiDocs: predict.multi SDK tab in callout

The predict.multi next-steps callout now has a curl/SDK toggle, matching the step 2 pattern. The SDK tab shows client.predict.multi() with a 3-option example.

UPDATED
codeSnippets.ts: AskTianClient → AskTian

Fixed class name in all SDK snippets in the endpoint reference from AskTianClient to AskTian (matching the published v1.2.2 API). Also corrected predict field names: targetDate → resolutionDate, added optionA/optionB.

UPDATED
Dashboard: stale system count fixed

Dashboard new-user welcome card and onboarding step 2 updated from '33 divination systems' to '38 endpoints (26 traditions, 7 TIAN Blended, 5 Predict Oracle)'. Changelog SEO description updated from '26 divination systems' to '38 endpoints'.

v3.0.0
2026-03-20
Type
Endpoint
Description
FIXED
Blank page on load (Privy TDZ crash)

Removed @privy-io and wagmi/viem from Vite manualChunks. Privy imports wagmi/viem internally; splitting them into separate chunks caused Rollup to linearise the circular dependency graph in the wrong order, producing a 'Cannot access Vn/Nz before initialization' TDZ crash that prevented the app from mounting. Removing the split lets Rollup keep the full dependency graph intact in the vendor chunk.

FIXED
Auto-redirect from / to /dashboard

Removed the post-login redirect in useAuth.ts that fired window.location.href = '/dashboard' on every page load for authenticated users. Visitors can now browse the homepage, docs, systems, and pricing while logged in without being redirected.

FIXED
LLM Service degraded on /status

The health check was probing GET /models which does not exist on the Manus built-in API (returning 404 in ~20ms). Now probes POST /v1/chat/completions with max_tokens:1, accepting HTTP 200 or 400 as healthy.

ADDED
predict.binary

Binary oracle for Yes/No prediction market questions. Consults 10 metaphysical systems in parallel with automatic resolutionDate proximity weighting. Returns confidence 0-100, predicted option, per-system votes, and an LLM-synthesised thesis. Costs 100 TIAN Points per call.

ADDED
predict.multi

Multi-option oracle for prediction markets with 3–500 choices. Consults 7 systems in parallel with proximity weighting. Returns per-option probability distribution, top pick, and an LLM-synthesised thesis. Costs 150 TIAN Points per call.

ADDED
predict.binaryBatch

Batch binary oracle for up to 20 questions in a single call. Questions are processed in 5-concurrent rounds (4 rounds max for 20 questions), with a typical response time of 8–15 seconds. Each successful question costs 80 TIAN Points (20% discount vs predict.binary); failed questions are not charged. Requires Premium or Enterprise subscription. Fires predict.batch.completed webhook on completion.

ADDED
predict.completed webhook event

predict.binary and predict.multi now fire a predict.completed webhook event after each successful prediction. Payload includes question, resolutionDate, predictedOption, confidence, type (binary/multi), and timestamp. Enables integrators to receive push updates instead of polling.

ADDED
resolutionDate proximity weighting

predict.binary and predict.multi now apply automatic proximity weighting based on days until resolution. Near-term markets (≤7 days) weight time-sensitive systems (Qimen, Da Liu Ren, Tarot, Runes) up to 1.4×. Long-horizon markets (≥90 days) weight long-cycle systems (Tai Yi, Jyotish, Meihua) up to 1.4×.

ADDED
Dashboard empty-state for new users

New users with no API keys or usage now see a guided 'Welcome to askTIAN API' panel with three actionable steps: create an API key, make a first call, and explore the Playground.

ADDED
Dashboard rate-limit warning banners

Amber banner when monthly remaining quota drops below 20% and a red banner when quota is fully exhausted (monthlyRemaining === 0). The red banner explains that all API calls are returning 429 and shows the reset date.

ADDED
Dashboard ← Home breadcrumb

A subtle '← Home / Dashboard' breadcrumb in the dashboard sub-header lets users navigate back to the homepage without using the browser back button.

ADDED
predict.batchResult

Re-fetch a completed binaryBatch result by its batchId. Results are persisted server-side before the predict.batch.completed webhook fires, so callers can always recover a lost response. Returns the full per-question results array, totalCreditsUsed, successCount, and createdAt. Free — no TIAN Points cost.

ADDED
predict.batchHistory

Returns the last 100 binaryBatch results for the authenticated user, ordered by creation time descending. Used by the Dashboard Batch History card for self-serve audit trail. Free — no TIAN Points cost.

ADDED
predict.batch.completed webhook event

predict.binaryBatch now fires a predict.batch.completed webhook event after the batch completes. Payload includes batchId, successCount, failureCount, totalCreditsUsed, and timestamp. Enables integrators to trigger recovery via predict.batchResult without polling.

UPDATED
Endpoint count: 33 → 38

Five Predict Oracle endpoints (predict.binary, predict.multi, predict.binaryBatch, predict.batchResult, predict.batchHistory) bring the total public endpoint count to 38 (23 core divination + 7 TIAN blended + 5 Predict Oracle + 3 catalogue/status).

v2.9.0
2026-03-19
Type
Endpoint
Description
SECURITY
Payment replay attack fix

submitTxHash now verifies that the ERC-20 Transfer log topics[1] (FROM address) matches the submitting user's registered wallet address. A second check in recordTianPayment rejects any txHash that already belongs to a different user, preventing cross-user payment replay attacks.

SECURITY
Error message sanitisation

tRPC errorFormatter now strips raw database and internal error messages from INTERNAL_SERVER_ERROR (HTTP 500) responses in production, replacing them with a generic message and removing stack traces to prevent information leakage.

SECURITY
Request body limit

Global Express body parser limit reduced from 50 MB to 1 MB to prevent request body bombing attacks. File upload routes retain their own per-route limits.

SECURITY
Trust proxy & real IP rate limiting

app.set('trust proxy', 1) added so the IP-based rate limiter (apiLimiter 300/15 min, authLimiter 20/15 min) sees the real client IP behind the reverse proxy instead of the proxy's IP.

SECURITY
Content-Security-Policy

Helmet CSP enabled in production with an allowlist covering CDN assets, Privy, Base RPC, and Vite dev server. CSP remains disabled in development to preserve Vite HMR.

ADDED
X-RateLimit-* response headers

Every /api/trpc response now includes X-RateLimit-Limit (monthly quota), X-RateLimit-Remaining (calls left this month, clamped to 0), and X-RateLimit-Reset (Unix timestamp of the first second of next month UTC). Unauthenticated requests receive no headers. Plans with no monthly cap return 'unlimited'.

ADDED
Retry-After on 429 responses

Both the monthly quota exhaustion (TOO_MANY_REQUESTS from requireQuota) and the IP-based rate limiters (apiLimiter, authLimiter) now set a Retry-After header on 429 responses, giving clients the exact number of seconds to wait before retrying.

ADDED
Error Reference in ApiDocs

New 'Error Reference' section in ApiDocs listing all 7 tRPC error codes (UNAUTHORIZED, FORBIDDEN, TOO_MANY_REQUESTS, BAD_REQUEST, NOT_FOUND, CONFLICT, INTERNAL_SERVER_ERROR) with HTTP status mappings, error envelope shape, and a Python error-handling code example.

ADDED
Rate Limits section in ApiDocs

New 'Rate Limits' section in ApiDocs documenting the three X-RateLimit-* headers, the monthly reset cycle, the two IP-based rate limit tiers, a comparison table, and a Python backoff code example with Retry-After support.

ADDED
Webhook delivery receipts

webhook_logs now stores the first 2 KB of each HTTP response body. A collapsible delivery log appears in the Dashboard webhook card showing status code, event name, duration, timestamp, and expandable response body. A Retry button on failed entries calls the new webhook.retry procedure to re-trigger deliveries without leaving the Dashboard.

ADDED
API key environment tags

API keys can now be tagged with an environment label (production / staging / dev) via a colour-coded dropdown on each key row in the Dashboard. Tags are stored in the api_keys table and included in all key list responses.

ADDED
Per-key usage sparkline

Each API key row in the Dashboard now shows a 7-day bar sparkline of daily call volume when usage data is present, backed by the new apiKeys.dailyUsage procedure and getKeyDailyUsage db helper.

ADDED
Per-key monthly / all-time call counts

Each API key row shows a violet badge with 'this-month / all-time' call counts, backed by the extended getUsagePerApiKey helper using parallel DB queries.

ADDED
Admin DB Pool Health widget

AdminPanel Overview tab now includes a live DB Pool Health card showing active connections, free connections, queue depth, a colour-coded status badge, and a connection utilisation bar. Auto-refreshes every 10 seconds via the new admin.dbHealth procedure.

ADDED
DB connection pool hardening

mysql2 pool now configured with queueLimit: 50 (was unlimited) to fail fast under extreme load. A pool enqueue event listener warns at queue depth ≥40/50 with an actionable log message.

ADDED
Playground deep-links from system pages

Every /systems/[slug] SEO page's 'Try in Playground' button now passes ?endpoint= so the Playground pre-selects the matching endpoint on arrival.

UPDATED
Treasury wallet Basescan link

The treasury wallet address in the Dashboard payment card is now a clickable link to https://basescan.org/address/{wallet} with an ExternalLink icon.

UPDATED
Vite build optimisation

manualChunks added to Vite config splitting Privy, Radix UI, syntax highlighters, and recharts/d3 into separate async chunks. Build target set to es2022 to reduce polyfill overhead.

UPDATED
DB indexes on api_usage

Added apiKeyId_idx and apiKeyId_date_idx compound indexes on the api_usage table to eliminate full table scans on per-key usage queries (sparkline, breakdown, monthly count).

v2.8.0
2026-03-15
Type
Endpoint
Description
ADDED
Systems nav badge

The "Systems" link in the top navigation bar now displays a violet "33" pill badge on both desktop and mobile, signalling the full 33-system catalogue depth at a glance.

UPDATED
tian.eastwest Playground form

The tian.eastwest Playground form now shows clearly labelled section dividers — "Eastern inputs (14 systems)" and "Western inputs (5 systems)" — between the shared fields and the tradition-specific inputs, making it clear which parameters feed which sub-systems.

UPDATED
Homepage hero stats

Hero stat counter updated from "26 Systems / 14+2+5+3+2" to "33 Systems / 26+7 (Core + TIAN Blended)". SEO meta description and hero body copy updated to reference all 33 systems and 7 TIAN Blended synthesis endpoints.

ADDED
Playground tian.african form

tian.african Playground form now includes Ancestral Lineage/Clan input, Offering Preference selector (Ifá/Fa-Vodun/Hakata/No preference), and an explanatory callout describing the three-system synthesis.

ADDED
Playground tian.islamic form

tian.islamic Playground form now includes Geomantic Method selector (Both/Rammal only/Khatt al-Raml only), Niyyah/Intention field, and an explanatory callout describing the two-system synthesis.

ADDED
Playground tian.indian form

tian.indian Playground form now includes Birth Time (HH:MM), Birth Place, and Full Name (for Anka Shastra) inputs, plus an explanatory callout describing the Jyotish + Anka Shastra synthesis.

UPDATED
Enterprise plan call limit

Enterprise plan monthly call limit changed from Unlimited to 500,000 calls/mth across Pricing page, Dashboard, Home, and the subscription_plans database record.

FIXED
Icon Pack white-variant preview

The Icon Pack table in ApiDocs now shows the white-variant icon (white monochrome PNG) on a dark grey container, and the transparent-variant icon (colored PNG) on a white container. Previously the backgrounds were swapped, making the white icon invisible.

ADDED
33 SEO system pages

All 7 TIAN Blended systems (tian-eastern, tian-western, tian-eastwest, tian-african, tian-islamic, tian-indian, tian-global) now have individual SEO-optimised pages at /systems/[slug] with full article content, JSON-LD structured data, and a "Blended Systems" section in the /systems index. Total: 33 system pages.

v2.7.0
2026-03-14
Type
Endpoint
Description
UPDATED
Credit multiplier 5×

All 7 TIAN blended endpoints updated from 2× to 5× per-system credit cost: tian.eastern 70 TIAN Points (14×5), tian.western 25 TIAN Points (5×5), tian.eastwest 95 TIAN Points (19×5), tian.african 15 TIAN Points (3×5), tian.islamic 10 TIAN Points (2×5), tian.indian 10 TIAN Points (2×5), tian.global 130 TIAN Points (26×5). Reflects the premium synthesis value of multi-system LLM readings.

ADDED
7 individual system endpoints in ApiDocs

Ifá, Fa/Vodun, Hakata, Rammal, Khatt al-Raml, Jyotish, and Anka Shastra are now individually documented in ApiDocs with full parameter specs, curl examples, and sample responses. Total documented endpoints: 39.

ADDED
khatt entry in catalogue.list

Khatt al-Raml is now a standalone entry in catalogue.list (id: "khatt") with all 4 icon colour variants.

UPDATED
catalogue.list iconVariants field

Every entry in catalogue.list now includes an iconVariants object with original, transparent, white, and black CDN URLs for programmatic icon access.

UPDATED
ApiDocs hero endpoint count

ApiDocs hero updated to 39 endpoints. Changelog link added to ApiDocs hero section. Changelog link removed from top navigation bar.

UPDATED
Pricing page $TIAN label

Pricing page plan prices now correctly display "$TIAN" (was "TIAN") next to the token amount. FAQ updated to match.

FIXED
tian.eastwest callout on /systems

tian.eastwest hero callout added to the /systems page between the Western tradition table and the tian.global callout.

v2.6.0
2026-03-14
Type
Endpoint
Description
ADDED
predict.binary

New Prediction Market Oracle endpoint for binary (Yes/No) questions. Consults 10 metaphysical systems (Qimen Dunjia, Da Liu Ren, Tai Yi, Liuyao, Meihua Yi Shu, Jyotish Prashna, Rammal, Western Horary, Tarot, Runes). Returns predicted option, per-system confidence-weighted aggregate score, system breakdown, and LLM-synthesised analyst thesis. Costs 100 TIAN Points per call. Requires Premium or Enterprise subscription.

ADDED
predict.multi

New Prediction Market Oracle endpoint for multi-option questions (3–20 candidates). Consults 7 systems best suited for multi-candidate ranking (Da Liu Ren, Jyotish Prashna, Western Horary, Tarot, Runes, Meihua Yi Shu, Qimen Dunjia). Returns predicted winner, per-option composite scores, confidence score (margin-based), and LLM-synthesised analyst thesis. Costs 150 TIAN Points per call.

ADDED
Playground predict UI

Playground now includes Binary Oracle and Multi-Option Oracle endpoints with dedicated input forms (question, options, resolution date) and a rich result display showing the confidence gauge, system breakdown, and per-option score bars.

UPDATED
ApiDocs Predict Oracle section

New Predict Oracle category added to ApiDocs with full parameter documentation and curl examples for both predict.binary and predict.multi.

UPDATED
Hero and Status endpoint counts

Hero status pill, feature card, and Status page endpoint availability table updated from 33 to 35 endpoints to reflect the two new predict endpoints.

FIXED
Icon borders sitewide

All system icon containers across SystemsIndex, Home, SystemPage, and ApiDocs updated to rounded-xl with white/20 border and white/50 hover border, replacing the previous zinc-800 dark border style.

FIXED
Pricing page Enterprise rows

Removed SLA guarantee, Dedicated account manager, and White-label options from the Enterprise tier feature comparison table.

FIXED
ApiDocs catalogue.list sample

Sample response fixture updated from "22 entries total" to "33 entries total" to match the current endpoint count.

v2.5.0
2026-03-14
Type
Endpoint
Description
UPDATED
$TIAN language sitewide

All user-facing "credits" labels replaced with "$TIAN" across Home, ApiDocs, SystemsIndex, Playground, Status, SystemPage, and AdminPanel pages to reinforce the 1 $TIAN = 1 TIAN credit equivalence.

FIXED
tian.global display credits

Home and Playground now correctly show 52 TIAN Points for tian.global (was 50). The "4 traditions" label in Playground corrected to "5 traditions".

UPDATED
Status page endpoint table

Endpoint availability table expanded from 3 to 8 entries, now listing all 7 TIAN blended endpoints (Eastern, Western, East-West, African, Islamic, Indian, Global) with correct TIAN Points costs.

UPDATED
Home hero SEO description

SEO meta description updated to reference 26 systems and 5 traditions (Indian added alongside Eastern, Western, African, Islamic).

v2.4.0
2026-03-14
Type
Endpoint
Description
ADDED
Changelog page

Public /changelog page now live at api.asktian.com/changelog — shows all release notes in a structured table with colour-coded type badges (Added/Fixed/Updated/Renamed/Breaking). Powered by the catalogue.changelog tRPC endpoint. Linked from SiteNav and SiteFooter.

FIXED
tian.eastwest description

ApiDocs description now explicitly states 14 Eastern + 5 Western = 19 systems, and clarifies that Indian systems (Jyotish, Anka Shastra) are covered by tian.indian, not this endpoint.

FIXED
tian.global credit tracking

routers.ts ALL_GLOBAL_SYSTEMS now includes khatt (26 systems total). creditsUsed updated from 50 to 52 TIAN credits. Comment updated to reflect 26 systems × 2 = 52 TIAN credits.

UPDATED
TIAN blend descriptions

All TIAN blend endpoint descriptions in ApiDocs now say "TIAN credits" instead of "credits" to reinforce the $TIAN token utility.

UPDATED
Changelog type colours

Changelog page now renders Renamed entries in violet and Updated entries in cyan, in addition to the existing Added/Fixed/Changed/Breaking/Deprecated colour scheme.

v2.3.0
2026-03-14
Type
Endpoint
Description
FIXED
tian.global description

Updated tian.global description across ApiDocs and SystemsIndex from "all 25 systems" to "all 26 systems", and from 4 traditions to 5 traditions (Eastern, Indian, Western, African, Islamic). Credit cost updated to 52 (26 systems × 2).

FIXED
SystemsIndex description

The /systems page description now correctly lists 14 Eastern, 2 Indian, 5 Western, 3 African, and 2 Islamic systems (5 distinct traditions).

FIXED
tian.global response sample

The ApiDocs sample response for tian.global now includes the indian tradition score and reflects 5 traditions in the globalSynthesis field.

v2.2.0
2026-03-14
Type
Endpoint
Description
ADDED
tian.indian

Indian TIAN — runs Jyotish (Vedic Astrology) and Anka Shastra (Indian Numerology) in parallel and synthesises a unified Indian metaphysical reading via LLM. Costs 2 credits. Requires Premium or Enterprise subscription.

ADDED
tian.indian (Playground)

tian.indian is now available in the interactive Playground with sample fixtures for birthDate and question inputs.

ADDED
tian.indian (ApiDocs)

tian.indian is now fully documented in the ApiDocs TIAN Blended section with parameters, example curl, and sample response.

ADDED
tian.indian (SystemsIndex)

The /systems page now features a dedicated tian.indian hero callout (rose border) between the Islamic and Global callouts, with Jyotish and Anka Shastra tradition badges.

ADDED
Khatt al-Raml (Homepage)

Khatt al-Raml (system 26) is now listed in the homepage SYSTEMS table with its CDN icon and Islamic tradition tag.

UPDATED
Homepage metric label

The tradition breakdown label updated from "16+6+3" to "16+6+2+2" (14 Eastern + 2 Indian, 5 Western, 3 African, 2 Islamic) to reflect distinct Indian and Islamic traditions.

UPDATED
Homepage TIAN grid

The TIAN Blended section on the homepage is now a 7-column grid (Eastern, Western, African, East-West, Islamic, Indian, Global) reflecting all 7 blend endpoints.

UPDATED
GET /systems

Now returns 33 entries (26 core + 7 TIAN Blended) including tian.indian.

UPDATED
SystemsIndex title

The /systems page title and description updated to "All 26 Divination Systems" with the correct tradition breakdown.

v2.1.0
2026-03-14
Type
Endpoint
Description
FIXED
Homepage stat badge

The "Systems" stat badge on the homepage now correctly reads 26 (was 25). Hero description updated to include Khatt al-Raml.

ADDED
tian.islamic hero callout

The /systems page now features a dedicated tian.islamic hero section between the Islamic tradition table and the tian.global callout, with tradition badges for Rammal and Khatt al-Raml, and direct links to the Playground and Docs.

FIXED
Islamic tradition table

Khatt al-Raml (tradition: Islamic) now automatically appears in the Islamic tradition table on the /systems page alongside Rammal.

v2.0.0
2026-03-13
Type
Endpoint
Description
ADDED
khatt.calculate

Khatt al-Raml (North African Geomancy) — the Maghrebi and Saharan variant of Islamic geomancy, using sand-line figures (Ashkal) and the Qadi verdict system. Covers Morocco, Algeria, Tunisia, Libya, and the wider Saharan tradition.

ADDED
tian.islamic

Islamic TIAN — runs Rammal and Khatt al-Raml in parallel and synthesises a unified Islamic geomantic reading via LLM. Costs 2 credits. Requires Premium or Enterprise subscription.

ADDED
tian.islamic (Playground)

tian.islamic is now available in the interactive Playground with sample fixtures for birthDate and question inputs.

ADDED
tian.islamic (ApiDocs)

tian.islamic is now fully documented in the ApiDocs TIAN Blended section with parameters, example curl, and sample response.

UPDATED
Homepage TIAN grid

The TIAN Blended section on the homepage is now a 6-column grid (Eastern, Western, African, East-West, Islamic, Global) reflecting all 6 blend endpoints.

UPDATED
GET /systems

Now returns 32 entries (26 core + 6 TIAN Blended) including khatt and tian.islamic.

UPDATED
Homepage counters

Hero badge updated from 21 to 30 endpoints. ApiDocs Icon Pack count updated to 30 icons. TIAN global description updated to 26 systems.

v1.9.0
2026-03-13
Type
Endpoint
Description
RENAMED
tian.harmonized → tian.eastwest

tian.harmonized has been renamed to tian.eastwest across all endpoints, documentation, and the Playground. The endpoint path is now /tian/eastwest. The procedure synthesises all 19 Eastern and Western systems into a unified East-West reading.

ADDED
tian.global icon

Dedicated tian.global icon (globe with Bagua, Odu, Sri Yantra, and crescent-star at the four cardinal points) added to the Icon Pack in 4 variants: original, transparent, white, black.

ADDED
Islamic tradition table

The /systems page now shows a dedicated Islamic tradition table listing Rammal (and future Islamic systems) separately from Eastern, Western, and African traditions.

ADDED
tian.global hero callout

The /systems page now features a dedicated tian.global hero section at the bottom with tradition badges, description, and direct links to the Playground and Docs.

v1.8.0
2026-03-13
Type
Endpoint
Description
ADDED
tian.global

Global TIAN — runs all 25 divination systems across Eastern, Western, African, and Islamic traditions in parallel and synthesises a fully cross-civilisational reading via LLM. Costs 50 credits (25 systems × 2). Requires Enterprise subscription.

ADDED
tian.african (Playground)

tian.african is now available in the interactive Playground with sample fixtures for birthDate and question inputs.

ADDED
tian.global (Playground)

tian.global is now available in the interactive Playground with full 10-parameter form and sample fixtures.

ADDED
System detail pages

Full dedicated detail pages now live at /systems/vodun, /systems/hakata, /systems/rammal, /systems/anka — completing the SEO footprint for all 25 systems.

UPDATED
GET /systems

Now returns 30 entries (25 core + 5 TIAN Blended) including tian.global.

v1.7.0
2026-03-13
Type
Endpoint
Description
ADDED
vodun.calculate

Fa/Vodun (West African Divination) — 256 Du signs from the Fon and Ewe corpus, with Hwe myths, Ebo prescriptions, and Legba guidance. Covers the Beninese and Togolese Vodun tradition.

ADDED
hakata.calculate

Hakata (Southern African Bone Throwing) — 16 configurations from the Shona oracle, with ancestral guidance and Nganga prescriptions. Covers Zimbabwe, Zambia, and Mozambique traditions.

ADDED
rammal.calculate

Rammal (Islamic Geomancy) — full Darb al-Raml shield chart with 16 geomantic figures, Judge interpretation, and domain-specific guidance. Covers the Arabic, Persian, and Ottoman geomantic traditions.

ADDED
anka.calculate

Anka Shastra (Indian Numerology) — Moolank (root number), Bhagyank (destiny number), Namank (name number), and Lo Shu grid analysis with Navagraha planetary ruler interpretations.

ADDED
tian.african

African TIAN — blends Ifá, Fa/Vodun, and Hakata in parallel and synthesises a unified African divination reading via LLM. Costs 3 credits. Requires Premium or Enterprise plan.

UPDATED
GET /systems

Now returns 29 systems (25 core + 4 TIAN Blended) including the 4 new African and Islamic systems and tian.african blend.

v1.6.0
2026-03-13
Type
Endpoint
Description
ADDED
GET /systems

New REST-style endpoint returning all 29 systems (25 core + 4 TIAN Blended) with id, name, zh, tradition, endpoint, credits, iconUrl, description, and systemUrl. Mirrors catalogue.list at a cleaner path for developers who prefer REST over tRPC.

ADDED
jyotish.calculate

Jyotish (Vedic Astrology) — sidereal birth chart with Navagraha, 27 Nakshatras, and Vimshottari Dasha planetary period timing. India's ancient science of light, one of the six Vedangas.

ADDED
ifa.draw

Ifá (Yoruba Divination) — 256 Odù chapters with ese verses, Ebo prescriptions, and Orisha guidance. UNESCO Intangible Cultural Heritage of Humanity.

v1.5.0
2026-03-12
Type
Endpoint
Description
ADDED
catalogue.list

Public endpoint returning all 22 divination systems with metadata, tradition tag, credit cost, and CDN icon URL.

ADDED
catalogue.changelog

Public endpoint returning the full API changelog (this response).

ADDED
status.check

Public health-check endpoint returning DB, Base RPC, and LLM Service latency and status.

ADDED
admin.webhookLogs

Admin endpoint returning webhook delivery log with timestamp, user, event, URL, HTTP status, and duration.

ADDED
admin.retryWebhook

Admin endpoint to re-fire a failed webhook delivery to the user's current webhook URL.

v1.4.0
2026-03-11
Type
Endpoint
Description
ADDED
tian.eastern

Blended Eastern TIAN reading — fans out to all 14 Eastern systems, synthesises via LLM. Costs 28 credits (14 × 2). Requires Premium or Enterprise plan.

ADDED
tian.western

Blended Western TIAN reading — fans out to all 5 Western systems, synthesises via LLM. Costs 10 credits (5 × 2). Requires Premium or Enterprise plan.

ADDED
tian.eastwest

East-West TIAN reading — fans out to all 19 systems across both traditions, synthesises via LLM with cross-tradition commentary. Costs 38 credits (19 × 2). Requires Premium or Enterprise plan.

v1.3.0
2026-03-10
Type
Endpoint
Description
ADDED
All divination endpoints

Every divination response now includes a deterministic `score` field (0–100) computed from the reading's fortune level, element relationships, and spread composition. No additional credits consumed.

ADDED
admin.getTianStats

Admin endpoint returning per-endpoint usage counts for tian.eastern, tian.western, and tian.eastwest.

CHANGED
admin.getAllUsers

Response now includes `walletAddress` from the users table (set on Privy wallet login) in addition to `latestWallet` from payment history.

v1.2.0
2026-03-07
Type
Endpoint
Description
ADDED
divination.draw

591+ divination lots across 10 temple systems. Each lot includes a fortune level, poem, interpretation, and advice.

ADDED
daLiuRen.calculate

Da Liu Ren (大六壬) — Four Courses and Three Transmissions classical divination.

ADDED
xiaoLiuRen.calculate

Xiao Liu Ren (小六壬) — Six Gods cycle folk divination.

ADDED
taiYi.calculate

Tai Yi Shen Shu (太乙神數) — 72-year Grand Cycle cosmic forecasting.

ADDED
compatibility.bloodType

Blood type personality compatibility — A, B, O, AB compatibility matrix.

v1.1.0
2026-03-05
Type
Endpoint
Description
ADDED
qimen.calculate

Qimen Dunjia (奇門遁甲) — 9 palaces, 8 gates, 9 stars, 8 deities.

ADDED
liuyao.calculate

Liuyao (六爻) — Six Lines I Ching with 64 hexagrams and changing lines.

ADDED
meihua.calculate

Meihua Yishu (梅花易數) — Plum Blossom divination.

ADDED
nameAnalysis.analyze

Name Analysis (姓名學) — Five formations numerology with stroke analysis.

ADDED
compatibility.zodiac

Zodiac compatibility — Chinese zodiac animal harmony scores.

ADDED
compatibility.birthday

Birthday compatibility — Chinese calendar element theory.

ADDED
auspicious.analyzeNumber

Auspiciousness analysis for phone numbers, license plates, and ID numbers.

ADDED
almanac.daily

Daily almanac (黃曆) — twelve values, deities, and auspicious activities.

v1.0.0
2026-03-03
Type
Endpoint
Description
ADDED
tarot.draw

Tarot — 78-card Rider-Waite deck, single card, 3-card, and Celtic Cross spreads.

ADDED
coinFlip.flip

Coin Flip Oracle — yes/no oracle with 7 domain-specific interpretations.

ADDED
runes.cast

Runes — Elder Futhark 24-rune casting, single, three-rune, and five-rune spreads.

ADDED
numerology.calculate

Numerology — Pythagorean Life Path, Expression, Soul Urge, Personality, Birthday numbers.

ADDED
astrology.calculate

Western Astrology — Sun, Moon, Rising sign analysis with decanates and ruling planets.

ADDED
auth.me

Initial platform launch — Manus OAuth, API key management, subscription plans, and usage tracking.