chat search and message bookmarks
full-text search across chat messages within a conversation. bookmark/pin individual messages for quick reference later.
Product changelog
This page mirrors the work logged in our internal changelog and presents it in a cleaner public format. Browse the latest ship, scan summaries fast, or drill into each web and server change.
full-text search across chat messages within a conversation. bookmark/pin individual messages for quick reference later.
two new block types for reports — table blocks for embedding static data, and live sql blocks with a connection picker that execute queries and display results inline when viewing the report.
every save creates a snapshot. full version history with the ability to view any previous version, see what changed, and restore it. snapshots store the complete block state so restores are lossless.
server-side pdf generation using playwright. spins up a headless browser, renders the report including all charts and tables, and returns a clean pdf. had to add chromium dependencies to the dockerfile for this one.
search bar in chat sidebar, inline connection picker to switch databases without leaving the conversation, and pin/bookmark toggle on individual messages.
report blocks can now be reordered by dragging. uses dnd-kit for smooth drag interactions with visual drop indicators.
version history panel in the report editor showing all snapshots with timestamps. click any version to preview it, see a diff against the current state, or restore it with one click.
export button on both the editor and public report view. hits the server-side renderer and downloads a pdf. works with all block types including live charts.
new tool call type for the agent that returns structured tabular data. the agent decides between chart and table based on the nature of the query — aggregate data gets charts, row-level data gets tables.
every sql query executed through any endpoint is now logged with the connection, execution time, row count, and timestamp. paginated history endpoint with search.
upload files to chat messages. files are stored and their content is extracted and injected into the agent's context window so it can reference uploaded data in its responses.
tabular results render as sortable, paginated tables inline in the conversation. column headers, row striping, and overflow scrolling for wide datasets.
browsable list of all past queries with timestamps, execution times, and the ability to re-run any query against its original connection.
drag-and-drop or click-to-upload file attachments on chat messages. shows file previews and attachment indicators on messages.
full document model with ordered blocks — text (tiptap), chart (embedded metrics), and heading blocks. supports draft and published states. published reports get a public url with no auth required.
new chat agent tool that takes a conversation's context and generates a structured report. it picks the most interesting metrics, writes narrative sections, and arranges everything into a coherent document.
added libsql as a connection type. handles both local file-based libsql and remote turso databases with auth tokens. uses the libsql python client under the hood.
block-based editor built on tiptap with slash commands for inserting blocks. metric embeds render as live charts. public report view is clean and minimal — just the content, no chrome.
fixed an issue where metric content was being double-serialized as json strings inside json. public reports were showing raw json instead of chart data.
health check endpoint that pings all dependencies — database, redis, inngest — and returns individual status for each. the frontend polls this to show a live status indicator.
github actions workflow for linting, type checking, and building the docker image. multi-stage dockerfile with proper caching to keep image size reasonable.
clean status page showing uptime for each service with colored indicators. accessible from the sidebar.
fixed a bug where saving metrics from chat would silently fail when the agent's sql contained certain edge cases. also rewrote parts of the system prompt to reduce hallucinated column names.
invite users to your account with granular permissions. delegation model tracks who has access to what. middleware resolves the active account context so all downstream queries are scoped correctly.
invite flow, pending invitations list, and a seamless account switcher in the sidebar. switching accounts re-scopes everything — connections, chats, metrics — without a page reload.
when the agent returns chart data, the frontend renders interactive recharts components inline in the conversation. supports bar, line, pie, and area charts with tooltips and legends.
organize chats and saved items into collections. simple folder-like structure to keep things tidy as you accumulate conversations.
automated schema introspection for connected databases. extracts tables, columns, types, constraints, and relationships. ai generates human-readable descriptions for every table and column — this context gets injected into chat agent prompts so the llm actually understands your data.
the main feature. users chat in natural language, the agent writes sql, executes it against the selected connection, and streams results back in real-time via server-sent events. supports multi-turn conversations with full context.
redis for sse event pub/sub, chat session caching, and async title generation. titles are generated in the background after the first message so there's no latency hit on the main response.
full chat ui with streaming message display, markdown rendering, and syntax-highlighted sql blocks. messages appear token by token as the agent thinks.
fastapi project with async sqlalchemy, alembic migrations, clerk-based auth middleware. every route is protected by default.
users can add, test, edit, and delete database connections. supports postgres, mysql, and sqlite out of the box. credentials are encrypted at rest.
sidebar navigation, connection management page with add/edit forms, and a sample database page for new users to play with.
cleaned up cors config for local dev and fixed a flaky connection test that was timing out on slow networks.