Skip to content

v1.3.1

Choose a tag to compare

@kkoishichan kkoishichan released this 20 Mar 16:36

What's New

LLM Cross-Validation

  • LLM output cross-validation: New pkg/llmvalidate package performs a second LLM call on every AI response to simultaneously validate JSON structure and audit content safety
  • Fact-checking with web search: Cross-validation integrates Firecrawl search results to verify factual claims against web sources, flagging inconsistencies and unverified data
  • Content safety review: Automated detection of harmful content (crisis hotline appended), unqualified medical advice (disclaimer appended), and sensitive information leakage (API keys, system prompt fragments)
  • Local text sanitization: Unified Sanitize / StripCodeFence functions consolidate scattered cleanup logic (Qwen3 <think> tag stripping, markdown code fence removal) from 5 service files into one reusable package
  • Knowledge Q&A mode: All 3 companion system prompts (Mom/Dad/Professional) now instruct the AI to answer factual and knowledge questions directly with specific, useful information instead of deflecting with emotional encouragement

Dad Console

  • Dad chat style preference: New dad_chat_style field (terminal/ambient) stored in user model; selectable from dad profile with migration backfill
  • Image zoom preview: Full-screen image preview for task proof photos and memory cards
  • Dad daily briefing cache: AI-generated daily briefing cached in sessionStorage to avoid regeneration on page refresh

Tasks & Whisper

  • Memory card regeneration: Mom can regenerate verified task memory cards via POST /tasks/:id/card/regenerate
  • Whisper pre-generation on login: Mom login triggers background pre-generation of daily whisper questionnaire

Bug Fixes

  • Graceful pgvector handling: Database migration no longer crashes when pgvector extension is unavailable; RAG features are disabled with a warning instead of fatal error
  • Nil pointer crash on new user: Fixed PreGenerateForUser panic when a mom user has no partner bound
  • Backend auto-restart: Entrypoint wraps backend in auto-restart loop with health check before starting nginx
  • UTF-8 truncation bug: Community post preview now uses []rune slicing instead of byte slicing to prevent garbled Chinese characters

Full Changelog: v1.3.0...v1.3.1