Release Notes

November 7, 2025

November 7, 2025

Highlights

Environment file support

Configure your Moose projects using .env files with proper precedence (.env < .env.dev < .env.local). This makes it easier to manage different configurations across environments without hardcoding values.

Terminal
# Create .env files in your Moose project root
# Base configuration (lowest precedence)
echo "MOOSE_HTTP_SERVER_CONFIG__PORT=3000
MOOSE_CLICKHOUSE_CONFIG__HOST=localhost
MOOSE_CLICKHOUSE_CONFIG__PORT=9000" > .env
 
# Development-specific overrides
echo "MOOSE_HTTP_SERVER_CONFIG__PORT=3001
MOOSE_LOGGER__LEVEL=debug
MOOSE_CLICKHOUSE_CONFIG__DB_NAME=myproject_dev" > .env.dev
 
# Local overrides (highest precedence, gitignored)
echo "MOOSE_HTTP_SERVER_CONFIG__PORT=3002
MOOSE_CLICKHOUSE_CONFIG__HOST=127.0.0.1
MOOSE_REDIS_CONFIG__URL=redis://localhost:6380" > .env.local
 
# Start development server - automatically loads .env files
# Precedence: .env < .env.dev < .env.local
moose dev
 
# For production deployment, only .env is loaded
moose prod

PR: #2936 | Docs: Environment variables

FixedString(N) data type support

Support for FixedString(N) data type in data models, allowing you to define fixed-length string columns for optimized storage of data like hashes, IP addresses, and MAC addresses.

datamodels/NetworkEvent.ts
export interface NetworkEvent {
  id: string;
  timestamp: Date;
  
  // Fixed-length string for MD5 hash (32 hex chars = 16 bytes)
  md5_hash: string & FixedString<16>;
  
  // Fixed-length string for IPv6 address (16 bytes)
  ipv6_address: string & FixedString<16>;
  
  // Fixed-length string for MAC address (17 chars: XX:XX:XX:XX:XX:XX)
  mac_address: string & FixedString<17>;
  
  // Array of MAC addresses for network devices
  connected_devices: (string & FixedString<17>)[];
  
  // Regular string for variable-length data
  user_agent: string;
  
  // Other fields
  bytes_transferred: number;
  is_encrypted: boolean;
}

PR: #2939 | Docs: FixedString typeClickHouse FixedString

Ignore partition changes during migrations

Configure the migration system to ignore PARTITION BY changes when comparing database schemas. This prevents unnecessary table recreations when partition changes are intentionally ignored.

moose.config.toml
[migration_config]
ignore_operations = ["ModifyPartitionBy"]

PR: #2928 | Docs: Ignoring operations

Precise numeric types for Python

New type aliases for ClickHouse numeric types in Python: Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64, Float32, and Float64. These provide better type safety and clearer intent when defining data models.

datamodels/UserActivity.py
from moose_lib import (
    Key, IngestPipeline, IngestPipelineConfig,
    Int8, Int16, Int32, Int64,
    UInt8, UInt16, UInt32, UInt64,
    Float32, Float64
)
from pydantic import BaseModel
from datetime import datetime
from typing import Optional
 
class UserActivity(BaseModel):
    user_id: Key[UInt64]  # User IDs are always positive, use UInt64 for large scale
    event_time: datetime
    page_views: UInt32      # Daily page views (0 to 4 billion)
    session_duration: UInt16  # Session length in seconds (0 to 65K seconds)
    score_delta: Int32      # Score changes can be positive or negative
    latitude: Float64       # GPS coordinates need high precision
    longitude: Float64      # GPS coordinates need high precision
    confidence: Float32     # ML confidence scores (lower precision acceptable)

PR: #2945 | Docs: Numeric types

Other MooseStack Features and Improvements

  • Real-time Docker logs – Build commands now stream progress in real-time for better debugging. PR #2958
  • ClickHouse cluster configuration – Define clusters for ON CLUSTER operations in distributed environments. PR #2931
  • TypeScript MCP template – Create AI assistants that can query your ClickHouse data via Model Context Protocol. Docs: MCP template | PR #2953
  • BYOF documentation – Integration guides for Express, Fastify, Koa, and FastAPI with MooseStack. Docs: BYOF guide | PR #2935

MooseStack Bug Fixes

  • Bug fixes: (db-pull defaults) #2956, (FastAPI OpenAPI paths) #2957, (custom database names) #2955, (table diffing compatibility) #2918

Other Boreal Features and Improvements

  • Added Nix syntax highlighting support for code blocks in the dashboard
  • Added branch delete button in branch settings with improved loading states

Boreal Bug Fixes

  • Bug fixes: (Google Tag Manager) #2940, (CORS issues) #2941