This release focuses on self-documenting schemas and developer experience. Data models now support column comments that persist to ClickHouse, making schemas more readable for data analysts. Enhanced documentation spans migrations, data types, and streams, while fixes improve build reliability for pnpm workspaces and Python code generation.
Data model fields now support comments that are preserved in the generated ClickHouse database schema. In TypeScript, use TSDoc comments /** */. In Python, use either Field(description="...") or attribute docstrings with use_attribute_docstrings=True. These comments appear as COMMENT clauses in the database DDL, making schemas more self-documenting and easier to understand for data analysts and other team members.
// models/UserEvent.tsexport interface UserEvent { /** Unique identifier for the record */ id: string; /** Timestamp when the event occurred */ timestamp: Date; /** Email address of the user (must be valid) */ email: string; /** Total price in USD ($) */ price: number; // No comment - this field won't have a database comment status: string;}# models.py# Option 1: Using Field(description=...)from moose_lib import Keyfrom pydantic import BaseModel, Fieldfrom datetime import datetime class UserEvent(BaseModel): id: Key[str] = Field(description="Unique identifier for the record") timestamp: datetime = Field(description="Timestamp when the event occurred") email: str = Field(description="Email address of the user (must be valid)") price: float = Field(description="Total price in USD ($)") # No description - this field won't have a database comment status: str # Option 2: Using attribute docstringsfrom pydantic import ConfigDict class UserEvent(BaseModel): model_config = ConfigDict(use_attribute_docstrings=True) id: Key[str] """Unique identifier for the record""" timestamp: datetime """Timestamp when the event occurred""" email: str """Email address of the user (must be valid)""" price: float """Total price in USD ($)""" # No docstring - this field won't have a database comment status: strPR: #3137 | Docs: Column Comments
--custom-dockerfile flag to moose init to enable custom Dockerfile mode. Run moose build --docker to generate a Dockerfile at project root for customization. #3135getMooseUtils() that auto-detects context and works without parameters. Legacy APIs (getMooseClients(), expressMiddleware()) are deprecated but remain backwards compatible. #3145--timestamps and flags to display timestamps and operation durations during development, helping debug performance issues and track event sequences. --timing