Moose

Changelog

Moose Changelog

What is this page?

This changelog tracks all meaningful changes to Moose. Each entry includes the PR link and contributor credit, organized by date (newest first). Use this page to stay informed about new features, fixes, and breaking changes that might affect your projects.

How to read this changelog

Release highlights

Key features, enhancements, or fixes for each release.

Added

New features or capabilities.

Changed

Updates to existing functionality or improvements.

Deprecated

Features that are no longer recommended for use and may be removed in the future.

Fixed

Bug fixes and reliability improvements.

Security

Security-related updates or vulnerability fixes.

Breaking changes

Changes that require user action or may break existing usage.


2025-05-23

Release Highlights

  • TypeScript DeadLetterQueue<T> support — Handle failed streaming function messages with type-safe dead letter queues in TypeScript.
  • Improved Python DeadLetterModel API — Renamed as_t to as_typed for better clarity.

Added

  • TypeScript DeadLetterQueue<T> class with type guards and transform methods for handling failed streaming function messages with full type safety.
    #2356 by phiSgr

Changed

  • Renamed DeadLetterModel.as_t() to DeadLetterModel.as_typed() in Python for better API clarity and consistency.
    #2356 by phiSgr

Breaking Changes

  • DeadLetterModel.as_t() method renamed to as_typed() in Python. Update your code to use the new method name.
    #2356 by phiSgr

2025-05-22

Release Highlights

  • Refactored CLI ‘peek’ command — Now supports peeking into both tables and streams with unified parameters.
  • Simplified CLI experience — Removed unused commands and routines for a cleaner interface.

Changed

  • Updated CLI ‘peek’ command to use a unified ‘name’ parameter and new flags (--table, --stream) to specify resource type. Default is table. Documentation updated to match.
    #2361 by callicles

Deprecated

  • Removed unused CLI commands and routines including Function, Block, Consumption, DataModel, and Import. CLI is now simpler and easier to maintain.
    #2360 by callicles

Breaking Changes

None


2025-05-21

Release Highlights

  • Infrastructure state sync — Auto-syncs DB state before changes, handling manual modifications and failed DDL runs.
  • Fixed nested data type support — Use objects and arrays in your Moose models.

Added

  • State reconciliation for infrastructure planning — Moose now checks and updates its in-memory infra map to match the real database state before planning changes. Makes infra planning robust to manual DB changes and failed runs.
    #2341 by callicles

Fixed

  • Handling of nested data structures in Moose models for correct support of complex objects and arrays.
    #2357 by georgevanderson

Breaking Changes

None


2025-05-20

Release Highlights

  • ClickHouse Date type support — Store and query native date values in your schemas.

Added

  • ClickHouse Date column support for native date types in Moose schemas and ingestion.
    #2352, #2351 by phiSgr

Breaking Changes

None


2025-05-19

Release Highlights

  • Metadata map propagation — Metadata is now tracked and available in the infra map for both Python and TypeScript. Improves LLM accuracy and reliability when working with Moose objects.

Added

  • Metadata map propagation to infra map for consistent tracking and availability in both Python and TypeScript.
    #2326 by georgevanderson

Breaking Changes

None


2025-05-16

Release Highlights

  • New list[str] support to Python AggregateFunction — Enables more flexible aggregation logic in Materialized Views.
  • Python DeadLetterQueue[T] alpha release — Automatically route exceptions to a dead letter queue in streaming functions.

Changed

  • AggregateFunction in Python now accepts list[str] for more expressive and type-safe aggregations.
    #2321 by phiSgr

Added

  • Python dead letter queues for handling and retrying failed messages in Python streaming functions.
    #2324 by phiSgr

Breaking Changes

None


2025-05-15

Release Highlights

  • **Hotfix — casing fix for JSON columns in TypeScript.

Fixed

  • TypeScript JSON columns to have consistent casing, avoiding confusion and errors in your code.
    #2320 by phiSgr

Breaking Changes

None


2025-05-14

Release Highlights

  • Introduced TypeScript JSON columns — Use Record<string, any> for type-safe JSON fields.
  • Ingestion config simplified — Less config needed for ingestion setup.
  • Python enum support improved — More robust data models.

Added

  • TypeScript ClickHouse JSON columns to use Record<string, any> for type-safe JSON fields. #2317 by phiSgr
  • Pydantic mixin for parsing integer enums by name for more robust Python data models.
    #2316 by phiSgr
  • Better Python enum handling in data models for easier enum usage.
    #2315 by phiSgr

Deprecated

Breaking Changes

None


2025-05-13

Release Highlights

  • New refresh CLI command — Quickly reload data and schema changes from changes applied directly to your database outside of Moose.
  • Python: LowCardinality type support — Better performance for categorical data.

Added

  • refresh command to reload data and schema with a single command.
    #2309 by phiSgr
  • Python support for LowCardinality(T) to improve performance for categorical columns.
    #2313 by phiSgr

Breaking Changes

None


2025-05-10

Release Highlights

  • Dependency-based execution order for Materialized Views — Reduces migration errors and improves reliability.

Changed

  • Order changes for materialized views based on dependency to ensure correct execution order for dependent changes.
    #2294 by callicles

Breaking Changes

None


2025-05-07

Release Highlights

  • Python datetime64 support - Enables more precise datetime handling in Python data models.
  • Type mapping in Python QueryClient - Automatically maps ClickHouse query result rows to the correct Pydantic model types.

Added

  • Row parsing in QueryClient with type mapping for Python.
    #2299 by phiSgr

Fixed

  • datetime64 parsing and row parsing in QueryClient for more reliable data handling in Python.
    #2299 by phiSgr

Breaking Changes

None


2025-05-06

Release Highlights

  • uint type support in TypeScript — Enables type safety for unsigned integer fields in Typescript data models.

Added

  • uint type support in TypeScript for unsigned integers in Moose models.
    #2295 by phiSgr

Breaking Changes

None


2025-05-01

Release Highlights

  • Explicit dependency tracking for materialized views — Improves data lineage, migration reliability, and documentation.

Added

  • Explicit dependency tracking for materialized views to make migrations and data lineage more robust and easier to understand.
    #2282 by callicles

Breaking Changes

  • Required selectTables field in MaterializedView config that must specify an array of OlapTable objects for the source tables.
    #2282 by callicles

2025-04-30

Release Highlights

  • More flexible JSON_ARRAY configuration for IngestApi — Now accepts both arrays and single elements. Default config is now JSON_ARRAY.
  • Python rich ClickHouse type support — Added support for advanced types in Python models:
    • Decimal: clickhouse_decimal(precision, scale)
    • datetime with precision: clickhouse_datetime64(precision)
    • date: date
    • int with size annotations: Annotated[int, 'int8'], Annotated[int, 'int32'], etc.
    • UUID: UUID

Changed

  • JSON_ARRAY to allow both array and single element ingestion for more flexible data handling.
    #2285 by phiSgr

Added

  • Python rich ClickHouse type support with:
    • Decimal: clickhouse_decimal(precision, scale)
    • datetime with precision: clickhouse_datetime64(precision)
    • date: date
    • int with size annotations: Annotated[int, 'int8'], Annotated[int, 'int32'], etc.
    • UUID: UUID for more expressive data modeling.
      #2284 by phiSgr

Breaking Changes

None