We value your privacy

This site uses cookies to improve your browsing experience, analyze site traffic, and show personalized content. See our Privacy Policy.

  1. MooseStack
  2. Release Notes
  3. February 28, 2026

February 28, 2026

This week Moose ships the new moose add command for streamlined component installation and a Semantic Layer API that lets you define metrics and dimensions once and expose them across REST APIs, AI tools, and MCP interfaces. On the Fiveonefour side, comprehensive query analysis dashboards land with performance filtering, environment variable support arrives for deployments with secure masking and organizational precedence, and a new CLI surfaces deployment and infrastructure commands.

Highlights
  • New: Component installation via moose add command
  • New: Semantic Layer API for metrics and dimensions
  • New: Query analysis dashboard with performance filtering
  • New: Environment variable support for deployments

Moose

New Features

Component installation via moose add command (@DatGuyJonathan) New moose add command installs pre-built components (MCP server, chat panel) into existing projects with manifest-driven file copying and dependency management.

# Add MCP server to existing MooseStack service
moose add mcp-server --dir packages/moosestack-service
 
# Add chat UI to Next.js frontend  
moose add chat --dir packages/web-app
 
# Generate API key for authentication
moose generate hash-token
 
# Start development servers
pnpm run dev

Docs: Moose CLI

Semantic Layer API for metrics and dimensions (@georgevanderson, @oatsandsugar) New Semantic Layer API defines metrics, dimensions, and filters once and exposes them as REST APIs, AI SDK tool calls, and MCP tools. Includes type-safe query modeling with composable helpers, fluent SQL builders, and validation utilities.

import { defineQueryModel, buildQuery, count, sum, sql } from "@514labs/moose-lib";import { OrdersTable } from "../datamodels/orders"; export const orderMetrics = defineQueryModel({  name: "query_orders",  description: "Order analytics: revenue, count, avg order value by time/region",  table: OrdersTable,    dimensions: {    region: { column: "region" },    day: { expression: sql`toDate(created_at)`, as: "day" },  },    metrics: {    totalOrders: { agg: count(), as: "totalOrders" },    revenue: { agg: sum(OrdersTable.columns.amount), as: "revenue" },    avgOrderValue: { agg: sql`avg(amount)`, as: "avgOrderValue" },  },    filters: {    region: { column: "region", operators: ["eq", "in"] as const },    createdAt: { column: "created_at", operators: ["gte", "lte"] as const },  },    defaults: { dimensions: ["day"], metrics: ["totalOrders", "revenue"] },}); export const ordersApi = async (params: { region?: string, start?: string }) => {  return await buildQuery(orderMetrics)    .dimensions(["day", "region"])    .metrics(["totalOrders", "revenue"])    .filter("region", "eq", params.region)    .filter("createdAt", "gte", params.start)    .execute(client.query);};

Docs: Semantic Layer

Seed filtering configuration for OLAP tables (@phiSgr) OLAP tables can specify seedFilter with limit and where clauses to control data seeding from remote sources. CLI flags --limit and --all override table-level settings.

import { OlapTable } from "@514labs/moose-lib"; interface GitCommit {  hash: string;  author: string;  files_added: number;  message: string;  timestamp: Date;} export const commitsTable = new OlapTable<GitCommit>("commits", {  orderByFields: ["hash"],  seedFilter: {    limit: 100,    where: "author = 'torvalds' AND files_added > 5"  }}); // CLI usage:// moose seed clickhouse --table commits                    # Uses seedFilter config// moose seed clickhouse --table commits --limit 50        # Overrides limit to 50// moose seed clickhouse --table commits --all             # Ignores all limits

Docs: Model Table

ClickHouse projection support with _part_offset (@LucioFranco) Adds projection support for alternative data ordering within table parts. Projections store data in different sort orders or pre-aggregated forms to speed up queries on non-primary-key columns.

import { OlapTable } from "@514labs/moose-lib"; interface UserEvents {  id: string;  userId: string;  timestamp: Date;  eventType: string;  value: number;} export const userEventsTable = new OlapTable<UserEvents>("user_events", {  orderByFields: ["id"],  projections: [    { name: "proj_by_user", body: "SELECT _part_offset ORDER BY userId" },    { name: "proj_by_ts", body: "SELECT _part_offset ORDER BY timestamp" },    { name: "proj_aggregated", body: "SELECT userId, sum(value) as total ORDER BY userId" },  ],});

Docs: Projections

Data lineage tracking for APIs and web apps (@callicles) Automatically tracks which infrastructure components APIs and web apps read from and write to, enabling dependency analysis, impact assessment, and data flow visualization.

Docs: Apis

Improvements

  • Migration ignore for LowCardinality String differences: New ignore operation suppresses migration warnings when column types differ only by LowCardinality wrapper, reducing noise when ClickHouse automatically optimizes String columns. (@hh2110) Docs: Migrations
  • Documentation improvements: Updated CLI documentation with new command structure. Added GitHub edit links in sidebar, fixed API reference headings in TOC, and included WSL performance warnings. (@callicles, @oatsandsugar, @LucioFranco) Docs: Moose CLI
  • TypeScript compilation and version compatibility: Docker packaging honors custom tsconfig outDir settings. CLI validates @514labs/moose-lib version matches CLI version before running commands to prevent runtime errors. (@phiSgr) Docs: Typescript

Bug Fixes

  • Fix page scroll for MCP chat component: Fixed layout overflow issue that prevented proper scrolling in the chat interface. (@DatGuyJonathan) Docs: Ai
  • Fix aggregation function Merge suffix placement: Fixes -Merge suffix placement for aggregation functions with parameters (e.g., quantile(0.5) becomes quantileMerge(0.5) instead of quantile(0.5)Merge). (@phiSgr) Docs: Aggregates
  • Fix ClickHouse SQL parameter handling and DDL parsing: Fixes SQL parameter ordering and column property parsing in ClickHouse DDL operations, resolving issues with comment and codec combinations in table migrations. (@phiSgr) Docs: Migrate
  • Fix config file handling with read-only permissions: Gracefully handles externally-managed config files by skipping writes instead of failing. (@LucioFranco) Docs: Configuration
  • Fix configurable ClickHouse native port in Docker Compose: Fixed Docker Compose to respect the configured native_port instead of hardcoding 9000. (@514Ben) Docs: Clickhouse
  • Fix Redis port extraction from URL for Docker Compose: Docker Compose now correctly uses port from Redis URL instead of separate port field for host binding. (@514Ben) Docs: Redis

Fiveonefour Hosting

New Features

Environment variables in deployments (@onelesd) User-defined environment variables configured in the console are now injected into builds, so code that reads env vars at the top level during build (e.g. at module initialization) no longer fails. Variables resolve with org → project → branch precedence and are securely masked in build logs.

CLI deployment and infrastructure commands (@callicles) New CLI commands for fetching infrastructure maps and listing deployments. Infrastructure maps show resources and relationships with filtering. Deploy listing includes branch, status filtering, and pagination with deployment metadata.

Automatic MCP token generation for templates (@onelesd) Projects created from templates automatically generate MCP authentication tokens during setup using PBKDF2 hashing, eliminating the need to run the Moose CLI separately.

Vercel deployment synchronization (@georgevanderson) Vercel deployments now wait for Moose application deployment completion, preventing race conditions where frontend deployments complete before backend data infrastructure is ready.

Improvements

  • CLI consistency and authentication improvements: Standardized project identifiers as positional args for single-object commands. Enhanced session validation with clearer error messages for invalid API keys. Updated branding from 'Boreal' to '514' throughout CLI. (@callicles, @LucioFranco)
  • Enhanced repository import empty state: Improved empty state when no Moose project is found, now includes TypeScript/Python setup commands with copy buttons and getting started documentation link. (@okane16)

Bug Fixes

  • Fix build log pagination limit: Added missing pagination limit to build logs fetch to prevent incomplete log display. (@LucioFranco)
  • Fix read-only config file handling: Install script prevents errors when config.toml is read-only by checking write permissions before modifying. (@LucioFranco)

On this page

MooseNew FeaturesImprovementsBug FixesFiveonefour HostingNew FeaturesImprovementsBug Fixes
Edit this page
FiveonefourFiveonefour
Fiveonefour Docs
MooseStackHostingTemplatesGuides
Release Notes
Source531
  • Overview
Build a New App
  • 5 Minute Quickstart
  • Browse Templates
  • Existing ClickHouse
Add to Existing App
  • Next.js
  • Fastify
Fundamentals
  • Moose Runtime
  • MooseDev MCP
  • Language Server
  • Data Modeling
Moose Modules
  • Moose OLAP
  • Moose Streaming
  • Moose Workflows
  • Moose APIs & Web Apps
Deployment & Lifecycle
  • Moose Dev
  • Moose Migrate
  • Moose Deploy
Reference
  • API Reference
  • Query Layer
  • Data Types
  • Table Engines
  • CLI
  • Configuration
  • Observability Metrics
  • Help
  • Release Notes
Contribution
  • Documentation
  • Framework