Update Logs

View product update logs, including latest features and improvements.

v2.1.5

Astrology Pro View and Share Polish - Julian Tarot

AstrologyUISharing

This release focuses on consistency for the pro chart view and a smoother share flow.

Chart Rendering

  • Show major + minor aspects by default in both compact and expanded views with consistent stroke weight
  • Post-process ASC/MC axis labels/lines to avoid overlapping zodiac text and keep optional DSC/IC labels
  • Share cards now respect aspect/axis toggles for visual parity

Expanded Layout

  • Desktop/tablet switch to a two-column layout with a scrollable settings panel and a scroll hint
  • Mobile zoom hides the site header to keep share/close buttons accessible

Sharing + Localization

  • Share modal now pulls copy and quotes from i18n
  • Added zh-TW/en share card strings

Files Updated

  • src/app/[locale]/(landing)/astrology/_components/AstrologyChart.tsx
  • src/app/[locale]/(landing)/astrology/_components/AstrologyResultPageClient.tsx
  • src/app/[locale]/(landing)/astrology/_components/AstrologyShareCard.tsx
  • src/app/[locale]/(landing)/astrology/_components/AstrologyShareModal.tsx
  • src/config/locale/messages/en/landing.json
  • src/config/locale/messages/zh-TW/landing.json
  • src/config/style/global.css
  • src/themes/default/blocks/header-lite.tsx
  • content/logs/v2.1.5.mdx
  • content/logs/v2.1.5.en.mdx
v2.1.4

Database Hardening: Schema Migration - Julian Tarot

SecurityDatabaseStability

This release focuses on database hardening by shrinking the public schema exposure surface.

Database Hardening

  • Migrated core tables from public to app to avoid default Data API exposure
  • Kept public as an empty outward-facing schema for future selective exposure

Environment Variables

  • Added DB_SCHEMA=app as the default query schema
  • Updated .env.example and .env.local.example to prevent missing setup

Files Updated

  • .env.example
  • .env.local.example
  • content/logs/v2.1.4.mdx
  • content/logs/v2.1.4.en.mdx
v2.1.3

Locale Cleanup & Prompt Consistency - Julian Tarot

PerformanceStabilityLanding

This release simplifies locale support to match the current product scope and keeps AI prompts consistent with the user's question language.

Locale & Prompt Updates

  • Reduced supported locales to zh-TW and en across prompts, safety messages, and spread configs
  • Normalized AI prompt locale to follow the question text language
  • Mapped locale for region-aware prompts in intuitive reading

Type Safety & Cleanup

  • Fixed spread name/position access typing in reading flows
  • Corrected keywords access for non-general meanings
  • Added missing useRef import in TopBanner
  • Fixed blog category filtering to avoid null category types

UI Copy & Social Updates

  • Updated daily card CTA copy and standardized social proof display with monochrome iconography
  • Reordered footer social links and set official Threads/Instagram/LINE destinations
  • Swapped header CTA icon to a supported Lucide icon to avoid fallback question marks
  • Added Threads icon support for shared icon rendering
  • Backfilled English About page copy for newly added sections
  • Updated About page privacy icon to a supported keyhole shield variant
  • Removed markdown bold markers from About page text rendering
  • Removed global content-visibility wrapping to restore smooth reveal animations

Content Locale Naming

  • Use zh-TW as the default language: .mdx = Traditional Chinese, .en.mdx = English
  • Aligned docs/logs/pages filenames to avoid mixed locale conventions

Accessibility & Performance

  • Scoped content-visibility to the testimonials carousel to keep below-the-fold rendering light
  • Adjusted footer column headings to avoid skipped heading levels
  • Improved browser locale detection by mapping zh-* to zh-TW
  • Ensured the locale suggestion banner uses Chinese copy for zh-TW browsers
  • Switched production builds to webpack to avoid Turbopack middleware trace issues on Vercel

SEO & Policy Updates

  • Removed English blog URLs from the sitemap until translations are ready
  • Rewrote privacy policy and terms with Julian Tarot branding

Content Assets

  • Versioned blog images under public/images/blog to avoid missing deploy assets

Cleanup

  • Removed unused local scripts (add_dates.js, scripts/validate-locale-detection.ts)

Homepage Counter Fix

  • Added /api/stats/readings-count to supply the homepage readings counter

Files Updated

  • src/lib/language-detector.ts
  • src/lib/ai-gemini.ts
  • src/lib/ai-prompts.ts
  • src/lib/safety.ts
  • src/app/api/reading/interpret/route.ts
  • src/app/api/intuitive/route.ts
  • src/app/[locale]/(default)/reading/ai-result/page.tsx
  • src/app/[locale]/(default)/reading/result/page.tsx
  • src/app/[locale]/(flow)/reading/prepare/page.tsx
  • src/components/reading/CardMeaningDisplay.tsx
  • src/shared/blocks/common/top-banner.tsx
  • src/app/[locale]/(default)/daily-card/page.tsx
  • src/app/[locale]/(landing)/about/page.tsx
  • src/config/locale/messages/en/pages/daily-card.json
  • src/config/locale/messages/zh-TW/pages/daily-card.json
  • src/config/locale/messages/en/landing.json
  • src/config/locale/messages/zh-TW/landing.json
  • src/config/locale/messages/en/pages/about.json
  • src/shared/blocks/common/smart-icon.tsx
  • src/themes/default/blocks/testimonials.tsx
  • src/themes/default/blocks/footer.tsx
  • src/themes/default/pages/dynamic-page.tsx
  • src/shared/blocks/common/locale-detector.tsx
  • src/app/sitemap.ts
  • content/pages/privacy-policy.mdx
  • content/pages/terms-of-service.mdx
  • content/pages/privacy-policy.en.mdx
  • content/pages/terms-of-service.en.mdx
  • src/app/api/stats/readings-count/route.ts
  • public/images/blog/ziwei-vs-tarot/*.webp
v2.1.2

Landing Performance Refactor - Julian Tarot

PerformanceLandingAnimation

Refined the landing page rendering architecture to reduce first-load JavaScript and preserve visual polish.

Performance Architecture

  • Split the hero into a server shell with a client island for input, validation, and hints
  • Moved star background rendering to the server and kept CSS-only animations
  • Replaced framer-motion entry animations with lightweight reveal/CSS transitions

Landing Interaction Updates

  • Feature showcase uses links for spread entry and native details for toggles
  • Readings count stays dynamic via a small client component
  • Modal and rotating hints use CSS transitions instead of framer-motion

Files Updated

  • src/themes/default/blocks/tarot-hero.tsx
  • src/themes/default/blocks/tarot-hero-client.tsx
  • src/themes/default/blocks/feature-showcase.tsx
  • src/themes/default/blocks/feature-showcase-count.tsx
  • src/themes/default/blocks/trust-features.tsx
  • src/themes/default/blocks/comparison.tsx
  • src/themes/default/blocks/testimonials.tsx
  • src/themes/default/blocks/cta-line.tsx
  • src/shared/components/ui/reveal.tsx
  • src/components/tarot-ui/StarBackground.tsx
  • src/components/ui/RotatingHint.tsx
  • src/components/ui/QuestionValidationModal.tsx
  • src/config/style/global.css
v2.1.1

Blog Admin Enhancements - Julian Tarot

AdminBlogContentScripts

Improved blog management and presentation with admin upgrades, layout tweaks, and maintenance scripts.

Admin Improvements

  • Added keyword search for blog posts and categories
  • Added tag editing on post add/edit screens

Blog Detail Layout

  • Moved author name into the meta line with the publish date
  • Removed the right-side author card to simplify the reading layout

Content Maintenance

  • Added scripts to import blog content, redistribute dates, and sync dates back to content/blog
  • Normalized publish dates across the past 6 months and placed 2026 content in December 2025

Files Updated

  • src/app/[locale]/(admin)/admin/posts/page.tsx
  • src/app/[locale]/(admin)/admin/posts/add/page.tsx
  • src/app/[locale]/(admin)/admin/posts/[id]/edit/page.tsx
  • src/app/[locale]/(admin)/admin/categories/page.tsx
  • src/shared/models/post.tsx
  • src/shared/models/taxonomy.ts
  • src/themes/default/blocks/blog-detail.tsx
  • scripts/import-blog.ts
  • scripts/redistribute-blog-dates.ts
  • scripts/sync-blog-dates-to-files.ts
v2.1.0

Production Deployment - Julian Tarot

DeploymentVercelEdge RuntimeBug Fix

Successfully deployed Julian Tarot (朱莉安塔羅) to production on Vercel with custom domain configuration.

Deployment Summary

  • Domain: juliantarot.com (via Namecheap)
  • Platform: Vercel Edge Runtime
  • AI Provider: OpenRouter (Gemini 2.5 Flash)

Key Changes

Edge Runtime API Key Fix

Fixed critical issue where AI functionality was not working in production. The root cause was that environment variables were being read at module load time (build time), resulting in empty API keys in Edge Runtime.

Before (incorrect):

export const OPENROUTER_API_KEY = process.env.OPENROUTER_API_KEY || "";

After (correct):

export const getOpenRouterApiKey = () => process.env.OPENROUTER_API_KEY || "";

Files Modified

  • src/lib/ai-gemini.ts - Changed to runtime function exports
  • src/app/api/reading/interpret/route.ts - Runtime API key reading
  • src/app/api/reading/followup/route.ts - Runtime API key reading
  • src/app/api/validate-question/route.ts - Runtime API key reading

Environment Configuration

Required environment variables for production:

  • OPENROUTER_API_KEY - AI provider API key
  • DATABASE_URL - PostgreSQL connection string
  • AUTH_SECRET - Authentication encryption key
  • NEXT_PUBLIC_APP_URL - Production URL (https://juliantarot.com)

Verification

  • Local and cloud codebase verified to be identical
  • Environment variables are the only difference between environments
  • AI streaming functionality confirmed working in production
v2.0.0

ShipAny Two Released

ShipAny TwoNext.js 16AI SaaSBoilerplate

ShipAny Two is based on the latest Next.js 16, offering significant improvements in compilation performance with faster local development and reduced memory usage.

Quick Start

git clone git@github.com:shipanyai/shipany-template-two.git

ShipAny Two Documentation

v1.0.0

ShipAny One Released

ShipAny OneNext.js 15AI SaaSBoilerplate

ShipAny is a NextJS-based AI SaaS development framework with built-in rich components and AI SDKs, helping you quickly complete AI SaaS project development.

Quick Start

git clone git@github.com:shipanyai/shipany-template-one.git

ShipAny One Documentation