Changelog
Selected shipped changes and the reason behind them. This page is updated when release notes are prepared; it is not a complete deployment log.
- docs
Marketing site SEO/AEO/GEO overhaul
- · Built 8 new pillar pages: pricing, active-table, smart-columns, mcp, security, about, glossary, changelog
- · Added 4 honest comparison pages: vs Clay, Airtable, n8n, Zapier
- · Schema.org overhaul: @id entity-graph, Speakable spec for AI search, removed deprecated FAQPage and fake aggregateRating
- · Hardened security headers (CSP, COOP, CORP), AI-crawler robots.txt, redirected app routes 301
- · Added llms.txt-style structured content for AI search engine citation
- fix
Production audit hardening
- · Fixed 14 P0/P1 issues from production readiness audit
- · Tightened tenant isolation, validated all external inputs, hardened webhook ingestion
- · Removed legacy continue-on-error from CI deploy.yml for new lint issues only
- perf
Batch-aware webhook ingestion
- · Webhook handler now does O(1) DB queries per batch instead of O(N) per record
- · Reduced per-record database query amplification on supported batch payloads
- feat
Ops-centric consumption widget
- · Dashboard now shows ops used / ops remaining instead of dollar estimates
- · Aligns with how customers think about spend at the smart-column level
- feat
Record-DAG execution engine
- · Smart columns now declare deps via {{template}} refs, DAG built automatically on column mutations
- · Per-record waterfall execution: A → B → C → D in topological order
- · Cross-record parallelism is bounded at 5 on Free; paid-plan capacity remains planning information
- · Cycle detection at build time with named-cycle errors
- · Cascade-on-edit: editing a cell auto-recomputes downstream cells
- feat
Enterprise virtual scrolling (AG Grid pattern)
- · Record-ID index endpoint with viewport-driven block cache (100 records/block)
- · LRU eviction and virtualized rendering keep browser memory bounded to the active cache
- · Actual load time and supported size depend on record width, network, and current plan limits
- feat
Extract column kind
- · New 8th column kind: pulls a JSON field from upstream smart column with zero API cost
- · Source column ID auto-wired as DAG dep, runs immediately after source completes
- · Common pattern: explode a single Clearbit/ZoomInfo response into per-field columns
- security
P0 security hardening pass
- · Per-user Turso DB now enforced, no system-DB fallback
- · Turso auth tokens AES-256-GCM encrypted in _ht_users.turso_db_token
- · MCP calls use authenticated UserContext plus tenant and workspace routing controls
- · Distributed rate limiting via Cloudflare Durable Objects (RateLimiter)
- · Security and activity audit records for covered key, MCP, authentication, and workspace events
- · JWT verification via Web Crypto API (zero npm deps)
- · Retired user-deployed Functions from the current product surface