Changelog
v3.45A complete history of updates, features, and fixes. Check here after each deployment to verify which features should be present.
Fixed a critical bug where the AI would say 'I couldn't run a live web search' instead of actually searching. The query classifier was too conservative, treating factual questions as casual conversation. Now the classifier defaults to searching, with a fallback that forces search for any substantive query.
- •Critical: AI now always performs web search for factual queries (was incorrectly skipping search)
- •Classifier prompt rewritten to default to searching — this is a search engine, searching is the core function
- •Added fallback: substantive queries (3+ words) force search even if classifier says no
- •Misspelling correction in search queries (e.g., 'retelin' → 'Ritalin')
- •Removed restriction that blocked search when files are attached
- •Health/medical questions now always trigger search with high priority
- •14 new search classification unit tests
- •82 total tests passing
Added dark/light theme toggle with localStorage persistence. Updated social media preview (OG) image with new Real Fact AI Chat branding. Full QC pass across all pages in both themes. Fixed remaining old branding reference on Examples page.
- •Dark/light theme toggle in header (Sun/Moon icons) with localStorage persistence
- •New branded OG share image for social media previews
- •18 new tests for dark mode configuration and branding consistency
- •Social media preview image updated with Real Fact AI Chat branding
- •OG image references updated in index.html and ogMiddleware.ts
- •Fixed 'Try Confirm Fact-Checking' button on Examples page (now 'Try Fact-Checking')
- •Full QC verified all pages render correctly in both light and dark modes
New branded favicon and app icon featuring a checkmark + magnifying glass design in navy/teal. Added comprehensive vision integration tests confirming image analysis works correctly. Updated all icon references to CDN.
- •New Real Fact AI Chat favicon (checkmark + magnifying glass) in all sizes (16x16 to 512x512)
- •8 vision integration tests verifying multimodal image message construction
- •Favicon, apple-touch-icon, and PWA manifest icons updated to new branded design
- •All icon references now use CDN URLs for reliable delivery
Rebranded from 'No Hallucinations AI' to 'Real Fact AI Chat' across the entire app. Image attachments now show inline thumbnails instead of just filenames. Improved install instructions for desktop, Android, and iOS.
- •Image preview thumbnails shown inline in chat messages (click to view full size)
- •Clear platform-specific install instructions (desktop vs Android vs iOS)
- •Rebranded to 'Real Fact AI Chat' across header, footer, meta tags, OG tags, manifest, system prompts, and all pages
- •Desktop install prompt now shows Chrome/Edge address bar icon instructions
- •Android install prompt shows Chrome menu path
AI can now read and analyze pasted screenshots, photos, and images. Images are sent to GPT-5.2's vision API for full visual understanding. Both Home chat and Verify page support image uploads.
- •Fixed critical bug: pasted images were not being sent to the AI vision API (showed 'too small/unclear' error)
- •Images are now properly sent as multimodal content to GPT-5.2 with high-detail vision analysis
- •Image uploads on Verify page (PNG, JPG, GIF, WebP) — previously only documents were supported
- •System prompts updated with image analysis instructions for both chat and fact-checking
- •Smart file type detection: images go to vision API, documents get text extraction
- •Mixed uploads supported: attach both images and documents in the same message
- •23 new unit tests for image vision integration
Home page chat now uses OpenAI web search alongside Tavily in parallel for dramatically better data extraction. Source citations show publisher name badges on both Home and Verify pages. AI cites by publisher name (Wikipedia, PAGASA) instead of generic S1/S2 IDs.
- •OpenAI web search (gpt-4o-search-preview) as primary search provider on Home page
- •Parallel search: OpenAI + Tavily run simultaneously, results merged and deduplicated
- •Publisher name badges on Home page citations (matching Verify page style)
- •AI now cites sources by publisher name (e.g., [Wikipedia](url)) instead of generic [S1] IDs
- •Search results increased from 5 to 8 per query for better coverage
- •Excerpt length increased from 500 to 800 chars for richer context
AI now answers with confidence qualifiers instead of refusing when partial evidence exists. Source badges show actual publisher names (ICAO, Wikipedia, PAGASA) instead of generic S1/S2. New 'Show reasoning' panel reveals search queries, source counts, processing time, and model settings for every result.
- •Softer refusal threshold — AI presents data with confidence caveats instead of refusing entirely
- •Auto-includes derived calculations (per-day, per-capita, percentages) like ChatGPT does
- •Source citations show actual publisher names as inline badges instead of generic S1/S2/S3
- •Evidence Table resolves source IDs to real publisher names
- •Inline [S1] references in detailed text replaced with clickable source links
- •'Show reasoning' collapsible panel below each fact-check result
- •Displays search queries used, sources found vs cited, model and reasoning effort
- •Shows processing time, tokens used, active toggles, and search providers
- •Full reasoning metadata returned from backend for transparency
Switched to direct OpenAI GPT-5.2 API with reasoning_effort control for smarter fact-checking. Added OpenAI web search as a supplementary source alongside Tavily. Fixed conversation history and invite code display bugs on mobile.
- •Direct OpenAI GPT-5.2 API integration with reasoning_effort parameter — high for Verify, medium for Home chat, low for classification
- •OpenAI web search (gpt-4o-search-preview) as supplementary search alongside Tavily for better source coverage
- •Automatic fallback to Forge API if direct OpenAI calls fail
- •New openai-direct.ts module with full TypeScript types and 10 unit tests
- •Verify page conversation sidebar now shows all conversations (removed source filter that hid pre-v3.2 conversations)
- •Invite code 'Code saved' badge no longer opens edit mode when tapped on mobile
- •JSON schema for direct OpenAI calls now includes all required fields for strict mode
- •Behavior test timeouts increased to 60s to accommodate reasoning model latency
- •Fact-checking now uses GPT-5.2 with high reasoning effort for deeper analysis
- •Search results deduplicated across Tavily and OpenAI sources
- •Chat classification uses low reasoning effort for faster response times
The Home page chat now searches the web for factual questions, providing verified answers with citations instead of relying solely on LLM training data. Conversation histories are now properly separated between Home and Verify pages with source indicators.
- •Chat Web Search Integration — Home page chat now auto-detects factual questions and searches Tavily for real-time evidence before answering
- •Web search indicator badge shows when a chat response used web sources vs pure LLM
- •Conversation source column — conversations now track whether they originated from Home or Verify page
- •Source icons in conversation sidebar — blue Home icon or amber Verify icon next to each conversation
- •Clear/refresh button next to 'Claim or Question' label on Verify page
- •Separate 'Share link' and 'Copy text' buttons for sharing results
- •Conversation history no longer mixes Home and Verify conversations — each page shows only its own
- •Date hallucination bug — system prompts now include current date to prevent LLM from assuming article dates are 'today'
- •Removed asterisk (*) from 'Claim or Question' label on Verify page
- •Share button now properly separates link sharing from text copying
- •Chat responses for factual questions now include citations from real sources
- •Time-sensitive query detection — searches prioritize recent results when questions mention 'today', 'this week', etc.
Major upgrade to the fact-checking engine: locale-aware search queries detect currencies and countries to find regional sources, direct URL verification catches fabricated links, and improved prompts eliminate false 'cannot access websites' responses.
- •Locale-aware search: detects currency symbols (₪, €, £, ¥, ₹), country names, and local retailers to add region-specific search queries
- •Direct URL verification: extracts URLs from claims and verifies them by fetching, detecting 404s, redirects, and fabricated links
- •URL verification results injected into LLM prompt as direct evidence for more accurate verdicts
- •Support for 9+ locales: Israel, UK, Europe, Japan, India, Brazil, Australia, Canada, Germany, France
- •Verification prompt now explicitly instructs LLM to never claim it cannot access websites or external sources
- •Search query generation expanded from 5 to 6 max queries to accommodate locale-specific searches
- •Better handling of claims containing specific URLs (amazon.com, ksp.co.il, techradar.com, etc.)
Added Share All Results button to the Verify page summary bar, Share/Copy/Download buttons below Homepage AI responses, upgraded the shared results page to handle multi-claim reports, and fixed conversation restoration bug.
- •Share All Results button on Verify page summary bar with native share support and summary text
- •Share, Copy reply, and Download buttons below Homepage AI responses (next to Fact-check this reply)
- •Multi-claim display on shared results page (/share/:id) with collapsible claim cards
- •Summary action bar on shared results page with Share/Copy/Download buttons
- •Conversation restoration bug: clicking sidebar items on Verify page now loads the correct conversation data
- •State clearing when switching between conversations to prevent stale results
Fixed the microphone button appearing pressed/highlighted when not recording, and verified that large multi-claim verifications (65+ claims, 124KB) save correctly after the MEDIUMTEXT database upgrade.
- •Mic icon no longer appears pressed/active when idle (changed from outline to ghost variant to match other input bar icons)
- •Verified MEDIUMTEXT fix: 65-claim entry (124.8 KB) and 20-claim entry (72.9 KB) both saved successfully, exceeding the old 64KB TEXT limit
Added Copy reply and Download reply buttons to the Homepage, and Copy all results and Download report buttons to the Verify page. Users can now easily copy AI responses to clipboard, download full verification reports as text files, and share results across both pages.
- •'Copy reply' button on Homepage — copies the full AI response text to clipboard
- •'Download reply' button on Homepage — downloads the AI response as a .txt file
- •'Copy all results' button on Verify page — copies all claim verdicts and explanations to clipboard
- •'Download report' button on Verify page — downloads the full verification report as a .txt file
- •Share button on Homepage now uses native share sheet with URL + text fallback to clipboard
Added a 'Fact-check this reply' button below every AI response on the Homepage, allowing one-click navigation to the Verify page with the response pre-filled. Also fixed three bugs from v2.64: modal sizing on desktop, button click propagation on Windows, and conversation restore on navigate-back.
- •'Fact-check this reply' button with shield icon appears below every AI response on the Homepage
- •Clicking the button navigates to /verify with the AI response pre-filled in the textarea via localStorage
- •Toast notification confirms the text was loaded on the Verify page
- •'See original' modal now uses max-w-2xl on desktop for better readability
- •Button click propagation fixed on Windows — stopPropagation prevents collapsible trigger from swallowing clicks
- •Inconsistent localStorage key for verify conversations fixed (was using two different key names)
- •Conversation and original text now properly restore when navigating away and back to the Verify page
- •Verification data save now includes all fields (detailedExplanation, asOf, evidenceTable, limitations) for proper restoration
Added 'See original' button to each verified claim that opens a modal showing the original text with the relevant portion highlighted. Renamed 'Copy Result' to 'Copy this claim' for clarity.
- •'See original' button on each claim card opens a modal showing the original pasted text with the matching portion highlighted in amber
- •Fuzzy text matching finds the claim's origin even when the AI slightly rephrased it during extraction
- •Modal includes 'Copy full text' button for convenience
- •Renamed 'Copy Result' button to 'Copy this claim' for clearer intent
- •Action buttons now wrap on mobile (flex-wrap) instead of overflowing
Fixed critical bug where large verification results (many claims) were not saved to conversation history. Upgraded database column from TEXT (64KB) to MEDIUMTEXT (16MB) and added retry logic with user-visible error reporting.
- •Verification results for large multi-claim checks (50+ claims) now reliably save to database
- •Database column upgraded from TEXT (64KB limit) to MEDIUMTEXT (16MB limit) for verification data
- •Added retry logic (3 attempts) for saving verification results to conversation history
- •User now sees a toast notification if results fail to save after retries
- •Large verification data automatically trims citation metadata if needed to fit
Fixed critical mobile bug where the conversation sidebar would open full-screen on page load, completely hiding the search bar. Sidebar now always starts closed on mobile devices.
- •Conversation sidebar no longer auto-opens on mobile, preventing search bar from being hidden
- •Mobile users now always see the search bar when visiting the homepage
- •Sidebar open/close state only persists on desktop (640px+); mobile always starts fresh
Published to realfact.io custom domain. Created comprehensive project knowledge base (1,100+ lines) covering architecture, cost analysis, risk assessment, competitive landscape, operational runbook, and agent handoff instructions. Updated all documentation URLs.
- •Comprehensive project knowledge base document (28 sections, 1,100+ lines)
- •Cost analysis and unit economics for all verification levels
- •Risk assessment covering technical, business, and operational risks
- •Competitive landscape analysis (Perplexity, Google, ChatGPT, Snopes, etc.)
- •Operational runbook with step-by-step procedures
- •Stakeholder communication templates with SQL queries for metrics
- •Roadmap with T-shirt effort estimates for 20 future features
- •ChatGPT Operator QC testing prompt document
- •All documentation URLs updated to realfact.io
- •Published to custom domain realfact.io
Fixed 12 failing tests (now 270/270 passing), created testing access code, completed two full browser-based QC runs covering all major features, and fixed Sonner toast module duplication.
- •Sonner toast module duplication (re-export toast from wrapper)
- •12 failing tests: flexible assertions for LLM non-determinism
- •DeepResearch test: flexible citation property checks
- •ClaimExtraction tests: 30s timeouts for LLM calls, wider claim count range
- •Websearch tests: handle API response format variations
- •Conversation test: MySQL timestamp precision fix (1s delays)
- •Testing access code with $60 budget for QC
- •Test invite code for automated test suite
- •270/270 tests passing (fixed from 258/270)
- •Two full browser-based QC runs completed
Playwright tests now run on 6 browser targets. Added /qa page with owner-only QA dashboard featuring runtime health checks and deployment checklist. Health endpoint now checks Tavily API status.
- •/qa page: owner-only QA dashboard with runtime health checks
- •29-item manual deployment checklist on QA page
- •Deployment readiness summary with pass/fail counts
- •Admin-only QA link in footer (Shield icon, visible only to admins)
- •Login button on QA Access Denied screen
- •Tavily API status check in /api/health endpoint
- •Playwright tests run on Chrome, Firefox, Safari, iPhone 14 Pro Max, Pixel 7, iPhone 13
- •QA page protected by admin role check
- •198 vitest + 60 Playwright (20 per browser × 3 browsers)
Fixed sidebar desktop overlay bug (now uses push layout). Created comprehensive QA system with feature inventory, visual tests, regression tests, and pre-deploy gate script.
- •Sidebar desktop overlay bug — now uses push layout instead of overlay
- •FEATURE_INVENTORY.json — complete feature inventory with required elements
- •20 Playwright visual tests for UI verification
- •21 vitest regression tests for QA
- •Pre-deploy gate script for automated checks
- •199 QA tests passing across all test suites
Added Playwright e2e tests that submit actual queries through the full stack with a real invite code, verifying the complete user journey from entering an invite code to receiving an AI response.
- •Real e2e test: enter invite code and submit search query, verify AI response contains correct answer
- •Real e2e test: conversation appears in sidebar after search
- •Real e2e test: verification level selector affects response
- •Real e2e test: enter invite code and submit fact-check claim, verify verdict and citations
- •Real e2e test: Quick check level returns faster result
- •Real e2e test: health endpoint confirms DB and LLM reachable
- •211 total tests (170 vitest + 35 smoke Playwright + 6 real e2e Playwright)
- •Real e2e tests hit actual LLM and Tavily APIs — catches 'search stopped working' regressions
Backfilled stale invite counters from request logs, made invite code visible without scrolling, added desktop sidebar close overlay, added Hebrew and multi-language voice recognition, and expanded deployment checklist tests.
- •Backfilled stale invite counters from requestsLog (24 codes updated)
- •Invite code card now visible immediately without scrolling (reduced padding, visual emphasis)
- •Conversations sidebar now closeable on desktop via backdrop overlay click
- •Multi-language voice recognition with language selector (Hebrew, Arabic, Spanish, French, German, Russian, Chinese, Japanese)
- •Voice language preference persisted in localStorage
- •Auto-detect language mode for voice input
- •18 new deployment checklist regression tests
- •205 total tests (170 vitest + 35 Playwright e2e)
Fixed bug where chat requests were logged but not tracked against invite code spending counters.
- •chat.ts now calls updateInviteUsage() after each LLM request (was only in factcheck.ts)
- •Request logs now include provider, model, token counts, and cost estimates
- •Added regression tests for chat.ts usage tracking parity with factcheck.ts
Added this changelog page, rate-limited the health endpoint with 30s cache, and added Playwright e2e tests for search and fact-check flows.
- •Changelog page at /changelog with full version history
- •Playwright e2e tests for search query flow and fact-check claim submission
- •Changelog link in footer navigation
- •Health endpoint now cached for 30 seconds to prevent abuse
- •Health response includes `cached` field and `X-Health-Cache` header
- •Total test coverage: 140+ vitest + 25+ Playwright e2e tests
Added /api/health endpoint for post-deploy verification and Playwright browser tests for runtime regression detection.
- •/api/health endpoint returning app version, DB connectivity, LLM reachability
- •23 Playwright e2e browser tests covering all pages, navigation, and mobile menu
- •Health endpoint vitest tests (12 tests)
- •Playwright test infrastructure with Chromium
- •Post-deploy checklist: vitest + Playwright + curl /api/health
Extracted shared hooks, added error boundaries, and expanded the regression test suite.
- •useInviteCode hook consolidating invite code logic across Home and Verify
- •useConversationSidebar hook for shared sidebar state management
- •Route-level error boundaries so one page crash doesn't kill the app
- •ConversationSidebar rendering moved into Layout.tsx (single source of truth)
- •Enhanced ErrorBoundary with chunk-error detection and retry/go-home recovery
- •Regression test suite expanded to 126 tests
Created a single Layout.tsx component eliminating ~400+ lines of duplicate nav/header/footer code across all pages.
- •Shared Layout.tsx with responsive header, hamburger menu, active link highlighting, and footer
- •headerExtra prop for page-specific header content (e.g., invite code badge)
- •Migrated Home, Verify, About, and Examples to use shared Layout
- •Eliminated recurring hamburger menu and nav disappearing bugs
- •Regression test suite updated to 96 tests
Comprehensive 83-test regression suite covering all critical features and UI elements.
- •83-test regression suite in server/regression.test.ts
- •Tests for search, verify, about, examples, share, privacy, terms pages
- •Tests for API routes, database schema, and component structure
Fixed mobile hamburger menu, improved responsive design, and enhanced PWA support.
- •Hamburger menu not opening on mobile devices
- •Navigation links disappearing on certain viewport sizes
- •PWA install prompt handling
- •Responsive design across all breakpoints
- •Touch targets for mobile interaction
Added shareable result links and curated examples page showing search and fact-check capabilities.
- •Share page at /share/:id for sharing verification results
- •Examples page with curated search and fact-check demonstrations
- •Copy-to-clipboard for share links
Added voice transcription for hands-free queries and camera input for image-based fact-checking.
- •Voice input with Whisper transcription
- •Camera capture for image uploads
- •File attachment support (up to 20 files, 10MB each)
Added persistent conversation sidebar with history management and resume capability.
- •ConversationSidebar with history list
- •Resume previous conversations
- •New conversation button
- •Conversation persistence in database
Launched the Confirm fact-checking system with multi-source verification and confidence levels.
- •Verify page at /verify for fact-checking AI answers
- •Three confidence levels: Quick check, Standard check, Deep Research
- •Multi-source verification with Tavily search integration
- •Verdict system: Verified, Partially Verified, Contradicted, Unverifiable
- •Source citations with credibility scoring
Launched the Real Fact AI Chat search engine with real-time fact-checked answers.
- •AI-powered search with built-in fact-checking
- •Real-time streaming responses
- •Source attribution for all claims
- •Invite code system for beta access
First release of Real Fact AI Chat with core search functionality.
- •Core application framework with React + tRPC
- •OAuth authentication
- •Database integration with Drizzle ORM
- •About page with project information
- •Privacy policy and terms of service