typelevel/mouse
59.6
Adequate · 20 September 2026
2.1k
lines of production code
Scala
primary language
1
measurement over time
What this system is
Mouse is a Scala library that provides syntax extensions and type class enrichments for standard library types and Cats ecosystem components. It supports cross-compilation across JVM, JavaScript, and Native platforms for Scala 2.12, 2.13, and Scala 3. The system offers convenience methods for collections, options, either types, and platform-specific utilities like URL parsing.
How it got here
2016 — Mouse rebranding and Scala 3 migration
6 changes.
The project was rebranded to Mouse and migrated to the Typelevel organization, expanding support to Scala 3, Scala.js, and Scala Native. This period focused on updating the build infrastructure and core dependencies to align with the Cats ecosystem while introducing comprehensive syntax enrichment traits for standard library types. Extensive test coverage was added to validate the new cross-platform capabilities and syntax extensions.
2019–2022 — Multi-platform syntax consolidation
9 changes.
The project expanded its syntax extension library to support JavaScript and Scala Native platforms, mirroring the existing JVM and shared implementations. It also standardized the API surface for both Scala 2 and Scala 3 across all supported targets by introducing dedicated package objects for easier imports. Comprehensive test suites were added to ensure coverage for tuple operations and Scala 3 compatibility.
Features
Add JVM-specific string parsing for URLs, URIs, and UUIDs
Users can now parse strings into java.net.URL, java.net.URI, and java.util.UUID instances directly on the JVM. New extension methods (parseURL, parseURI, parseUUID) are available on String, each providing Either, Validated, and Option variants to handle potential parsing exceptions gracefully.
jvm/src/main/scala · high confidence
Add separate top-level mouse object for JS in Scala 2
A new \mouse\ package object has been introduced for the Scala 2 JS target, providing a centralized entry point that aggregates various syntax extensions (such as \list\, \set\, \option\, \string\, etc.) via the \all\, \any\, and specific type objects. This change establishes the structural foundation for JS-specific mouse syntax support in Scala 2, allowing users to import and access these extensions through the \mouse\ namespace.
js/src/main/scala-2 · high confidence
Added Scala Native support for mouse syntax extensions
This change introduces native-specific package definitions for both Scala 2 and Scala 3, enabling the mouse library's syntax extensions (such as those for Option, List, String, and Boolean) to function correctly on the Scala Native platform. By providing these platform-specific entry points, users can now utilize the familiar mouse syntax in Scala Native projects without encountering compilation errors related to missing package objects or inheritance issues.
native · high confidence
Introduce JS-specific syntax trait
A new \AllJsSyntax\ trait has been added to the \mouse\ package for the JavaScript platform. This change implements platform-specific syntax support separately for JVM and JS, ensuring that JS users have access to the appropriate syntax extensions without pulling in JVM-only dependencies or code.
js/src/main/scala · high confidence
Mouse library syntax enrichment for Scala collections and types
This change introduces the Mouse library's syntax enrichment traits in the shared source directory, providing extension methods for standard Scala types and Cats effect types. It adds syntax for Any (thrush, tap), Boolean (fold, validated, whenA), F\[Boolean\] (andM, orM), F\[Option\] (cata, getOrRaise), F\[Either\] (cata, flatMapIn, getOrRaise), and nested effects (FNested). It also includes syntax for tuples (head, tail, reverse), lists (tailOption), maps (updateAtKey), and numeric types (squared, toByteArray). Additionally, it provides Scala version-specific compatibility shims for SortedSet to handle differences between Scala 2.12 and 2.13/3.
shared/src/main · high confidence
New Scala 3 JavaScript-specific mouse syntax package
A new \mouse\ package object has been added for Scala 3 on JavaScript, providing top-level access to various syntax extensions including \List\ and \Set\ operations, as well as a dedicated \mouse.all\ object that combines shared and JavaScript-specific syntaxes. This enables users to import and use these convenience methods directly in Scala 3 JS projects without needing to reference specific sub-objects for common types.
js/src/main/scala-3 · high confidence
Scala 2 JVM module exposes comprehensive syntax extensions via package object
The Scala 2 JVM module now provides a \mouse\ package object that aggregates all available syntax extensions, allowing users to import \mouse.\_\ to access implicit conversions for types such as \Any\, \Boolean\, \List\, \Option\, \String\, and \Try\. This change consolidates the API surface for Scala 2.13+ on the JVM, ensuring that all shared and JVM-specific syntax traits (e.g., \AllSharedSyntax\, \AllJvmSyntax\, \StringJvmSyntax\) are accessible through a single import.
jvm/src/main/scala-2 · high confidence
Scala 3-specific syntax package object added
A new \package.scala\ file has been introduced in the \jvm/src/main/scala-3\ source directory, defining the \mouse\ package object for Scala 3. This file extends \MouseFunctions\ and exposes a comprehensive set of syntax objects (such as \boolean\, \list\, \option\, \string\, and \ftuple\) that aggregate shared and JVM-specific syntax traits, enabling Scala 3 users to access the library's extension methods.
jvm/src/main/scala-3 · high confidence
Behavioural changes
Library rebranded to Mouse with expanded Scala 3 and Cats support
The project has been renamed to Mouse and migrated to the Typelevel organization, updating the license and CI badges to reflect this change. The library now supports Scala 2.12, 2.13, and Scala 3.0, as well as Scala.js 1.x, and provides a comprehensive set of type class enrichments for standard library types (such as Option, Either, Try, List, Map, and Tuple) to integrate with the Cats ecosystem. Documentation has been significantly expanded in the README to include usage examples for these new features, and developer guidelines have been added to DEV.md.
(repo-wide) · high confidence
Test coverage
Added JVM-specific string parsing tests; Added Scala 3 test suite for Mouse; Added comprehensive test coverage for Mouse syntax extensions; Added test suite for tuple syntax operations.
Dependencies
Build infrastructure updated to sbt 1.13.0 with Scala.js 1.22.0 and Scala Native 0.5.12
The project's build system has been upgraded to sbt 1.13.0, with corresponding updates to key plugins: Scala.js 1.22.0, Scala Native 0.5.12, and sbt-typelevel 0.8.7. Additionally, a new boilerplate generator has been introduced to automatically produce syntax traits for F\[TupleN\] operations, covering arities 3 through 22 to complement existing Tuple2 support.
project · high confidence
Update core dependencies and Scala versions
The build configuration has been updated to use Scala 2.12.21, 2.13.18, and 3.3.8, with the default version set to Scala 2.13.18. The primary library dependency, cats-core, has been upgraded to version 2.13.0. Test dependencies have also been updated, with munit moving to 1.3.6 and munit-scalacheck to 1.3.1. Additionally, the project now supports cross-compilation for JavaScript and Native platforms alongside the JVM, and binary compatibility checks have been configured to exclude version 1.0.1.
(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
Baseline
- First survey — no prior run to compare against. CAI 60.
Lenses
- Code Health 97
- Architecture 100
- Maturity 57
- Readiness 50
- Security 65
Changes since last survey
- 300 commits — 291 feature/other, 9 fixes
By area
- (repo) — 137 commits
- (root) — 70 commits
- project/plugins.sbt — 34 commits
- project/build.properties — 32 commits
- shared/src — 15 commits
- .github/workflows — 9 commits
- docs/index.md — 1 commit
- js/src — 1 commit
- jvm/src — 1 commit
Notable commits
- fix: Fix an issue with header plugin
- fix: Fix compilation for Scala 3
- fix: Fix compilation of js/native modules
- fix: Fix compilation of scala-2 jvm module
- fix: Fix maven central badge in readme
- fix: Fix maven central badge on microsite
- fix: Fix root module name
- fix: Merge pull request #511 from danicheg/fix-root-module-name
- fix: Merge pull request #602 from typelevel/fix-badge
- change: Add 'Reformat with scalafmt 3.9.10' to .git-blame-ignore-revs
- change: Add FEitherOps#leftFlatMapOrKeepIn
- change: Add FEitherOps#leftMapOrKeepIn
- change: Add onTrue and onFalse methods to FBooleanSyntax (#577)
- change: Add a test for FEitherSyntax.flatMapOrKeepIn
- change: Add a test for FEitherSyntax.mapOrKeepIn
- change: Add a test for FOptionSyntax.flatMapOrKeepIn
- change: Add a test for FOptionSyntax.mapOrKeepIn
- change: Add flatMapOrKeepIn to F[Either[L,R]] syntax
- change: Add flatMapOrKeepIn to F[Option[A]] syntax
- change: Add mapOrKeepIn to F[Either[L,R]] syntax
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
typelevel/mouse 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 20 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 3c1659ad82605f4f43660b781c41157fcd309748 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.