Skip to content

Releases: neomjs/neo

Neo.mjs v11.13.0 Release Notes

29 Nov 12:34

Choose a tag to compare

This release enhances the GitHub Workflow MCP server with improved configuration options for managing issue archives. It standardizes how versioned directories are named, ensuring a consistent structure for your project's history.

✨ Highlights

📁 Standardized Archive Directories

We have introduced a new configuration option, versionDirectoryPrefix, to the GitHub Workflow server. This setting unifies the naming convention for all version-based archive directories.

Whether an issue is archived because of a Milestone or a Release Tag, the resulting folder in .github/ISSUE_ARCHIVE/ will now consistently use this prefix (defaulting to 'v', e.g., v1.2.3/). The implementation includes robust logic to handle various input formats, ensuring that version strings are never "double-prefixed" (e.g., avoiding vv1.2.3).

📦 Full Changelog

AI MCP Servers

  • Enhancement: Add versionDirectoryPrefix to GitHub Workflow MCP config (Issue #7911, Issue #7912)
    • Introduced versionDirectoryPrefix to control folder naming for both milestones and releases.
    • Implemented smart prefixing logic to handle raw (1.2.3) and pre-prefixed (v1.2.3) version strings consistently across Issue and Release syncers.

Neo.mjs v11.12.0 Release Notes

29 Nov 11:32

Choose a tag to compare

This release focuses on improving the SEO infrastructure of the platform. By enhancing how we generate sitemaps and site metadata, we are paving the way for better discoverability by search engines and AI crawlers. These changes are a preparatory step for the upcoming middleware-based routing deployment, ensuring that external bots can index the entire application tree effectively.

✨ Highlights

🗺️ Middleware-Ready SEO Generation

We have significantly updated the generate-seo-files build tool to support environments using server-side middleware for routing.

  • Real Routes: The sitemap generator now produces "clean" URLs (e.g., /services) instead of hash-based fragments (e.g., /#/services). This is critical for crawlers like Googlebot, which prioritize standard URL structures.
  • Route Mapping: The CLI tool now supports a new objects output format. This provides a JSON mapping between the public "real" route and the internal client-side route (e.g., {"route": "/services", "clientSideRoute": "/#/services"}). This mapping enables middleware to correctly resolve incoming requests and serve the appropriate application state.
  • Categorized Routing: The internal logic now explicitly categorizes routes as tree (documentation), top-level (SPA roots), or file (standalone apps/examples), ensuring correct path handling for every type of content.

📦 Full Changelog

Build Scripts & SEO

  • Enhance SEO generator to support middleware-compatible routes (Issue #7910)
    • Added useHash option to route generation to support clean URLs.
    • Added objects format to CLI for generating route mappings.
    • Fixed path handling for standalone example apps (no longer prefixed with /learn).

Neo.mjs v11.11.0 Release Notes

26 Nov 12:47

Choose a tag to compare

This release brings a major architectural refactoring to the AI Knowledge Base's ingestion engine. We have transitioned the implementation from a monolithic DatabaseService to a modular, extensible design. By decomposing the system into specialized Parsers and Source Providers, we have significantly improved the platform's ability to ingest and index diverse content types.

✨ Highlights

🧠 Knowledge Base: Modular Architecture

The DatabaseService—previously a "God Class" handling everything from file crawling to embedding—has been refactored into a clean, domain-driven design:

  • Parsers (ai.mcp.server.knowledge_base.parser): Specialized singletons for understanding specific content formats (e.g., TestParser for Playwright files, DocumentationParser for markdown).
  • Source Providers (ai.mcp.server.knowledge_base.source): Dedicated classes responsible for crawling specific domains (e.g., ApiSource, TicketSource, LearningSource).
  • Vector Service: A dedicated service now handles the heavy lifting of embedding generation and vector database interactions.

This separation of concerns makes the AI infrastructure more robust and easier to extend with new knowledge sources in the future.

🎯 Granular Test Indexing

We have overhauled how automated tests are indexed. Instead of treating a test file as a single chunk of text, the new TestParser intelligently decomposes Playwright specs:

  • Header Chunks: Capture high-level context, imports, and test.describe blocks.
  • Test Case Chunks: Each test() function is indexed individually with precise line-number metadata.

This granularity allows AI agents to perform semantic searches for specific test scenarios (e.g., "How do I test grid filtering?") with much higher precision. Previously, an entire test file was indexed as a single monolithic chunk, diluting the semantic signal of individual test cases. Now, the vector search can identify and retrieve the exact test case that matches the query.

⚡ VDom Worker Stability

We resolved a race condition in the VDom worker initialization. Previously, the Neo.vdom.Helper could attempt to initialize its renderer before the global configuration was fully registered. This has been fixed by ensuring initialization waits for the Neo.config to be populated, improving startup stability.

📦 Full Changelog

AI Knowledge Base & Infrastructure

  • Split Playwright tests into granular knowledge base chunks for better retrieval (Issue #7901)
  • Refactor Knowledge Base parsing logic into domain-specific Singletons (Issue #7902)
  • Refactor Knowledge Base crawling logic into Source Providers (Issue #7903)
  • Refactor Knowledge Base embedding logic into Vector Service (Issue #7904)
  • ai.mcp.server.knowledge-base.source.Base: remove the singleton config (Issue #7905)
  • Refactor ApiSource hardcoded path to non-reactive config (Issue #7906)

Core Framework & Workers

  • Fix race condition in VDom worker initialization (Issue #7907)
  • Refactor vdom.Helper initAsync to use optional chaining (Issue #7908)

All changes in 1 commit: 491f876

Neo.mjs v11.10.0 Release Notes

24 Nov 14:55

Choose a tag to compare

This release significantly enhances the Agent OS Knowledge Base by expanding its scope to include the entire AI infrastructure, the automated test suite, and a retroactive history of the project. These changes ensure that AI agents have a complete, 360-degree view of the framework—from source code and tests to historical decision-making.

✨ Highlights

📚 Expanded Knowledge Base: Tests & AI Infrastructure

We have bridged the gap between the framework's source code and its supporting ecosystem. The Knowledge Base now indexes:

  • AI Infrastructure (ai/): The Agent OS SDK, MCP servers, and services are now fully indexed. Agents can now query the Neo.ai namespace to understand their own architecture.
  • Automated Tests (test/playwright/): Agents can now query for test specifications via semantic search using the new type: 'test' filter. This allows finding relevant tests by meaning rather than just keywords, helping agents understand how to write and maintain Playwright tests for the framework.
  • Retroactive History: We have backfilled the repository with tickets and release notes starting from January 1st, 2025 (v8.0.1+). Previously limited to v10+, this expanded history gives agents a deeper context on the framework's evolution and design decisions.

📖 Docs App: AI Namespace Integration

The Docs App has been updated to include the Neo.ai namespace.

  • Visualizing the AI SDK: Developers can now browse the class hierarchy of the AI infrastructure (e.g., Neo.ai.mcp.server.knowledge-base.Server).
  • Smart Filtering: We implemented intelligent filtering (via the new doesNotStartWith operator and @ignoreDocs tag) to ensure only relevant classes are displayed, keeping the navigation tree clean.

🧹 Standardization & Code Quality

We have enforced stricter coding guidelines to improve documentation quality and consistency:

  • JSDoc Standardization: The @ summary tag is now mandatory as the first tag for all classes, ensuring concise high-level descriptions.
  • MCP Tool Signatures: All MCP server tools now use standardized method signatures with default object arguments, improving robustness and error handling.

📦 Full Changelog

AI Knowledge Base & Infrastructure

  • Index ai/ directory in Knowledge Base via JSDoc (Issue #7896)
  • Index test/playwright/ in Knowledge Base as raw source (Issue #7897)
  • Enhance query_documents tool with limit parameter and updated JSDoc (Issue #7883)
  • MCP servers: inconsistencies inside className configs (Issue #7895)

Docs App & JSDoc

  • Clean up Docs App structure by filtering invalid AI modules and pruning empty folders (Issue #7899)
  • Support @ignoreDocs JSDoc tag to exclude files from Docs app structure (Issue #7900)
  • Update Coding Guidelines to mandate @ summary as first tag (Issue #7894)
  • Update Coding Guidelines for Class Top-Level JSDoc Comments and @ summary Tag (Issue #7890)
  • Update Coding Guidelines for JSDoc and Refactor GitHub Workflow MCP (Issue #7889)
  • Add Class-Level JSDoc Comments to GitHub Workflow MCP Server (Issue #7891)
  • Review and Update JSDoc Comments in Memory Core MCP Server (Issue #7892)
  • Review and Update JSDoc Comments in Knowledge Base MCP Server (Issue #7893)

Core Framework Enhancements

  • Add 'doesNotStartWith' operator to Neo.collection.Filter (Issue #7898)
  • Standardize MCP Tool Method Signatures with Default Objects (Issue #7888)

Workflow Enhancements

  • Enforce "Propose-First" workflow and Labeling in create_issue tool description (Issue #7884)
  • [AI] Streamline create_issue workflow instruction (Issue #7886)
Screenshot 2025-11-24 at 15 54 34 Screenshot 2025-11-24 at 14 07 55 Screenshot 2025-11-24 at 14 10 40 Screenshot 2025-11-24 at 13 56 43

All changes in 1 commit: 0cbc9f9

Neo.mjs v11.9.0 Release Notes

23 Nov 12:55

Choose a tag to compare

Happy Birthday, Neo.mjs! 🎉

Today, November 23, 2025, marks exactly 6 years since the General Availability (GA) of Neo.mjs on November 23, 2019.

We wanted to make this anniversary release special. Six years ago, we reimagined web development with a multi-threaded, worker-first architecture. Today, we are reimagining it again with the Agent OS.

This release moves beyond the "Tool Use" era into a future where agents are first-class citizens—autonomous developers capable of executing code, managing their own infrastructure, and understanding complex context. We have solidified this vision with a comprehensive documentation overhaul, a unified "Neo-Native" AI architecture, and foundational features for the next generation of spatial web apps.

✨ Highlights

📘 Agent OS: The Comprehensive Manual

We have cemented the "Agent OS" vision with a complete suite of documentation. New guides cover everything from the high-level "Agent OS" concept to deep dives into each MCP server.

  • Agent OS Introduction: The high-level vision and architecture.
  • Code Execution Guide: A definitive guide to the "Thick Client" pattern (ai/services.mjs), including a real-world case study on self-healing database schemas.
  • Real-World Showcase: While v11.8 introduced the concept, v11.9 delivers the proof. We've added concrete examples like ai/examples/debug_session_state.mjs (a "Thick Client" diagnostic tool) and ai/examples/migrate_timestamps.mjs (an autonomous migration utility), proving how agents can maintain their own infrastructure.
  • Server Guides: Detailed architecture breakdowns for the Knowledge Base, Memory Core, and GitHub Workflow servers.
  • Philosophy: We've documented the "Why" behind our Context Engineering and "Save-Then-Respond" protocols.

🏗 Unified MCP Architecture & The Runner Pattern

We've completely re-architected our AI infrastructure, paying down technical debt by refactoring all three MCP servers (memory-core, knowledge-base, github-workflow) to use a robust Runner Pattern.

Instead of monolithic scripts, we now have a clear separation of concerns:

  • The Runner (mcp-stdio.mjs): A lightweight entry point responsible for CLI argument parsing (commander), global config setup, and error trapping. It acts as the "main" function.
  • The Server (Server.mjs): A pure Neo.core.Base class that encapsulates the application logic. It leverages the framework's powerful lifecycle hooks (initAsync, ready) to orchestrate complex dependency chains (Database -> Auth -> Transport) without race conditions.

This Neo-Native approach means our AI backend services now share the same DNA as our frontend components—making them easier to test, extend, and maintain.

🪟 Neo.manager.Window: The "God View"

We introduced Neo.manager.Window, a new core manager in the App Worker that tracks the exact geometry of all connected browser windows.

  • Geometry Tracking: Automatically tracks screenX, screenY, width, and height for every window.
  • Spatial Awareness: Enables getWindowAt(x, y) queries, a prerequisite for cross-window drag-and-drop.
  • Reactive Updates: Extends Neo.manager.Base for full observability of window state changes.

🧠 Memory Core: Parallel Sessions & Eventual Consistency

We have upgraded the Memory Core's synchronization engine to move beyond the single-agent "happy path" and fully support Parallel Agent Sessions.

  • Eventual Consistency: The system now employs a robust consistency model that can track multiple agents working simultaneously without corrupting the context window.
  • Drift Detection: Intelligent logic automatically compares raw memory logs against cached summaries. If a parallel session adds new memories or crashes unexpectedly, the next agent will detect the "drift" and self-heal the summary on startup.
  • Numeric Timestamps: We refactored the storage engine to use numeric timestamps (milliseconds), resolving critical compatibility issues with ChromaDB range queries and ensuring precise session discovery.

📦 Full Changelog

Agent OS & Documentation

  • [Docs] Re-position Neo.mjs as "Agent Operating System" in Schema and Metadata (Issue #7844)
  • Epic: Documentation Overhaul for MCP & Agent OS Architecture (Issue #7848)
  • Docs: Create Guide for "Introduction to MCP & Agent OS" (Issue #7849)
  • Docs: Create Guide for "The Knowledge Base Server" (Issue #7850)
  • Docs: Create Guide for "The Memory Core Server" (Issue #7851)
  • Docs: Create Guide for "The GitHub Workflow Server" (Issue #7852)
  • Docs: Create Guide for "Code Execution with MCP" (Issue #7853)
  • Enhance Knowledge Base MCP Server Guide (Issue #7854)
  • Enhance Knowledge Base Guide with 'Why' and Use Cases (Issue #7855)
  • Polish Knowledge Base Guide: Config Details & Storytelling (Issue #7856)
  • Enhance Memory Core MCP Server Documentation (Issue #7857)
  • Documentation: Comprehensive Guide for GitHub Workflow MCP Server (Issue #7858)
  • Documentation: Enhance "Code Execution with MCP" Guide (Issue #7859)
  • Documentation: Update GitHubWorkflow.md to reference Knowledge Base Server (Issue #7860)
  • Enhance Code Execution Guide with Real-World Case Study (Issue #7876)
  • Update MCP guides code blocks to be readonly (Issue #7877)
  • Enhance README.md with links to new MCP guides and Code Execution section (Issue #7879)

AI Infrastructure (Refactoring & Enhancements)

  • Refactor Memory Core MCP Server to use Neo.core.Base class architecture (Issue #7869)
  • Refactor Knowledge Base MCP Server to use Neo.core.Base architecture (Issue #7871)
  • Refactor GitHub Workflow MCP Server to use Neo.core.Base architecture (Issue #7872)
  • Improve Session Summarization to Handle Parallel and Recent Sessions (Issue #7861)
  • Add capability to force summarize all sessions (Issue #7862)
  • Refactor SessionService for better error handling and config management (Issue #7864)
  • Refactor Memory Core to use numeric timestamps for ChromaDB compatibility (Issue #7865)
  • Refactor MemoryService to use crypto-based IDs (Issue #7867)
  • Implement consistent error handling for Memory Core MCP tools (Issue #7868)
  • Standardize version reporting across MCP servers (Issue #7873)

Core Framework

  • Feat: Create Neo.manager.Window for Multi-Window Geometry Tracking (Issue #7845)
  • Refactor Neo.manager.Window to extend Neo.manager.Base (Issue #7875)
  • Docs: Clarify distinction between Non-Reactive Configs and Class Fields in Neo.core.Base (Issue #7870)
  • Remove duplicate contains() method in Rectangle.mjs (Issue #7874)
  • Add Markdown and YAML to Highlight.js build configuration (Issue #7878)

Bug Fixes

  • Bug: Prevent SessionService from summarizing the active session (Issue #7866)

Here is the example of the code execution pattern where Gemini 3 fixed a running MCP server via run-time tool composition scripts:

Screenshot 2025-11-22 at 20 34 08 Screenshot 2025-11-22 at 20 37 32

All changes in 1 commit: 08ad5e1

Neo.mjs v11.8.0 Release Notes

21 Nov 15:10

Choose a tag to compare

This release marks a pivotal shift in our AI strategy, transitioning Neo.mjs from a "Tool Use" architecture to a true "Agent OS", inspired by Anthropic's Code Execution pattern. We have introduced a standalone, type-safe AI SDK (ai/services.mjs) that enables agents to import and execute framework services directly in Node.js. This "Thick Client" approach allows for complex, autonomous workflows—demonstrated by our new Self-Healing Repository proof of concept—where agents can monitor, plan, and fix bugs without human intervention.

✨ Highlights

🤖 The Agent OS: Code Execution & Safe SDK

  • Standalone AI SDK: We've decoupled our intelligent services (Knowledge Base, Memory Core, GitHub Workflow) from the MCP transport layer. Agents can now import ai/services.mjs to access these capabilities directly as a Node.js library. (Issue #7831, #7832)
  • "TypeScript without TypeScript": We achieved the holy grail of JavaScript development: robust type safety without a compilation step. By dynamically wrapping our SDK with Zod schemas generated from our OpenAPI specs, we enforce strict contracts at runtime. This preserves our Zero-Build Dev Mode and Web Standards philosophy—allowing agents (and humans) to script complex logic directly in the browser console or Node.js without setting up a TS toolchain. (Issue #7843)
  • Self-Healing Repository: A groundbreaking demo script (ai/examples/self-healing.mjs) that autonomously monitors GitHub for bugs, queries the codebase for context, formulates a plan, and proposes a fix—all in a single execution cycle. (Issue #7833)

📂 New Agent Examples

We've added a suite of examples to demonstrate the power of the new Agent OS SDK:

  • ai/examples/self-healing.mjs: The flagship autonomous maintenance demo.
  • ai/examples/smart-search.mjs: Demonstrates programmatically querying and filtering the Knowledge Base.
  • ai/examples/db-backup.mjs: Programmable database backup using the exposed SDK.
  • ai/examples/db-restore.mjs: Restoration utility for the Knowledge Base or Memory Core.
  • ai/examples/test-safety.mjs: A verification script proving our runtime type safety catches invalid inputs.
Screenshot 2025-11-21 at 15 05 28 Screenshot 2025-11-21 at 15 20 32

⚙️ Core Framework Optimizations

  • Faster Builds: The highlight.js build script now skips unnecessary regeneration if the target files exist, significantly speeding up the buildAll process. (Issue #7823)
  • Robust App Initialization: Fixed potential race conditions in the App worker by initializing Neo.apps maps early and optimizing window-specific events (onVisibilityChange, onOrientationChange) to use direct lookups. (Issue #7827)
  • UUID Window IDs: Moved from timestamp-based IDs to crypto.randomUUID() for robust, collision-free window identification. (Issue #7828)
  • SSR Optimization: The Stylesheet addon now intelligently skips FontAwesome and global theme loading during Server-Side Rendering to prevent redundant network requests. (Issue #7829)

🛡️ Robust AI Infrastructure

  • Hybrid Database Lifecycle: Refactored the database services to support External, Managed, and Shared modes without deadlocks. (Issue #7836)
  • JSON Parsing Resilience: The Session Service now gracefully handles and strips Markdown code blocks from LLM responses, ensuring reliable JSON parsing. (Issue #7825, #7826)
  • Schema & Backup fixes: Fixed schema validation errors in the list_issues tool and enabled programmable database backups via the SDK. (Issue #7839, #7841)

📦 Full Changelog

  • [MCP] Support issue comments in create_comment tool (Issue #7821)
  • Optimize highlight.js build to skip unnecessary regeneration (Issue #7823)
  • Neo.ai.mcp.server.github-workflow.services: alphabetical method ordering (Issue #7824)
  • Fix JSON parsing in SessionService summarization (Issue #7825)
  • Extract JSON parsing logic into Neo.util.Json (Issue #7826)
  • Initialize Neo.apps in App worker and optimize window-specific events (Issue #7827)
  • Use crypto.randomUUID() for windowId generation (Issue #7828)
  • Optimize Stylesheet addon for SSR mode (Issue #7829)
  • Exploration: Enable AI Agent Code Execution with Standalone AI SDK (Issue #7831)
  • Expansion: Unified AI SDK for Memory and GitHub Services (Issue #7832)
  • Demo: Self-Healing Repository Script (Agent OS) (Issue #7833)
  • Refactor: Robust Hybrid Database Lifecycle for AI Services (Issue #7836)
  • Cleanup redundant awaits in self-healing example (Issue #7837)
  • Fix ChromaDB warning: No embedding function configuration found (Issue #7838)
  • Enhance AI SDK: Fix ChromaDB warnings and enable programmable backups (Issue #7839)
  • Optimize SessionService.summarizeSessions with Promise.all (Issue #7840)
  • Fix list_issues tool schema validation error (Issue #7841)
  • examples.tableFiltering: changing the operator and then the number value for "lucky number" does not honor the new operator (Issue #7842)
  • [AI] Implement Runtime Type Safety for AI SDK via OpenAPI Wrappers (Issue #7843)

All changes in 1 commit: db234f9

Neo.mjs v11.7.0 Release Notes

20 Nov 13:32

Choose a tag to compare

This release introduces a foundational architectural enhancement for multi-window application support, refactoring core systems to rely on windowId instead of appName. This change enables multiple instances of the same application to coexist across different windows without conflict, a critical requirement for advanced desktop-like web experiences. We have also significantly expanded our AI-Native capabilities, documenting the use of custom MCP servers and the latest Gemini models.

✨ Highlights

🖥️ Multi-Window Architecture Refactoring

  • Neo.apps by Window ID: The central Neo.apps registry has been refactored to key applications by their unique windowId rather than their appName. This solves a critical issue where multiple instances of the same app (e.g., in a shared worker context) would overwrite each other. A new Neo.appsByName registry has been introduced to look up apps by name when needed. (Issue #7820)
  • Precision DOM Updates: The Neo.applyDeltas method has been updated to accept windowId instead of appName. This ensures that DOM updates—such as those triggered by plugins or direct manipulations—are routed to the correct browser window, eliminating ambiguity in multi-window setups. (Issue #7822)
  • Robust Cross-Window Communication: Child apps (like the SharedDialog demos) now correctly identify their specific parent window instance using openerId, ensuring reliable communication even when multiple parent instances exist.

🤖 AI-Native Development & Documentation

  • "I Am Gemini 3": We've published a comprehensive blog post detailing how Neo.mjs is built using a "Team of AI Agents" architecture. This post showcases the power of our custom MCP servers (knowledge-base, memory-core, github-workflow) and how they enable high-velocity, architectural evolution. (Issue #7817)
  • Tooling Visibility: The blog post was updated to highlight the importance of the chrome-devtools MCP server, bridging the gap between high-level code abstractions and runtime DOM reality. (Issue #7818)

🧪 Testing Suite Updates

  • Test Context Alignment: The Playwright test suite setup.mjs has been updated to align with the new windowId-based architecture, ensuring unit tests run with a valid window context (defaulting to 1). This prevents regressions and ensures our tests accurately reflect the new multi-window reality. (Issue #7822)

📦 Full Changelog

  • Blog: I Am Gemini 3. I Am Not a Chatbot. I Am a Contributor. (Issue #7817)
  • Blog Update: Add chrome-devtools to MCP tooling list (Issue #7818)
  • Add the Gemini 3 blog post to the portal app (Issue #7819)
  • Refactor Neo.apps to support multi-window instances (Issue #7820)
  • Refactor Neo.applyDeltas to use windowId instead of appName (Issue #7822)

All changes in 1 commit: 97180f5

Neo.mjs v11.6.1 Release Notes

19 Nov 17:38

Choose a tag to compare

This patch release focuses on critical stability improvements, regression fixes, and architectural enhancements to the MCP server infrastructure.

✨ Highlights

🛡️ Security & Stability

  • Race Condition Fix: Resolved a race condition where the App Worker could attempt to use Main Thread remote methods (like Stylesheet) before they were fully registered. Neo.Main now deterministic awaits the initialization of all addons before signaling readiness to the Worker Manager. (Issue #7815)
  • XSS Mitigation: Refactored labelText and valueLabel in CheckBox and TextField to strictly separate text content from VDOM structures. The unsafe use of .html (innerHTML) has been removed in favor of a secure VDOM-based approach. (Issue #7812, #7813)

🐛 Regression Fixes

  • Layout Bindings: Restored the ability to use data bindings on layout configurations (e.g., bind: {activeIndex: ...}) by replacing the deprecated parseConfig method with the new createBindings API in src/layout/Base.mjs. (Issue #7814)
  • Value Label Rendering: Fixed a regression in Neo.filter.BooleanContainer where icons were rendering as escaped strings instead of HTML elements. The valueLabel config now supports VDOM objects and arrays for rich content. (Issue #7812)

🤖 MCP Server Updates

  • API Compliance: Updated all MCP servers (GitHub Workflow, Memory Core, Knowledge Base) to use the new McpServer class from the SDK, resolving deprecation warnings. (Issue #7808)
  • Dynamic Versioning: Servers now dynamically pull their version from package.json instead of using a hardcoded value. (Issue #7809)
  • Configurable Models: The Gemini model name in SessionService is now configurable via config.mjs. (Issue #7811)
  • Data Path Clarity: Renamed ChromaDB data directories to chroma-neo-knowledge-base and chroma-neo-memory-core for better clarity and consistency. (Issue #7810)

🛠️ Build Tooling

  • Webpack Warnings: Suppressed a "Critical dependency" warning in HighlightJs.mjs by explicitly ignoring the dynamic import of the runtime library. (Issue #7816)

📦 Full Changelog

  • Refactor: Rename Server to McpServer in MCP implementations (Issue #7808)
  • Refactor: Use npm package version in MCP servers (Issue #7809)
  • Refactor: Rename ChromaDB data directories for clarity (Issue #7810)
  • Refactor: Move hardcoded Gemini model name to config in SessionService (Issue #7811)
  • Fix regression: Enable HTML rendering in form field labels (valueLabel) (Issue #7812)
  • Refactor: Enhance labelText to support VDOM and remove innerHTML usage (Issue #7813)
  • Fix regression: Replace deprecated parseConfig with createBindings in Layout.mjs (Issue #7814)
  • Fix race condition: Await addon initialization in Neo.Main (Issue #7815)
  • Fix Webpack critical dependency warning in HighlightJs dynamic import (Issue #7816)

All changes in 1 commit: eae4b0e

Neo.mjs v11.6.0 Release Notes

19 Nov 13:05

Choose a tag to compare

This release introduces significant enhancements to the configurability and robustness of our MCP (Model Context Protocol) servers, making them more flexible for diverse deployment scenarios. It also includes critical stability fixes for the Memory Core and a major architectural improvement for Server-Side Rendering (SSR) hydration.

✨ Highlights

🚀 SSR Hydration Stability & Self-Healing

  • VNode ID Namespacing: We have implemented a robust namespacing strategy for server-generated VNodes (neo-ssr-vnode-X). This critical change decouples server-side ID generation from client-side counters.
  • Improved Hydration: Previously, discrepancies between server data (e.g., a store with 10 items) and client data (e.g., the same store loading 20 items) could lead to DOM ID collisions and hydration failures. By using namespaced IDs for the initial SSR render, the client can safely "take over" the existing DOM, sync it into the Virtual DOM, and perform self-healing patches without conflicts. This ensures a seamless transition from static HTML to a fully interactive application, even when data states diverge. (Issue #7800, #7798)

🤖 MCP Server Configurability & Architecture

  • Standardized CLI & Configuration: We have unified the startup architecture across all three MCP servers (GitHub Workflow, Memory Core, Knowledge Base). Each server now uses commander for robust CLI argument parsing, supporting:
    • --config <path>: Load a custom configuration file (JSON or JS/MJS).
    • --debug: Enable debug logging via a standardized flag.
    • Proxy-based Config: Implemented a clean architectural pattern separating the configuration service from the data, ensuring safe and extensible access to config values. (Issue #7802, #7803, #7804, #7805, #7801)

🧠 Memory Core Enhancements

  • Robust Session Management: Fixed a critical stability issue where add_memory would fail if the sessionId was omitted. The server now intelligently auto-generates a session ID if one is not provided.
  • Session Visibility: The healthcheck endpoint now exposes the currentSessionId, allowing agents to easily discover their session context. (Issue #7806)

🔄 Workflow Improvements

  • Cleaner Issue Syncing: The IssueSyncer service has been improved to correctly strip the "Activity Log" section when pushing updates back to GitHub. This prevents read-only historical data from being duplicated or polluting the issue body on the remote. (Issue #7793)
  • Bug Fixes: Resolved a missing import in IssueService. (Issue #7797)

🛠️ Core Framework Refactoring

  • Configuration Cleanup: Removed deprecated configurations Neo.config.isInsideSiesta (as we have fully migrated to Playwright) and Neo.config.isMiddleware. (Issue #7799, #7798)

📦 Full Changelog

  • Neo.ai.mcp.server.github-workflow.services.sync.IssueSyncer: pushToGitHub() exclude activity log (Issue #7793)
  • ai.mcp.server.github-workflow.services.IssueService: listIssues() uses 2 not imported constants (Issue #7797)
  • Neo.config.isMiddleware (Issue #7798)
  • Remove Neo.config.isInsideSiesta (Issue #7799)
  • worker.Manager: createWorkers() => remove passing idCounter to the vdom worker (Issue #7800)
  • Refactor services to use config directly instead of DEFAULT_QUERY_LIMITS (Issue #7801)
  • Add CLI argument parsing to GitHub Workflow MCP Server (Issue #7802)
  • Support --debug flag via commander in GitHub Workflow MCP Server (Issue #7803)
  • Add CLI argument parsing and Config refactoring to Memory Core MCP Server (Issue #7804)
  • Add CLI argument parsing and Config refactoring to Knowledge Base MCP Server (Issue #7805)
  • Fix add_memory failure when sessionId is omitted (Issue #7806)

All changes in 1 commit: 28ef215

Neo.mjs v11.5.0 Release Notes

18 Nov 20:28

Choose a tag to compare

This release brings significant advancements in Server-Side Rendering (SSR) capabilities, implementing the foundational "takeover" logic that allows the client-side framework to seamlessly adopt server-rendered state. We also introduce a unified, cross-platform architecture for code highlighting, ensuring consistent behavior between Node.js and the browser. Additionally, this version includes important build script enhancements for better Windows compatibility and updates to the documentation.

✨ Highlights

🚀 SSR Takeover & VDom Integration

  • Client-Side Takeover Logic: Implemented the core logic for the framework to "takeover" a server-rendered page without re-hydrating the DOM. The Manager now injects SSR data (windowId, vnode, cssMap, idCounters) into worker configurations. (Issue #7784)
  • VDom Worker Synchronization: The VDom worker now accepts idCounters from the server, ensuring that client-side ID generation continues seamlessly from where the server left off, preventing ID collisions. (Issue #7785)
  • Optimized Theme Loading: The App worker now processes the SSR cssMap to identify pre-loaded theme files, preventing redundant network requests for CSS that is already present. (Issue #7786)
  • VdomLifecycle & Application Controller: Enhanced Application.mjs to handle autoInitVnode: false for SSR scenarios, allowing the main view to adopt the server-provided VDOM. (Issue #7787)

To better understand the SEO support topic: By default, Neo.mjs Apps start with an empty body tag and the client-side uses DOM APIs to populate it.
Screenshot 2025-11-17 at 19 25 14

Inside the SSR version, we will get the full html markup directly (better for crawler bots):
Screenshot 2025-11-17 at 19 19 58

This part already renders beautifully:
Screenshot 2025-11-17 at 19 18 57

More important is the "self-healing" hydration aspect: even if there are race-conditions like different store loads arriving at different times, Neo can fully take over the existing app without the need for a re-rendering. Minor delta-updates at most. Meaning: SSR Apps can work for human users too.

🎨 Unified Code Highlighting Architecture

  • Universal Highlight.js Bundle: Created a custom, ESM-compatible build of highlight.js that includes only necessary languages (bash, css, javascript, json, scss, xml). This single bundle works in both Node.js and the browser, replacing the main-thread addon. (Issue #7790)
  • Cross-Platform Highlighting Utility: Introduced Neo.util.HighlightJs and Neo.util.HighlightJsLineNumbers to handle syntax highlighting and line numbering in any environment (Worker or Node.js). This removes the dependency on the DOM-based main thread addon. (Issue #7789)
  • Refactored ContentComponent: The Portal's ContentComponent has been refactored to use the new synchronous-style highlighting utilities, significantly simplifying the code and removing async dependencies on the main thread. (Issue #7791)
  • Unified Theming: Consolidated highlighting styles into a flexible SCSS architecture (resources/scss/src/util/HighlightJs.scss) with theme-specific variable mappings, replacing hardcoded CSS files. (Issue #7791)

🛠️ Build & Compatibility Improvements

  • Node.js Compatibility: Added a dynamic import for fs/promises in data/Store.mjs and a fallback for XMLHttpRequest, ensuring the Data Store works correctly in Node.js environments. (Issue #7783, #7781, #7782)
  • Windows Build Support: Updated buildScripts/buildAll.mjs, createApp.mjs, and Webpack configs to dynamically determine the correct Node.js binary (node.exe vs node), resolving build issues on Windows. (Issue #7795, #7796)

📚 Documentation

  • Docs Overhaul: A complete refactoring of README.md to align with the v11+ AI-native focus, highlighting the new MCP architecture and platform scale. (Issue #7778)

🐛 Bug Fixes

  • Test Suite Fix: Resolved an issue where ghIntegrationGate.spec.mjs was breaking the Playwright test harness. (Issue #7780)

All changes in 1 commit: 176ad3a