Sign in

OpenSavvy

@opensavvy.dev
14 followers 10 following 57 posts

Open source projects with a deep focus on quality, automation and security. opensavvy.dev Maintained by @ivcanet.bsky.social and Maxime Girardet

PostsRepliesMedia
OpenSavvy @opensavvy.dev · 13/08/2026
Prepared 2.6.0 now integrates with both the Kotest and TestBalloon IntelliJ plugins! prepared.opensavvy.dev?utm=bluesky
010
OpenSavvy @opensavvy.dev · 20/04/2026
Dokka for MkDocs 0.6.3 is out! • Overloads are easier to read • The table of content is more concise dokka-mkdocs.opensavvy.dev Before / after ↓
100
OpenSavvy @opensavvy.dev · 27/03/2026
Now *this* is the developer experience we envision
131
OpenSavvy @opensavvy.dev · 18/03/2026
Before / after
100
OpenSavvy @opensavvy.dev · 18/03/2026
Before / after
100
OpenSavvy @opensavvy.dev · 18/03/2026
Here are a few examples in the KtMongo repo Before / after
100
OpenSavvy @opensavvy.dev · 01/03/2026
Dokka for Material MkDocs 0.5.4 is out! • Kotlin 2.3.0 • Gradle 9.2.1 • Dokka 2.1.0 • Native breadcrumb support dokka-mkdocs.opensavvy.dev
Screenshot of https://dokka-mkdocs.opensavvy.dev/api/-library%20module/opensavvy.dokka.material.mkdocs.example/foo2.html
042
OpenSavvy @opensavvy.dev · 09/02/2026
Spine 0.9.1 comes with bug fixes for #Arrow compatibility for typed #Ktor endpoints: Thanks @skye.codes for the contribution!
		routeWithRaise(User.get) {
			val id = idOf(User)

			val user = dataLock.withLock("get $id") { data.find { it.id == id } }

			ensureNotNull(user) { NotFound(id) }

			respond(user)
		}
252
OpenSavvy @opensavvy.dev · 03/02/2026
With KtMongo 0.26.0, easily compare two complex BSON documents or arrays Particularly useful in tests to understand what changed! ktmongo.opensavvy.dev
✗ a: 
     ✓ 0: 1
     ✓ 1: 2
     ✗ 2: (field not present)
          "Bob"

check(a == b) { (a diff b) ?: "no diff" }
      | |  |
      | |  {"a": [1, 2, "Bob"]}
      | false
      {"a": [1, 2]}
021
OpenSavvy @opensavvy.dev · 03/02/2026
With KtMongo 0.26.0, use complex JSONPath expressions to find data in your BSON documents! ktmongo.opensavvy.dev

test("Multiple indices") {
	check(multiDoc().select<String>("$.a[0, 3][0:1:2]").toList() == listOf("a", "d"))
}
020
OpenSavvy @opensavvy.dev · 28/01/2026
We can't view our own profile anymore though
000
OpenSavvy @opensavvy.dev · 30/12/2025
Starting in KtMongo 0.25.0, the KtMongo '/' notation recognizes KMongo's @BsonId and KotlinX.Serialization's @SerialName when using the KMongo compatibility module. Users can add support for their own annotations by overriding PropertyNameStrategy. Learn more → ktmongo.opensavvy.dev/api/-mongo-d...
@Serializable
data class Test1(
	@field:BsonId
	val a: NameStrategyProfile,
)
020
OpenSavvy @opensavvy.dev · 27/12/2025
We now provide a custom #Docker image specifically for compiling #GitLab CI pipelines in #Kotlin gitlab-ci-kts.opensavvy.dev/tutorials/in...
040
OpenSavvy @opensavvy.dev · 26/12/2025
In KtMongo 0.25.0, the new experimental BsonPath class allows extracting #MongoDB documents using #JSONPath queries! Currently only a subset of the JSONPath syntax is supported, more will be added in coming versions. Send us your feedback! ktmongo.opensavvy.dev/api/-kotlin%...

val document = context().write(bob)

val age: String = bobDoc() at BsonPath.parse("$.pets[1].age")
031
OpenSavvy @opensavvy.dev · 03/12/2025
Kotlin is a great language for scripting, and has much better support in IDEs. Use loops, built-in plugins (showcased: the Gradle plugin) and quality-of-life goodies, like automatic shell color highlighting!
			val dokka by job {
				image("openjdk")

				script {
					gradlew.task("dokkaHtmlMultiModule")
					shell("mv build/dokka/htmlMultiModule documentation")
				}

				artifacts {
					include("documentation")
					exposeAs("Documentation")
				}
			}
120
OpenSavvy @opensavvy.dev · 11/11/2025
What if you could easily analyze intermediate values in your tests? Learn how with Prepared and Power Assert → prepared.opensavvy.dev/api/-suite/o...
Code:

test("My test") {
    log(12 + 5) { "Important intermediary result" }
}

Output:

» Logged ‘17’
  Important intermediary result
  log(12 + 5)
         |
         17
021
OpenSavvy @opensavvy.dev · 22/10/2025
KtMongo 0.24.0 is out, with our new mascot, Mokodee! This version contains new syntax sugar for $unset, and improvements to the documentation. ktmongo.opensavvy.dev/news/2025/10...
242