Skip to content
CAI
Software that uses CAICheck a score

goofychris/art-template

50.5

Adequate · 2 October 2026

5.7k

lines of production code

JavaScript

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

art-template is a discontinued JavaScript template engine that compiles and renders HTML using custom or native syntax. It supports features such as template inclusion, nested block layouts, and static precompilation, with builds optimized for both Node.js and browser environments. The system includes utilities for HTML minification, source map generation, and performance benchmarking against other engines.

Features

Add example demonstrating template inclusion

An example in the node-include directory now demonstrates how to include partial templates (header and footer) within a main page. The example includes a main index.art template that uses the include syntax to inject header.art and footer.art, along with the corresponding JavaScript entry point to render the result.

example/node-include · high confidence

Added IE8 compatibility shims to the web example

The \example/web-ie-compatible\ location now includes \es5-shim.min.js\, \es5-sham.min.js\, and \json3.min.js\ to polyfill missing ECMAScript 5 and JSON features, enabling the example page to run in Internet Explorer 8. The \index.html\ file has been added to demonstrate this setup by loading these shims before the application template script.

example/web-ie-compatible · high confidence

Added example demonstrating nested block support

The \example/node-layout\ directory now includes a \nested-block\ subdirectory with template files (\index.art\, \inner-layout.art\, \outer-layout.art\) and a runner script (\index.js\). This example demonstrates the engine's ability to handle nested block definitions, allowing inner layouts to define default content for blocks that can be overridden by parent templates.

example/node-layout · high confidence

Added example demos for art-template syntax variants and RequireJS integration

Added example pages demonstrating the art-template library's custom syntax (e.g., {{if}}, {{each}}), native JavaScript syntax (e.g., \<% if %\>, \<%= %\>), and RequireJS module loading. The examples cover basic rendering, template compilation, custom filters, template inclusion, HTML escaping controls, and error handling for both compile-time and runtime issues.

example/web-art-syntax, example/web-native-syntax, example/web-requirejs · high confidence

Initial release of the art-template engine core

This entry introduces the core source files for the art-template library (version 4.0.0), establishing the foundational API and build structure. The main entry point (src/index.js) exposes template rendering and compilation functions, while src/extension.js implements a Node.js require extension to allow direct importing of template files. The src/precompile.js module provides static analysis capabilities to convert template dependencies into require statements, and src/render.js handles the final data rendering process. This change represents the initial product feature delivery of the engine's core logic.

src · high confidence

New template engine speed test benchmark added

A new interactive benchmark page has been added to the example/web-test-speed directory to compare the rendering performance of various JavaScript template engines. The test includes art-template (standard and fast mode), doT, EJS, Pug, Handlebars, Mustache, and Swig. Users can configure the test parameters, such as the number of list items and render calls, via URL query parameters, and view the results visualized using Highcharts.

example/web-test-speed · high confidence

Behavioural changes

Complete rewrite of the template compilation engine

The template compilation logic in src/compile has been completely rewritten from scratch, introducing a new modular architecture with dedicated files for the compiler (compiler.js), default settings (defaults.js), error handling (error.js), and tokenizers for both template syntax (tpl-tokenizer.js) and JavaScript expressions (es-tokenizer.js). This new engine supports multiple syntax rules via an adapter system (including native and art-template rules), enables layout inheritance through an 'extend' function, and provides robust error reporting with source context via the new TemplateError class. Key behavioral changes include a default 'bail' mode that throws exceptions on compile or runtime errors, automatic HTML minification using html-minifier, and improved debugging capabilities with source maps and line tracking.

src/compile · high confidence

Project discontinued and marked as no longer maintained

The README has been updated to announce that the art-template project is no longer maintained as of July 13, 2026. Users are advised that no further feature updates, bug fixes, or security patches will be provided and should migrate to an actively maintained alternative. The file also includes standard project metadata, badges, and feature descriptions.

(repo-wide) · high confidence

Template compilation adapter refactored with new core modules

The template compilation adapter in src/compile/adapter has been significantly restructured into distinct, modular components. New files introduce a caching mechanism (caches.js), a deep-extend utility for configuration (extend.js), and an HTML minifier adapter that integrates html-minifier in Node.js environments while respecting custom fragment rules (html-minifier.js). Template loading is now handled by a dedicated loader (loader.js) that supports both Node.js (fs.readFileSync) and browser (DOM element) contexts. Path resolution is centralized in resolve-filename.js, which correctly handles relative paths and extensions based on the root directory. The template syntax rules are split into two adapters: rule.art.js for the custom Art template syntax (supporting if/else, each, block, filters, and v3 compatibility warnings) and rule.native.js for EJS-style native syntax (\<% %\>, \<%= %\>, etc.). Additionally, an include adapter (include.js) allows sub-template inclusion with inherited options, and an error handler (onerror.js) provides standardized error logging.

src/compile/adapter · high confidence

Update to art-template v4.13.1 browser build

The browser bundle in lib/template-web.js has been rebuilt to version 4.13.1. This update includes optimizations for the escape() function, support for html-minifier with configurable options, and fixes for filter and options.escape bugs. It also adds support for source maps and improves the handling of global objects in filter syntax.

lib · high confidence

Test coverage

Added test fixtures for extend-options; Added test fixtures for template extension and error scenarios; Added test fixtures for template inclusion; Added test suite for template rendering and Node.js require extensions; Added unit tests for nested block rendering; Added unit tests for template compilation adapters; Added unit tests for the template compiler subsystem.

Dependencies

art-template v4.13.2 release with dependency lockfile

The project has been updated to version 4.13.2, introducing a new package-lock.json file to manage dependency resolution. The package.json defines the core runtime dependencies including acorn, escodegen, estraverse, html-minifier, is-keyword-js, js-tokens, merge-source-map, and source-map, while devDependencies cover the build toolchain such as babel-cli, webpack, mocha, and eslint.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 47 → 51 (+3.2)
  • Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 63 → 63 (+0.0)
  • Architecture 90 → 92 (+1.5)
  • Maturity 44 → 44 (+0.0)
  • Readiness 49 → 50 (+1.0)
  • Security 42 → 54 (+11.6)

Resolved (4)

  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no licence statement (README.md)
  • Documentation: no usage examples (README.md)

New (1)

  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (the committed lockfile is in a format this engine cannot resolve)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

goofychris/art-template was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit d09a96dd85ef3671286157d8a0c75948b90a3ebb — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.