floristyle icon indicating copy to clipboard operation
floristyle copied to clipboard

[BUG] Broken themes after the latest update

Open SebiTalent04 opened this issue 8 months ago • 3 comments

Prerequisites (Required)

  • [x] I searched for any existing report about this bug to avoid opening a duplicate.
  • [x] This issue contains only one bug.
  • [x] The title of this issue accurately describes the bug.

Bug Description (Required)

FlorisBoard was updated to v0.5.0-alpha01 which broke all the themes due to the rewriting of the theming engine.

Steps to reproduce

  1. Update FlorisBoard
  2. See the bug

Expected Behavior (Required)

Themes should work fine

Actual Behavior (Required)

Screenshot-20250504-082357.png

FlorisBoard Version (Required)

v0.5.0-alpha01

Gboardish version (Required)

3.0.2, latest

Android version (Required)

Android 15 (GrapheneOS)

Device (Required)

Pixel 6a

Screenshots or Videos (Optional)

No response

Additional Information (Optional)

No response

SebiTalent04 avatar May 04 '25 05:05 SebiTalent04

Gonna update to the latest theme release, I forgot I haven't updated in a while.

Edit: The issue persists on the latest release.

SebiTalent04 avatar May 04 '25 05:05 SebiTalent04

Yep, that’s expected. The hardworking Florisboard team introduced a new theme engine (Snygg2) starting with v0.5.0-alpha01, which changes how themes are structured and styled.

Floristyle needs a full rewrite to support it. Every theme has to be reviewed, updated with new elements and properties, and tested.

Hopefully it’ll be ready in the next few days, there’s a lot of themes to migrate 🥲

So for now, the latest supported Florisboard is v0.4.6

itsmartashub avatar May 04 '25 08:05 itsmartashub

Yes there is need of rework on theme for new 0.5 release .

Unbaised99 avatar May 04 '25 17:05 Unbaised99

The latest v5.0.0 version should resolve this issue.

itsmartashub avatar May 11 '25 18:05 itsmartashub

Thank you for the updated Themes, I've approved the addons store release so everybody can download it from there.

lm41 avatar May 11 '25 18:05 lm41

Thank you for the quick update, the new version works great and appears to be way more than just a small fix for the schema change

milesflavel avatar May 11 '25 23:05 milesflavel

Everything works again, thank you for your work!

SebiTalent04 avatar May 12 '25 17:05 SebiTalent04

It is once again broken and crashing Florisboard when i tried to load any Florisstyle theme.

Heres my logs:

Environment information

  • FlorisBoard 0.4.6 (104)
  • Device: Google Pixel 6a (bluejay)
  • Android: 16 (cn=BAKLAVA sdk=36)

Attached logs and stacktrace files

Detailed info (Debug log header)
======= SYSTEM INFO =======
Time                : 2025-08-06T16:24:04.217540Z
Manufacturer        : Google
Model               : Pixel 6a
Product             : bluejay
Android             : 16 (cn=BAKLAVA sdk=36) [2025080400]
ABIs                : [arm64-v8a, armeabi-v7a, armeabi]
Memory              : 4.87 GiB (89.44% used, 5.44 GiB max)
Font scale          : 0.85
Locales             : en-US,vi-VN

======= APP INFO =======
Package             : dev.patrickgold.florisboard
Name                : FlorisBoard
Version             : 0.4.6 (104)
Build type          : release
Build commit hash   : bc5ed3475c40d3d1ba40a53b5063186d7228c13c
Java heap memory    : 10.10 MiB (3.95% used, 256.00 MiB max)
Native heap memory  : 6.79 MiB (46.16% used, 14.70 MiB max)

======= FEATURE CONFIG =======
Smartbar enabled            : true
Suggestions enabled         : false
Inline autofill enabled     : true
Glide enabled               : false
Internal clipboard enabled  : true

======= EXTENSION CONFIG =======
Theme extensions    : 
Language Packs      : 

======= ACTIVE SUBTYPE CONFIG =======
Active Subtype      : 
    -1/en-US/org.florisboard.currencysets:dollar/org.florisboard.layouts:qwerty
Installed Subtypes    : 

1754497443095.stacktrace
kotlinx.serialization.json.internal.JsonDecodingException: Unexpected JSON token at offset 14: Expected start of the object '{', but had '"' instead at path: $['invalid']
JSON input: {
	"$schema": "https://schemas.florisboard.o.....
	at kotlinx.serialization.json.internal.WriteModeKt.JsonDecodingException(SourceFile:3)
	at kotlinx.serialization.json.internal.WriteModeKt.JsonDecodingException(SourceFile:4)
	at androidx.room.RoomOpenHelper.fail(SourceFile:61)
	at androidx.room.RoomOpenHelper.fail$default(SourceFile:13)
	at androidx.room.RoomOpenHelper.fail$kotlinx_serialization_json(SourceFile:69)
	at androidx.room.RoomOpenHelper.unexpectedToken(SourceFile:48)
	at androidx.room.RoomOpenHelper.consumeNextToken(SourceFile:7)
	at kotlinx.serialization.json.internal.StreamingJsonDecoder.beginStructure(SourceFile:65)
	at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(SourceFile:13)
	at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(SourceFile:1)
	at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue$1(SourceFile:122)
	at kotlinx.serialization.json.JsonKt.decodeSerializableElement(SourceFile:11)
	at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableElement(SourceFile:52)
	at kotlinx.serialization.internal.LinkedHashMapSerializer.readElement(SourceFile:77)
	at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(SourceFile:30)
	at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(SourceFile:1)
	at kotlinx.serialization.internal.ObjectSerializer.deserialize(SourceFile:10)
	at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue$1(SourceFile:122)
	at kotlinx.serialization.json.Json.decodeFromString(SourceFile:31)
	at dev.patrickgold.florisboard.ime.theme.ThemeManager$updateActiveTheme$2.invokeSuspend(SourceFile:235)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(SourceFile:9)
	at kotlinx.coroutines.DispatchedTask.run(SourceFile:113)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(SourceFile:96)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@d77b313, Dispatchers.Default]

1754497443097.stacktrace
kotlinx.serialization.json.internal.JsonDecodingException: Unexpected JSON token at offset 14: Expected start of the object '{', but had '"' instead at path: $['invalid']
JSON input: {
	"$schema": "https://schemas.florisboard.o.....
	at kotlinx.serialization.json.internal.WriteModeKt.JsonDecodingException(SourceFile:3)
	at kotlinx.serialization.json.internal.WriteModeKt.JsonDecodingException(SourceFile:4)
	at androidx.room.RoomOpenHelper.fail(SourceFile:61)
	at androidx.room.RoomOpenHelper.fail$default(SourceFile:13)
	at androidx.room.RoomOpenHelper.fail$kotlinx_serialization_json(SourceFile:69)
	at androidx.room.RoomOpenHelper.unexpectedToken(SourceFile:48)
	at androidx.room.RoomOpenHelper.consumeNextToken(SourceFile:7)
	at kotlinx.serialization.json.internal.StreamingJsonDecoder.beginStructure(SourceFile:65)
	at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(SourceFile:13)
	at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(SourceFile:1)
	at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue$1(SourceFile:122)
	at kotlinx.serialization.json.JsonKt.decodeSerializableElement(SourceFile:11)
	at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableElement(SourceFile:52)
	at kotlinx.serialization.internal.LinkedHashMapSerializer.readElement(SourceFile:77)
	at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(SourceFile:30)
	at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(SourceFile:1)
	at kotlinx.serialization.internal.ObjectSerializer.deserialize(SourceFile:10)
	at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue$1(SourceFile:122)
	at kotlinx.serialization.json.Json.decodeFromString(SourceFile:31)
	at dev.patrickgold.florisboard.ime.theme.ThemeManager$updateActiveTheme$2.invokeSuspend(SourceFile:235)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(SourceFile:9)
	at kotlinx.coroutines.DispatchedTask.run(SourceFile:113)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(SourceFile:96)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@9a06d6f, Dispatchers.Default]

fossicefairy avatar Aug 06 '25 16:08 fossicefairy

It's not broken and working as expected. The theme you are trying to install was made for florisboard v0.5.x and thus is not installable on v0.4.x. You can either download the latest release made for FlorisBoard 0.4 or use the latest beta release of FlorisBoard.

lm41 avatar Aug 06 '25 16:08 lm41

@lm41 was faster 😅 Thank you for explaining things clearly and providing the links.

@fossicefairy, for more info and version compatibility, feel free to check out the Compatibility section in the README

itsmartashub avatar Aug 06 '25 16:08 itsmartashub