From 71cf9062414420df8f7969bdd9e8c4a665edc23a Mon Sep 17 00:00:00 2001 From: Georges Lebreton Date: Mon, 27 Jul 2026 16:44:43 +0100 Subject: [PATCH 1/4] spike multimedia atom --- .../src/main/scala/com/gu/contentapi/json/CirceDecoders.scala | 4 ++++ .../src/main/scala/com/gu/contentapi/json/CirceEncoders.scala | 4 ++++ models/src/main/thrift/content/v1.thrift | 2 ++ 3 files changed, 10 insertions(+) diff --git a/json/src/main/scala/com/gu/contentapi/json/CirceDecoders.scala b/json/src/main/scala/com/gu/contentapi/json/CirceDecoders.scala index fce68bc..0300923 100644 --- a/json/src/main/scala/com/gu/contentapi/json/CirceDecoders.scala +++ b/json/src/main/scala/com/gu/contentapi/json/CirceDecoders.scala @@ -203,6 +203,10 @@ object CirceDecoders { implicit val audioAtomDecoder: Decoder[audio.AudioAtom] = deriveDecoder implicit val offPlatformDecoder: Decoder[audio.OffPlatform] = deriveDecoder implicit val emailSignUpAtomDecoder: Decoder[emailsignup.EmailSignUpAtom] = deriveDecoder + implicit val multimediaSlideshowMediaReferenceDecoder: Decoder[multimediaslideshow.MediaReference] = deriveDecoder + implicit val multimediaSlideshowSlideContentDecoder: Decoder[multimediaslideshow.SlideContent] = deriveDecoder + implicit val multimediaSlideshowSlideDecoder: Decoder[multimediaslideshow.Slide] = deriveDecoder + implicit val multimediaSlideshowAtomDecoder: Decoder[multimediaslideshow.MultimediaSlideshowAtom] = deriveDecoder implicit val atomDecoder: Decoder[contentatom.Atom] = deriveDecoder implicit val contentChangeDetailsDecoder: Decoder[contentatom.ContentChangeDetails] = deriveDecoder implicit val changeRecordDecoder: Decoder[contentatom.ChangeRecord] = deriveDecoder diff --git a/json/src/main/scala/com/gu/contentapi/json/CirceEncoders.scala b/json/src/main/scala/com/gu/contentapi/json/CirceEncoders.scala index 70e1f65..3cf2c2c 100644 --- a/json/src/main/scala/com/gu/contentapi/json/CirceEncoders.scala +++ b/json/src/main/scala/com/gu/contentapi/json/CirceEncoders.scala @@ -152,6 +152,10 @@ object CirceEncoders { implicit val audioAtomEncoder: Encoder[audio.AudioAtom] = deriveEncoder implicit val offPlatformEncoder: Encoder[audio.OffPlatform] = deriveEncoder implicit val emailSignUpAtomEncoder: Encoder[emailsignup.EmailSignUpAtom] = deriveEncoder + implicit val multimediaSlideshowMediaReferenceEncoder: Encoder[multimediaslideshow.MediaReference] = deriveEncoder + implicit val multimediaSlideshowSlideContentEncoder: Encoder[multimediaslideshow.SlideContent] = deriveEncoder + implicit val multimediaSlideshowSlideEncoder: Encoder[multimediaslideshow.Slide] = deriveEncoder + implicit val multimediaSlideshowAtomEncoder: Encoder[multimediaslideshow.MultimediaSlideshowAtom] = deriveEncoder implicit val atomEncoder: Encoder[contentatom.Atom] = deriveEncoder implicit val contentChangeDetailsEncoder: Encoder[contentatom.ContentChangeDetails] = deriveEncoder implicit val changeRecordEncoder: Encoder[contentatom.ChangeRecord] = deriveEncoder diff --git a/models/src/main/thrift/content/v1.thrift b/models/src/main/thrift/content/v1.thrift index 9057a0e..5ff21a3 100644 --- a/models/src/main/thrift/content/v1.thrift +++ b/models/src/main/thrift/content/v1.thrift @@ -1857,6 +1857,8 @@ struct Atoms { 16: optional list audios 17: optional list emailsignups + + 18: optional list multimediaslideshows } struct ContentStats { From b8d365cf8be992240db55159b4c24706647175cf Mon Sep 17 00:00:00 2001 From: Georges Lebreton Date: Tue, 4 Aug 2026 10:10:46 +0100 Subject: [PATCH 2/4] update content atoms with preview release --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 4dfebca..435be83 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ import sbtversionpolicy.withsbtrelease.ReleaseVersion // dependency versions val contentEntityVersion = "4.0.0" -val contentAtomVersion = "12.0.1" +val contentAtomVersion = "13.1.0-PREVIEW.glspike-multimedia-atom.2026-08-03T1406.314057f2" val storyPackageVersion = "2.2.0" val thriftVersion = "0.24.0" val scroogeVersion = "22.1.0" // update plugins too if this version changes From 626c78aca72d428f328785ad7c75a729fa8aaf37 Mon Sep 17 00:00:00 2001 From: Georges Lebreton Date: Tue, 4 Aug 2026 10:36:38 +0100 Subject: [PATCH 3/4] bump scala version too --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 435be83..ee45584 100644 --- a/build.sbt +++ b/build.sbt @@ -24,7 +24,7 @@ val snapshotReleaseSuffix = "-SNAPSHOT" lazy val artifactProductionSettings = Seq( - scalaVersion := "2.13.14", + scalaVersion := "2.13.18", // This old attempt to downgrade scrooge reserved word clashes is now insufficient... https://github.com/twitter/scrooge/issues/259#issuecomment-1900743695 Compile / scroogeDisableStrict := true, // scrooge 21.3.0: Builds are now only supported for Scala 2.12+ From b59f3bdd21f1fdf50b4a491a53f7b4e73314d543 Mon Sep 17 00:00:00 2001 From: Georges Lebreton Date: Tue, 4 Aug 2026 10:55:48 +0100 Subject: [PATCH 4/4] revert bump to 2.13.18 and instead use allowunsafescalalibupgrade --- build.sbt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index ee45584..6b4686f 100644 --- a/build.sbt +++ b/build.sbt @@ -24,7 +24,12 @@ val snapshotReleaseSuffix = "-SNAPSHOT" lazy val artifactProductionSettings = Seq( - scalaVersion := "2.13.18", + scalaVersion := "2.13.14", + // A newer scala-library (2.13.18) is pulled in transitively via content-atom, but the 2.13.18 + // compiler crashes on the fezziwig/circe macro-generated trees (scala.MatchError in RefChecks' + // isSimpleCaseApply). We stay on the 2.13.14 compiler, which compiles cleanly, and demote the + // SIP-51 check since all 2.13.x are binary compatible. + allowUnsafeScalaLibUpgrade := true, // This old attempt to downgrade scrooge reserved word clashes is now insufficient... https://github.com/twitter/scrooge/issues/259#issuecomment-1900743695 Compile / scroogeDisableStrict := true, // scrooge 21.3.0: Builds are now only supported for Scala 2.12+