📢 Changelog
🗓️ 2025-12-18
🚀 Features
-
Ascend-managed DuckLake without PostgreSQL (Public Preview): Ascend-managed DuckLake now supports a fully cloud storage-based architecture — no PostgreSQL required. Both metadata and data are stored in object storage, simplifying infrastructure and reducing overhead in a way that can improve performance for certain workloads. Configure with
$ascend_managed.duckdb_ducklake. See self-hosted DuckLake to bring your own storage. -
dbt project integration (Private Preview): Run dbt projects as Ascend Applications with full support for dbt models, tests, and builds via the new
dbtComponent type. -
🤖🐐 Otto improvements:
- Extended thinking support for Claude models — enable advanced reasoning with configurable token budgets
- Improved response conciseness and parallel tool execution
🌟 Improvements
- DuckDB upgraded to 1.4.3 with MotherDuck compatibility.
🛠️ Bug fixes
- Fixed identifier quoting across databases: database, schema, and table names starting with digits or containing special characters are now automatically quoted for Databricks, MS SQL Server, MySQL, Oracle, PostgreSQL, and Snowflake.
- Fixed incremental merge writes to PostgreSQL failing when the target table lacked a unique index. Ascend now automatically creates the required unique index on
unique_keycolumns when creating new tables. - Fixed Flow Graph freezing in an infinite loop when zooming to a node via the build panel.
- Fixed Flow Graph not updating to reflect row counts and Component statuses after data changes.
- Fixed branch selector crashing when typing an existing branch name instead of selecting it from the dropdown.
🗓️ 2025-12-11
🌟 Improvements
- Super Graph rendering is 85% faster. Lazy tooltip initialization, memoized build graph calculations, and pre-computed derived values significantly reduce DOM overhead and recomputation on large Projects.
- DuckLake table compaction now supports data tables in addition to metadata tables. Configure compaction thresholds per Component or globally via Profile defaults:
data_plane:
duckdb:
ducklake_data_table_compaction:
small_file_record_count_limit: 100000
small_file_count_threshold: 50
small_file_ratio_threshold: 0.25 - Component defaults now support wildcards in the
flow_namefield, enabling global configuration across all Flows using regex patterns. - 🤖🐐 MCP tool calls now include explanations and descriptions for better visibility into Otto's actions.
- Deployment pages now load Flow runs beyond the initial 30-day window. Historical runs are fetched in the background and stored locally for faster subsequent access.
- DuckLake table compaction now includes helper tables created by Component store adapters, reducing fragmentation across all metadata tables.
🗓️ 2025-12-04
🚀 Features
- 🤖🐐 Otto can now navigate you through the Ascend UI. Ask Otto to open a specific file, go to a Deployment page, or view a Flow run, and it will take you there directly.
- 🤖🐐 OttoPilot is now available on the Dashboard. Get quick help, instance summaries, and suggested prompts without leaving the main view.
🛠️ Bug fixes
- Fixed Microsoft SQL Server datetime predicates failing due to incorrect format. Datetime values are now formatted without timezone info and with millisecond precision.
- Fixed DuckLake compaction using wrong catalog name when catalog override is configured.
- Fixed Automation runs table only showing one run when multiple Automations triggered from the same event.
- Fixed Flow run links in email notifications using incorrect project identifier.
- Fixed Deployment Flow pages incorrectly redirecting to Super Graph view.
- Fixed Snowflake Connection URLs generated with incorrect case for account locator.
- Fixed SSH key display flickering when loading Repository settings.
- Fixed clicking Component in Deployment Flow run history opening the wrong file.
🗓️ 2025-11-27
🚀 Features
- 🤖🐐 Otto can fetch and analyze web content. Enable
web_accessto let Otto read documentation, API references, and other online resources to better assist with your work. - Read Components now support
strategy: fullfor native database connectors. Use this for small datasets or one-time loads that don't need partitioning:read:
connection: my_database
strategy: full
🌟 Improvements
- DuckLake now uses block-level row count statistics for dramatically faster output row calculations. Row counts that previously took minutes on large datasets are now near-instantaneous. Statistics are automatically computed during partition writes and backfilled for existing Components.
- 🤖🐐 Otto max turns handling improved. When approaching the turn limit (default 50), Otto receives a warning and gracefully summarizes progress instead of abruptly stopping.
- Workspace status on Project page now correctly reflects actual state (Online, Paused, etc.).
🛠️ Bug fixes
- Fixed Snowflake Read Components dropping
_ascend_sourceand_ascend_ingested_atcolumns due to case sensitivity. Snowflake returns column names in uppercase, which now matches correctly. - Fixed Cmd+K quick search opening the wrong item when using keyboard navigation. The navigation index now correctly maps to visible items only.
- Fixed Component form overwriting extra YAML fields when switching between code and form views. Custom configuration options are now preserved.
🗓️ 2025-11-20
🚀 Features
- 🤖🐐 Otto now defaults to agent mode, providing more proactive, capable assistance. Otto can now autonomously plan, execute, and iterate on tasks without requiring explicit step-by-step prompts.
🌟 Improvements
- DuckLake metadata tables now automatically compact to prevent fragmentation. Tables with too many small files are detected and rewritten as single files during data maintenance.
- MotherDuck no longer uses DDL locking, allowing concurrent schema operations.
- Databricks Instance Store connections now handle invalid session handles gracefully with automatic reconnection. Added hourly connection pool recycling to prevent stale sessions.
- Blob storage list operations (S3, GCS, ABFS) now use native client prefix filtering instead of directory traversal, significantly improving performance for prefix-based listings.
- Table names with special characters (hyphens, spaces) now work correctly across all Data Planes. Quoting is applied automatically based on identifier validity.
- Default Workspace auto-snooze timeout increased from 20 to 30 minutes.
- Deployment Flows page loads faster with lazy timeline calculation, optimized date formatting, and a single shared popover instead of per-run popovers.
🛠️ Bug fixes
- Fixed missing
_ascend_sourcecolumn in database-based Read Components. This regression caused schema mismatch errors when processing new data. - Fixed Incremental Read Components not respecting the
normalizesetting when nocolumnsconfig is specified. Also fixed Smart Table meta columns incorrectly appearing in output when usingcolumnsconfig. - Fixed Flow run listing not filtering by Profile and Project path for runtime queries.
🗓️ 2025-11-13
🚀 Features
- 🤖🐐 New OttoPilot experience with onboarding, welcome chat, and dashboard integration. Otto now provides a guided introduction for new users and quick access from the dashboard.
- DuckLake now supports
use_nightlyandforce_installoptions for extension management. Useuse_nightly: truefor latest development builds orforce_install: trueto reinstall the extension.
🌟 Improvements
- 🤖🐐 Otto improvements:
- Jinja templating is now disabled by default for custom rules and agents. Rules with
{{ }}syntax that aren't valid Jinja will no longer silently fail. Addjinja: trueto frontmatter to enable Jinja rendering.
- Jinja templating is now disabled by default for custom rules and agents. Rules with
- Smart Schema processing on DuckDB now uses temporary tables for intermediate operations, reducing write times by 33-47%.
- Flow run data loads faster with improved browser caching.
🛠️ Bug fixes
- 🤖🐐 Otto fixes:
- Fixed Otto Automation failures when no explicit model was configured. Model selection now properly falls back through the priority chain (agent → defaults → Instance → provider).
- Fixed unable to disable Workspace auto-snooze in settings.
- Fixed MotherDuck logo not displaying in Explore tab.
🗓️ 2025-11-06
🛠️ Bug fixes
- Fixed suspended Instance lockout controls to prevent content flashing before redirect.
🗓️ 2025-11-03
🚀 Features
- 🤖🐐 New Otto capabilities:
- Otto agent configuration now supports agent overrides, custom instructions, and configurable
max_turnssettings viaotto.yaml, including commit message generation with context integration.
- Otto agent configuration now supports agent overrides, custom instructions, and configurable
- Write Components now support full refresh operations for object storage (GCS, S3, ABFS), BigQuery, MySQL, Oracle, and PostgreSQL Connection types. Full refresh resets and rebuilds destination tables from scratch.
🌟 Improvements
- Snowflake authentication workflows updated to use key-pair authentication as password-based auth approaches deprecation.
🛠️ Bug fixes
- Flow run errors now include the actual error message instead of generic timeout or segfault messages.
- Fixed DuckDB Connections to PostgreSQL metadata failing with
no password suppliederrors due to race conditions. Atomic file replacement ensures complete password files are written before reading. - Fixed Flow Components in subdirectories not displaying run history due to path resolution issues.
- Fixed Automation run error display formatting. Error messages now render with resize handles and copy buttons.
- Fixed editor focus behavior when saving files or accepting AI changes.
🗓️ 2025-10-27
🚀 Features
- 🤖🐐 New Otto capabilities:
- Otto now generates commit messages using Conventional Commits with type prefixes, scopes, and breaking change indicators.
- Otto agent system updated with improved context gathering that traces symbols and enhanced tool descriptions for error-prone operations like RegEx escaping.
- Otto displays inline file diffs consistently across all AI model providers.
- SQLFrame DataFrame support added across BigQuery, Snowflake, Databricks, and DuckDB Data Planes with Spark-like API and lazy evaluation.
- Project defaults now support Flow runner size configurations using RegEx patterns to match Flow names.
🌟 Improvements
- Added syntax highlighting for
.ascendignoreand other ignore files. - Snowflake authentication updated to use key pair authentication instead of deprecated password method.
- Increased MySQL connection pool size to handle higher concurrent loads, reducing timeout errors for Instance-to-cloud GRPC communications.
- Workspace pane automatically closes docked views when no tabs are present.
- Deployment names in merge menus now match labels used elsewhere in the UI.
- Tab loading logic enhanced with AbortController support for better resource management and error handling.
🛠️ Bug fixes
- Otto fixes:
- Fixed patch parser to detect and correct malformed patch endings with extra
+characters. - Fixed Otto Chat title generation failing silently.
- Fixed commit message generation wrapping text in triple backticks or including commentary. Now outputs clean text without formatting artifacts.
- Fixed patch parser to detect and correct malformed patch endings with extra
- Fixed empty data tables being dropped during maintenance, breaking downstream Components. Tables referenced by committed partitions are now protected from deletion.
- Fixed table creation race conditions causing
Clustering Key has changederrors. Unified SQL generation with DDL locking ensures consistent behavior across Data Planes. - Fixed
Run Flowbutton text not updating when builds became out-of-date. - Fixed delete dialogs remaining open after successful deletions.
- Improved local storage error handling for corrupted data, quota exceeded errors, and other storage failures.
🗓️ 2025-10-20
🚀 Features
- 🤖🐐 New Otto capabilities:
- Otto communication style updated to remove filler phrases like "Certainly!" and "Of course!", with improved context gathering and tool descriptions for error-prone operations.
- Projects now support
.ascendignorefiles to exclude parts of your Project during development.- Profiles also support an
ignorefield for additional ignore patterns.
- Profiles also support an
🌟 Improvements
- Smart Schema support expanded:
- MySQL, Oracle, PostgreSQL, Microsoft SQL Server, BigQuery, Snowflake, and SFTP Read Components now support Smart Schema.
- Smart SQL Transforms, Smart Python Transforms, and Custom Python Transforms now support Smart Schema.
🛠️ Bug fixes
- Fixed Component tests with
severity: warncausing hard failures. Test severity parsing now handles all configuration patterns correctly. - Fixed authorization checks hitting rate limits during rapid UI interactions. Authorization checks are now cached.
- Fixed polling being lost when switching browser tabs. Polling now pauses and resumes based on tab visibility.
- Fixed Project page crashing with
Cannot read properties of undefinederrors when refreshing. Page now handles empty states and removed unnecessary polling. - Fixed Workspace tours breaking when encountering auto-snoozed Workspaces. Tours now detect Workspace state and prompt users to start paused Workspaces.