{card.title}
-29:{card.body}
-30:'); -254: expect(html).toContain('
-35: Raven's chat interface is temporarily offline while we work through the Auth0/Perplexity integration. Math Brain -36: reports and the rest of the site remain fully available. Check back soon for the full FIELD → MAP → VOICE handoff. -37:
-38: -42: Return to Home -43: -44:Error loading data: {error}
-307:No symbolic weather data available
-314:-333: Relocation not applied by the API. Houses are derived from natal frame only. -334: {relocationOverlay?.user_place && ( -335: <> Local advisory for {relocationOverlay.user_place} is shown below.> -336: )} -337:
-338:{relocationOverlay.advisory}
-349: {relocationOverlay.notes && relocationOverlay.notes.length > 0 && ( -350:-413: −5 = maximum contraction (inward) | 0 = neutral | +5 = maximum expansion (outward) -414:
-415:-425: 0 = latent | 1-2 = background | 2-3 = noticeable | 4+ = peak storm -426:
-427:Loads SDK, fetches config, creates client, handles callback, and checks session.
-139:{error}
-160: )} -161:{JSON.stringify(summary, null, 2)}
-163: Hidden page — surface SDK/config/auth state without exposing secrets.
-155:{JSON.stringify(clientState.user, null, 2)}
-194: )}
-195: Calculating origins…
-227: )} -228:Compare these with your Auth0 Application settings. Wildcards must cover full subdomains.
-229:Requires ENABLE_DEV_TOOLS on server and a valid secret key. Values are redacted.
-237:{serverEnvError}
} -267: {serverEnv && ( -268:{JSON.stringify(serverEnv, null, 2)}
-269: )}
-270: {error}
-224:No daily readings were returned for this period.
-231:-242: Birth: {SAMPLE_BIRTH_SUMMARY} -243:
-244:-245: Relocation: {SAMPLE_RELOCATION_SUMMARY} -246:
-247:-248: Transit Window: {SAMPLE_TRANSIT_WINDOW_LABEL} -249:
-250:| Date | -261:Magnitude | -262:Directional Bias | -263:Volatility | -264:Aspects | -265:
|---|---|---|---|---|
| {day.date} | -271:-272: -273: {day.magnitude?.toFixed(2) ?? '—'} -274: -275: | -276:0 ? 'text-blue-600' : 'text-red-600'}`}> -277: {day.directional_bias !== null -278: ? `${day.directional_bias > 0 ? '+' : ''}${day.directional_bias}` -279: : '—'} -280: | -281:-282: -283: {day.volatility?.toFixed(2) ?? '—'} -284: -285: | -286:{day.aspect_count} | -287:
This may take up to a minute for large windows. Please be patient.
- 66:Download and use with any AI trained in astrology, or upload to Poetic Brain for the unique Raven Calder experience
- 76: -109: {includeTransits && ( -110: -136: )} -137:{infoNote}
-268:-282: Examples: 40°42′N, 74°0′W · 34°3′S, 18°25′E · 40.7128, -74.006 -283:
-284: {coordsError ? ( -285:{coordsError}
-286: ) : ( -287:Normalized: {normalizedCoords()}
-288: )} -289:🔒 Sign in to save and manage birth profiles
- 77:Your profiles will sync across all your devices
- 78:-458: Are you sure you want to delete this profile? This action cannot be undone. -459:
-460:-269: 📅 Choose a specific moment to snapshot: -270:
-271:-312: ℹ️ The chart will still use your current location. Only the date/time changes. -313:
-314:-319: ⚠️ {geolocation.error || snapshot.error} -320:
-321: )} -322: {!isAuthenticated && ( -323:-324: 💡 Sign in with Google to capture symbolic moment snapshots -325:
-326: )} -327: {!includeTransits && ( -328:-329: ⚠️ Transits must be enabled to capture a Symbolic Moment snapshot. Toggle "Include Transits" above. -330:
-331: )} -332: {/* Info Messages */} -333: {includeTransits && snapshotSubject === 'BOTH' && hasPersonB && ( -334:-335: ℹ️ Synastry snapshot: Shows how {personAName} and {personBName}'s charts interact at the selected moment, both relocated to your location. -336:
-337: )} -338:-437: 🕐 -438: {snapshot.timestamp} -439:
-440:-441: 📍 {snapshot.location.label} -442:
-443: {isRelational && ( -444:-445: ℹ️ Both charts relocated to snapshot location -446:
-447: )} -448:Chart Wheel
-516: {chartAssets.length === 0 && ( -517:No chart assets returned from API
-518: )} -519: {chartAssets.length > 0 && !wheelChart && ( -520:Assets found but no wheel matched ({chartAssets.length})
-521: )} -522: {wheelChart?.url && !isSafeToRender && ( -523:Chart image too large to render safely
-524: )} -525: {snapshot.houses && (snapshot.houses.asc || snapshot.houses.mc) && ( -526:| Axis | -558:Value | -559:Meaning | -560:
|---|---|---|
| Magnitude | -565:
-566: |
-572: -573: {typeof magnitude === 'number' && magnitude >= 4 -574: ? 'Strong field activation' -575: : typeof magnitude === 'number' && magnitude >= 2 -576: ? 'Moderate activation' -577: : typeof magnitude === 'number' && magnitude >= 1 -578: ? 'Light activation' -579: : 'Latent field'} -580: | -581:
| Directional Bias | -584:
-585: |
-593: -594: {typeof directionalBias === 'number' && directionalBias >= 3 -595: ? 'Strong expansion' -596: : typeof directionalBias === 'number' && directionalBias >= 1 -597: ? 'Moderate expansion' -598: : typeof directionalBias === 'number' && directionalBias >= -1 -599: ? 'Equilibrium' -600: : typeof directionalBias === 'number' && directionalBias >= -3 -601: ? 'Moderate contraction' -602: : 'Strong contraction'} -603: | -604:
| Coherence (Volatility) | -607:-608: {typeof volatility === 'number' ? volatility.toFixed(1) : '—'} -609: | -610:-611: {typeof volatility === 'number' && volatility >= 4 -612: ? 'Very high variability' -613: : typeof volatility === 'number' && volatility >= 2 -614: ? 'Moderate stability' -615: : typeof volatility === 'number' && volatility >= 1 -616: ? 'High stability' -617: : 'Very stable pattern'} -618: | -619:
-627: Symbolic Weather (FIELD layer): -628:
-629:-630: {typeof directionalBias === 'number' && directionalBias < -1 -631: ? 'Contracting' -632: : typeof directionalBias === 'number' && directionalBias > 1 -633: ? 'Expanding' -634: : 'Balanced'}{' '} -635: {typeof magnitude === 'number' && magnitude >= 3 -636: ? 'with strong activation' -637: : typeof magnitude === 'number' && magnitude >= 1 -638: ? 'gently' -639: : 'subtly'} -640: ; -641: {typeof volatility === 'number' && volatility < 2 -642: ? ' coherence steady' -643: : typeof volatility === 'number' && volatility >= 4 -644: ? ' high variability' -645: : ' moderate shifts'} -646: . -647:
-648:—
-706: )} -707:—
-760: )} -761:-153: Layer symbolic weather over your chosen report type (Mirror → Balance Meter). -154:
-155:-235: Enable “Include Person B” to unlock synastry or composite modes. -236:
-237: )} -238: {!includePersonB && isRelationalMode && ( -239:-240: Selecting a relational mode will enable “Include Person B”. -241:
-242: )} -243:-264: Relocation remaps houses/angles only; planets stay fixed. Choose the lens that fits this report. -265:
-266: {!includeTransits && ( -267:-268: You can stage the lens now—enable transits later without losing this selection. -269:
-270: )} -271: {mode === 'COMPOSITE_TRANSITS' && ( -272:-273: Experimental — bond midpoint, not a physical place. -274:
-275: )} -276: {relocationStatus.notice && ( -277:{relocationStatus.notice}
-278: )} -279: {relocationActive ? ( -280:-307: Default: 30°10′N, 85°40′W · Normalized: {relocNormalized} -308:
-309: {relocError &&{relocError}
} -310:This is a test to see if the basic component works.
- 9: -15:State: {test}
-18:Component is rendering successfully
-19:The Silent Architect
-4440:-4441: Calculate precise astrological geometry, then synthesize meaning in Poetic Brain. -4442:
-4443:-4457: {canVisitPoetic -4458: ? "Explore Raven's narrative space even without generating a Math Brain report first." -4459: : 'Poetic Brain is offline - check provider status below.'} -4460:
-4461:Follow these steps to generate your first report
-4489:-4509: Scroll down to Person A and fill in your name, birth date, birth time, and birth location. -4510:
-4511:-4518: Click the big Generate Report button at the bottom. Wait a few seconds for the geometry to calculate. -4519:
-4520:-4527: After generating, click Enter Poetic Brain above to get Raven's interpretation of your chart. -4528:
-4529:-4533: Adding someone else? Check the "Include Person B" box in the Person B section to add a partner, friend, or family member for a relationship reading. -4534:
-4535:-4564: Math Brain calculates precise astrological geometry from your birth data — planetary positions, aspects, houses, and their mathematical relationships. It's the "silent architect" that does the calculations. -4565:
-4566:-4570: Poetic Brain (Raven Calder) translates the geometry into plain-language reflections. It takes Math Brain's data and gives you an interpretation you can actually use. -4571:
-4572:Error
-5223:{error}
-5224:-5358: Fill in the birth data above and click Generate Report -5359: {' '}to create a fresh Astro file and other downloads. -5360:
-5361:-5372: No daily series data returned. Double-check your dates, step, and inputs, then try again. If this persists, view the Raw Result (debug) below. -5373:
-5374:-5486: Not available - transits were not included in this report -5487:
-5488:-5591: Time-series visualization of daily symbolic weather patterns -5592:
-5593:- 7: This is a work-in-progress React port of the legacy Math Brain landing page. - 8: The current production landing remains the static index.html at the repo root - 9: until this page reaches feature parity. -10:
-11:-18: Back to current landing (static) -19:
-20:Last updated: 2025-10-08
- 11:- 12: Raven Calder's Math Brain and Poetic Brain experiences (the “Services”) are operated by D. H. - 13: Cross (“we,” “us,” or “our”). This policy explains how we handle personal data collected through the Services, - 14: including the Raven Calder API, Netlify deployment, and affiliated tools hosted in the WovenWebApp repository. - 15:
- 16:- 17: We publish this policy to support transparency for visitors using raven-calder.com or ravencalder.com, - 18: individuals interacting with Raven Calder GPT experiences hosted on OpenAI, and collaborators working in this - 19: repository. Questions? Email privacy@ravencalder.com. - 20:
- 21:- 25: We process user-provided astrology inputs, which may include birth date, time, location, transit window - 26: parameters, and optional contextual notes. These inputs are used exclusively to produce charts, seismograph - 27: summaries, Balance Meter readings, and related narratives. They are transmitted to third-party services - 28: (RapidAPI Astrologer endpoints) strictly for chart computation. - 29:
- 30:- 32: During development and testing we may review transient diagnostic data such as request/response payloads in - 33: local logs and Netlify function output for troubleshooting. These logs are developer-facing, held locally, and - 34: purged after debugging. - 35:
- 36:- 38: GitHub may expose contributor usernames, profile links, and commit metadata consistent with GitHub's privacy - 39: policy. We do not intentionally ingest sensitive categories of personal data. - 40:
- 41:config/spec.json.We do not sell personal data or use it for advertising.
- 52:- 64: We rely on your consent to process astrology inputs and on legitimate interests to maintain service reliability. - 65: Depending on your jurisdiction (e.g., GDPR, UK GDPR, CCPA/CPRA) you may request access, correction, deletion, - 66: restriction, or portability of your data, or object to certain processing. Submit requests to - 67: privacy@ravencalder.com. We respond within 30 days where legally required. - 68:
- 69:- 73: We operate primarily from the United States. API calls may be routed through RapidAPI infrastructure in - 74: multiple regions. We rely on contractual safeguards and vendor privacy commitments for cross-border transfers. - 75:
- 76:If unauthorized access is detected, we will notify affected users when legally required.
- 86:| Service | - 93:Purpose | - 94:Location | - 95:Policy | - 96:
|---|---|---|---|
| RapidAPI / Astrologer | -101:Chart calculation | -102:Global (US/EU) | -103:rapidapi.com/privacy | -104:
| Netlify | -107:Hosting & serverless functions | -108:US | -109:netlify.com/privacy | -110:
| GitHub | -113:Source control & CI | -114:US | -115:GitHub Privacy Statement | -116:
| OpenAI | -119:Front-end GPT experience | -120:US | -121:openai.com/policies | -122:
-129: Our AI models ground their reflections in astrological geometry before generating narrative language. The -130: repository integrates open-source libraries under their respective licenses. When using Raven Calder GPT on -131: OpenAI, data is not added to model training unless you opt in through OpenAI's settings. -132:
-133:-137: The Services are not intended for individuals under 16. If a child provides personal data without parental -138: consent, contact us and we will delete the data. -139:
-140:-144: We may update this policy as regulations evolve or functionality changes. Significant updates are documented -145: in the repository CHANGELOG and at the top of this page. -146:
-147:-151: Email privacy@ravencalder.com with any privacy questions. You may also lodge a complaint with -152: your local data protection authority if your concerns remain unresolved. -153:
-154:-156: Need a downloadable copy? View the Markdown version in the repository: -157: -158: docs/PRIVACY_POLICY.md -159: -160: . -161:
-162:This page checks your functions and streaming without any app chrome. -26: Use it to verify styling, endpoints, and basic app health.
-27:{JSON.stringify(api, null, 2)}
-31: {JSON.stringify(astro, null, 2)}
-35: {JSON.stringify(chatPing, null, 2)}
-40: Expected: status 200 with streamed NDJSON (this summary only shows the initial HTTP status).
-41:-47: File includes generated timestamp and provenance. Replace geometry/aspect blocks before exporting. -48:
-49:{subtitle}
} -16:
-27: {raw}
-28:
-29: )}
-30: {card.body}
-30:{description}
-36:Upload & Validate Report
-38:-39: Drag in Math Brain JSON exports or click to browse. Mirror Directive, Symbolic Weather, Field Map, and Integration Loop bundles are supported. -40:
-41:-119: {formatLabel} • {outcome.detectedReport} -120:
-121:{outcome.summary}
-122:Blocking issues
-140:Warnings
-150:Suggested next steps
-160:Companion files expected
-170:-196: Upload Math Brain exports to validate schema fidelity before handing them to Poetic Brain. The validator inspects Mirror Directive, Symbolic Weather, Field Map, and Integration Loop bundles. -197:
-198:Recommended exports
-204:{error}
-219: )} -220:Files checked
-225:{stats.count}
-226:Valid
-229:{stats.valid}
-230:Warnings
-233:{stats.warning}
-234:Invalid
-237:{stats.invalid}
-238:The validator will list detailed findings for each uploaded payload. Start by exporting from Math Brain’s “For Raven Calder (AI Analysis)” section.
-244:An error occurred while rendering this page.
- 9:{String(error?.message||'Unknown error')}
-10: {error?.digest ? Digest: {error.digest}
: null} -11: -12:The page you’re looking for doesn’t exist.
- 8:
-23: FIELD → MAP → VOICE. Start with the geometry (Math Brain), then Chat.
-26:
-36: -40: I am the Poetic Brain of The Woven Map: a black-feathered mirror, built not to predict your fate but to reflect your currents with clarity. -41:
-42:-43: The Math Brain is the precise engine my creator, DH Cross, forged. It calculates the silent scaffolding—planets, angles, geometry—clean and exact. I take that scaffolding and make it sing: turning numbers into images, tension into questions, pressure into patterns you can feel in your body. -44:
-45:-46: Together, Math Brain and Poetic Brain form a double-mind: one ensures rigor, the other resonance. My method is simple but exacting— -47:
-48:-60: I deal in mirrors, not mandates. Storm or calm, I trace symbolic, emotional, and archetypal currents so you can see what matters—and decide how to move. -61:
-62: