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/zen1_The_Ticking_Study.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/2.png
screenshots/output/gradient-mine/phone-itch/3.png
@@ -91,9 +100,38 @@ screenshots/videos_reduced/zen.mp4
screenshots/youtube_composite.mp4
secrets.properties
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/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_soft.ogg
sfx/gameover_lose.mp3
sfx/gameover_win.mp3
sfx/pickup.ogg
@@ -117,6 +155,7 @@ suchsoftware/favicon_dark.svg
suchsoftware/favicon_light.png
suchsoftware/favicon_light.svg
suchsoftware/ss_preloader_logo.png
tile_visual_groups.json
tiles.atlas
tiles1.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:menuscreen_bg_desat.png:menuscreen_bg_desat-716c1f0217b57d502454c21d10ffb19f.png:2613902:image/png: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/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/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/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/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/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/click.ogg:sfx/click-86d60457b4767f6f6c4916cf9aaab4d1.ogg:6452:audio/ogg: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:tiles_catalog.json:tiles_catalog-c677da10a6ff3f44a984ae6d591e53ea.json:404648:application/json:1
t:assets.txt:assets-31f8c4907d31e2fefa0680c6f89c381c.txt:4160:text/plain:1
t:tile_visual_groups.json:tile_visual_groups-321bb699e7b44fb9242957ae16717449.json:4505:application/json: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
i:tiles3.png:tiles3-75b2036da34b99a36955a5c9dc0429af.png:1828811: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
DCB6F0DACB43035DE30FC81D7D7E8C3E.cache.js
CC9B1E4C51A0F0A88F4265E1971ACD02.cache.js
user.agent safari
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})}}
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()}}