Skip to content

First released:

Changelog

A comprehensive look at what TIF1 AI offers today. New features are shipping regularly — check back for updates.

New

AI & Query Engine

  • Three AI providers with dynamic model selection: Google AI Studio (Gemini models with generous free tier), OpenRouter (unified API for GPT-4o, Claude, Llama, and 100+ models), and Cerebras (wafer-scale Llama inference). Per-provider base URL configuration for self-hosted and compatible endpoints.
  • Natural language to SQL: Ask questions in plain English and get answers. Structured JSON output includes understanding, answer, sql, explanation, tables_used, expected_result_shape, chart_suggestion, share_slug, and suggestions. AI-generated follow-up question suggestions (up to 3 per answer). Dynamic schema pruning — only tables and columns relevant to the question are included in the prompt, reducing token usage and improving accuracy. Temporal context injection (current year/date in system prompt) for season-aware queries.
  • Self-healing SQL: Automatic repair loop — up to 3 attempts when DuckDB reports errors. Each repair includes the failed SQL, the exact error message, and full conversation context. One browser-provider repair attempt for error classification before routing to the AI for repairs.

F1 Data & Performance

  • DuckDB-WASM in your browser: All SQL runs client-side — zero server round-trips for data processing. Columnar analytics engine 10–100× faster than traditional browser SQL.
  • Smart Parquet data layer: 50 F1 tables (~9 MB total) as Parquet files. Only tables referenced by the AI's SQL are downloaded — not the entire database. Column-level pruning at the Parquet level. SHA-256 content hash verification per downloaded file. ETag-based incremental updates via a ~5 KB manifest — only tables with changed content hashes are re-downloaded; HTTP 304 responses make unchanged downloads free. 7-day IndexedDB cache expiry with version-based invalidation via schema hash.
  • Layered SQL safety: Statement count check (rejects multi-statement SQL). DDL/DML keyword rejection (CREATE, DROP, ALTER, TRUNCATE, INSERT, UPDATE, DELETE). Table allowlist enforcement against the 50 F1DB tables. Row limit wrapping (auto-appends LIMIT clause). Comment and string literal stripping before keyword analysis to prevent SQL injection via obfuscation.
  • Data session orchestration: Manifest prefetching overlapped with AI calls to hide network latency. Two-phase prepare-then-execute architecture supporting the repair loop. Automatic table eviction for unused tables to control memory. Memory policy controls (max rows per result, max registered tables, eviction behavior). AbortSignal propagation for cancellation support.

Charts & Visualization

  • AI-generated charts from query results: Supports bar, line, scatter, and pie charts with title, x-axis, y-axis, and optional group key. Multi-series auto-detection — when results have 3+ columns, grouping columns with 2–12 unique values are automatically identified for grouped/stacked charts. F1-themed 12-color palette with both translucent and solid variants. Chart validation against query result geometry (column existence, data type compatibility). Rendered via Layerchart — SVG-based, Svelte-native, crisp on all screen densities, GPU-composited animations.
  • Interactive chart controls: Hover tooltips, click-to-filter legends, and responsive resizing. Configurable chart type override and title editing. Multi-series group selection. Fullscreen chart expansion.

Chat Experience

  • Token-by-token streaming: Answers stream in real-time via SSE (Server-Sent Events). Stop-generation button to abort mid-response. Auto-scroll keeps the viewport at the latest content. Time-to-first-token and total-time metrics captured per response. Token usage tracking (prompt, completion, total) per AI call.
  • Rich results display: Syntax-highlighted SQL in an expandable block with one-click Copy SQL button. Copy Results button for table data. Responsive HTML result tables with row count display and truncation for large result sets. Fullscreen table view for large datasets. Column sorting in result tables. CSV export (RFC 4180 compliant with proper escaping) and JSON export (pretty-printed). Download-as-file via Blob URL.
  • Local conversation history: Stored in IndexedDB via Dexie.js. Rename, delete, and clear all local data. Collapsible conversation sidebar with search. AI-powered conversation summarization (2–3 sentence summaries for conversation listings). Conversation context injection — previous Q&A pairs included in AI prompts for follow-up awareness. Provider and model tracking per message.
  • Saved queries: Save frequently asked questions with custom names. One-click re-run from the side rail. Tag support with GIN-indexed text array for fast filtering. Server-side persistence for sponsor tier.
  • Message voting: Upvote/downvote on any assistant answer. Anonymous and authenticated users alike can provide feedback. Full context collected: provider, model, question, SQL, answer text, and error details. Optimistic UI with IndexedDB durability — vote survives page refresh before server confirmation. Admin feedback dashboard with vote analytics and context inspection.
  • Shared conversations (Sponsor): Generate public share links at /q/[id]/[...slug]. AI-generated URL-friendly slugs (5–8 word hyphenated summaries). Profanity moderation via leet-speak normalization and blocklist. SEO metadata on shared pages (OpenGraph, Twitter Card, canonical URL). Share dialog with copy-link and open-in-new-tab actions.
  • Suggestion chips: 5 curated starter suggestions for new users. One-click fills question into the composer — no typing needed.

Accounts & Tiers

  • Free tier — no account required: Full query functionality with your own API key (BYOK). Data stored exclusively in your browser's IndexedDB — zero server-side data collection.
  • Sponsor tier — $4.99/month via GitHub Sponsors: Cloud-synced chat history in PostgreSQL. Server-side AI proxy (your browser never sees API keys). Encrypted API key storage (AES-256-GCM). Server-side saved queries with tags. Shared public conversations. Access from any device with full history.
  • Sign in with GitHub or Google: Auth with GitHub and Google OAuth only — no email/password needed, faster onboarding and fewer attack surfaces. Manual sponsor refresh in account settings.
  • User profiles at /u/[handle]: Avatar, display name, patron badge, join date, shared conversations list. Auto-generated handles on first login, editable with 30-day cooldown. Custom @handle validation (1–30 chars, lowercase letters/numbers/underscores only). 27 reserved handles protecting routes (admin, api, login, settings), brands, and tier names.
  • Patron badges: Blue star for active sponsors, Gold star for lifetime supporters, Dimmed star for past sponsors. Hover/touch reveals membership duration. Badge displayed on profiles, chat header, and shared conversations.
  • Account deletion: One-click cascading deletion: saved queries → provider keys → conversations → user profile. Sponsor accounts get a 48-hour recovery window before permanent deletion.

Sponsor Features

  • Cloud sync: Conversations stored server-side in PostgreSQL as JSONB with GIN indexing for full-text search. Access your history from any device. Conversation search across all past chats.
  • Server AI proxy: Browser calls /api/chat → server decrypts your AES-256-GCM key → proxies to AI provider → discards key. Keys never reach your browser, never appear in logs. Response streaming proxied transparently.
  • Encrypted key storage: AES-256-GCM envelope encryption with unique IV per encryption and authenticated GCM tags. Key decrypted per-request and immediately discarded. Multiple named keys per provider with active key selection.
  • Server-side saved queries: Stored with tags. Cloud persistence — never lost on browser cache clear. One-click re-run from sidebar.

Security & Privacy

  • AES-256-GCM encryption for all sensitive paid-tier data. Unique IV per encryption operation. Authenticated encryption with GCM authentication tags. Master encryption key stored exclusively in environment variable, never persisted to database. OAuth tokens encrypted at rest.
  • Strict Content Security Policy
  • CSRF protection: Origin/Referer validation on all POST, PUT, PATCH, DELETE requests.
  • Rate limiting: In-memory token bucket algorithm for /api/chat — 30 requests per minute per key.
  • API key protection: Structured JSON logs include userId, provider, and model only — zero key leakage in journald, PostHog, or Cloudflare. Keys encrypted before database storage and decrypted per-request. Provider key masking in UI (bullet characters + last 4 characters).
  • EU data residency: Hosted on Helsinki, Finland. All server-side data processing under EU jurisdiction and GDPR. Anonymous tier: zero personal data collected server-side. Only one essential cookie: the Auth session cookie. No tracking, marketing, or third-party cookies — no cookie consent banner required.

UI / UX

  • 20 themes: 11 F1 team-inspired (Haas — white, Mercedes — teal, Aston Martin — green, Red Bull — gold, Williams — blue, Racing Bulls — purple, McLaren — orange, Sauber — green, Alpine — pink, Ferrari — red) plus 9 community favorites (Dracula, Synthwave, Forest, Sunset, Coffee, Dim, Night, Luxury, Halloween) and the Tracing Insights branded theme. Theme switcher with visual preview chips. Theme persists across sessions via localStorage.
  • Mobile-first design: 48px minimum tap targets throughout. Collapsible side rails. Hamburger menu with full navigation tree. Optimized from 320px phones to 4K desktops. Progressive enhancement — initial content renders without JavaScript via SSR. Glass-morphism panels with backdrop blur. Shimmer animation for loading states. Pulse-glow indicators for status changes.
  • Accessible to everyone: Skip-to-content link as first focusable element. ARIA labels on all interactive elements. Semantic HTML landmarks. Focus-visible outlines on all focusable elements. High-contrast text in all 20 themes. Proper heading hierarchy (h1→h2→h3). Table scope attributes for screen reader navigation.
  • Service worker: Caches app shell (build output, assets) and immutable files. Excludes /f1db/* Parquet files (cached separately via IndexedDB). Version-based cache invalidation on new deploys. Update banner with reload button when a new service worker version is detected.
  • Toast notifications & status indicators: Non-blocking status messages for query progress, errors, copy confirmations, and key operations with auto-dismiss. Skeleton loader — placeholder shimmer while DuckDB initializes or tables load, prevents Cumulative Layout Shift (CLS). Database status indicator — green/amber/red with hover tooltip revealing initialization progress, registered table count, and cache status.
  • Provider key management UI: Add keys with custom names per provider. Switch active key with one click. Delete keys with confirmation. Test connectivity by fetching available models from the provider API. Masked key display (bullet characters + last 4 characters). Per-provider model selection dropdown. Server-side key management for sponsor tier with encrypted storage status.

Design System

  • Typography: Plus Jakarta Sans for body text and UI elements (clean, modern geometric sans-serif). Space Grotesk for headings, logo, and display text (distinctive character with scientific precision). Font stack with system-ui fallbacks for zero-latency text rendering. Proper font-display: swap behavior.
  • Design tokens: Custom CSS color tokens: surface (#09090b), card (#18181b), ink (#f4f4f5), muted (#a1a1aa), line (#27272a), accent (#e11d48), danger (#ef4444), success (#10b981). Utility classes: .tap-target (48px minimum touch area), .glass (semi-transparent with backdrop blur), .glass-strong (opaque variant). Custom animations: shimmer, pulse-glow, slide-in, fade-in. CSS bundle budget enforced at 27 KB.
  • Component architecture: Svelte 5 runes syntax throughout ($state, $derived, $effect, $props). TypeScript strict mode. Components split into .svelte templates and .svelte.ts logic modules for testability. Lucide Svelte icons for consistent, tree-shakeable icons.

Improved

(Initial release — nothing to compare against yet.)

Fixed

(Initial release — nothing to compare against yet.)

Removed

  • Groq provider — Removed due to persistent integration issues (frequent 503/504 errors, inconsistent structured-output support, lower context windows than alternatives, and unreliable streaming behavior). The remaining providers (Google AI Studio, OpenRouter, Cerebras) continue to cover the full range of model capabilities and free-tier options.

Others

(Initial release — nothing to compare against yet.)

TracingInsights Logo

Your one-stop home for unparalleled F1 insights

Connect on Socials

TracingInsights and this website are unofficial and are not associated in any way with the Formula 1 companies. F1, FORMULA ONE, FORMULA 1, FIA FORMULA ONE WORLD CHAMPIONSHIP, GRAND PRIX and related marks are trade marks of Formula One Licensing B.V. This is a non-commercial, fan-made application. Data is used for non-commercial, fair use. All product and company names are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.

Any product names, logos, brands, and other trademarks or images featured or referred to within the app are the property of their respective trademark holders. These trademark holders are not affiliated with TracingInsights or its contributors. They do not sponsor or endorse TracingInsights or any of our products.

© 2026 TIF1 AI · Hosted in Germany.