Skip to content
CAI
Software that uses CAICheck a score

raquo/Laminar

59.0

Adequate · 28 September 2026

17.8k

lines of production code

Scala

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Laminar is a native Scala.js UI library that provides a type-safe, reactive approach to building web interfaces by binding Scala code directly to the DOM. It manages dynamic child lists, attributes, styles, and events through a unified API that supports HTML, SVG, and MathML, while also offering robust integration with Web Components. The system ensures efficient DOM updates and lifecycle management, leveraging the Airstream reactive streams library for state handling.

How it got here

2017 — Scala 3 migration and API modernization

11 changes.

The project underwent a significant infrastructure overhaul, migrating the build system to Scala 3 and modernizing the release workflow. This period involved a comprehensive API redesign, including the introduction of a new receiver system for bindings and a restructured DOM node hierarchy to improve lifecycle management and third-party integration.

2018–2022 — API consolidation and Web Component support

18 changes.

This period focused on unifying the Laminar API through a consolidated entry point and restructuring core modules like modifiers, keys, and codecs for better type safety and consistency. Significant enhancements included adding native support for Web Components and regenerating type definitions from Scala DOM Types to align with modern web standards. The documentation site was also rebuilt using Docusaurus to improve the user onboarding experience.

2023–2025 — DOM API modularization and stability

11 changes.

This period focused on restructuring the low-level DOM API into modular traits and introducing features for custom web components and MathML support. Significant effort was dedicated to fixing critical reconciliation bugs in child insertion and expanding test coverage to ensure robust behavior across Scala 2 and 3.

Features

Added MathML symbol definitions

Users can now access a comprehensive set of MathML symbols, including invisible operators, arithmetic signs, exponents, comparison operators, set theory symbols, and logical quantifiers, via the new MathMlSymbols trait in the symbols package.

src/main/scala/com/raquo/laminar/defs/symbols · high confidence

Initial microsite home page for Laminar

The website now includes a dedicated home page (website/pages/en/index.js) that introduces Laminar as a native Scala.js UI library. This page highlights key features such as its approachable API, scalability, safety guarantees (no FRP glitches, automatic memory management), and integrations with Web Components and React. It also showcases community testimonials and provides links to documentation, a live demo, and a video introduction to help users get started.

website/pages · high confidence

Initial styling for the documentation website

The documentation website now includes a dedicated custom stylesheet (custom.css) that defines the visual appearance of the home page, including the hero section, project title, and content blocks, as well as responsive adjustments for various screen sizes and styling for form placeholders and embedded iframes.

website/static/css · high confidence

Introduce InputController for custom element support

The \InputController\ class and its associated \InputControllerConfig\ have been added to the \inputs\ package to enable controlled input handling for custom web components. This change introduces a new mechanism where custom elements can explicitly declare which properties and events are supported for controlled binding via \allowedControllerConfigs\, allowing the framework to validate compatibility and manage DOM updates for non-standard HTML elements.

src/main/scala/com/raquo/laminar/inputs · high confidence

New CSS unit helpers and color functions

This change introduces new traits in the \src/main/scala/com/raquo/laminar/defs/styles/units\ package to provide type-safe helpers for common CSS values. Users can now use \calc\ for CSS calculations, \cssVar\ for referencing CSS variables, and \url\ for URL values. Length units such as \px\, \pt\, \em\, \rem\, \ch\, \vh\, \vw\, \vmax\, and \vmin\ are now available via the \Length\ trait. Time units \s\ and \ms\ are provided via the \Time\ trait. Additionally, the \Color\ trait adds support for \rgb\, \rgba\, \hsl\, and \hsla\ color functions, including modern space-separated syntax with optional alpha channels.

src/main/scala/com/raquo/laminar/defs/styles/units · high confidence

New unified API entry point and streamlined import structure

The library now exposes a single, consolidated API entry point via the \L\ object (imported from \com.raquo.laminar.api\), which bundles all core types, modifiers, and helpers. This replaces the previous scattered imports, such as \laminar.bundle\, and includes dedicated sub-objects for specific domains like \L.style\ for CSS units, \L.aria\ for accessibility attributes, and \L.svg\ / \L.mathml\ for respective element sets. Additionally, a new \A\ object provides direct aliases for Airstream types (e.g., \EventStream\, \Val\), and the package object now automatically brings in essential implicits, simplifying the setup for new projects while maintaining backward compatibility through deprecated aliases.

src/main/scala/com/raquo/laminar/api · high confidence

The website now includes a new Footer component that displays a sitemap section with a community column (linking to Discord and project sponsorship) and a GitHub column featuring buttons for various project repositories (Laminar, Airstream, Waypoint, Scala DOM Types, Laminar Demo) and a star button for the main Laminar repository.

website/core · high confidence

Removals

Removal of legacy example components and entry point

The example application's entry point (App.scala) and several demonstration components (Counter, Toggle) along with their associated pseudotest files (MultiSetters, MultiStyleProp, NestedStyleProp, NodeTypeChange) have been removed. These files relied on the deprecated Snabbdom virtual DOM library and the XStream reactive streams library, indicating a cleanup of obsolete demo code that is no longer compatible with the current Laminar architecture.

src/main/scala/com/raquo/laminar/example · high confidence

Behavioural changes

Codec API reorganization and null-safety improvements

The codec system has been refactored to improve efficiency and safety. The \Codec\ trait is now consolidated into the \Codec\ object, replacing the previous \AsIsCodec\ trait with a type alias and moving specific codecs (like \stringAsIs\, \intAsString\, and various boolean encodings) into the companion object for direct access. The API now handles \null\ values more safely in encoding and decoding paths, particularly for optional attributes, using helper methods like \getOrForceNull\ and \foldNullable\. Additionally, a new \CompositeCodec\ class is introduced to handle space- or comma-separated values (e.g., CSS classes), and deprecated aliases are provided for backward compatibility with the previous API structure.

src/main/scala/com/raquo/laminar/codecs · high confidence

Generated CSS style trait definitions updated from Scala DOM Types

The \src/main/scala/com/raquo/laminar/defs/styles/traits\ directory has been regenerated to align with the latest Scala DOM Types definitions. This update refreshes the type-safe CSS style traits (such as \Display\, \FlexDirection\, \Cursor\, and \FontFeatureSettings\) and their available value constants (e.g., \flex\, \column\, \pointer\, \frac\). Users benefit from up-to-date, compile-time checked CSS property values that reflect current web standards, ensuring that style definitions remain accurate and comprehensive without manual maintenance.

src/main/scala/com/raquo/laminar/defs/styles/traits · high confidence

Generated HTML property definitions now use lazy vals

The generated \HtmlProps.scala\ file, which defines HTML element properties and attributes for the Laminar library, has been updated to define its properties (such as \checked\, \value\, \accept\, etc.) as \lazy val\ instead of \val\. This change ensures that these generated definitions are initialized lazily, which can improve startup performance and avoid potential initialization order issues, while maintaining the same API surface for users interacting with HTML elements.

src/main/scala/com/raquo/laminar/defs/props · high confidence

Global attributes now use CompositeAttr instead of props

Global HTML attributes such as class (cls), role, and data-\* are now exposed as CompositeAttr instances rather than props, ensuring consistent attribute-based updates and resolving issues with class handling. New support is added for the part and exportparts attributes to enable styling of Web Component shadow DOM parts, while the rel and style attributes are also defined as composite or standard attributes. The previous CompositeHtmlProp type has been removed in favor of HtmlCompositeAttr, and deprecated SVG-specific composite types have been consolidated into global definitions.

src/main/scala/com/raquo/laminar/defs/complex · high confidence

Lazy evaluation for conditional modifiers in Scala 2

The \when\ and \whenNot\ methods in the Scala 2.13 API now accept by-name arguments for their modifier parameters. This change ensures that the inner modifiers are evaluated only when the condition is met, preventing unnecessary computation or side effects when the condition is false. This aligns the Scala 2 behavior with the lazy evaluation semantics already present in the Scala 3 version.

src/main/scala-2.13 · high confidence

New receiver API for child, text, children, and focus bindings

The \receivers\ package has been restructured with new receiver objects (\ChildReceiver\, \ChildTextReceiver\, \ChildrenReceiver\, \ChildrenCommandReceiver\, \ChildOptionReceiver\, \ChildTextOptionReceiver\, and \FocusReceiver\) that provide a modernized binding syntax. Users can now bind single optional or non-optional child nodes and text content using \child.maybe \<--\ and \child.text \<--\, render collections of children via \children \<--\, handle batched collection updates with \children.command \<--\, and bind focus state to elements using \focus \<--\. These receivers leverage the new \RenderableNode\ and \RenderableSeq\ type classes to support custom components and optimized rendering paths, replacing the previous implicit-based resolution logic.

src/main/scala/com/raquo/laminar/receivers · high confidence

Refactored collection insertion commands and inserter type tracking

The library introduces a new \CollectionCommand\ trait to manage batch DOM updates (append, prepend, insert, remove, replace, removeAll, and replaceAll) with a \minimizeDiff\ option for the replaceAll command to avoid unnecessary mount/unmount cycles. Additionally, a new \InserterType\ sealed abstract class is added to track whether an inserter needs trailing sentinel nodes, distinguishing between children commands, standard children, and single child inserters.

repository · high confidence

Regenerated HTML, SVG, and MathML tag definitions

The HTML, SVG, and MathML tag definitions in this package have been regenerated from the updated Scala DOM Types library. This update refreshes the available tag definitions (such as \htmlTag\, \svgTag\, and \mathMlTag\) and their associated element types to align with the latest DOM specification changes, ensuring that Laminar's type-safe DOM bindings remain current with modern web standards.

src/main/scala/com/raquo/laminar/defs/tags · high confidence

Regenerated attribute definitions from Scala DOM Types 18.0.0

The attribute definitions in \src/main/scala/com/raquo/laminar/defs/attrs\ have been regenerated to align with Scala DOM Types 18.0.0. This update introduces new global attributes (such as \id\ and \tabindex\) available across all element types, adds comprehensive support for MathML attributes, and refreshes HTML, SVG, and ARIA attribute definitions. Users benefit from improved type safety and coverage of modern web standards, including corrected namespaces for SVG attributes and camelCase naming for MathML properties.

src/main/scala/com/raquo/laminar/defs/attrs · high confidence

Regenerated event property definitions from Scala DOM Types

The event property definitions in the \eventProps\ package (including \DocumentEventProps\, \EventProps\, \GlobalEventProps\, and \WindowEventProps\) have been regenerated to align with the latest Scala DOM Types. This update refreshes the available event props—such as \onDomContentLoaded\, \onFullScreenChange\, \onHashChange\, and \onStorage\—ensuring they match the current browser API specifications and type definitions provided by the underlying DOM types library.

src/main/scala/com/raquo/laminar/defs/eventProps · high confidence

Regenerated style definitions from Scala DOM Types 18.0.0

The style property definitions in this module have been regenerated to align with Scala DOM Types 18.0.0. This update refreshes the available CSS style props and their underlying type constraints, ensuring that Laminar's style API remains consistent with the latest web standards and type definitions provided by the upstream Scala DOM Types library.

src/main/scala/com/raquo/laminar/defs/styles · high confidence

Removed Scala 2.11 sandbox HTML file

The sandbox HTML file for the Scala 2.11 FastOptJS build (index-fastopt.html) has been removed. This file previously loaded the laminar-fastopt-bundle.js from the scala-2.11 target directory and contained styles for a red/green demo. Its removal aligns with the project dropping support for Scala 2.11.

src/main/resources · high confidence

Renamed ChildrenSeq to laminar.Seq and deprecated legacy receivers

The internal collection wrapper previously named \ChildrenSeq\ has been renamed to \laminar.Seq\ to better reflect its role in rendering sequences of elements. This new class abstracts over various collection types (Scala Seq, Array, JsArray, JsVector) to allow Laminar to render arbitrary collections efficiently. Additionally, the legacy \AttrReceiver\, \StyleReceiver\, \ChildReceiver\, and \EventEmitter\ classes have been removed, and the \DomApi\ object has been deprecated in favor of the new \domapi.DomApi\ location, signaling a shift in the library's API structure.

src/main/scala/com/raquo/laminar · high confidence

Reorganized DOM API into modular traits with improved error reporting and custom element readiness

The low-level DOM interaction layer in \src/main/scala/com/raquo/laminar/domapi\ has been restructured into distinct traits (\DomTree\, \DomEvents\, \DomKeys\, \DomTags\, \DomInputs\, \DomParser\, \DomDebug\) to improve code organization and maintainability. This change introduces default reporting of DOM errors via \shouldReportDomErrors\ (enabled by default), ensuring that invalid DOM operations are surfaced rather than silently swallowed. It also enhances support for Web Components by waiting for custom elements to be fully defined and rendered before executing mount callbacks, and adds robust parsing capabilities for HTML, SVG, and MathML strings. Additionally, input value handling now correctly supports Int and Double types for custom elements, and debug utilities provide hierarchical node paths and HTML descriptions for easier troubleshooting.

src/main/scala/com/raquo/laminar/domapi · high confidence

Reorganized tag hierarchy and added Web Component support

The tag definitions have been restructured to introduce a base \Tag\ trait and specialized implementations for HTML, SVG, and MathML elements. A new \CustomHtmlTag\ class has been added to specifically support Web Components, allowing for controlled input handling and custom rendering lifecycle hooks. This change also includes a \jsTagName\ helper on tags to expose the correct casing for the underlying DOM element.

src/main/scala/com/raquo/laminar/tags · high confidence

Reworked DOM node hierarchy and lifecycle management

The internal node structure has been reorganized to improve lifecycle management and integration with third-party libraries. A new \MountContext\ is now provided to child nodes during mounting, and a \DetachedRoot\ class allows manual activation and deactivation of subscriptions for elements not yet attached to the DOM. The node hierarchy now clearly distinguishes between \ReactiveNode\, \ChildNode\, and \ParentNode\, with \ReactiveElement\ combining both child and parent capabilities. Additionally, support for MathML elements has been added via \ReactiveMathMlElement\, and the \Slot\ class has been refined to better handle web component slotting semantics.

src/main/scala/com/raquo/laminar/nodes · high confidence

Reworked attribute, style, and event APIs with new key abstractions

The keys module has been refactored to introduce a unified hierarchy of key types, including new classes for SimpleKey, CompositeKey, and their specific implementations like HtmlAttr, SvgAttr, MathMlAttr, GlobalAttr, and AriaAttr. This change brings derived style support (e.g., \height.px\) via DerivedStyleProp, adds vendor prefix handling for styles, and introduces a more flexible EventProcessor system with methods like \passive\, \filterByTarget\, and \collectOpt\. Composite attributes like \cls\ now use a new CompositeAttr/CompositeKey structure that supports adding multiple values and prevents interference between modifiers, while the old \toggle\ method is deprecated in favor of direct application. These changes provide a more consistent and powerful API for setting attributes, styles, and handling events in Laminar.

src/main/scala/com/raquo/laminar/keys · high confidence

Reworked modifier system with new Binder, Setter, and Key types

The \modifiers\ package has been restructured to introduce a clearer separation of concerns for DOM modifications. A new \Binder\ trait handles non-idempotent side effects like event listeners and subscriptions, while \Setter\ and its subtypes (\SimpleKeySetter\, \CompositeKeySetter\) manage idempotent attribute and style updates. The diff adds dedicated classes for updating keys from streams (\SimpleKeyUpdater\, \CompositeKeyUpdater\) and introduces \RenderableNode\, \RenderableInserter\, and \RenderableText\ to standardize how custom components, inserters, and primitive values are rendered into the DOM. This refactoring also brings in \RenderableSeq\ to support various collection types (including \Option\ and \js.UndefOr\) in dynamic child lists.

src/main/scala/com/raquo/laminar/modifiers · high confidence

Website migrated to Docusaurus 1.x with npm-based build

The documentation site has been rebuilt using Docusaurus 1.x, replacing the previous mdoc/Scala.js bundler pipeline with a standard npm workflow. Users can now run the local development server and build the static site directly via npm commands, and the site configuration (including Open Graph images, custom fonts, and sidebar structure) is managed through a dedicated siteConfig.js file.

website · high confidence

Fixes

Fixes for dynamic child insertion, slotting, and list diffing

This release fixes several critical issues in the DOM insertion and reconciliation logic. It ensures that when a single child (\child \<--\) is swapped, the previous node is always unmounted before the new one mounts, preventing lifecycle errors. It also corrects slot handling so that moving a child between slotted dynamic inserters or lists correctly updates its slot attribute, and fixes edge cases where 'stolen' or externally inserted nodes caused reconciliation failures. Additionally, it resolves a bug where \ChildrenCommandInserter.Append\ would drift in node count if an insertion failed, and ensures that \text.maybe\ correctly handles remounting scenarios.

src/main/scala/com/raquo/laminar/inserters · high confidence

StyleProp support for MathML and SVG elements

StyleProp is now available for MathML and SVG elements, allowing users to apply inline styles to these element types via the standard .style API. This change resolves the previous limitation where styling was not supported on these specific DOM element subclasses.

src/main/scala/com/raquo/laminar/domext · high confidence

Test coverage

Added Scala 3-specific test coverage for type inference and syntax features; Added basic functionality tests for Laminar; Added test fixtures for Web Components and Airstream integration; Added tests for slot stealing edge cases and cleaned up legacy test infrastructure; Expanded test coverage for Laminar DOM insertion and rendering; New test infrastructure for lifecycle and external DOM mutation scenarios; Removed test suite for Toggle component.

Dependencies

Build infrastructure upgraded to Scala 3, Scala.js 1.x, and sbt 1.x

The project's build system has been significantly modernized: sbt has been upgraded from version 0.13.8 to 1.13.0, and the Scala.js plugin has moved from 0.6.14 to 1.22.0, enabling support for Scala 3 (version 3.9.0) alongside Scala 2.13. Several legacy plugins like \sbt-scalajs-bundler\ have been replaced with \sbt-buildkit\ and \sbt-ci-release\ for improved release workflows, and new dependencies such as \sbt-scalafmt\ and \scalajs-env-jsdom-nodejs\ have been added to standardize formatting and testing environments.

project · high confidence

Upgrade build infrastructure to sbt 1.13.0 and Scala DOM Types 19.0.2

The build configuration has been updated to use sbt version 1.13.0 and the Scala DOM Types library version 19.0.2. Additionally, the sbt-buildinfo plugin version 0.13.1 has been added to the project plugins. These changes affect the compilation and build process for the project.

project/project · high confidence

Upgrade to Scala 3 and migrate build infrastructure

The project defaults to Scala 3 while retaining cross-compilation support for Scala 2.13, replacing the previous Scala 2.11 baseline. The build system has been modernized by removing the scalajs-bundler plugin in favor of a new BuildKit-based workflow and switching the website generation from scalajs-bundler/mdoc to Docusaurus. Core library dependencies have been updated to use Airstream (replacing XStream), ew, and Scala DOM Types, with specific versions managed via the new build configuration.

(dependencies) · high confidence

Housekeeping

Initial project scaffolding and configuration

Establishes the foundational project structure by adding the Scalafmt configuration (v3.11.1 for Scala 2.13), the MIT license, a CODEOWNERS file, and a .gitignore tailored for the build tooling and website assets. Includes the initial README and a comprehensive pre-v0.11.0 changelog documenting the library's history up to that point.

(repo-wide) · 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 59 → 59 (-0.1)
  • Rubric changed (rubric-2026.09.8 → rubric-2026.09.16) — scores are not directly comparable.

Lenses

  • Code Health 98 → 97 (-1.3)
  • Architecture 99 → 80 (-19.6)
  • Maturity 47 → 50 (+3.0)
  • Readiness 55 → 55 (+0.0)
  • Security 74 → 74 (+0.0)

Resolved (1)

  • Change coupling: DomDefsGenerator.scala ↔ ProjectVersions.scala (project/DomDefsGenerator.scala)

New (22)

  • Change coupling: HtmlProps.scala ↔ HtmlTags.scala (src/main/scala/com/raquo/laminar/defs/props/HtmlProps.scala)
  • ChildrenCommandInserter.updateList (cognitive 30) (src/main/scala/com/raquo/laminar/inserters/ChildrenCommandInserter.scala)
  • ChildrenCommandInserter.updateList (cyclomatic 21) (src/main/scala/com/raquo/laminar/inserters/ChildrenCommandInserter.scala)
  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no committed lockfile, so no resolved version to grade)
  • Documentation: no licence statement (website/docs/resources.md)
  • Duplicated block (18–25 lines × 2) (src/main/scala/com/raquo/laminar/inserters/ChildTextInserter.scala)
  • Hotspot: src/main/scala/com/raquo/laminar/domapi/DomTags.scala (src/main/scala/com/raquo/laminar/domapi/DomTags.scala)
  • Hotspot: src/main/scala/com/raquo/laminar/inserters/ChildrenCommandInserter.scala (src/main/scala/com/raquo/laminar/inserters/ChildrenCommandInserter.scala)
  • Low cohesion: Seq (LCOM4 4) (src/main/scala/com/raquo/laminar/Seq.scala)
  • Projects may be oversized for their cohesion
  • Repeated repair: src/main/scala/com/raquo/laminar/domapi/DomTree.scala (src/main/scala/com/raquo/laminar/domapi/DomTree.scala)
  • Repeated repair: src/main/scala/com/raquo/laminar/inserters/ChildInserter.scala (src/main/scala/com/raquo/laminar/inserters/ChildInserter.scala)
  • Repeated repair: src/main/scala/com/raquo/laminar/inserters/ChildTextInserter.scala (src/main/scala/com/raquo/laminar/inserters/ChildTextInserter.scala)
  • Repeated repair: src/main/scala/com/raquo/laminar/inserters/ChildrenInserter.scala (src/main/scala/com/raquo/laminar/inserters/ChildrenInserter.scala)
  • Repeated repair: src/main/scala/com/raquo/laminar/inserters/InsertContext.scala (src/main/scala/com/raquo/laminar/inserters/InsertContext.scala)
  • Repeated repair: src/main/scala/com/raquo/laminar/inserters/NestedGroup.scala (src/main/scala/com/raquo/laminar/inserters/NestedGroup.scala)
  • Repeated repair: src/main/scala/com/raquo/laminar/nodes/ChildNode.scala (src/main/scala/com/raquo/laminar/nodes/ChildNode.scala)
  • Repeated repair: src/main/scala/com/raquo/laminar/nodes/ReactiveElement.scala (src/main/scala/com/raquo/laminar/nodes/ReactiveElement.scala)
  • Repeated repair: src/main/scala/com/raquo/laminar/nodes/TextNode.scala (src/main/scala/com/raquo/laminar/nodes/TextNode.scala)
  • Scanner failed to run — not a clean result
  • …and 2 more

Changes since last survey

  • 71 commits — 41 feature/other, 30 fixes

By area

  • src/test — 34 commits
  • src/main — 27 commits
  • website/blog — 5 commits
  • (root) — 3 commits
  • notes/Inserters.md — 1 commit
  • project/Versions.scala — 1 commit

Notable commits

  • fix: Fix: Another branch that leads to ChildNode and SlottableChildInserter switching in-place. #205
  • fix: Fix: Change expectations of second re-stealing test. #205
  • fix: Fix: Clamp Insert command to span range to keep index mistakes contained within command.children. #207
  • fix: Fix: Compilation on Scala 2
  • fix: Fix: Fix slot regressions (first pass). #198
  • fix: Fix: Make writes to contentMap conditional on success of DOM operations.
  • fix: Fix: More stealing, re-stealing, and slot-related issues. #205
  • fix: Fix: Moving child <-- inserter into children <-- after its content node was stolen. #206
  • fix: Fix: Moving from one Slot() to another with the same slot name should reaffirm slot attribute when receiving items even if previously overriden by user's slot attr. #205
  • fix: Fix: NestedGroup should share trailing sentinel with the inserter it's rendering
  • fix: Fix: Other test expectations (same text <-- change)
  • fix: Fix: Re-build and re-mount stolen group contents if the thief unmounted them. #206
  • fix: Fix: Removing composite key values did not work properly with multiple reasons. #202
  • fix: Fix: Scala 2.13 test compilation
  • fix: Fix: Slot stealing edge case; add more tests
  • fix: Fix: Survive external node insertion in children <--
  • fix: Fix: Test expectations (text <-- sentinel nodes)
  • fix: Fix: Unset slot names when moving out of the slot; Simplify generalized Hooks machinery to just track slot names. #198
  • fix: Fix: When moving an inserter, iterate over its actual nodes in the DOM, not its contentMap state. #206
  • fix: Fix: error message compile error
  • …and 51 more

Architecture

  • Unchanged — 0 containers · 1 contexts · 0 edges

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

Survey your own repository

raquo/Laminar 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 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 95c235917f3fe675eaaa0f5ec3d0d3511bd3fe70 — the exact code this score is about.
  • Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-2d9048c36d26.