W Thaw Studio v0.9 · pilot
Feature reference · v0.9

Every feature, in one place.

Thaw Studio is the result of two years of daily Snowflake work distilled into a desktop app. Below is the current feature set — categorised, unembellished.

A Monaco editor that knows Snowflake's dialect.

Core editing

Fast, familiar, keyboard-first

Multi-tab, multi-cursor, split view, code folding, zoom, comment toggle — all the primitives you'd expect from a first-class editor.

  • Monaco-based editor with SQL syntax highlighting and rich keyboard shortcuts
  • Multi-tab editing — each tab remembers its SQL, results, and scroll position
  • Run selected text only (⌘Enter / Ctrl+Enter)
  • Multi-statement scripts with per-statement Query ID and an amber gutter marker for the running statement
  • Cancel queries — issues SYSTEM$CANCEL_QUERY so credits stop too
  • Multi-cursor (⌘⌥↑/↓), toggle line comment, selection-occurrence highlight
  • Code folding arrows always visible; fold CTEs, BEGIN…END, subqueries
  • Drag tabs to reorder; split any tab side-by-side with a draggable divider
  • Unsaved-change indicator and Save / Discard / Cancel on close
Intelligence

Context-aware completions and hovers

Schemas, columns, function overloads, even FK-aware join conditions — all sourced from your live warehouse and cached locally.

  • Hover any table / view / three-part identifier to see its DDL in a scrollable tooltip with copy & select
  • Function hover tooltips with all overloads — backed by a built-in catalogue of ~320 functions (works offline)
  • Dotted autocomplete: db. → schemas, db.schema. → objects, db.schema.table. → columns
  • Ctrl+Space inside a query suggests columns from every table in the current FROM/JOIN
  • JOIN ON assistance — FK relationships first, then PK-naming heuristics, then type-compatible same-name columns, with ghost-text and dropdown
  • Function-call syntax colouring: built-ins in gold, UDFs in teal
  • Live SQL diagnostics — red squiggles for syntax, yellow for grammar & unknown column warnings; Snowflake-dialect PEG parser
  • AI inline completions — ghost-text SQL from OpenAI or Google AI Studios, accept with Tab
Formatter & snippets

Opinionated, configurable, Snowflake-correct

A formatter tuned for Snowflake SQL and a curated library of scripting and object templates.

  • Format selection or whole document (⇧⌥F / Shift+Alt+F) with per-rule casing: keywords, identifiers, functions
  • Configurable indent style, comma position, AND/OR placement — live preview in Editor Preferences
  • Snowflake-specific rules always applied: :: kept tight, WITH on its own line, LATERAL FLATTEN as a unit
  • 24 curated CREATE OR REPLACE templates across 6 categories (Tables, UDFs, Procedures, Tasks, Stages, Governance…)
  • Snowflake Scripting snippets in a cascading right-click menu — block, declare, let, if/case, loops, cursors, async — with your preferred casing applied on insert
  • Transparent dollar-quoting: code inside $$…$$ still gets highlighting, diagnostics, and hover

Python & SQL notebooks — now with a built-in debugger.

Author & run

A proper notebook environment on your desktop

Mix Python and SQL cells, run against your live Snowflake session, and deploy back to the warehouse.

  • Mixed Python (Snowpark) and SQL cells; each cell runs in its own kernel context with inline results
  • Multi-tab notebooks with unsaved-change indicators and Save / Save As to .ipynb
  • Run All, Run Cell, Add Cell, reorder and delete — all keyboard-driven
  • Deploy a notebook back to Snowflake and run EXECUTE NOTEBOOK with optional string parameters
  • Right-click a notebook in the object browser to open the latest version, execute, or set its Query Warehouse
  • Cell-level traceback display with the failing file and line, plus full stack
New — in development

Notebook debugger

We're actively building a first-class debugger so notebook development feels like real software engineering.

  • Set breakpoints in Python cells and step through line by line
  • Inspect local variables, Snowpark DataFrames, and session state at any pause point
  • Attach to a running cell without restarting the kernel
  • Available to pilot users as it ships — your feedback shapes it directly

Every Snowflake object, one right-click away.

Browse & search

Full warehouse, live tree

Databases → schemas → every object kind, with drag-to-editor and multi-select.

  • All objects: tables, views, functions, procedures, sequences, stages, streams, tasks, file formats, pipes, notebooks
  • Multi-selection with ⌘ / Ctrl click; batch delete across objects in one operation
  • Instant search across all databases and schemas
  • Drag a table or view into the editor to insert a SELECT with full column list
  • Empty tables rendered faded so unpopulated objects are visible at a glance
  • Hover tooltips show DDL; View Definition opens the full DDL modal
Create & edit objects

Comprehensive DDL dialogs

Full-coverage forms for the objects you create most, with live SQL preview.

  • Create Database — covers the full syntax: clone with AT/BEFORE time-travel, retention, Iceberg, catalog sync, tags, visibility, comment
  • Create Table designer — column editor (PK, NOT NULL, defaults, comments), cluster keys, retention, change tracking, schema evolution
  • Create Task dialog — visual schedule editor (Interval / Cron with ~440 timezones), dependency picker, WHEN builder, notifications, finalizer picker
  • Properties panels for tables expose inline-editable settings (cluster keys, retention, comments, per-column comments)
  • Live CREATE … preview updates with every field change; one-click copy
Task graphs

Visual DAGs with live status

An interactive view of task graphs you'd otherwise assemble from SHOW TASKS and TASK_HISTORY by hand.

  • Left-to-right DAG layout with schedule-state and last-run-state badges on every node
  • Real-time polling every 3 s — updates states in place without relaying out or losing drag positions
  • Skipped-state inference for downstream tasks when a predecessor fails
  • Run Graph and Retry Failed buttons; Retry enabled only when Snowflake's 14-day / last-run rules are met
  • Suspend All / Resume All in the correct order (root-first for suspend, leaves-first for resume)
  • Right-click any node to suspend, resume, add a child task, create a finalizer, or delete
  • Finalizer tasks rendered with a dashed purple edge from the root
Data operations

Import, export, map, compare

Everyday data moves without leaving the app.

  • Time-travel slider to query data at any past point within retention
  • Export table data as CSV / JSON / Parquet via a temporary stage
  • Import local CSV / JSON / Avro / ORC / Parquet — full FORMAT_TYPE_OPTIONS coverage with file preview (Parsed / Raw)
  • AI Suggest fills in format options from a file sample with an explicit consent dialog
  • Insert Mapping — map many source tables to one target with UNION / UNION ALL, auto column matching, CAST and COALESCE suggestions
  • Side-by-side Monaco diff for any two objects, files, roles, or warehouses via Select for Comparison
  • ER Diagram for any database (filterable by schema, zoom, pan, copy Mermaid source)
  • Visual ER Designer: add columns, FKs, and apply the generated DDL in one step

DDL export, schema migrations, and dbt scaffolding.

DDL export

Your whole warehouse as files

One-call-per-database export with configurable path layout and live progress.

  • Export DDL for one database or all databases, organised by schema and object type
  • Single GET_DDL('DATABASE', name, true) call per database — up to 16 in parallel
  • Configurable path template: {database}/{schema}/{object_type}/{object_name}.sql with live preview
  • Shared / imported databases (e.g. SNOWFLAKE_SAMPLE_DATA) are skipped automatically
  • Live progress bar, cancel any time, results summary with file counts and errors
Schema migration wizard

Deploy DDL with real strategies

A five-step wizard that diffs your local SQL against Snowflake and deploys with the strategy you choose.

  • Multiple source directory → target database mappings in one run
  • Multi-statement file parsing; USE DATABASE/USE SCHEMA context tracking
  • Ag-Grid diff with New / Changed / Unchanged / Removed tags and Monaco diff preview below
  • Dependency auto-select: picking a VIEW selects the TABLE it depends on
  • Table strategies: Smart In-Place, Blue/Green Swap, View-Based Soft Cutover, Destructive Rebuild
  • Open-in-Editor to review the generated SQL before running
  • Safety snapshots per target database: CREATE BACKUP SET or zero-copy clone
  • Dependency-ordered execution with up to 5 retry passes; live progress table; cancel mid-run
dbt scaffolding

Generate a real dbt project from a live warehouse

Pick databases and schemas, and get a working dbt project — no dbt CLI required at generation time.

  • Name, profile, and output directory with overwrite protection
  • Optional: inline actual view SQL bodies (one GET_DDL per view) instead of {{ source() }} pass-throughs
  • Automatic reference rewriting to {{ source() }} and {{ ref() }}; CTE aliases excluded
  • Optional dbt vars: block per database so the project can be retargeted by overriding variables
  • Cross-schema dependency hints while selecting sources; INFORMATION_SCHEMA handled per dbt convention

An agent that can actually run SQL against your warehouse.

AI chat & agent

Two modes, one results panel

Chat mode for reasoning over the current editor and last result. Agent mode for autonomous tool use.

  • Chat mode: conversational, sees the current SQL and the latest query result — makes no live calls
  • Agent mode tools: get_session_context, list_databases, list_schemas, list_tables, describe_table, run_sql, list_directory, read_file, run_command
  • Stop button cancels the in-flight request cleanly
  • Run buttons on SQL code blocks load the query into a new tab and execute immediately
  • Copy buttons on every message and error use the native OS clipboard
  • Inline completions (Tab to accept) powered by OpenAI or Gemini
  • Function Catalog Ask-AI tab, with the selected function's signatures injected as context
  • Live model validation — green OK or a specific API error next to the model picker
  • API key stored locally with 0600 permissions; sent only to your chosen provider
File management

First-class local files

  • Open / Save / Save As with native dialogs for .sql, .yml, .yaml, .py
  • dbt YAML intelligence from bundled dbt-jsonschema — completions, hover docs, red-squiggle validation; no network requests
  • File browser sidebar; right-click any file to Compare against another item
Text comparison

Diff anything against anything

  • Compare any two database objects, files, roles, or warehouses — cross-category
  • Monaco side-by-side diff with trailing-whitespace normalisation
  • Respects light / dark theme and the configured editor font
Governance & backups

Visible, recoverable, cancellable

  • Query IDs visible at all times; copy to clipboard from the status bar
  • Backup Sets — create and browse at database, schema, or table scope
  • Time Travel / Undrop for dropped databases, schemas, and tables
  • Cancel running queries — also stops Snowflake credits via SYSTEM$CANCEL_QUERY

This is the short version. Try the real thing.

Pilot access includes every feature above and direct access to the team.