Pipeline controls are now live on the main screen. TS Environment and AI Model are always visible; a collapsible Settings panel gives you Liveboard Name, Data Size (Small / Medium / Standard / Large), Geo Scope, and more. Values take effect immediately — no more save-and-reload cycle.
Liveboard visualizations now get human-readable titles from an AI pass before the liveboard is published. Raw column-name titles like "AspUsd by ProductCategory" become "Avg Selling Price by Category." One LLM call renames all vizzes in context before TML import.
Fixed a bug where dimensional breakdowns ("Revenue by Region") were being incorrectly promoted into the KPI group. The KPI section now contains only true single-metric KPIs.
Multi-dimension breakdowns now render as stacked columns instead of defaulting to line charts. Categorical chart type detection improved so the right chart type is applied consistently.
Tags now successfully assign to liveboards on every run. The API call was returning 404 — fixed by correcting the object type mapping for the v2 endpoint.
Expanded liveboard TML limit from 4,000 to 15,000 characters so the grader sees all 10 visualizations, not just the first 2–3. Fixed schema extraction and DATES table row count (now always 730 rows / 2 years). Added two-level timeout to prevent MCP hangs from stalling the whole suite. Suite is now passing 8/8 runs with a B average quality score.
Established a clean main / develop / hotfix branching strategy. Tagged v1.0.0 on main. Sprint work now flows through develop → hf-test; production releases go through main → hf.
Added as an available model option in the UI.
Introduced a dedicated test HF Space so changes can be validated end-to-end before reaching users. A visible banner appears in the test environment so there's no confusion about which instance you're in.
Built a Playwright-based test harness that runs against the live test app and grades each run with an LLM. Each run gets a quality score (0–100) across data, model, liveboard, and story dimensions. Handles real-world test logistics: auto re-login, space rebuild detection, stuck-stage timeouts, and early bail on pipeline errors.
Caught and fixed a NameError in the MCP liveboard creation function — a variable referenced throughout but defined under a different name in the parameter signature. Every liveboard creation attempt was crashing silently; the quality suite caught it.
DATES table now always spans two full years. Default fact table size bumped from 1,000 to 10,000 rows. Snowflake internal type names (FIXED, REAL) now handled correctly across all conversion layers.
Replaced 50+ per-run AI API calls for entity generation with a seed-and-cycle approach — one call, then cycle to fill the target. Eliminated timeout failures on larger presets.
Every pipeline stage now writes structured logs to Supabase. ThoughtSpot URL is now a required input — no more silent fallbacks to wrong environments. Admin user list sorted by most recent login in EST.
Completely rebuilt the demo selection system. Replaced the flat two-field form with a 3-level cascade: Industry → Line of Business → Function, with 15 lines of business across all verticals. The matrix drives curated KPIs, story questions, persona, and talking points for each combination, with a smart fallback chain. A Custom path handles demos outside the defined matrix.
Rebuilt question generation around a story-first approach — curated narrative questions, KPI definitions, persona context, and business problem are injected into the AI prompt as primary guidance instead of letting the AI guess from available columns.
App tab and Chat tab separated. Custom vertical path added. Spotter Viz generates dual stories (matrix-grounded + AI-generated). AI Feedback and Deploy Log consolidated. Pipeline progress indicator now correctly advances to Complete. Remember Me on login.
Comprehensive logging across all pipeline stages with configurable log levels (off / regular / verbose) settable in Admin. Admin run history tab shows every pipeline run, user, status, failure stage, and duration. Per-session state isolation for all loggers — concurrent users no longer share state.
Fixed story generation flow. Output is clean numbered prompts only, with full model URL included so Spotter doesn't ask which data source to use.