thesamet/sbt-protoc
64.2
Adequate · 20 September 2026
801
lines of production code
Scala
primary language
1
measurement over time
What this system is
This system is an sbt plugin that automates Protocol Buffers code generation for Scala and Java projects. It supports multiple build targets including JVM, Scala.js, and Native, and integrates with gRPC and external protobuf definitions. The plugin manages the compilation lifecycle, handling caching, dependency resolution, and sandboxed execution of custom generators.
How it got here
2016 — Initial release and sandboxing
7 changes.
The project was initialized as an sbt plugin for generating code from Protocol Buffers, establishing core configuration, build tooling, and comprehensive example projects for various platforms. Key development focused on introducing sandboxed JVM generator support with classloader isolation to enhance security and stability. The period also included updating dependencies for Scala 3 compatibility and adding scripted tests to verify file deletion behavior.
2017–2020 — Example expansion and test coverage
14 changes.
This period focused on expanding the project's example suite to demonstrate multi-project builds, external JAR imports, and cross-platform support for ScalaJS and gRPC. Concurrently, extensive scripted tests were added to verify correct protobuf dependency resolution, configuration isolation, and compatibility with various ScalaPB versions.
2021 — scripted test coverage expansion
5 changes.
This period focused on expanding the scripted test suite for the sbt-protoc plugin to ensure robust caching, integration, and native plugin support. New tests were added to verify cache invalidation scenarios, shared proto handling, native code generation, and lazy protoc resolution.
Features
Add Java-only example with sbt-protoc and protobuf definition
The java-only example now includes a build configuration using sbt version 1.12.11 and the sbt-protoc plugin (version 1.0.8) to handle Protocol Buffers. A sample protobuf definition (test.proto) is provided, defining a simple message with an optional integer field, enabling users to generate Java code from this schema.
examples/java-only · high confidence
Add ScalaJS multiproject client example
A new client-side example has been added to the ScalaJS multiproject demonstration. This entry point initializes the application by instantiating a test protocol buffer message and printing its value, serving as a basic verification that the shared protobuf definitions are correctly accessible from the client module.
examples/scalajs-multiproject/client, examples/scalajs-multiproject/proto, examples/scalajs-multiproject/server · high confidence
Add common protobuf definition to external-protos example
The multi-with-external-jar example now includes a new protobuf file (common.proto) defining a message named CommonProto within the com.thesamet.protos.common package, providing a shared schema component for the example project.
examples/multi-with-external-jar/external-protos · high confidence
Add scalapb cross-project example
Added a new example demonstrating how to use scalapb with sbt-crossproject to generate code for JVM, JS, and Native targets. The example includes a basic protobuf definition and a Scala entry point to run the generated code across platforms.
examples/scalapb-crossproject · high confidence
Added Google APIs example project with Protobuf definitions
A new example project has been added to demonstrate integration with Google APIs using external JARs. This includes a Protobuf definition file that imports Google's standard timestamp, color, and location types to define a test message structure.
examples/google-apis-external-jar/my-project · high confidence
Added ScalaPB Java Conversions example project
A new example project demonstrating ScalaPB Java conversions has been added to the examples directory. This includes the necessary build configuration files (sbt version 1.12.11, sbt-protoc plugin 1.0.8, and compilerplugin 0.11.20) and a sample protobuf definition (test.proto) defining a simple message structure.
examples/scalapb-java-conversions · high confidence
Added multi-project example demonstrating external protobuf imports
A new example project located at examples/multi-with-external-jar/sub1 has been added to demonstrate how to import and use protobuf definitions from external JARs. The example includes a proto file that imports definitions from com.thesamet.protos and common/common.proto, illustrating the setup for multi-project builds with external dependencies.
examples/multi-with-external-jar/sub1 · high confidence
Initial project scaffolding and configuration
The repository is initialized with the core configuration files for the sbt-protoc plugin, including a CHANGELOG documenting versions from 0.99.31 through 1.1.0-RC1, a README with installation and migration instructions, and a NOTICE file for Apache 2.0 licensing. Development tooling is established via a .scalafmt.conf (version 3.9.7), a .mergify.yml for automated PR handling, and a shell.nix for NixOS development environments. Repository hygiene is improved by updating .gitignore to exclude IDE-specific files like .metals/ and .bloop/, and a .git-blame-ignore-revs file is added to ignore formatting commits.
(repo-wide) · high confidence
Introduce sandboxed JVM generator support with classloader isolation
The plugin now supports sandboxed JVM generators by introducing a \FilteringClassLoader\ that restricts class visibility to standard Java and Scala packages, preventing custom generators from accessing unintended classes. This capability is integrated into the main plugin logic via \ProtocPlugin.scala\ and supported by Scala 2 and Scala 3 compatibility layers (\ProtocPluginCompat.scala\) that handle JSON serialization for generator artifacts and manage cross-version dependency resolution for sandboxed components.
src/main · high confidence
New grpc-java example project with SBT build configuration
A new example project for grpc-java has been added, providing a standalone SBT-based build setup. The project is configured with SBT version 1.12.11 and includes the sbt-protoc plugin (v1.0.8) to handle Protocol Buffers code generation. It contains a basic gRPC service definition (MyService with a DoSomething RPC) in test.proto, along with a .gitignore file to exclude build artifacts.
examples/grpc-java · high confidence
Test coverage
Add scripted test for native plugin settings; Add scripted test for non-JVM protobuf generation; Add test for lazy protoc resolution; Added compatibility tests for ScalaPB 0.9.8, 0.10.3, and 0.10.6; Added integration test for protobuf compile configuration separation; Added scripted test for cross-module protobuf dependency resolution; Added scripted test for sandboxed sbt-protoc compilation; Added scripted tests for common-protos integration scenarios; Added scripted tests for protobuf cache invalidation scenarios; Added scripted tests for protobuf file deletion behavior; Added test coverage for ProtobufSrcConfig compilation and packaging; Added test for isolated test-config protobuf generation; Added test infrastructure for caching validation; Test verifies custom proto sources are packaged in the JAR.
Dependencies
Initial release of sbt-protoc with SBT 2 and Scala 3 support
This entry introduces the sbt-protoc plugin, an SBT plugin for generating code from Protocol Buffers. The build configuration establishes support for SBT 2 (via the sbt2-compat plugin) and Scala 3 (cross-compiled with Scala 2.12), while updating the core protoc-bridge dependency to version 0.9.10. The release also includes a comprehensive suite of example projects demonstrating usage with gRPC-Java, Scala.js, cross-platform compilation (JVM, JS, Native), and external protobuf sources, alongside scripted tests to validate these configurations.
(dependencies) · high confidence
Updated ScalaPB example to use sbt-protoc and ScalaPB 0.11.20
The ScalaPB example project has been updated to use the newer sbt-protoc plugin (version 1.0.8) instead of the legacy sbt-scalapb plugin, and the ScalaPB compiler plugin has been upgraded to version 0.11.20. The build properties now specify sbt version 1.12.11. A sample protobuf file (test.proto) is included to demonstrate the setup.
examples/scalapb · 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 64.
Lenses
- Code Health 96
- Architecture 100
- Maturity 60
- Readiness 55
- Security 75
Changes since last survey
- 300 commits — 277 feature/other, 23 fixes
By area
- (root) — 157 commits
- src/sbt-test — 37 commits
- project/build.properties — 24 commits
- src/main — 23 commits
- project/plugins.sbt — 20 commits
- .github/workflows — 16 commits
- examples/scalapb-crossproject — 14 commits
- examples/scalapb-dotty — 3 commits
- examples/google-apis-external-jar — 2 commits
- examples/scalajs-multiproject — 2 commits
- examples/custom-gen — 1 commit
- examples/grpc-java — 1 commit
Notable commits
- fix: Fix call to SandboxedGenerator
- fix: Fix github workflow
- fix: Fix github workflow of OS X
- fix: Fix old sbt shell syntax (#435)
- fix: Fix ruby test
- fix: Revert "support older sbt 1.x versions (#183)"
- fix: Revert to Scala 2.12.20
- fix: Revert: Add PB.targets directories to managedSourceDirectories (#244)
- fix: ci: replace olafurpg/setup-scala with setup-java@v4 + sbt/setup-sbt to fix Node.js 20 deprecation warnings
- fix: fix macos-latest scripted tests for Apple Silicon (ARM64) runners
- fix: fix missing cache invalidation after failure & asProtocPlugin update
- fix: fix missing cache invalidation after removing protobuf dependency
- fix: fix missing cache invalidation after updating local codegen source
- fix: fix missing cache invalidation after updating protobuf dependency
- fix: fix missing cache invalidation when updating protoc version
- fix: fix protoc-gen-scala retrieval on windows
- fix: fix: migrate publishing to Sonatype Central Portal
- fix: fix: revert sbt-ci-release to 1.9.3, use string literal for central host
- fix: fix: update Mergify config to use merge_method in queue_rules
- fix: fix: upgrade sbt-ci-release to 1.11.2 for Central Portal support
- …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
thesamet/sbt-protoc 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 7e05f9f9875712abb2068bac1dd73114213dd0ba — 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.