Build Logs
sherpal/url-dsl • 3.8.0-RC6:2026-01-08
Errors
1
Warnings
7
Total Lines
359
1##################################
2Clonning https://github.com/sherpal/url-dsl.git into /build/repo using revision v0.7.0
3##################################
4Note: switching to '2df2b4d937e6cdab3deb5bc2801af31b8489ffa3'.
5
6You are in 'detached HEAD' state. You can look around, make experimental
7changes and commit them, and you can discard any commits you make in this
8state without impacting any branches by switching back to a branch.
9
10If you want to create a new branch to retain commits you create, you may
11do so (now or later) by using -c with the switch command. Example:
12
13 git switch -c <new-branch-name>
14
15Or undo this operation with:
16
17 git switch -
18
19Turn off this advice by setting config variable advice.detachedHead to false
20
21----
22Preparing build for 3.8.0-RC6
23Scala binary version found: 3.8
24Implicitly using source version 3.8
25Scala binary version found: 3.8
26Implicitly using source version 3.8
27Would try to apply common scalacOption (best-effort, sbt/mill only):
28Append: ,REQUIRE:-source:3.8
29Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
30----
31Starting build for 3.8.0-RC6
32Execute tests: true
33sbt project found:
34Sbt version 1.10.0 is not supported, minimal supported version is 1.11.5
35Enforcing usage of sbt in version 1.11.5
36No prepare script found for project sherpal/url-dsl
37##################################
38Scala version: 3.8.0-RC6
39Targets: be.doeraene%url-dsl
40Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}
41##################################
42Using extra scalacOptions: ,REQUIRE:-source:3.8
43Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
44[sbt_options] declare -a sbt_options=()
45[process_args] java_version = '17'
46[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8/rt.jar'
47# Executing command line:
48java
49-Dfile.encoding=UTF-8
50-Dcommunitybuild.scala=3.8.0-RC6
51-Dcommunitybuild.project.dependencies.add=
52-Xmx7G
53-Xms4G
54-Xss8M
55-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
56-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8
57-jar
58/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
59"setCrossScalaVersions 3.8.0-RC6"
60"++3.8.0-RC6 -v"
61"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
62"set every credentials := Nil"
63"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
64"removeScalacOptionsStartingWith -P:wartremover"
65
66moduleMappings
67"runBuild 3.8.0-RC6 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}""" be.doeraene%url-dsl"
68
69[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 17.0.8)
70[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
71[info] loading project definition from /build/repo/project
72[info] compiling 2 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
73[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
74[info] Compilation completed in 8.442s.
75[info] done compiling
76[info] loading settings for project root from build.sbt...
77[info] set current project to root (in build file:/build/repo/)
78[warn] there's a key that's not used by any other settings/tasks:
79[warn]
80[warn] * ThisBuild / name
81[warn] +- /build/repo/build.sbt:15
82[warn]
83[warn] note: a setting might still be used by a command; to exclude a key from this `lintUnused` check
84[warn] either append it to `Global / excludeLintKeys` or call .withRank(KeyRanks.Invisible) on the key
85Execute setCrossScalaVersions: 3.8.0-RC6
86OpenCB::Changing crossVersion 3.3.1 -> 3.8.0-RC6 in url-dslJVM/crossScalaVersions
87OpenCB::Changing crossVersion 3.3.1 -> 3.8.0-RC6 in url-dslJS/crossScalaVersions
88OpenCB::Changing crossVersion 3.3.1 -> 3.8.0-RC6 in root/crossScalaVersions
89[info] set current project to root (in build file:/build/repo/)
90[info] Setting Scala version to 3.8.0-RC6 on 3 projects.
91[info] Switching Scala version on:
92[info] * root (3.8.0-RC6, 2.13.14, 2.12.19)
93[info] url-dslJS (3.8.0-RC6, 2.13.14, 2.12.19)
94[info] url-dslJVM (3.8.0-RC6, 2.13.14, 2.12.19)
95[info] Excluding projects:
96[info] Reapplying settings...
97[info] set current project to root (in build file:/build/repo/)
98Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
99[info] Reapplying settings...
100[info] set current project to root (in build file:/build/repo/)
101[info] Defining Global / credentials, credentials and 1 others.
102[info] The new values will be used by Global / pgpSelectPassphrase, Global / pgpSigningKey and 14 others.
103[info] Run `last` for details.
104[info] Reapplying settings...
105[info] set current project to root (in build file:/build/repo/)
106Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
107[info] Reapplying settings...
108OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
109
110 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
111 Did you mean allExcludeDependencies ?
112 , retry without global scopes
113[info] Reapplying settings...
114[info] set current project to root (in build file:/build/repo/)
115Execute removeScalacOptionsStartingWith: -P:wartremover
116[info] Reapplying settings...
117[info] set current project to root (in build file:/build/repo/)
118[success] Total time: 0 s, completed Jan 8, 2026, 2:50:15 AM
119Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}
120Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
121Starting build...
122Projects: Set(url-dslJVM)
123Starting build for ProjectRef(file:/build/repo/,url-dslJVM) (url-dsl)... [0/1]
124OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
125OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
126OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
127Compile scalacOptions: -encoding, utf8, -language:implicitConversions, -language:existentials, -unchecked, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
128[info] compiling 39 Scala sources to /build/repo/url-dsl/.jvm/target/scala-3.8.0-RC6/classes ...
129[info] done compiling
130[info] compiling 36 Scala sources to /build/repo/url-dsl/.jvm/target/scala-3.8.0-RC6/test-classes ...
131[info] done compiling
132urldsl.vocabulary.CodecSpec:
133 + Summoner method is called 0.028s
134 + The implicit composed codec should be invoked 0.007s
135urldsl.language.PathQueryFragmentReprSpecs:
136 + Only path can be called on all-Unit url repr 0.033s
137 + Only query can be called on all-Unit url repr 0.007s
138 + Only fragment can be called on all-Unit url repr 0.003s
139 + Create part with dummy encoder returns empty string 0.0s
140urldsl.language.PathWithQueryParametersSpec:
141 + Readme example should work 0.058s
142urldsl.url.UrlParserSpec:
143 + A url without fragment should issue None when parsing 0.001s
144 + A url with fragment should issue some when parsing 0.0s
145 + A url ending with # should issue None when parsing 0.001s
146 + MaybeRef is the same as MaybeFragment 0.0s
147[info] PathSegmentRawUrlSpec:
148[info] Path segments
149[info] - should correctly generate urls
150[info] RouterUseCaseExample:
151[info] Router
152[info] - should work
153[info] CombinedExamples:
154[info] Some matching examples
155[info] - should work
156[info] This generating example
157[info] - should work
158urldsl.language.QueryParameterSpec:
159 + Matching the empty list works 0.0s
160 + Matching single element when list of param is empty fails 0.0s
161urldsl.language.PathSegmentSpec:
162 + Empty path with end of segments should match the empty path 0.0s
163 + PathSegment should match the following segment lists 0.003s
164 + remainingSegments should consumes all segments 0.002s
165 + Matching a simple raw string should work 0.001s
166 + noMatch segment generates empty string 0.0s
167urldsl.language.FragmentSpec:
168 + Implicit conversion to fragment should match the singleton 0.003s
169 + it should fail when decoding a non-int 0.003s
170 + it should not match the singleton when it's different 0.001s
171 + it should not match the singleton when it's empty 0.001s
172urldsl.vocabulary.CodecSpecFor3:
173 + Summoner method is called 0.001s
174 + The implicit composed codec should be invoked 0.001s
175 + Codec can be lifted to seq 0.008s
176 + Zip codec can be used 0.001s
177urldsl.url.UrlStringGeneratorSpec:
178 + Encoding empty fragment results in empty string 0.0s
179[info] QueryParamsUrlSpec:
180[info] QueryParameters
181[info] - should correctly generate string
182[info] QueryParameters
183[info] - should correctly generate strings under `as` transformations
184[info] FromString3Spec:
185[info] The FromString implicit for Numeric
186[info] - should be correctly called
187[info] AllImplSpec:
188[info] Simple individual matching
189[info] - should work
190[info] Associating path and query
191[info] - should be the same as path and query separately
192[info] Associating path and fragment
193[info] - should be the same as path and fragment separately
194[info] Associating path, query and fragment
195[info] - should be the same as the three separately
196[info] Implicit conversion
197[info] - should be called with the specified error system
198[info] Asking for a fragment
199[info] - should automatically find the correct error system
200[info] FragmentRawUrlSpec:
201[info] Parsing a fragment with a space
202[info] - should read %20 as space
203[info] Generating a fragment with a space
204[info] - should put %20 instead
205[info] Generating a fragment from an empty string
206[info] - should give the empty string
207[info] FragmentExamples:
208[info] Some matching examples
209[info] - should work
210[info] PathSegmentExamples:
211[info] Some matching examples
212[info] - should work
213[info] Some matching examples
214[info] - should fail
215[info] Some generating examples
216[info] - should work
217[info] QueryParamsExamples:
218[info] Some matching examples
219[info] - should work
220[info] Some matching examples
221[info] - should fail
222[info] Some generating examples
223[info] - should work
224[info] No apparent limit to tuple composition
225[info] - should compile
226[info] + Filtering.Filtering fragment on even integers: OK, passed 100 tests.
227[info] + Filtering.Filtering segment on even integers: OK, passed 100 tests.
228[info] + Filtering.Filtering query param on event integers: OK, passed 100 tests.
229[info] + QueryParameters.as is bijection with container: OK, passed 100 tests.
230[info] + QueryParameters.Matching param fails on empty map: OK, passed 100 tests.
231[info] + QueryParameters.Filtering: OK, passed 100 tests.
232[info] + QueryParameters.Single param maps: OK, passed 100 tests.
233[info] + QueryParameters.Unused params pass to remaining: OK, passed 100 tests.
234[info] + QueryParameters.LeftInverse: OK, passed 100 tests.
235[info] + QueryParameters.OptionInt: OK, passed 100 tests.
236[info] + FragmentDummyErrorProperties.fragment gen sometimes generate empty fragment: OK, proved property.
237[info] + FragmentDummyErrorProperties.Matching is the left inverse for generating in string fragment: OK, passed 100 tests.
238[info] + QueryParameters.QuasiCommutativity: OK, passed 100 tests.
239[info] + FragmentDummyErrorProperties.Constant fragment can use sugar method: OK, passed 100 tests.
240[info] + FragmentDummyErrorProperties.Empty matching matches when fragment is empty: OK, passed 100 tests.
241[info] + QueryParameters.ListParam: OK, passed 100 tests.
242[info] + FragmentDummyErrorProperties.Mapping string results to its length works: OK, passed 100 tests.
243[info] + FragmentDummyErrorProperties.MaybeFragment representation has an #: OK, passed 100 tests.
244[info] + FragmentDummyErrorProperties.as method works for bijection: OK, passed 100 tests.
245[info] + FragmentDummyErrorProperties.Matching existing string works when fragment is non empty: OK, passed 100 tests.
246[info] + FragmentDummyErrorProperties.Int matching always fail when it's not an int: OK, passed 100 tests.
247[info] + FragmentDummyErrorProperties.Filtering non positive ints with dummy error sugar: OK, passed 100 tests.
248[info] + FragmentDummyErrorProperties.Generating maybeFragment when defined is the same as fragment: OK, passed 100 tests.
249[info] + FragmentDummyErrorProperties.Get or else on positive ints caps to 1: OK, passed 100 tests.
250[info] + FragmentDummyErrorProperties.Matching an integer works: OK, passed 100 tests.
251[info] + PrinterChecks.longs are printed with toString: OK, passed 100 tests.
252[info] + FragmentDummyErrorProperties.Maybe Matching existing string always works: OK, passed 100 tests.
253[info] + FragmentDummyErrorProperties.Filtering non positive ints: OK, passed 100 tests.
254[info] + PrinterChecks.strings are printed as is: OK, passed 100 tests.
255[info] + PrinterChecks.summoner method is called: OK, passed 100 tests.
256[info] + FragmentDummyErrorProperties.Matching is the left inverse for generating in int fragment: OK, passed 100 tests.
257[info] + PrinterChecks.floats are printed with toString: OK, passed 100 tests.
258[info] + PrinterChecks.ints are printed with toString: OK, passed 100 tests.
259[info] + PrinterChecks.booleans are printed with toString: OK, passed 100 tests.
260[info] + PrinterChecks.big intss are printed with toString: OK, passed 100 tests.
261[info] + PrinterChecks.doubles are printed with toString: OK, passed 100 tests.
262[info] + PathSegmentWithQueryParamsDummyErrorChecks.Create url creates the pair from intSegment and doubleQuery: OK, passed 100 tests.
263[info] + PathSegmentWithQueryParamsDummyErrorChecks.segmentWithParam creates path of intSegment and query of doubleQuery: OK, passed 100 tests.
264[info] + PathSegmentWithQueryParamsDummyErrorChecks.Segment is failing implies that segmentWithParam is failing like the segment: OK, passed 100 tests.
265[info] + PathSegmentWithQueryParamsDummyErrorChecks.Create part is the combination of intSegment and doubleQuery: OK, passed 100 tests.
266[info] + PathSegmentWithQueryParamsDummyErrorChecks.segmentWithParam matches the combination of intSegment and doubleQuery: OK, passed 100 tests.
267[info] + FromStringChecks.Decoding non-boolean string leads to error: OK, passed 100 tests.
268[info] + FromStringChecks.Doubles can be decoded from string: OK, passed 100 tests.
269[info] + PathSegmentWithQueryParamsDummyErrorChecks.Segment succeeds and query fails implies that segmentWithParam fails like the query: OK, passed 100 tests.
270[info] + PathSegmentWithQueryParamsSimpleErrorChecks.Create url creates the pair from intSegment and doubleQuery: OK, passed 100 tests.
271[info] + PathSegmentWithQueryParamsSimpleErrorChecks.segmentWithParam matches the combination of intSegment and doubleQuery: OK, passed 100 tests.
272[info] + PathSegmentWithQueryParamsSimpleErrorChecks.Segment succeeds and query fails implies that segmentWithParam fails like the query: OK, passed 100 tests.
273[info] + PathSegmentWithQueryParamsSimpleErrorChecks.Segment is failing implies that segmentWithParam is failing like the segment: OK, passed 100 tests.
274[info] + PathSegmentWithQueryParamsSimpleErrorChecks.Create part is the combination of intSegment and doubleQuery: OK, passed 100 tests.
275[info] + FragmentSimpleErrorProperties.Matching existing string works when fragment is non empty: OK, passed 100 tests.
276[info] + FragmentSimpleErrorProperties.Generating maybeFragment when defined is the same as fragment: OK, passed 100 tests.
277[info] + FragmentSimpleErrorProperties.Mapping string results to its length works: OK, passed 100 tests.
278[info] + FragmentSimpleErrorProperties.Get or else on positive ints caps to 1: OK, passed 100 tests.
279[info] + FragmentSimpleErrorProperties.Constant fragment can use sugar method: OK, passed 100 tests.
280[info] + PathSegmentWithQueryParamsSimpleErrorChecks.segmentWithParam creates path of intSegment and query of doubleQuery: OK, passed 100 tests.
281[info] + FragmentSimpleErrorProperties.Matching an integer works: OK, passed 100 tests.
282[info] + FragmentSimpleErrorProperties.Matching is the left inverse for generating in string fragment: OK, passed 100 tests.
283[info] + PathSegmentRawUrl.StaticGeneration: OK, passed 100 tests.
284[info] + FragmentSimpleErrorProperties.as method works for bijection: OK, passed 100 tests.
285[info] + FragmentSimpleErrorProperties.Maybe Matching existing string always works: OK, passed 100 tests.
286[info] + FragmentSimpleErrorProperties.Empty matching matches when fragment is empty: OK, passed 100 tests.
287[info] + FragmentSimpleErrorProperties.MaybeFragment representation has an #: OK, passed 100 tests.
288[info] + FragmentSimpleErrorProperties.Int matching always fail when it's not an int: OK, passed 100 tests.
289[info] + FragmentSimpleErrorProperties.Filtering non positive ints: OK, passed 100 tests.
290[info] + FragmentSimpleErrorProperties.fragment gen sometimes generate empty fragment: OK, proved property.
291[info] + FragmentSimpleErrorProperties.Matching is the left inverse for generating in int fragment: OK, passed 100 tests.
292[info] + PathSegmentDummyError.provide method fails when decoding wrong value: OK, passed 100 tests.
293[info] + PathSegmentDummyError.IntSegmentMatcher: OK, passed 100 tests.
294[info] + PathSegmentDummyError.Bijection works with container: OK, passed 100 tests.
295[info] + PathSegmentDummyError.RootConsumesNothing: OK, passed 100 tests.
296[info] + PathSegmentDummyError.ignore methods generates default: OK, passed 100 tests.
297[info] + PathSegmentDummyError.noMatch always fails: OK, passed 100 tests.
298[info] + PathSegmentDummyError.string and int segment are aliases for generic method: OK, passed 100 tests.
299[info] + PathSegmentDummyError.Unit sugar method to create segments can be called: OK, passed 100 tests.
300[info] + PathSegmentDummyError.IntSegmentComplains: OK, passed 100 tests.
301[info] + PathSegmentDummyError.remainingSegmentsAndEndOfSegments: OK, passed 100 tests.
302[info] + PathSegmentDummyError.provide method decodes and encodes x: OK, passed 100 tests.
303[info] + PathSegmentDummyError.ExactMatchingBooleanAndInts: OK, passed 100 tests.
304[info] + UrlStringGeneratorChecks.Make url contains all param map names: OK, passed 100 tests.
305[info] + PathSegmentDummyError.IntWithString: OK, passed 100 tests.
306[info] + UrlStringGeneratorChecks.Make url contains encoded segments: OK, passed 100 tests.
307[info] + PathSegmentDummyError.filtering has no impact on generation: OK, passed 100 tests.
308[info] + PathSegmentDummyError.oneOfValuesMatches: OK, passed 100 tests.
309[info] + PathSegmentDummyError.generic unary path segment can be called: OK, passed 100 tests.
310[info] + PathSegmentDummyError.EndOfSegmentComplains: OK, passed 100 tests.
311[info] + PathSegmentDummyError.filtering has no impact on generation with sugar: OK, passed 100 tests.
312[info] + PathSegmentDummyError.oneOfValuesNotMatch: OK, passed 100 tests.
313[info] + PathSegmentDummyError.ExactMatchingString: OK, passed 100 tests.
314[info] + PathSegmentSimpleError.Unit sugar method to create segments can be called: OK, passed 100 tests.
315[info] + PathSegmentDummyError.dummy encoder can be used to override: OK, passed 100 tests.
316[info] + PathSegmentSimpleError.ignore methods generates default: OK, passed 100 tests.
317[info] + PathSegmentDummyError.Or operator can target both types: OK, passed 100 tests.
318[info] + PathSegmentSimpleError.string and int segment are aliases for generic method: OK, passed 100 tests.
319[info] + PathSegmentSimpleError.generic unary path segment can be called: OK, passed 100 tests.
320[info] + PathSegmentSimpleError.provide method fails when decoding wrong value: OK, passed 100 tests.
321[info] + PathSegmentSimpleError.provide method decodes and encodes x: OK, passed 100 tests.
322[info] + PathSegmentSimpleError.Or operator can target both types: OK, passed 100 tests.
323[info] + PathSegmentSimpleError.filtering has no impact on generation: OK, passed 100 tests.
324[info] + PathSegmentSimpleError.dummy encoder can be used to override: OK, passed 100 tests.
325[info] + PathSegmentSimpleError.EndOfSegmentComplains: OK, passed 100 tests.
326[info] + PathSegmentSimpleError.IntWithString: OK, passed 100 tests.
327[info] + PathSegmentSimpleError.oneOfValuesNotMatch: OK, passed 100 tests.
328[info] + PathSegmentSimpleError.Bijection works with container: OK, passed 100 tests.
329[info] + PathSegmentSimpleError.IntSegmentMatcher: OK, passed 100 tests.
330[info] + PathSegmentSimpleError.IntSegmentComplains: OK, passed 100 tests.
331[info] + PathSegmentSimpleError.noMatch always fails: OK, passed 100 tests.
332[info] + PathSegmentSimpleError.ExactMatchingString: OK, passed 100 tests.
333[info] + PathSegmentSimpleError.remainingSegmentsAndEndOfSegments: OK, passed 100 tests.
334[info] + PathSegmentSimpleError.RootConsumesNothing: OK, passed 100 tests.
335[info] + PathSegmentSimpleError.oneOfValuesMatches: OK, passed 100 tests.
336[info] + PathSegmentSimpleError.ExactMatchingBooleanAndInts: OK, passed 100 tests.
337[info] + UrlStringGeneratorChecks.Make url contains all encoded param values: OK, passed 100 tests.
338
339************************
340Build summary:
341[{
342 "module": "url-dsl",
343 "compile": {"status": "ok", "tookMs": 8344, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
344 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
345 "test-compile": {"status": "ok", "tookMs": 8441, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
346 "test": {"status": "ok", "tookMs": 3895, "passed": 163, "failed": 0, "ignored": 0, "skipped": 0, "total": 163, "byFramework": [{"framework": "munit", "stats": {"passed": 27, "failed": 0, "ignored": 0, "skipped": 0, "total": 27}},{"framework": "unknown", "stats": {"passed": 136, "failed": 0, "ignored": 0, "skipped": 0, "total": 136}}]},
347 "publish": {"status": "skipped", "tookMs": 0},
348 "metadata": {
349 "crossScalaVersions": ["3.3.1", "2.13.14", "2.12.19"]
350}
351}]
352************************
353[success] Total time: 23 s, completed Jan 8, 2026, 2:50:38 AM
354[0JChecking patch project/plugins.sbt...
355Checking patch project/build.properties...
356Checking patch build.sbt...
357Applied patch project/plugins.sbt cleanly.
358Applied patch project/build.properties cleanly.
359Applied patch build.sbt cleanly.