January 23, 2026
Highlights
- Breaking: Remove Data Model v2 feature flag - now default behavior
Moose
Breaking Changes
Remove Data Model v2 feature flag - now default behavior (@DatGuyJonathan) The dmv2 feature flag has been removed and Data Model v2 is now the default and only supported data modeling approach. Projects using the old data model system will need to migrate to the new format. This simplifies the framework by removing legacy code paths and ensures all users benefit from the improved data modeling capabilities.
Docs: Data Modeling
Enforce Officially Supported Node.js 20-24 requirement across all TypeScript packages (@onelesd) Updated Node.js version requirements to enforce versions 20-24 across all TypeScript packages and templates. This ensures compatibility with modern Node.js features and security updates. Users must use Node.js 20 to 24 to use Moose projects.
Docs: Minimum Requirements
New Features
Enhanced SQL template tag with join, raw, and append helpers (@okane16) Added new helper methods to the sql template tag for building dynamic queries: sql.join() for combining SQL fragments with separators, sql.raw() for inserting raw SQL strings, and Sql.append() for chaining query parts together. These helpers make it easier to build complex, conditional queries while maintaining type safety and SQL injection protection.
Dynamic query building with SQL template helpers
import { sql, Sql } from "@514labs/moose-lib";import { UserTable } from "./models/UserTable"; interface UserFilters { minAge?: number; status?: "active" | "inactive"; searchTerm?: string; includeTimestamp?: boolean;} export const buildUserQuery = ({ minAge, status, searchTerm, includeTimestamp,}: UserFilters) => { // Start with base columns const baseColumns = [ sql`${UserTable.columns.id}`, sql`${UserTable.columns.name}`, sql`${UserTable.columns.email}`, sql`${UserTable.columns.age}`, ]; // Add timestamp if requested using sql.raw() const selectColumns = includeTimestamp ? [...baseColumns, sql`${sql.raw("NOW()")} as query_time`] : baseColumns; // Build WHERE conditions dynamically const conditions: Sql[] = []; if (minAge !== undefined) { conditions.push(sql`${UserTable.columns.age} >= ${minAge}`); } if (status) { conditions.push(sql`${UserTable.columns.status} = ${status}`); } if (searchTerm) { conditions.push( sql`${UserTable.columns.name} ILIKE ${`%${searchTerm}%`}`, ); } // Start building the query with sql.join() for columns let query = sql`SELECT ${sql.join(selectColumns, ",")} FROM ${UserTable}`; // Add WHERE clause if conditions exist using sql.join() and append() if (conditions.length > 0) { query = query.append(sql` WHERE ${sql.join(conditions, "AND")}`); } // Chain additional clauses with append() return query .append(sql` ORDER BY ${UserTable.columns.created_at} ${sql.raw("DESC")}`) .append(sql` LIMIT ${100}`);};This example demonstrates building dynamic SQL queries using the new sql template helpers: sql.join() to combine column lists and WHERE conditions, sql.raw() to insert SQL functions like NOW(), and Sql.append() to chain query parts together incrementally.
Docs: SQL Template Helpers
Add row count reporting to moose seed command (@oatsandsugar)
The moose seed clickhouse command now automatically reports row counts after seeding. Disable with --report=false.
$ moose seed clickhouse --connection-string "clickhouse://user:pass@host:9000/db"
Seeded 'local_db' from 'db'
Row counts after seeding:
events: 125000 rows
users: 50000 rowsDocs: Seed (ClickHouse)
Add LLM-optimized documentation endpoints for AI agents (@DatGuyJonathan)
Added new markdown endpoints that make MooseStack documentation easily accessible to AI agents and LLMs. Users can now append .md to any documentation URL to get clean markdown content, and the root /llm.md endpoint provides a table of contents for discovery. Also enhanced the documentation UI with a "Copy Page" dropdown menu that lets users copy page content as markdown or open the markdown endpoint directly.

Docs: LLM-Optimized Documentation Feeds
Add January 16, 2026 release notes with new features and improvements (@groy-514) Published comprehensive release notes documenting new features including structured JSON logging with span support, View support in SQL interpolator, file watcher ignore patterns configuration, CDP Analytics example application, workflow task completion callbacks, and various bug fixes and improvements across Moose and Fiveonefour products.
Released new guides section with improved layout and Slack community link (@callicles) The guides section has been redesigned with a new layout, improved guide cards showing descriptions, and a community section linking to the MooseStack Slack workspace. Two new guides are now available: "Improving the Performance of Your Dashboards" and "Chat in your app".
Docs: Guides | Performant Dashboards | Chat in Your App
Improvements
- Updated static report generation guide for Node.js 20+ and pdfmake 0.3: Updated the static report generation tutorial to require Node.js 20+ (needed for pdfmake 0.3) and modernized the PDF generation code to use the new pdfmake 0.3 API. Added comprehensive troubleshooting tips, clearer service startup instructions, and better error handling guidance to improve the developer experience when following the tutorial. Docs: Automated Reports Guide (@cjus)
- Improved documentation copy functionality with language filtering: Enhanced the documentation copy button to intelligently filter content based on your selected programming language (TypeScript or Python). When copying documentation content, it now automatically removes code examples and explanations for the language you're not using, giving you cleaner, more relevant content for your workflow. (@tg339)
- Updated static report generation guide to use pnpm: The static report generation tutorial now uses pnpm instead of npm for package management, aligning with MooseStack's workspace requirements. Users following the guide will now have the correct setup instructions and avoid installation issues. (@cjus)
- Enhanced static report generation guide with detailed usage paths and validation: Significantly improved the static report generation documentation with audience-specific learning paths, environment verification steps, data validation examples, and troubleshooting guidance. Added detailed business context explaining ROI and comparison with other approaches. Users can now choose their learning path (business focus, hands-on, or concepts-first) and follow more comprehensive setup instructions with validation checks. (@cjus)
- Clarify materialized view backfill behavior in dev vs production modes: Updated documentation to clarify that materialized view backfills happen automatically in dev mode but require manual action in production to avoid data duplication. This helps users understand when to expect automatic backfills and when they need to handle backfills manually. Docs: Materialized Views - Backfill (@DatGuyJonathan)
- Improved LLM documentation endpoints with full URLs and language parameter guidance: Updated documentation to show complete URLs for LLM-friendly markdown endpoints and added guidance about language-specific content parameters. This makes it easier for AI assistants and LLMs to discover and fetch MooseStack documentation programmatically. Docs: LLM-Optimized Documentation Feeds (@DatGuyJonathan)
- Updated Chat in Your App guide with better structure and visual components. Docs: Chat in Your App Guide (@oatsandsugar)
- Faster TypeScript application startup through precompilation: TypeScript applications now start significantly faster by precompiling TypeScript code during the build process instead of compiling at runtime. This eliminates ts-node overhead and improves worker startup times, making development and production deployments more responsive. (@LucioFranco)
- Enhanced static report generation guide with complete hands-on tutorial: Expanded the static report generation guide from a basic outline to a comprehensive 40-minute tutorial. Users can now follow step-by-step instructions to build a complete data pipeline including CSV/JSON ingestion, ClickHouse time-series analytics, materialized views, and PDF report generation. The guide includes real-world retail scenario, sample data, and working code examples. (@cjus)
- Improved documentation with better file tree visualization and code formatting: Enhanced documentation guides with interactive file tree components replacing plain text directory structures, improved code block formatting with proper shell syntax highlighting, and better visual presentation of project structures. Makes it easier for users to understand project organization and follow setup instructions. (@callicles)
- Updated guides page description for better clarity: Improved the description on the guides page to better explain that guides provide comprehensive walkthroughs for common application use cases using realtime analytical infrastructure, making it clearer what users can expect from the documentation. (@callicles)
Bug Fixes
- Fix rustls panic in framework CLI: Fixed a panic issue in the moose CLI caused by a reqwest dependency upgrade. The CLI now uses native-tls instead of rustls to prevent crashes during HTTP operations, ensuring more reliable CLI functionality. (@LucioFranco)
- Fix inline code blocks rendering in documentation: Fixed rendering issues with inline code blocks in the documentation site. Inline code snippets like
npm installandmoose devnow display properly within text flow, improving readability of code examples and commands throughout the docs. (@callicles) - Fix console errors on documentation guide pages: Fixed console errors that were appearing when viewing documentation guide pages. The errors were caused by invalid HTML nesting when code blocks weren't properly spaced in markdown content. This improves the browsing experience and eliminates distracting error messages in the browser console. (@callicles)
- Fix documentation rendering error in performant dashboards guide: Fixed a rendering issue in the performant dashboards documentation guide caused by incorrect HTML comment syntax. The guide now displays properly without rendering errors. (@callicles)
- Fix deployment namespace detection for BYOC Temporal: Fixed an issue where deployment namespace checks were too strict, causing deployment failures in BYOC (Bring Your Own Cloud) environments. This ensures more reliable deployments when using custom Temporal configurations. (@LucioFranco)
Fiveonefour
Bug Fixes
- Fix branch deployment issues with long names: Fixed an issue where branches with long organization, project, or branch names could fail to deploy properly. Branch deployments now work reliably regardless of name length by ensuring generated identifiers stay within system limits. (@LucioFranco)