v1.3.1 — HighScores crash fix, rewarded-ad fix, Crashlytics wiring

Patch over v1.3.0. User-facing fix is the HighScores crash on Android
that hit users when MODE_OPTIONS grew to 5 but the screen's local arrays
stayed at length 4. The web build itself wasn't affected by that crash
but rebuilds anyway to pick up: bounds-clamping on stored prefs indexes,
the BackgroundRunner abstraction that restored html:dist after months of
silent breakage (Thread/Runtime/String.format calls had crept into
shared core), and the GwtAdManager dead-method cleanup.
This commit is contained in:
jwinterm
2026-06-10 06:42:40 -04:00
parent 40f3647a51
commit 1644b871da
38 changed files with 569 additions and 23 deletions
@@ -41,6 +41,15 @@ music/menu_lofi_music.mp3
music/menu_music.mp3 music/menu_music.mp3
music/zen1_The_Ticking_Study.mp3 music/zen1_The_Ticking_Study.mp3
music/zen2_92de8bbf-386b-46a5-8047-6800da693b0a.mp3 music/zen2_92de8bbf-386b-46a5-8047-6800da693b0a.mp3
screenshots/.sync-conflict-20260424-111818-XZHK7HI.DS_Store
screenshots/.sync-conflict-20260424-111819-XZHK7HI.DS_Store
screenshots/.sync-conflict-20260424-111905-XZHK7HI.DS_Store
screenshots/output/.sync-conflict-20260424-111818-XZHK7HI.DS_Store
screenshots/output/.sync-conflict-20260424-111822-XZHK7HI.DS_Store
screenshots/output/.sync-conflict-20260424-111905-XZHK7HI.DS_Store
screenshots/output/gradient-mine/.sync-conflict-20260424-111818-XZHK7HI.DS_Store
screenshots/output/gradient-mine/.sync-conflict-20260424-111823-XZHK7HI.DS_Store
screenshots/output/gradient-mine/.sync-conflict-20260424-111905-XZHK7HI.DS_Store
screenshots/output/gradient-mine/phone-itch/1.png screenshots/output/gradient-mine/phone-itch/1.png
screenshots/output/gradient-mine/phone-itch/2.png screenshots/output/gradient-mine/phone-itch/2.png
screenshots/output/gradient-mine/phone-itch/3.png screenshots/output/gradient-mine/phone-itch/3.png
@@ -91,9 +100,38 @@ screenshots/videos_reduced/zen.mp4
screenshots/youtube_composite.mp4 screenshots/youtube_composite.mp4
secrets.properties secrets.properties
secrets.properties.example secrets.properties.example
sfx/cardPlace1.ogg
sfx/cardPlace2.ogg
sfx/cardPlace3.ogg
sfx/cardPlace4.ogg
sfx/cardSlide1.ogg
sfx/cardSlide2.ogg
sfx/cardSlide3.ogg
sfx/cardSlide4.ogg
sfx/chipsStack1.ogg
sfx/chipsStack2.ogg
sfx/chipsStack3.ogg
sfx/chipsStack4.ogg
sfx/chipsStack5.ogg
sfx/chipsStack6.ogg
sfx/click.ogg sfx/click.ogg
sfx/confirm.ogg sfx/confirm.ogg
sfx/confirmation_001.ogg
sfx/confirmation_002.ogg
sfx/confirmation_003.ogg
sfx/confirmation_004.ogg
sfx/correct_light_000.ogg
sfx/correct_light_001.ogg
sfx/correct_light_002.ogg
sfx/correct_light_003.ogg
sfx/correct_light_004.ogg
sfx/correct_medium_000.ogg
sfx/correct_medium_001.ogg
sfx/correct_medium_002.ogg
sfx/correct_medium_003.ogg
sfx/correct_medium_004.ogg
sfx/drop.ogg sfx/drop.ogg
sfx/drop_soft.ogg
sfx/gameover_lose.mp3 sfx/gameover_lose.mp3
sfx/gameover_win.mp3 sfx/gameover_win.mp3
sfx/pickup.ogg sfx/pickup.ogg
@@ -117,6 +155,7 @@ suchsoftware/favicon_dark.svg
suchsoftware/favicon_light.png suchsoftware/favicon_light.png
suchsoftware/favicon_light.svg suchsoftware/favicon_light.svg
suchsoftware/ss_preloader_logo.png suchsoftware/ss_preloader_logo.png
tile_visual_groups.json
tiles.atlas tiles.atlas
tiles1.png tiles1.png
tiles2.png tiles2.png
+32 -2
View File
@@ -16,18 +16,48 @@ a:music/zen1_The_Ticking_Study.mp3:music/zen1_The_Ticking_Study-fd78e7412bc6670e
i:gameboard_bg.png:gameboard_bg-c9e096ffcc2f238ada0f7446f0dae045.png:3191438:image/png:1 i:gameboard_bg.png:gameboard_bg-c9e096ffcc2f238ada0f7446f0dae045.png:3191438:image/png:1
i:menuscreen_bg_desat.png:menuscreen_bg_desat-716c1f0217b57d502454c21d10ffb19f.png:2613902:image/png:1 i:menuscreen_bg_desat.png:menuscreen_bg_desat-716c1f0217b57d502454c21d10ffb19f.png:2613902:image/png:1
d:sfx:sfx:0:application/unknown:1 d:sfx:sfx:0:application/unknown:1
a:sfx/correct_medium_001.ogg:sfx/correct_medium_001-79591943ad1bf26a0f2b94a58f8998b4.ogg:10686:audio/ogg:1
a:sfx/correct_medium_000.ogg:sfx/correct_medium_000-08ab3b30667f8cd5a9eacac3c7027641.ogg:10481:audio/ogg:1
a:sfx/correct_medium_002.ogg:sfx/correct_medium_002-f603862ab676a7bd081617bfb4a48718.ogg:10422:audio/ogg:1
a:sfx/correct_medium_003.ogg:sfx/correct_medium_003-b914b4558260dfd7885ac5093cc8817e.ogg:10677:audio/ogg:1
a:sfx/correct_medium_004.ogg:sfx/correct_medium_004-d270a05f5c1cc874af1da868ecb11200.ogg:10478:audio/ogg:1
a:sfx/correct_light_003.ogg:sfx/correct_light_003-3068aefc9dc4040f0128eb96c9cffbef.ogg:8699:audio/ogg:1
a:sfx/correct_light_002.ogg:sfx/correct_light_002-c6d562bbd2f505bcb64c305a7c191373.ogg:8643:audio/ogg:1
a:sfx/confirmation_001.ogg:sfx/confirmation_001-3f024e735ebaba5de6f8853bc03f0237.ogg:11066:audio/ogg:1
a:sfx/cardSlide1.ogg:sfx/cardSlide1-edd12b050ff29554bba895c5d23d8865.ogg:19802:audio/ogg:1
a:sfx/cardSlide3.ogg:sfx/cardSlide3-ab56ee3bd91d826ff7fee27de83c35b3.ogg:20985:audio/ogg:1
a:sfx/confirmation_003.ogg:sfx/confirmation_003-bdd711c0e19b3ba393a91758bb6b1553.ogg:11633:audio/ogg:1
a:sfx/correct_light_000.ogg:sfx/correct_light_000-4de383ea57f814e35d76de17d98b421d.ogg:8607:audio/ogg:1
a:sfx/correct_light_001.ogg:sfx/correct_light_001-c7b7a04e18d00f5db4c80259e021fbd1.ogg:8625:audio/ogg:1
a:sfx/confirmation_002.ogg:sfx/confirmation_002-bb4116c124f13736bc3c1fef2e638953.ogg:16267:audio/ogg:1
a:sfx/cardSlide2.ogg:sfx/cardSlide2-33536145be2da5a366b46c9dad5c06c9.ogg:20542:audio/ogg:1
a:sfx/correct_light_004.ogg:sfx/correct_light_004-4e01fe6472dd165473965e309edc29f2.ogg:8722:audio/ogg:1
a:sfx/pickup.ogg:sfx/pickup-af67146454738f40420f2b0712b000c9.ogg:8398:audio/ogg:1 a:sfx/pickup.ogg:sfx/pickup-af67146454738f40420f2b0712b000c9.ogg:8398:audio/ogg:1
a:sfx/confirmation_004.ogg:sfx/confirmation_004-8826db0fdadf927486d30615a46af2cb.ogg:14489:audio/ogg:1
a:sfx/cardSlide4.ogg:sfx/cardSlide4-f9145ad6a8376ce9a1fc77077f438a3d.ogg:17222:audio/ogg:1
a:sfx/toggle.ogg:sfx/toggle-b670c8f03e14bebfa3d3cbc5473884bc.ogg:9912:audio/ogg:1 a:sfx/toggle.ogg:sfx/toggle-b670c8f03e14bebfa3d3cbc5473884bc.ogg:9912:audio/ogg:1
a:sfx/drop_soft.ogg:sfx/drop_soft-95ca7eb89a8841731e7b3a25adad529e.ogg:7432:audio/ogg:1
a:sfx/chipsStack3.ogg:sfx/chipsStack3-1bb17f8bd4cd751bfeeee19f1d2d2a8f.ogg:14427:audio/ogg:1
a:sfx/chipsStack2.ogg:sfx/chipsStack2-ce35ba24db25f7b6f5738f3ae003f428.ogg:10727:audio/ogg:1
a:sfx/gameover_win.mp3:sfx/gameover_win-185b0ca723ea22c5b3b0d0acb6bd9b99.mp3:116160:audio/mpeg:1 a:sfx/gameover_win.mp3:sfx/gameover_win-185b0ca723ea22c5b3b0d0acb6bd9b99.mp3:116160:audio/mpeg:1
a:sfx/cardPlace4.ogg:sfx/cardPlace4-402bd6832fda87b3f225022c0de1ecd9.ogg:22021:audio/ogg:1
a:sfx/chipsStack1.ogg:sfx/chipsStack1-b383d9610c46b2cc12c8f0027a299e55.ogg:13130:audio/ogg:1
a:sfx/gameover_lose.mp3:sfx/gameover_lose-79450f0a28363ff7777e8c1103aef61d.mp3:27840:audio/mpeg:1 a:sfx/gameover_lose.mp3:sfx/gameover_lose-79450f0a28363ff7777e8c1103aef61d.mp3:27840:audio/mpeg:1
a:sfx/cardPlace1.ogg:sfx/cardPlace1-ed360c626e487d2352b459f07d617440.ogg:24065:audio/ogg:1
a:sfx/chipsStack5.ogg:sfx/chipsStack5-1e9ef8904c270861ca3dfd2a2363a4f3.ogg:11006:audio/ogg:1
a:sfx/chipsStack4.ogg:sfx/chipsStack4-c4cf729d15379687aa4b56bd6d89fb86.ogg:11734:audio/ogg:1
a:sfx/confirm.ogg:sfx/confirm-bb4116c124f13736bc3c1fef2e638953.ogg:16267:audio/ogg:1 a:sfx/confirm.ogg:sfx/confirm-bb4116c124f13736bc3c1fef2e638953.ogg:16267:audio/ogg:1
a:sfx/drop.ogg:sfx/drop-ebf1f547cfbe9bb54d6f4c6518d5de50.ogg:8369:audio/ogg:1 a:sfx/drop.ogg:sfx/drop-ebf1f547cfbe9bb54d6f4c6518d5de50.ogg:8369:audio/ogg:1
a:sfx/chipsStack6.ogg:sfx/chipsStack6-adcc8463c3cae4f049c916c30ba32037.ogg:11040:audio/ogg:1
a:sfx/cardPlace2.ogg:sfx/cardPlace2-b0b87eca55ab7a365ad5e32d1f26e10d.ogg:17521:audio/ogg:1
a:sfx/cardPlace3.ogg:sfx/cardPlace3-1538e65f0f71b137a663482995d4c275.ogg:26328:audio/ogg:1
a:sfx/reject.ogg:sfx/reject-08dcec8794c4f1a24b11129ff69d5820.ogg:8474:audio/ogg:1 a:sfx/reject.ogg:sfx/reject-08dcec8794c4f1a24b11129ff69d5820.ogg:8474:audio/ogg:1
a:sfx/click.ogg:sfx/click-86d60457b4767f6f6c4916cf9aaab4d1.ogg:6452:audio/ogg:1 a:sfx/click.ogg:sfx/click-86d60457b4767f6f6c4916cf9aaab4d1.ogg:6452:audio/ogg:1
t:tiles.atlas:tiles-a336f7af049653647ac5c394594e5ea1.atlas:18257:application/unknown:1 t:tiles.atlas:tiles-a336f7af049653647ac5c394594e5ea1.atlas:18257:application/unknown:1
t:core_tile_mapping.json:core_tile_mapping-52e62b82d18afbd3fd72006a343b08b9.json:15467:application/json:1 t:core_tile_mapping.json:core_tile_mapping-52e62b82d18afbd3fd72006a343b08b9.json:15467:application/json:1
t:tiles_catalog.json:tiles_catalog-c677da10a6ff3f44a984ae6d591e53ea.json:404648:application/json:1 t:tile_visual_groups.json:tile_visual_groups-321bb699e7b44fb9242957ae16717449.json:4505:application/json:1
t:assets.txt:assets-31f8c4907d31e2fefa0680c6f89c381c.txt:4160:text/plain:1 t:tiles_catalog.json:tiles_catalog-6c3b7d0bbba5460d959e3d031082c4fa.json:756675:application/json:1
t:assets.txt:assets-70b275ed39ef49c1782c32fb0c6c40d6.txt:5463:text/plain:1
t:ui.atlas:ui-d59d40f057bf8fc79211af0bbec277b6.atlas:2538:application/unknown:1 t:ui.atlas:ui-d59d40f057bf8fc79211af0bbec277b6.atlas:2538:application/unknown:1
i:tiles3.png:tiles3-75b2036da34b99a36955a5c9dc0429af.png:1828811:image/png:1 i:tiles3.png:tiles3-75b2036da34b99a36955a5c9dc0429af.png:1828811:image/png:1
i:menuscreen_bg.png:menuscreen_bg-c68a260de7ff591602d63d5bf20405ce.png:2677197:image/png:1 i:menuscreen_bg.png:menuscreen_bg-c68a260de7ff591602d63d5bf20405ce.png:2677197:image/png:1
@@ -0,0 +1,476 @@
{
"groups": [
[
10001,
10453
],
[
10006,
10456
],
[
10014,
10461
],
[
10017,
10466
],
[
10018,
10469
],
[
10024,
10475
],
[
10025,
10476
],
[
10030,
10480
],
[
10034,
10484
],
[
10038,
10488
],
[
10040,
10492
],
[
10041,
10493
],
[
10042,
10496
],
[
10045,
10499
],
[
10047,
10504
],
[
10049,
10505
],
[
10054,
10508
],
[
10057,
10509
],
[
10060,
10512
],
[
10063,
10513
],
[
10065,
10516
],
[
10066,
10518
],
[
10070,
10522
],
[
10074,
10524
],
[
10076,
10526
],
[
10082,
10529
],
[
10087,
10531
],
[
10089,
10534
],
[
10091,
10537
],
[
10096,
10542
],
[
10098,
10543
],
[
10099,
10545
],
[
10100,
10551
],
[
10102,
10555
],
[
10106,
10559
],
[
10107,
10561
],
[
10108,
10562
],
[
10113,
10567
],
[
10115,
10569
],
[
10117,
10570
],
[
10124,
10574
],
[
10129,
10579
],
[
10131,
10581
],
[
10138,
10586
],
[
10139,
10590
],
[
10140,
10592
],
[
10142,
10595
],
[
10145,
10599
],
[
10146,
10600
],
[
10148,
10603
],
[
10151,
10606
],
[
10158,
10611
],
[
10160,
10612
],
[
10163,
10616
],
[
10164,
10617
],
[
10165,
10618
],
[
10168,
10622
],
[
10175,
10632
],
[
10179,
10636
],
[
10183,
10639
],
[
10185,
10640
],
[
10187,
10643
],
[
10190,
10645
],
[
10192,
10648
],
[
10198,
10653
],
[
10204,
10659
],
[
10208,
10665
],
[
10217,
10672
],
[
10221,
10676
],
[
10222,
10678
],
[
10223,
10679
],
[
10224,
10680
],
[
10233,
10689
],
[
10234,
10690
],
[
10237,
10695
],
[
10243,
10701
],
[
10244,
10702
],
[
10246,
10704
],
[
10248,
10705
],
[
10249,
10707
],
[
10250,
10708
],
[
10254,
10711
],
[
10257,
10713
],
[
10262,
10719
],
[
10270,
10723
],
[
10273,
10724
],
[
10276,
10725
],
[
10283,
10730
],
[
10286,
10735
],
[
10291,
10738
],
[
10293,
10741
],
[
10295,
10747
],
[
10299,
10749
],
[
10301,
10750
],
[
10302,
10752
],
[
10303,
10754
],
[
10307,
10757
],
[
10309,
10760
],
[
10313,
10766
],
[
10319,
10771
],
[
10320,
10772
],
[
10326,
10776
],
[
10332,
10781
],
[
10335,
10785
],
[
10337,
10787
],
[
10338,
10789
],
[
10340,
10790
],
[
10343,
10793
],
[
10344,
10794
],
[
10346,
10796
],
[
10348,
10798
],
[
11135,
11605
],
[
11354,
12026
],
[
16993,
17081
],
[
17010,
17066
],
[
17029,
17089
],
[
17082,
17105
],
[
17112,
17121
]
]
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -1,7 +1,7 @@
DCB6F0DACB43035DE30FC81D7D7E8C3E.cache.js CC9B1E4C51A0F0A88F4265E1971ACD02.cache.js
user.agent gecko1_8 user.agent gecko1_8
DCB6F0DACB43035DE30FC81D7D7E8C3E.cache.js CC9B1E4C51A0F0A88F4265E1971ACD02.cache.js
user.agent safari user.agent safari
Devmode:devmode.js Devmode:devmode.js
+1 -1
View File
@@ -1,4 +1,4 @@
function html(){var N='bootstrap',O='begin',P='gwt.codesvr.html=',Q='gwt.codesvr=',R='html',S='startup',T='DUMMY',U=0,V=1,W='iframe',X='position:absolute; width:0; height:0; border:none; left: -1000px;',Y=' top: -1000px;',Z='Chrome',$='CSS1Compat',_='<!doctype html>',ab='',bb='<html><head><\/head><body><\/body><\/html>',cb='undefined',db='readystatechange',eb=10,fb='script',gb='moduleStartup',hb='moduleRequested',ib='Failed to load ',jb='head',kb='javascript',lb='meta',mb='name',nb='html::',ob='::',pb='gwt:property',qb='content',rb='=',sb='gwt:onPropertyErrorFn',tb='Bad handler "',ub='" for "gwt:onPropertyErrorFn"',vb='gwt:onLoadErrorFn',wb='" for "gwt:onLoadErrorFn"',xb='#',yb='?',zb='/',Ab='img',Bb='clear.cache.gif',Cb='baseUrl',Db='html.nocache.js',Eb='base',Fb='//',Gb='user.agent',Hb='webkit',Ib='safari',Jb='gecko',Kb=11,Lb='gecko1_8',Mb='selectingPermutation',Nb='html.devmode.js',Ob='DCB6F0DACB43035DE30FC81D7D7E8C3E',Pb=':1',Qb=':',Rb='.cache.js',Sb='link',Tb='rel',Ub='stylesheet',Vb='href',Wb='loadExternalRefs',Xb='gwt/chrome/chrome.css',Yb='end',Zb='http:',$b='file:',_b='_gwt_dummy_',ac='__gwtDevModeHook:html',bc='Ignoring non-whitelisted Dev Mode URL: ',cc=':moduleBase';var n=window;var o=document;q(N,O);function p(){var a=n.location.search;return a.indexOf(P)!=-1||a.indexOf(Q)!=-1} function html(){var N='bootstrap',O='begin',P='gwt.codesvr.html=',Q='gwt.codesvr=',R='html',S='startup',T='DUMMY',U=0,V=1,W='iframe',X='position:absolute; width:0; height:0; border:none; left: -1000px;',Y=' top: -1000px;',Z='Chrome',$='CSS1Compat',_='<!doctype html>',ab='',bb='<html><head><\/head><body><\/body><\/html>',cb='undefined',db='readystatechange',eb=10,fb='script',gb='moduleStartup',hb='moduleRequested',ib='Failed to load ',jb='head',kb='javascript',lb='meta',mb='name',nb='html::',ob='::',pb='gwt:property',qb='content',rb='=',sb='gwt:onPropertyErrorFn',tb='Bad handler "',ub='" for "gwt:onPropertyErrorFn"',vb='gwt:onLoadErrorFn',wb='" for "gwt:onLoadErrorFn"',xb='#',yb='?',zb='/',Ab='img',Bb='clear.cache.gif',Cb='baseUrl',Db='html.nocache.js',Eb='base',Fb='//',Gb='user.agent',Hb='webkit',Ib='safari',Jb='gecko',Kb=11,Lb='gecko1_8',Mb='selectingPermutation',Nb='html.devmode.js',Ob='CC9B1E4C51A0F0A88F4265E1971ACD02',Pb=':1',Qb=':',Rb='.cache.js',Sb='link',Tb='rel',Ub='stylesheet',Vb='href',Wb='loadExternalRefs',Xb='gwt/chrome/chrome.css',Yb='end',Zb='http:',$b='file:',_b='_gwt_dummy_',ac='__gwtDevModeHook:html',bc='Ignoring non-whitelisted Dev Mode URL: ',cc=':moduleBase';var n=window;var o=document;q(N,O);function p(){var a=n.location.search;return a.indexOf(P)!=-1||a.indexOf(Q)!=-1}
function q(a,b){if(n.__gwtStatsEvent){n.__gwtStatsEvent({moduleName:R,sessionId:n.__gwtStatsSessionId,subSystem:S,evtGroup:a,millis:(new Date).getTime(),type:b})}} function q(a,b){if(n.__gwtStatsEvent){n.__gwtStatsEvent({moduleName:R,sessionId:n.__gwtStatsSessionId,subSystem:S,evtGroup:a,millis:(new Date).getTime(),type:b})}}
html.__sendStats=q;html.__moduleName=R;html.__errFn=null;html.__moduleBase=T;html.__softPermutationId=U;html.__computePropValue=null;html.__getPropMap=null;html.__installRunAsyncCode=function(){};html.__gwtStartLoadingFragment=function(){return null};html.__gwt_isKnownPropertyValue=function(){return false};html.__gwt_getMetaProperty=function(){return null};var r=null;var s=n.__gwt_activeModules=n.__gwt_activeModules||{};s[R]={moduleName:R};html.__moduleStartupDone=function(e){var f=s[R].bindings;s[R].bindings=function(){var a=f?f():{};var b=e[html.__softPermutationId];for(var c=U;c<b.length;c++){var d=b[c];a[d[U]]=d[V]}return a}};var t;function u(){v();return t} html.__sendStats=q;html.__moduleName=R;html.__errFn=null;html.__moduleBase=T;html.__softPermutationId=U;html.__computePropValue=null;html.__getPropMap=null;html.__installRunAsyncCode=function(){};html.__gwtStartLoadingFragment=function(){return null};html.__gwt_isKnownPropertyValue=function(){return false};html.__gwt_getMetaProperty=function(){return null};var r=null;var s=n.__gwt_activeModules=n.__gwt_activeModules||{};s[R]={moduleName:R};html.__moduleStartupDone=function(e){var f=s[R].bindings;s[R].bindings=function(){var a=f?f():{};var b=e[html.__softPermutationId];for(var c=U;c<b.length;c++){var d=b[c];a[d[U]]=d[V]}return a}};var t;function u(){v();return t}
function v(){if(t){return}var a=o.createElement(W);a.id=R;a.style.cssText=X+Y;a.tabIndex=-1;o.body.appendChild(a);t=a.contentWindow.document;if(navigator.userAgent.indexOf(Z)==-1){t.open();var b=document.compatMode==$?_:ab;t.write(b+bb);t.close()}} function v(){if(t){return}var a=o.createElement(W);a.id=R;a.style.cssText=X+Y;a.tabIndex=-1;o.body.appendChild(a);t=a.contentWindow.document;if(navigator.userAgent.indexOf(Z)==-1){t.open();var b=document.compatMode==$?_:ab;t.write(b+bb);t.close()}}