From 459df6ef4034ea01582594fcd389bd0f417bedd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Bov=C3=A9?= Date: Tue, 4 Feb 2020 22:47:28 +0100 Subject: [PATCH 01/13] Added jbm8b --- apps/jbm8b/Changelog | 2 + apps/jbm8b/add_to_apps.json | 23 ++++++++++ apps/jbm8b/app-icon.js | 1 + apps/jbm8b/app.js | 85 ++++++++++++++++++++++++++++++++++++ apps/jbm8b/app.json | 6 +++ apps/jbm8b/app.png | Bin 0 -> 2635 bytes 6 files changed, 117 insertions(+) create mode 100644 apps/jbm8b/Changelog create mode 100644 apps/jbm8b/add_to_apps.json create mode 100644 apps/jbm8b/app-icon.js create mode 100644 apps/jbm8b/app.js create mode 100644 apps/jbm8b/app.json create mode 100644 apps/jbm8b/app.png diff --git a/apps/jbm8b/Changelog b/apps/jbm8b/Changelog new file mode 100644 index 000000000..bd71ffcd5 --- /dev/null +++ b/apps/jbm8b/Changelog @@ -0,0 +1,2 @@ +0.01: First working version +0.02: Added delay in replying for dramatic effect \ No newline at end of file diff --git a/apps/jbm8b/add_to_apps.json b/apps/jbm8b/add_to_apps.json new file mode 100644 index 000000000..ffa033f75 --- /dev/null +++ b/apps/jbm8b/add_to_apps.json @@ -0,0 +1,23 @@ +{ + "id": "jbm8b", + "name": "Magic 8 Ball", + "icon": "app.png", + "description": "A simple fortune telling app", + "tags": "game", + "storage": [ + { + "name": "+jbm8b", + "url": "app.json" + }, + { + "name": "-jbm8b", + "url": "app.js" + }, + { + "name": "*jbm8b", + "url": "app-icon.js", + "evaluate": true + } + ], + "version": "1.1.0" +} \ No newline at end of file diff --git a/apps/jbm8b/app-icon.js b/apps/jbm8b/app-icon.js new file mode 100644 index 000000000..b2da211af --- /dev/null +++ b/apps/jbm8b/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("slkgRC/AF1a1WpoAWSgO//4AB/1QDCNvC4QZCGaELC4gAB/BITAAmAGCoyQGBAABMpkHC5P/8AYLl4YK/pJWPxkDC5ZLLj4YM/gYJv4YM/4YJC5v/4BiVMhUPDBz8IYpbJMPZx9JC559HPZ4AB6AYFg4YQ+CUVSxEfDCCWGn4YQSwytH/2V34YHoCtMRYMBBQ+AC4YNHLAcvZBcCBg30gFZgELZBbfH8DPB8ALHZAjfH4C2B/hWHDAg+HwC2B/yIHKwL4KoCsCDA76EDBYDDAAf8DAZaBDCy7HwF/JRLTDgBzBSox8KBAIYK6CuCdg4YM+DQBAQQAGDBZwBtVARA4YMSQILBSgwYFRgSWGgEBBQ4YMUQa6HDBnwSQPQPhgYH4CuKPhlAfJQYMCgeAHw4YK/ySD4AlIDBP8gYEC6CWG/wYP8D6GDAgkGDBjTDgALGDBn8DAcPBYzDDMY4YLSpn4DAcLUI+/cgoAD+gYDg75HIwJzBBY3wDAZ0DAAfAEIPgJwYYIOgYMFig9I6AYDEo67DVow9BDAZXH/+QEZH/wAYERIwAB1SXCUIwAEXYwAK/wYFLA4AJfAj6IABT4EcJIAJYwjIJABLGEV5QAIVoqvKVpoABl4XO/oYHhYYO+gYHgYYO8AYHPp57HAAM/C5n+C5D7Oe4ziRMRIAB34YLoAYKj7FTWB5JLAAN/JKr8LexB+PGBoABg4wWAAMvSSIAGt4XC/xIPAAkV1WVCyYA/AH4A/AH4Ai")) \ No newline at end of file diff --git a/apps/jbm8b/app.js b/apps/jbm8b/app.js new file mode 100644 index 000000000..0fd5a177c --- /dev/null +++ b/apps/jbm8b/app.js @@ -0,0 +1,85 @@ +const affirmative = [ + 'It is\ncertain.', + 'It is\ndicededly\nso.', + 'Without\na doubt.', + 'Yes\ndefinitely.', + 'You may\nrely\non it.', + 'As I see,\nit yes.', + 'Most\nlikely.', + 'Outlook\ngood.', + 'Yes.', + 'Signs point\nto yes.' +]; +const nonCommittal = [ + 'Reply hazy,\ntry again.', + 'Ask again\nlater.', + 'Better not\ntell you\nnow.', + 'Cannot\npredict\nnow.', + 'Concentrate\nand\nask again.' +]; +const negative = [ + 'Don\'t\ncount on it.', + 'My reply\nis no.', + 'My sources\nsay no.', + 'Outlook\nis not\nso\ngood.', + 'Very\ndoubtful.' +]; + +const title = 'Magic 8 Ball'; + +const answers = [affirmative, nonCommittal, negative]; + +function getRandomArbitrary(min, max) { + return Math.random() * (max - min) + min; +} + +function predict() { + // affirmative, negative or non-committal + let max = answers.length; + const a = Math.floor(getRandomArbitrary(0, max)); + // sets max compared to answer category + max = answers[a].length; + const b = Math.floor(getRandomArbitrary(0, max)); + // get the answer + const response = answers[a][b]; + return response; +} + +function draw(msg) { + // console.log(msg); + g.clear(); + E.showMessage(msg, title); +} + +function reply(button) { + const theButton = (typeof button === 'undefined' || isNaN(button)) ? 1 : button; + const timer = Math.floor(getRandomArbitrary(0, theButton) * 1000); + // Thinking... + draw('...'); + setTimeout('draw(predict());', timer); +} + +function ask() { + draw('Ask me a\nYes or No\nquestion\nand\ntouch the\nscreen'); +} + +g.clear(); + +Bangle.loadWidgets(); + +// Event Handlers + +Bangle.on('touch', (button) => reply(button)); + +setWatch(ask, BTN1, {repeat:true, edge:"falling"}); +setWatch(reply, BTN3, {repeat:true, edge:"falling"}); + +// Back to launcher +setWatch(Bangle.showLauncher, BTN2, {repeat:false, edge:"falling"}); + +Bangle.on('lcdPower', (on) => { + if (on) { + Bangle.drawWidgets(); + ask(); + } +}); \ No newline at end of file diff --git a/apps/jbm8b/app.json b/apps/jbm8b/app.json new file mode 100644 index 000000000..a378c4916 --- /dev/null +++ b/apps/jbm8b/app.json @@ -0,0 +1,6 @@ +{ + "name": "Magic 8 Ball", + "icon": "*jbm8b", + "src": "-jbm8b", + "version": "1.1.0" +} \ No newline at end of file diff --git a/apps/jbm8b/app.png b/apps/jbm8b/app.png new file mode 100644 index 0000000000000000000000000000000000000000..78128d47e33ce69755e21a155ee77979fa35f776 GIT binary patch literal 2635 zcmc&#_ct4gAB|bD#SV>!P$RL5SS_j8YDCoDjXh)bSv4C)?M*$Slv+V3+LEf#KBGmg zs{QO)wbxhwitp!~`?=?H&;9X!&P^~f&|;tk(*ghh1|4k_`i39>0S(2?)>6Sb-w>HU zTI&IzZisjN=Ad*zK12clgcQ092Py!70$`+%(fDH`BO@m#r=Xyqq@<*xqN1jzzIE#s z4Gj$t2&AQ@rK6*xr>AFNU|?iqWMX1sW@ct#VF7_atgNhTY;5f8>>L~%oSd9oTwL7T z++Z-6hlhukmlpzo@bmKv2nYxY3PPb!At51QVc|P>?udwph>3}bi;KfxFgP48DJdx> zB_$&xbNB9DIXO9bd3gi^p`f6ksHmu0K743sXlP_)ghr!HOiVBsjH#*VqeqX-%*@Qq%`Ge}EG;dq ztgNi9t!->B>fm$$dKpPwHNhx7OM z4-5ub93|Z^78ZZ3knK~ zii(Phi%UvMN=r-2%F4>i%PT7@U%!4`RaI48UH#_Go0^)M+S=N>y1M%M`i6!E0)f!j z*x1z6)ZE-mBobR%T3TCM-@bj@*4EbE-u~|0yUxzeuC6W;iPYWQ{pr)Eo}QlG-rl~x zzW)CH&!0bk`SN98U|?`?aA;^~czF2h*RNw^W8c4jA0Ho|n3$NHoSd4Pnx3Bi@#DwL z%*^cU?A+Yk{QUgF!ouR>;?mO6^78V^%F62M>e|}c`uh6D#>VF6=GNBM_V)J9&d%=c z?%v+s{{H^2U%w6x4u1dseRz0ybaZrle0*|pa(a4tc6N4tetvOrad~-pb#--peSH(c z|JRs*Uism17h=eohsy<|H=Xd!Y>QK2gjN-W!MCX z4Y08X`{_ZW-p;lMXid$8l8ShmswjlS=F7aP&dT7aDw`=q{~?E};u95>4tkfB%a_3` zMaq_Z*SFP}|N1B9MBRt{scNcxMDK{)Cc@088fJ%)RRZ=frwK+pJ%PYZmxD8md%KM? z&J4ZsivJT5(6a_G-{Y^ZmVT^=4+x*5F54tvea*VqU`cp z^MyZ8eg9c$A4-Zt6zaxG4?o1M(?PxDxLJFONUrCO2ok;29#_+IOOJsr&Ef`ox}(mm z(bCMCrp)fUyn!Aw5 z;RN{#1ezkCKBTOdA;L?#=tz%!bzkrOSulm@L?*lu zBx}PL4DC|rAV@H9l0KMJr)6#nrqjldYmDv9V+)giU;I!wSfbSS*dbLsu@uEA+Xy!z z7ie4x2-;`ZG>VM^grWB}FI*sHz0+_&4a4c4&SBuSOd>7EaO(;ZOhXZ?WfL zk|3OUT>~#!kf>c^ zf{+wyLs=?MltI9*NUB@Mt5TN(^)j;%&Jmx$%4C#Oh;VO4+6HZ}7-N9tZ9j&0{)g@kO^G{8n*m0#JEFcR$_v;RyxfHV=U=`5nM;7O3WlvK-pg8~!k zL-RER20|539AX*}juyc#lj=Qp((PM?Yzb0A<~B_jFPvT@3#7(!n!sYN=uygZKQ%_+ z4Mu>N9!F^mM=NS_e)dkxk6@ZV8a**Cf4s*a!}6W?lLtL{dFIt9_bJgh7gAL@gWRb^0UC&>X34ixSt&WuYucX$RUE~7HOeXy*Mck zPOBPCN}R1LlwO-lpvRFT#5JGir9s(v8}b&+bR5MgMVm$YEq)Fma^727wjEawen@L! zBrubVP2tfFap%+*gnNqRS@CiB3U*N!3C?C`+C-4bvn|_iEQMKCXHm5>EoBJIr5G7&s#rwzu>H>AuAKBYf@f`oFyUe z>~AOPmCrayM*9^;%#a3?cp>JyTYKC_JGu$CZARS literal 0 HcmV?d00001 From 67b2b08e0967e7c2a0523a855c6cb64f73b5e182 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Bov=C3=A9?= Date: Tue, 4 Feb 2020 22:55:32 +0100 Subject: [PATCH 02/13] Added jbm8b to apps.json --- apps.json | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/apps.json b/apps.json index 76151a627..e02bc3d43 100644 --- a/apps.json +++ b/apps.json @@ -751,5 +751,31 @@ {"name":"*demoapp","url":"app-icon.js","evaluate":true} ], "sortorder" : -9 + }, + { + "id": "jbm8b", + "name": "Magic 8 Ball", + "icon": "app.png", + "description": "A simple fortune telling app", + "tags": "game", + "storage": [ + { + "name": "+jbm8b", + "url": "app.json" + }, + { + "name": "-jbm8b", + "url": "app.js" + }, + { + "name": "*jbm8b", + "url": "app-icon.js", + "evaluate": true + } + ], + "allow_emulator":true, + "type":"app", + "version": "0.01", + "sortorder" : -9 } ] From bfe298f615c819c19426a2d779434c7eb4c863fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Bov=C3=A9?= Date: Tue, 4 Feb 2020 23:02:54 +0100 Subject: [PATCH 03/13] Updated jbm8b --- apps.json | 2 +- apps/jbm8b/add_to_apps.json | 2 +- apps/jbm8b/app.js | 15 +++++---------- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/apps.json b/apps.json index e02bc3d43..a9c40569a 100644 --- a/apps.json +++ b/apps.json @@ -775,7 +775,7 @@ ], "allow_emulator":true, "type":"app", - "version": "0.01", + "version": "0.02", "sortorder" : -9 } ] diff --git a/apps/jbm8b/add_to_apps.json b/apps/jbm8b/add_to_apps.json index ffa033f75..200ea5f65 100644 --- a/apps/jbm8b/add_to_apps.json +++ b/apps/jbm8b/add_to_apps.json @@ -19,5 +19,5 @@ "evaluate": true } ], - "version": "1.1.0" + "version": "0.02" } \ No newline at end of file diff --git a/apps/jbm8b/app.js b/apps/jbm8b/app.js index 0fd5a177c..53baa32e3 100644 --- a/apps/jbm8b/app.js +++ b/apps/jbm8b/app.js @@ -66,20 +66,15 @@ function ask() { g.clear(); Bangle.loadWidgets(); +Bangle.drawWidgets(); +ask(); // Event Handlers Bangle.on('touch', (button) => reply(button)); -setWatch(ask, BTN1, {repeat:true, edge:"falling"}); -setWatch(reply, BTN3, {repeat:true, edge:"falling"}); +setWatch(ask, BTN1, { repeat: true, edge: "falling" }); +setWatch(reply, BTN3, { repeat: true, edge: "falling" }); // Back to launcher -setWatch(Bangle.showLauncher, BTN2, {repeat:false, edge:"falling"}); - -Bangle.on('lcdPower', (on) => { - if (on) { - Bangle.drawWidgets(); - ask(); - } -}); \ No newline at end of file +setWatch(Bangle.showLauncher, BTN2, { repeat: false, edge: "falling" }); \ No newline at end of file From 0c3b38a4c2825f35348acc79912009f591b0b5cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Bov=C3=A9?= Date: Wed, 5 Feb 2020 21:17:31 +0100 Subject: [PATCH 04/13] Fixed app.png for jbm8b --- apps/jbm8b/app-icon.js | 2 +- apps/jbm8b/app.png | Bin 2635 -> 1548 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/jbm8b/app-icon.js b/apps/jbm8b/app-icon.js index b2da211af..09bf032a6 100644 --- a/apps/jbm8b/app-icon.js +++ b/apps/jbm8b/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("slkgRC/AF1a1WpoAWSgO//4AB/1QDCNvC4QZCGaELC4gAB/BITAAmAGCoyQGBAABMpkHC5P/8AYLl4YK/pJWPxkDC5ZLLj4YM/gYJv4YM/4YJC5v/4BiVMhUPDBz8IYpbJMPZx9JC559HPZ4AB6AYFg4YQ+CUVSxEfDCCWGn4YQSwytH/2V34YHoCtMRYMBBQ+AC4YNHLAcvZBcCBg30gFZgELZBbfH8DPB8ALHZAjfH4C2B/hWHDAg+HwC2B/yIHKwL4KoCsCDA76EDBYDDAAf8DAZaBDCy7HwF/JRLTDgBzBSox8KBAIYK6CuCdg4YM+DQBAQQAGDBZwBtVARA4YMSQILBSgwYFRgSWGgEBBQ4YMUQa6HDBnwSQPQPhgYH4CuKPhlAfJQYMCgeAHw4YK/ySD4AlIDBP8gYEC6CWG/wYP8D6GDAgkGDBjTDgALGDBn8DAcPBYzDDMY4YLSpn4DAcLUI+/cgoAD+gYDg75HIwJzBBY3wDAZ0DAAfAEIPgJwYYIOgYMFig9I6AYDEo67DVow9BDAZXH/+QEZH/wAYERIwAB1SXCUIwAEXYwAK/wYFLA4AJfAj6IABT4EcJIAJYwjIJABLGEV5QAIVoqvKVpoABl4XO/oYHhYYO+gYHgYYO8AYHPp57HAAM/C5n+C5D7Oe4ziRMRIAB34YLoAYKj7FTWB5JLAAN/JKr8LexB+PGBoABg4wWAAMvSSIAGt4XC/xIPAAkV1WVCyYA/AH4A/AH4Ai")) \ No newline at end of file +require("heatshrink").decompress(atob("mEwhBC/AGMrq2B1gAEwNWlYthq2s64AKGYIydFpoAEGLUrFqIADqxcXFqhiDFymBFy7GCF1owTRjCSVlYudeiGsF7/XlaNqSKBeP1mBwJxQMBReO1gaEleBMDBLN1hAC1hhBAoIwNCwQAGlZINqxvFGAIXOSBAXQN4hPBC5yQIVBxfBCAgvQSBC+NFAYRDMwJHOF654DqxkBYooALF6+sbIhkEF8Z3CRIWBR6AvXFAzvQF6wnIYQJgNd5AWNdoLoGBBAvPO5pfYH4IvUUwS/GVBzXBYCpHCq2s1mBDwKOWDwRgNPAwVVMCRLCwIABCZ6OJJSAATLxZgRACJeLAAMrFz9WFxiRgRpoADwIub1guQGDmsXhqSfRiL0G1jqkMRYxRwKLUGK2sFryVEq2B1gAEwNWFkIA/AH4A/AH4AQ")) \ No newline at end of file diff --git a/apps/jbm8b/app.png b/apps/jbm8b/app.png index 78128d47e33ce69755e21a155ee77979fa35f776..24c3013de011db9c1517ed544e9d383f5c60378c 100644 GIT binary patch delta 1166 zcmV;91abSz6pRcZiBL{Q4GJ0x0000DNk~Le0000m0000m2m=5B0ASn+wUHrVe-#xK z7Z(>87#JBD85$ZI8yg!P9UUJZA0i?mBO@auBqSvzB_<{&D=RB3EG#W8EiW%GGBPqV zGczQb8~ZabaZ%lczJnwfPjF3fq{mG zhKGlTi;IhljEs$qjgF3vkdTm(k&%*;l9ZH`m6es5nVFoNoSmJWo}QkcpP!?nqot*# zrlzK+r>Ci@sj8}~tE;Q5tgNlAt*@`Iu&}VPv9YtWv$eIgx3{;sxw*T$f4jWAyuH1> zzP`S{zrVo1z{0}9!^6YH#l^dCU$jHda$;ryf%FD~k&CSiw(9qG*(bCe=)6>({ z)z#M4*4WtC+1c6J+S=UQ+}+*X-rnBg;^O1uFMg~>g((4?Ck9A?d|UF z?(gsK@bK{Q@$vKX^Yrxe4E6Q(_V)Jo_xJet_>;K;jg#O4W|QCoNPp6yd3yi=010qN zS#tmY79;=w79;_i6~+_*00NasL_t(YOWl>(U(-Mog=d;3l+e-^(Mm;BP!!x3R8&B~ z9T2IYsHiCJyTw9LDzbw)`4u7o8t=)C{Z{zV}z=orTuDO~IA} zn{O?G!GzQtXE2E*2g_g)kh_*)u#g&F3sVkKhs|;f*lRy*Sx)55uaUZ8uA}w`hVqbX z68EZP6a#sg+W;$v9wZJxu-&i|vP)c1J-Men zXVl6CE*OMhC*%wi9d?Lb)ao5|Ze7w9@WR+9$`fXJ$-K0;FLmAl2{p z>^TrnPm2?*EPuEWphTenHeTF^Sz2q-cIjQYG?-oQ0xui|o}Ge~C8nr$J_0O$YZ_ z+Rjfnb(EarfKtf#_xT)3{YKG@Sm z>=V|M><&;#arm3X&o<|J6aN%M9rop6cjxVoVq1vUz|3hBrm$ro_Y);<(_veguYwiq z$m!X3Bu|=JGHounC^l$m$Wq93Hw7Z))}Aki@-|Brsj&LfbF}`1!Nl^AO@0kpH)dDJ zT#EvO6-$5njHwc~*jHtr9;`bS$^M7fuZi;oe~KK}#)DVGV!Z delta 2407 zcmV-t37Gbb49gTDiBL{Q4GJ0x0000DNk~Le0001F0001F2m=5B07pD!W|1Lbe-soH z6%`d078Vy57Z?~A85tQG8X6lL8yp-Q9v&VcAt53nA|oRsBqSsyB_$>%CMPE+C@3f@ zDk>{0D=aK5EiElCFE21KFfuYSGcz+aH8nOiHa9mnI5;>tIXOByIy*Z%JUl!;K0ZG` zKR`f0K|w)7LqkMFL`FtNM@L6Ve@RJ7N=i#hOH52mO-)TtPft)#P*PG-Q&Uq^R8&<} zRaRD3S65e9SXfzESz20JTU%RPTwGmUU0+{cU|?WjVPRroVr6AzW@ct+XlQ9^X=-X} zY;0_8ZEbFDZgFvOa&mHWb8~fdb#``kcXxMqczAhvd3$?%e0+R;eSLm@e|~>|e}I61 zfq{X7f`WvEgoTBLhK7cSh=_@aiHnPijEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mYA5BnVFfInwp!No1LAVpP!$hp`oIpqNAguq@<*$r>Cf>sHv%`s;a81tE;T6 ztgWrBuCA`HudlGMu(7eRf3mW&v$M0bw6wLgwYIjlx3{;rxVX8wxw^W#yu7@>zrVo1 zz`?=6!^6YG#KgtL#m2_Q$H&LW$jHgb$;!&g%*@Qq&CSlv&d<-!(9qD-)YR40)z;S5 z*VotB*x1?G+1lFL+uPgR+}z&Y-rwKf;Nall;o;)q;^X7v>D@000SaNLh0L02U`=AAoQAO9Ud5Fns~_(N|3 zfIpBne#X)@>o-?#sw`hrG&%{z5RoH(fcPFP`Q&$#QO3hillo6>nV;n)B1>EV5IrHU zsxf3ah;)767pCx6v+j*Cx*oR>kfAFtm{fn*j=>BBY8E8LS7(IWySZK1vjBZ+E*n7N z&>39SVG3gkxOufCQIv2A7>O^n2s5_u(*+(~6m$WQ(Z?wjHtgV>-T82!=DN;|g*Ti^ zgfY)ea_I{sZ8aGa#ht-u`(ii23^4E*vx-`4%)myUuwV=JzwFbZ@413A{$--Wb^(8q zbxss>4d0tAtk^(?pLf?9QE&AzQ9|SqoE@> z?JN?eEHMf?YI&j0RSvz3Qd(cNs4#Cv z>F2FBF~~c!EIjeliY#)N|Fa3W{=sz~(NpH1v2o{J3r{8nLRB5($4lIvTsncBM#rny?&2xl)8J!A5u?lI40TihM5;a#*gg z907JIUyFb10j>X^G%Q0|HEIs?cO@*~w50on0!W=wBmS~?<40bthyewc zVrIu2@x%&F>mMbA7@mQdX*j9qiDjL3yNl-T8jxdCf}PC38Eep*3x2ch=qwNZUf5>i zOH)jAW!s2c$^^}u-xPoD^X9=px<(e-tOy!nJQ=Di!Odv|U{afy4LJKD8H0F_dPz|q zjTL zdzwWe%zHRQ7Ai#^7Pce6Q>yT4!5s&j6p1h;SY5MJZE{Pp5gx2s+OZK>IcuUDK9GYV zt5hPjl7$3OEmAo~7s+mmntl)9_S5)Lq-5|7G7;4r#A^%!q?G>C8TqwQm>#2C*A{k< zErdL#5(yOJkm`S3+Y$DKUCPDj*Vv_smFuZ85nqF~3g_q3b?ki;zPN!a$nzCAe-VAU zY8d99%8qkEe_Qop^k8ZzjCJpQ^9yBt*UsWQ-$5T0By`2kwMO}Z0y0|w?m(d znJo%Gg29X4uADLG--!%z0yis0ikXol6dbUb;a5pwD+GTjv?<70-Oe|cy;@qi_o~gl zk+u%85W!JZErMZ%`v&~6JvpS6hJ}cx6)9&f7qn&yixNDC>|W6koRwSpfvqyOqc>F8 z*(8OCOaXMtk%y-G^_rz_mt-nG(H@KAfajnB^Fu2l^zinqdUju)n^0i!CevpeR0 z-oZg9@$G+$OQhUmFM@HLe%!&$j2s?V@9gjyP{n3wvVyY@60FCQyD`!a_so|&?>N5` zBzp4p9{9rjOFgnv8!L#XRJBNu!TFUb?(Vg4>U;7cb8%6_7(1FpViv!4K*q-|4vE># zGRL<-Q2>yFI_l_Ri!pQm11=gP8ZZ(|8Xb&eoYsF%@w%?5C{jurm~xn5)U27Qya2F= z5bx|ms_Wm@k8*qA9vhcR!(TaaD|DtJ?1n)X=#|}bWhae2fe@mnOsP27h|z|9wCjWU z&+T45F(LHt3?f&r0EA?WEtf$KKkh6e@4^( Z25u9%h&7af?>ztj002ovPDHLkV1l1vck=)M From b78c056b867ef205dd757c9d1ba7390cd1dd5039 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Bov=C3=A9?= Date: Fri, 7 Feb 2020 22:22:50 +0100 Subject: [PATCH 05/13] adds icon for jbb --- apps.json | 26 +++++++++++++++++++ apps/jbb/ChangeLog | 2 ++ apps/jbb/add_to_apps.json | 23 +++++++++++++++++ apps/jbb/app-icon.js | 1 + apps/jbb/app.js | 53 ++++++++++++++++++++++++++++++++++++++ apps/jbb/app.json | 5 ++++ apps/jbb/app.png | Bin 0 -> 1673 bytes 7 files changed, 110 insertions(+) create mode 100644 apps/jbb/ChangeLog create mode 100644 apps/jbb/add_to_apps.json create mode 100644 apps/jbb/app-icon.js create mode 100644 apps/jbb/app.js create mode 100644 apps/jbb/app.json create mode 100644 apps/jbb/app.png diff --git a/apps.json b/apps.json index a9c40569a..6ca702fe7 100644 --- a/apps.json +++ b/apps.json @@ -778,4 +778,30 @@ "version": "0.02", "sortorder" : -9 } + { + "id": "jbb", + "name": "Battery Level", + "icon": "app.png", + "description": "Battery status and charging indicator", + "tags": "tool", + "storage": [ + { + "name": "+jbb", + "url": "app.json" + }, + { + "name": "-jbb", + "url": "app.js" + }, + { + "name": "*jbb", + "url": "app-icon.js", + "evaluate": true + } + ], + "allow_emulator":true, + "type":"app", + "version": "0.02", + "sortorder" : -9 + } ] diff --git a/apps/jbb/ChangeLog b/apps/jbb/ChangeLog new file mode 100644 index 000000000..b7359ee0e --- /dev/null +++ b/apps/jbb/ChangeLog @@ -0,0 +1,2 @@ +0.01: First version trying out stuff +0.02: First usable version \ No newline at end of file diff --git a/apps/jbb/add_to_apps.json b/apps/jbb/add_to_apps.json new file mode 100644 index 000000000..cc6483ac1 --- /dev/null +++ b/apps/jbb/add_to_apps.json @@ -0,0 +1,23 @@ +{ + "id": "jbb", + "name": "Battery Power", + "icon": "app.png", + "description": "Showing battery level and charging status", + "tags": "tool", + "storage": [ + { + "name": "+jbb", + "url": "app.json" + }, + { + "name": "-jbb", + "url": "app.js" + }, + { + "name": "*jbb", + "url": "app-icon.js", + "evaluate": true + } + ], + "version": "0.02" +} \ No newline at end of file diff --git a/apps/jbb/app-icon.js b/apps/jbb/app-icon.js new file mode 100644 index 000000000..8fbebe9df --- /dev/null +++ b/apps/jbb/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwxH+AH4AvlYAVF7NVABdPAggublfVAAfU5gAKFzReCF4guL0RehFxZedF6Iu/F/hezF1AvB1YvOFzxevF54u/F6Qupqxe/FzovBLxougLxoOBACIvNwAuB6YvbXroANqqdQF4YuYLqBedDgNWdqYuZFp/+qwuC6i6nLzi6RF4nPF1peXFqgvCqouUXSheEABhrHRaovSFw9WFyo8O6vUXTb6SFodPF0xeCXTheVF1AvBwC6pLwjsBqoupF4SLqF2AvCFtYuvF4YurF4NWF1otsAH4AXA==")) \ No newline at end of file diff --git a/apps/jbb/app.js b/apps/jbb/app.js new file mode 100644 index 000000000..f39d06280 --- /dev/null +++ b/apps/jbb/app.js @@ -0,0 +1,53 @@ +/** + * draw the current level value + */ +function draw(level) { + console.log('draw', level); + // Clear the screen + g.clear(); + g.setFontAlign(0, 0); // center font + g.setFont("6x8", 8); // bitmap font, 8x magnified + g.drawString(level + "%", 120, 80); + g.setFont("6x8", 4); + g.drawString("power", 120, 130); +} + +function getBatteryLevel() { + level = E.getBattery(); + console.log('getBatteryLevel', level); + + draw(level); + + checkCharging(Bangle.isCharging()); + + // again, 10 secs later + setTimeout(getBatteryLevel, 10E3); +} + +function checkCharging(charging) { + console.log('checkCharging', charging); + // Green LED + //LED2.write(charging); + if (charging) { + g.setFontAlign(0, 0); // center font + g.setFont("6x8", 3); // bitmap font, 3x magnifier + g.drawString("charging", 120, 160); + } +} + +function main() { + console.log('starting jbb version 0.0.1'); + getBatteryLevel(); +} + +g.clear(); +g.flip(); +Bangle.loadWidgets(); +Bangle.drawWidgets(); + +Bangle.on('charging', checkCharging); + +main(); + +// Show launcher when middle button pressed +setWatch(Bangle.showLauncher, BTN2, { repeat: false, edge: "falling" }); diff --git a/apps/jbb/app.json b/apps/jbb/app.json new file mode 100644 index 000000000..9e4eb893c --- /dev/null +++ b/apps/jbb/app.json @@ -0,0 +1,5 @@ +{ + "name": "Battery Power", + "icon": "*jbb", + "src": "-jbb" +} \ No newline at end of file diff --git a/apps/jbb/app.png b/apps/jbb/app.png new file mode 100644 index 0000000000000000000000000000000000000000..6f58711b57c4be035b8368e4adbba1a5741e9532 GIT binary patch literal 1673 zcmV;426p+0P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1|CU7K~!i%)md9i z9Yq-a_j0b3mIMINK(MNr%4rG$tUw}>;CI)Rcch}=*!W8dih0DHfr39mRxN(i z7A>y9wG~tJrPFCgR`H~OZTIYIP1m~#2Z&JuZ%h@K-b={HWZFpJ( zME-$$?vPR*$jW<=CzK<0O8UQqO`?6ts`PlBQ`DHXxc z02Yg$=|OmGpb4^!I}RNiu025H4Ff{~`Q(F{)K{K7*@`a}84Noc2On}pp5RJ>j*bqF z^TF&`H~O&9`s!MjY?Z=X#IMsI<{^%j4;x`upp@Lfl>)TTrbb?sQXV$ZBYQxZmkk>@^W%e$h!pD9`hh; z6y|b6b`*lsG&1KC7-*0fh@l}WOPS^1$^-Ac^Q3H9;EI9#tPQ9HNKaWPjQi%nCUN&- zc^efe(AL%_n6w_hPslcu@1T!MuhM}q~S z{X!$CsD&S)W5clr48y=3H-oL*+oeTPo94m!wieQsVU#d6AoO&?d|Q{G!2*> z?Ey`-zRRz77kHxp^Jo(~$RLtKF;PO$98@ZcbyQR?(=)rz=0Y-E46~gbb|ja}TnBo9 z26?5oU6MD!$b7gbc`?5vzeS4}3pZNiG>Mtbind6>c~^cP$G8(0&O`GO=uV-xSK8gz z1ES{FvXK7zB|*$&nAb6FRt55$U?BaTk6PjKADZyUL8Zol9>}btg3_wmzttgctl$S7 zaX` zBl%7F#2dtM_!od3Q-##I77;!~d~9sYHF-jb0+hZQ9=r>g<8HWeO7?n(Hm|_RPmaP9 zZ#9TH{3heew%6W5Cg+emB&%wqCX)Lmt8 z>;i@iDoy#_@1kzsQo;#n!~1Te3jz$2`ue-F7s;=xz;K664a6{hyuCWv4`s8EQ`oOq z0=f=-Ek~YodA9#3q=wq6N}k|J0m7G`pT_d~4DJ~ypgIiGWMZfh{@SY9%{10Gs{_{x zko6TsgZkPHj6=Cg{~AQA<6`9@@t(h0hnReL^1w4s-w$x@MPYekQHA*VHq1IqSbcna zyz1l$t`;$EcFfcueeqs^8=peY>#gwfk}6J5)j0R=2Ui{-rMEXYu+7gP{#;y;r@os_ zo=~v@WPQ4S|J4uBaiSSFCk{0=HJ)G6x<$nyL<(4cLpwG*G~zZY@<3;2rzDTXnQ0t4 zc|t`B(0^tKl;3A(XAhk`q2e`AS66pa^1EYDNI1Fd*uT{-&&Awf!__`;>j2 Date: Fri, 7 Feb 2020 22:24:39 +0100 Subject: [PATCH 06/13] fixes apps.json --- apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps.json b/apps.json index 6ca702fe7..c9c59d34b 100644 --- a/apps.json +++ b/apps.json @@ -777,7 +777,7 @@ "type":"app", "version": "0.02", "sortorder" : -9 - } + }, { "id": "jbb", "name": "Battery Level", From fc356c31d7021bf6b71552128d54b741f3d9727a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Bov=C3=A9?= Date: Tue, 7 Apr 2020 22:20:15 +0200 Subject: [PATCH 07/13] Fixes corrupted app list --- apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps.json b/apps.json index d8cdde0fc..c14fda261 100644 --- a/apps.json +++ b/apps.json @@ -1481,7 +1481,7 @@ "allow_emulator": true, "type": "app", "version": "0.02", - "sortorder": -9, + "sortorder": -9 }, { "id": "flagrse", From 86ad563bc2f4d8ec23aa3e8e3c8ac25590f3bda1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Bov=C3=A9?= Date: Fri, 10 Apr 2020 23:03:59 +0200 Subject: [PATCH 08/13] Fixes jbmb8 apps entry --- apps.json | 47 +++--------------------------- apps/_example_app/add_to_apps.json | 1 - apps/jbm8b/Changelog | 3 +- apps/jbm8b/add_to_apps.json | 18 +++--------- 4 files changed, 10 insertions(+), 59 deletions(-) diff --git a/apps.json b/apps.json index c14fda261..a82da04d2 100644 --- a/apps.json +++ b/apps.json @@ -1434,54 +1434,15 @@ { "id": "jbm8b", "name": "Magic 8 Ball", + "shortName": "Magic 8 Ball", "icon": "app.png", "description": "A simple fortune telling app", "tags": "game", "storage": [ - { - "name": "+jbm8b", - "url": "app.json" - }, - { - "name": "-jbm8b", - "url": "app.js" - }, - { - "name": "*jbm8b", - "url": "app-icon.js", - "evaluate": true - } + { "name": "jbm8b.app.js", "url": "app.js" }, + { "name": "jbm8b.img", "url": "app-icon.js", "evaluate": true } ], - "allow_emulator": true, - "type": "app", - "version": "0.02", - "sortorder": -9 - }, - { - "id": "jbb", - "name": "Battery Level", - "icon": "app.png", - "description": "Battery status and charging indicator", - "tags": "tool", - "storage": [ - { - "name": "+jbb", - "url": "app.json" - }, - { - "name": "-jbb", - "url": "app.js" - }, - { - "name": "*jbb", - "url": "app-icon.js", - "evaluate": true - } - ], - "allow_emulator": true, - "type": "app", - "version": "0.02", - "sortorder": -9 + "version": "0.03" }, { "id": "flagrse", diff --git a/apps/_example_app/add_to_apps.json b/apps/_example_app/add_to_apps.json index ca75a7bd8..dd66030b6 100644 --- a/apps/_example_app/add_to_apps.json +++ b/apps/_example_app/add_to_apps.json @@ -1,4 +1,3 @@ -// Create an entry in apps.json as follows: { "id": "7chname", "name": "My app's human readable name", "shortName":"Short Name", diff --git a/apps/jbm8b/Changelog b/apps/jbm8b/Changelog index bd71ffcd5..80d7de1d6 100644 --- a/apps/jbm8b/Changelog +++ b/apps/jbm8b/Changelog @@ -1,2 +1,3 @@ 0.01: First working version -0.02: Added delay in replying for dramatic effect \ No newline at end of file +0.02: Added delay in replying for dramatic effect +0.03: Fixed apps.json entry diff --git a/apps/jbm8b/add_to_apps.json b/apps/jbm8b/add_to_apps.json index 200ea5f65..8e28639e7 100644 --- a/apps/jbm8b/add_to_apps.json +++ b/apps/jbm8b/add_to_apps.json @@ -1,23 +1,13 @@ { "id": "jbm8b", "name": "Magic 8 Ball", + "shortName": "Magic 8 Ball", "icon": "app.png", "description": "A simple fortune telling app", "tags": "game", "storage": [ - { - "name": "+jbm8b", - "url": "app.json" - }, - { - "name": "-jbm8b", - "url": "app.js" - }, - { - "name": "*jbm8b", - "url": "app-icon.js", - "evaluate": true - } + { "name": "jbm8b.app.js", "url": "app.js" }, + { "name": "jbm8b.img", "url": "app-icon.js", "evaluate": true } ], - "version": "0.02" + "version": "0.03" } \ No newline at end of file From 72f7f2c2f85b7ac93fb9e5023865ebddd9e3062b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Bov=C3=A9?= Date: Fri, 15 May 2020 13:37:53 +0200 Subject: [PATCH 09/13] Removes add_to_apps.json --- apps/jbb/add_to_apps.json | 23 ----------------------- apps/jbm8b/add_to_apps.json | 13 ------------- 2 files changed, 36 deletions(-) delete mode 100644 apps/jbb/add_to_apps.json delete mode 100644 apps/jbm8b/add_to_apps.json diff --git a/apps/jbb/add_to_apps.json b/apps/jbb/add_to_apps.json deleted file mode 100644 index cc6483ac1..000000000 --- a/apps/jbb/add_to_apps.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "id": "jbb", - "name": "Battery Power", - "icon": "app.png", - "description": "Showing battery level and charging status", - "tags": "tool", - "storage": [ - { - "name": "+jbb", - "url": "app.json" - }, - { - "name": "-jbb", - "url": "app.js" - }, - { - "name": "*jbb", - "url": "app-icon.js", - "evaluate": true - } - ], - "version": "0.02" -} \ No newline at end of file diff --git a/apps/jbm8b/add_to_apps.json b/apps/jbm8b/add_to_apps.json deleted file mode 100644 index 8e28639e7..000000000 --- a/apps/jbm8b/add_to_apps.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "id": "jbm8b", - "name": "Magic 8 Ball", - "shortName": "Magic 8 Ball", - "icon": "app.png", - "description": "A simple fortune telling app", - "tags": "game", - "storage": [ - { "name": "jbm8b.app.js", "url": "app.js" }, - { "name": "jbm8b.img", "url": "app-icon.js", "evaluate": true } - ], - "version": "0.03" -} \ No newline at end of file From 67cd8c6c13841f1a02baf03d091669adb99f0aa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Bov=C3=A9?= Date: Fri, 15 May 2020 13:38:28 +0200 Subject: [PATCH 10/13] Reverts example add_to_apps.json changes --- apps/_example_app/add_to_apps.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/_example_app/add_to_apps.json b/apps/_example_app/add_to_apps.json index ee83db39e..1585ab73d 100644 --- a/apps/_example_app/add_to_apps.json +++ b/apps/_example_app/add_to_apps.json @@ -1,3 +1,4 @@ +// Create an entry in apps.json as follows: { "id": "7chname", "name": "My app's human readable name", "shortName":"Short Name", @@ -10,4 +11,4 @@ {"name":"7chname.app.js","url":"app.js"}, {"name":"7chname.img","url":"app-icon.js","evaluate":true} ] -} +} \ No newline at end of file From 0cd385fbfbba3f4769d9a91ae62108dffaad6faf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Bov=C3=A9?= Date: Fri, 15 May 2020 13:42:12 +0200 Subject: [PATCH 11/13] Fixed formatting in apps.json --- apps.json | 1409 +++++++++++++++-------------------------------------- 1 file changed, 389 insertions(+), 1020 deletions(-) diff --git a/apps.json b/apps.json index a0fcf0c79..a1f8a0c7a 100644 --- a/apps.json +++ b/apps.json @@ -1,129 +1,87 @@ [ - { - "id": "boot", + { "id": "boot", "name": "Bootloader", "icon": "bootloader.png", "version":"0.17", "description": "This is needed by Bangle.js to automatically load the clock, menu, widgets and settings", "tags": "tool,system", - "type": "bootloader", + "type":"bootloader", "storage": [ - { - "name": ".boot0", - "url": "boot0.js" - }, - { - "name": ".bootcde", - "url": "bootloader.js" - } + {"name":".boot0","url":"boot0.js"}, + {"name":".bootcde","url":"bootloader.js"} ], - "sortorder": -10 + "sortorder" : -10 }, - { - "id": "moonphase", + { "id": "moonphase", "name": "Moonphase", "icon": "app.png", - "version": "0.02", + "version":"0.02", "description": "Shows current moon phase. Now with GPS function.", "tags": "", - "allow_emulator": true, + "allow_emulator":true, "storage": [ - { - "name": "moonphase.app.js", - "url": "app.js" - }, - { - "name": "moonphase.img", - "url": "app-icon.js", - "evaluate": true - } + {"name":"moonphase.app.js","url":"app.js"}, + {"name":"moonphase.img","url":"app-icon.js","evaluate":true} ] }, - { - "id": "daysl", + { "id": "daysl", "name": "Days left", "icon": "app.png", - "version": "0.03", + "version":"0.03", "description": "Shows you the days left until a certain date. Date can be set with a settings app and is written to a file.", "tags": "", - "allow_emulator": false, + "allow_emulator":false, "storage": [ - { - "name": "daysl.app.js", - "url": "app.js" - }, - { - "name": "daysl.img", - "url": "app-icon.js", - "evaluate": true - }, - { - "name": "daysl.wid.js", - "url": "widget.js" - } + {"name":"daysl.app.js","url":"app.js"}, + {"name":"daysl.img","url":"app-icon.js","evaluate":true}, + {"name":"daysl.wid.js","url":"widget.js"} ] }, - { - "id": "launch", + { "id": "launch", "name": "Default Launcher", - "shortName": "Launcher", + "shortName":"Launcher", "icon": "app.png", "version":"0.03", "description": "This is needed by Bangle.js to display a menu allowing you to choose your own applications. You can replace this with a customised launcher.", "tags": "tool,system,launcher", - "type": "launch", + "type":"launch", "storage": [ - { - "name": "launch.app.js", - "url": "app.js" - } + {"name":"launch.app.js","url":"app.js"} ], - "sortorder": -10 + "sortorder" : -10 }, - { - "id": "about", + { "id": "about", "name": "About", "icon": "app.png", "version":"0.05", "description": "Bangle.js About page - showing software version, stats, and a collaborative mural from the Bangle.js KickStarter backers", "tags": "tool,system", - "allow_emulator": true, + "allow_emulator":true, "storage": [ - { - "name": "about.app.js", - "url": "app.js" - }, - { - "name": "about.img", - "url": "app-icon.js", - "evaluate": true - } + {"name":"about.app.js","url":"app.js"}, + {"name":"about.img","url":"app-icon.js","evaluate":true} ] }, - { - "id": "locale", + { "id": "locale", "name": "Languages", "icon": "locale.png", "version":"0.06", "description": "Translations for different countries", "tags": "tool,system,locale,translate", "type": "locale", - "custom": "locale.html", + "custom":"locale.html", "storage": [ - { - "name": "locale" - } + {"name":"locale"} ], - "sortorder": -10 + "sortorder" : -10 }, - { - "id": "welcome", + { "id": "welcome", "name": "Welcome", "icon": "app.png", "version":"0.09", "description": "Appears at first boot and explains how to use Bangle.js", "tags": "start,welcome", - "allow_emulator": true, + "allow_emulator":true, "storage": [ {"name":"welcome.boot.js","url":"boot.js"}, {"name":"welcome.app.js","url":"app.js"}, @@ -134,54 +92,34 @@ {"name":"welcome.json"} ] }, - { - "id": "gbridge", + { "id": "gbridge", "name": "Gadgetbridge", "icon": "app.png", "version":"0.10", "description": "The default notification handler for Gadgetbridge notifications from Android", "tags": "tool,system,android,widget", - "type": "widget", + "type":"widget", "storage": [ - { - "name": "gbridge.settings.js", - "url": "settings.js" - }, - { - "name": "gbridge.img", - "url": "app-icon.js", - "evaluate": true - }, - { - "name": "gbridge.wid.js", - "url": "widget.js" - } + {"name":"gbridge.settings.js","url":"settings.js"}, + {"name":"gbridge.img","url":"app-icon.js","evaluate":true}, + {"name":"gbridge.wid.js","url":"widget.js"} ] }, - { - "id": "mclock", + { "id": "mclock", "name": "Morphing Clock", "icon": "clock-morphing.png", "version":"0.06", "description": "7 segment clock that morphs between minutes and hours", "tags": "clock", - "type": "clock", - "allow_emulator": true, + "type":"clock", + "allow_emulator":true, "storage": [ - { - "name": "mclock.app.js", - "url": "clock-morphing.js" - }, - { - "name": "mclock.img", - "url": "clock-morphing-icon.js", - "evaluate": true - } + {"name":"mclock.app.js","url":"clock-morphing.js"}, + {"name":"mclock.img","url":"clock-morphing-icon.js","evaluate":true} ], - "sortorder": -9 + "sortorder" : -9 }, - { - "id": "setting", + { "id": "setting", "name": "Settings", "icon": "settings.png", "version":"0.19", @@ -193,12 +131,11 @@ {"name":"setting.boot.js","url":"boot.js"}, {"name":"setting.img","url":"settings-icon.js","evaluate":true} ], - "sortorder": -2 + "sortorder" : -2 }, - { - "id": "alarm", + { "id": "alarm", "name": "Default Alarm", - "shortName": "Alarms", + "shortName":"Alarms", "icon": "app.png", "version":"0.07", "description": "Set and respond to alarms", @@ -214,25 +151,17 @@ {"name":"alarm.json"} ] }, - { - "id": "wclock", + { "id": "wclock", "name": "Word Clock", "icon": "clock-word.png", - "version": "0.02", + "version":"0.02", "description": "Display Time as Text", "tags": "clock", - "type": "clock", - "allow_emulator": true, + "type":"clock", + "allow_emulator":true, "storage": [ - { - "name": "wclock.app.js", - "url": "clock-word.js" - }, - { - "name": "wclock.img", - "url": "clock-word-icon.js", - "evaluate": true - } + {"name":"wclock.app.js","url":"clock-word.js"}, + {"name":"wclock.img","url":"clock-word-icon.js","evaluate":true} ] }, { "id": "imgclock", @@ -271,198 +200,118 @@ "version": "0.13", "description": "An Analog Clock", "tags": "clock", - "type": "clock", - "allow_emulator": true, + "type":"clock", + "allow_emulator":true, "storage": [ - { - "name": "aclock.app.js", - "url": "clock-analog.js" - }, - { - "name": "aclock.img", - "url": "clock-analog-icon.js", - "evaluate": true - } + {"name":"aclock.app.js","url":"clock-analog.js"}, + {"name":"aclock.img","url":"clock-analog-icon.js","evaluate":true} ] }, - { - "id": "clock2x3", + { "id": "clock2x3", "name": "2x3 Pixel Clock", "icon": "clock2x3.png", - "version": "0.04", + "version":"0.04", "description": "This is a simple clock using minimalist 2x3 pixel numerical digits", "tags": "clock", "type": "clock", - "allow_emulator": true, + "allow_emulator":true, "storage": [ - { - "name": "clock2x3.app.js", - "url": "clock2x3-app.js" - }, - { - "name": "clock2x3.img", - "url": "clock2x3-icon.js", - "evaluate": true - } + {"name":"clock2x3.app.js","url":"clock2x3-app.js"}, + {"name":"clock2x3.img","url":"clock2x3-icon.js","evaluate":true} ] }, - { - "id": "trex", + { "id": "trex", "name": "T-Rex", "icon": "trex.png", "version":"0.02", "description": "T-Rex game in the style of Chrome's offline game", "tags": "game", - "allow_emulator": true, + "allow_emulator":true, "storage": [ - { - "name": "trex.app.js", - "url": "trex.js" - }, - { - "name": "trex.img", - "url": "trex-icon.js", - "evaluate": true - } + {"name":"trex.app.js","url":"trex.js"}, + {"name":"trex.img","url":"trex-icon.js","evaluate":true} ] }, - { - "id": "astroid", + { "id": "astroid", "name": "Asteroids!", "icon": "asteroids.png", "version":"0.02", "description": "Retro asteroids game", "tags": "game", - "allow_emulator": true, + "allow_emulator":true, "storage": [ - { - "name": "astroid.app.js", - "url": "asteroids.js" - }, - { - "name": "astroid.img", - "url": "asteroids-icon.js", - "evaluate": true - } + {"name":"astroid.app.js","url":"asteroids.js"}, + {"name":"astroid.img","url":"asteroids-icon.js","evaluate":true} ] }, - { - "id": "clickms", + { "id": "clickms", "name": "Click Master", "icon": "click-master.png", - "version": "0.01", + "version":"0.01", "description": "Get several friends to start the game, then compete to see who can press BTN1 the most!", "tags": "game", "storage": [ - { - "name": "clickms.app.js", - "url": "click-master.js" - }, - { - "name": "clickms.img", - "url": "click-master-icon.js", - "evaluate": true - } + {"name":"clickms.app.js","url":"click-master.js"}, + {"name":"clickms.img","url":"click-master-icon.js","evaluate":true} ] }, - { - "id": "horsey", + { "id": "horsey", "name": "Horse Race!", "icon": "horse-race.png", - "version": "0.01", + "version":"0.01", "description": "Get several friends to start the game, then compete to see who can press BTN1 the most!", "tags": "game", "storage": [ - { - "name": "horsey.app.js", - "url": "horse-race.js" - }, - { - "name": "horsey.img", - "url": "horse-race-icon.js", - "evaluate": true - } + {"name":"horsey.app.js","url":"horse-race.js"}, + {"name":"horsey.img","url":"horse-race-icon.js","evaluate":true} ] }, - { - "id": "compass", + { "id": "compass", "name": "Compass", "icon": "compass.png", "version":"0.02", "description": "Simple compass that points North", "tags": "tool,outdoors", "storage": [ - { - "name": "compass.app.js", - "url": "compass.js" - }, - { - "name": "compass.img", - "url": "compass-icon.js", - "evaluate": true - } + {"name":"compass.app.js","url":"compass.js"}, + {"name":"compass.img","url":"compass-icon.js","evaluate":true} ] }, - { - "id": "gpstime", + { "id": "gpstime", "name": "GPS Time", "icon": "gpstime.png", - "version": "0.03", + "version":"0.03", "description": "Update the Bangle.js's clock based on the time from the GPS receiver", "tags": "tool,gps", "storage": [ - { - "name": "gpstime.app.js", - "url": "gpstime.js" - }, - { - "name": "gpstime.img", - "url": "gpstime-icon.js", - "evaluate": true - } + {"name":"gpstime.app.js","url":"gpstime.js"}, + {"name":"gpstime.img","url":"gpstime-icon.js","evaluate":true} ] }, - { - "id": "openloc", + { "id": "openloc", "name": "Open Location / Plus Codes", "shortName": "Open Location", "icon": "app.png", - "version": "0.01", + "version":"0.01", "description": "Convert your current GPS location to a series of characters", "tags": "tool,outdoors,gps", "storage": [ - { - "name": "openloc.app.js", - "url": "app.js" - }, - { - "name": "openloc.img", - "url": "app-icon.js", - "evaluate": true - } + {"name":"openloc.app.js","url":"app.js"}, + {"name":"openloc.img","url":"app-icon.js","evaluate":true} ] }, - { - "id": "speedo", + { "id": "speedo", "name": "Speedo", "icon": "speedo.png", "version":"0.03", "description": "Show the current speed according to the GPS", "tags": "tool,outdoors,gps", "storage": [ - { - "name": "speedo.app.js", - "url": "speedo.js" - }, - { - "name": "speedo.img", - "url": "speedo-icon.js", - "evaluate": true - } + {"name":"speedo.app.js","url":"speedo.js"}, + {"name":"speedo.img","url":"speedo-icon.js","evaluate":true} ] }, - { - "id": "gpsrec", + { "id": "gpsrec", "name": "GPS Recorder", "icon": "app.png", "version":"0.09", @@ -492,8 +341,7 @@ {"name":"gpsnav.img","url":"app-icon.js","evaluate":true} ] }, - { - "id": "heart", + { "id": "heart", "name": "Heart Rate Recorder", "icon": "app.png", "version":"0.02", @@ -510,42 +358,26 @@ {"wildcard":".heart?","storageFile": true} ] }, - { - "id": "slevel", + { "id": "slevel", "name": "Spirit Level", "icon": "spiritlevel.png", - "version": "0.01", + "version":"0.01", "description": "Show the current angle of the watch, so you can use it to make sure something is absolutely flat", "tags": "tool", "storage": [ - { - "name": "slevel.app.js", - "url": "spiritlevel.js" - }, - { - "name": "slevel.img", - "url": "spiritlevel-icon.js", - "evaluate": true - } + {"name":"slevel.app.js","url":"spiritlevel.js"}, + {"name":"slevel.img","url":"spiritlevel-icon.js","evaluate":true} ] }, - { - "id": "files", + { "id": "files", "name": "App Manager", "icon": "files.png", "version":"0.05", "description": "Show currently installed apps, free space, and allow their deletion from the watch", "tags": "tool,system,files", "storage": [ - { - "name": "files.app.js", - "url": "files.js" - }, - { - "name": "files.img", - "url": "files-icon.js", - "evaluate": true - } + {"name":"files.app.js","url":"files.js"}, + {"name":"files.img","url":"files-icon.js","evaluate":true} ] }, { "id": "weather", @@ -571,23 +403,19 @@ "version":"0.05", "description": "Show the current battery level and charging status in the top right of the clock", "tags": "widget,battery", - "type": "widget", + "type":"widget", "storage": [ - { - "name": "widbat.wid.js", - "url": "widget.js" - } + {"name":"widbat.wid.js","url":"widget.js"} ] }, - { - "id": "widbatpc", + { "id": "widbatpc", "name": "Battery Level Widget (with percentage)", "shortName": "Battery Widget", "icon": "widget.png", "version":"0.11", "description": "Show the current battery level and charging status in the top right of the clock, with charge percentage", "tags": "widget,battery", - "type": "widget", + "type":"widget", "storage": [ {"name":"widbatpc.wid.js","url":"widget.js"}, {"name":"widbatpc.settings.js","url":"settings.js"} @@ -596,19 +424,15 @@ {"name":"widbatpc.json"} ] }, - { - "id": "widbt", + { "id": "widbt", "name": "Bluetooth Widget", "icon": "widget.png", "version":"0.04", "description": "Show the current Bluetooth connection status in the top right of the clock", "tags": "widget,bluetooth", - "type": "widget", + "type":"widget", "storage": [ - { - "name": "widbt.wid.js", - "url": "widget.js" - } + {"name":"widbt.wid.js","url":"widget.js"} ] }, { "id": "widram", @@ -626,99 +450,63 @@ { "id": "hrm", "name": "Heart Rate Monitor", "icon": "heartrate.png", - "version": "0.01", + "version":"0.01", "description": "Measure your current heart rate", "tags": "health", "storage": [ - { - "name": "hrm.app.js", - "url": "heartrate.js" - }, - { - "name": "hrm.img", - "url": "heartrate-icon.js", - "evaluate": true - } + {"name":"hrm.app.js","url":"heartrate.js"}, + {"name":"hrm.img","url":"heartrate-icon.js","evaluate":true} ] }, - { - "id": "widhrm", + { "id": "widhrm", "name": "Simple Heart Rate widget", "icon": "widget.png", - "version": "0.03", + "version":"0.03", "description": "When the screen is on, the widget turns on the heart rate monitor and displays the current heart rate (or last known in grey). For this to work well you'll need at least a 15 second LCD Timeout.", "tags": "health,widget", "type": "widget", "storage": [ - { - "name": "widhrm.wid.js", - "url": "widget.js" - } + {"name":"widhrm.wid.js","url":"widget.js"} ] }, - { - "id": "stetho", + { "id": "stetho", "name": "Stethoscope", "icon": "stetho.png", - "version": "0.01", + "version":"0.01", "description": "Hear your heart rate", "tags": "health", "storage": [ - { - "name": "stetho.app.js", - "url": "stetho.js" - }, - { - "name": "stetho.img", - "url": "stetho-icon.js", - "evaluate": true - } + {"name":"stetho.app.js","url":"stetho.js"}, + {"name":"stetho.img","url":"stetho-icon.js","evaluate":true} ] }, - { - "id": "swatch", + { "id": "swatch", "name": "Stopwatch", "icon": "stopwatch.png", "version":"0.07", "interface": "interface.html", "description": "Simple stopwatch with Lap Time logging to a JSON file", "tags": "health", - "allow_emulator": true, + "allow_emulator":true, "readme": "README.md", "storage": [ - { - "name": "swatch.app.js", - "url": "stopwatch.js" - }, - { - "name": "swatch.img", - "url": "stopwatch-icon.js", - "evaluate": true - } + {"name":"swatch.app.js","url":"stopwatch.js"}, + {"name":"swatch.img","url":"stopwatch-icon.js","evaluate":true} ] }, - { - "id": "hidmsic", + { "id": "hidmsic", "name": "Bluetooth Music Controls", "shortName": "Music Control", "icon": "hid-music.png", - "version": "0.02", + "version":"0.02", "description": "Enable HID in settings, pair with your phone, then use this app to control music from your watch!", "tags": "bluetooth", "storage": [ - { - "name": "hidmsic.app.js", - "url": "hid-music.js" - }, - { - "name": "hidmsic.img", - "url": "hid-music-icon.js", - "evaluate": true - } + {"name":"hidmsic.app.js","url":"hid-music.js"}, + {"name":"hidmsic.img","url":"hid-music-icon.js","evaluate":true} ] }, - { - "id": "hidkbd", + { "id": "hidkbd", "name": "Bluetooth Keyboard", "shortName": "Bluetooth Kbd", "icon": "hid-keyboard.png", @@ -726,19 +514,11 @@ "description": "Enable HID in settings, pair with your phone/PC, then use this app to control other apps", "tags": "bluetooth", "storage": [ - { - "name": "hidkbd.app.js", - "url": "hid-keyboard.js" - }, - { - "name": "hidkbd.img", - "url": "hid-keyboard-icon.js", - "evaluate": true - } + {"name":"hidkbd.app.js","url":"hid-keyboard.js"}, + {"name":"hidkbd.img","url":"hid-keyboard-icon.js","evaluate":true} ] }, - { - "id": "hidbkbd", + { "id": "hidbkbd", "name": "Binary Bluetooth Keyboard", "shortName": "Binary BT Kbd", "icon": "hid-binary-keyboard.png", @@ -746,78 +526,30 @@ "description": "Enable HID in settings, pair with your phone/PC, then type messages using the onscreen keyboard by tapping repeatedly on the key you want", "tags": "bluetooth", "storage": [ - { - "name": "hidbkbd.app.js", - "url": "hid-binary-keyboard.js" - }, - { - "name": "hidbkbd.img", - "url": "hid-binary-keyboard-icon.js", - "evaluate": true - } + {"name":"hidbkbd.app.js","url":"hid-binary-keyboard.js"}, + {"name":"hidbkbd.img","url":"hid-binary-keyboard-icon.js","evaluate":true} ] }, - { - "id": "animals", + { "id": "animals", "name": "Animals Game", "icon": "animals.png", - "version": "0.01", + "version":"0.01", "description": "Simple toddler's game - displays a different number of animals each time the screen is pressed", "tags": "game", "storage": [ - { - "name": "animals.app.js", - "url": "animals.js" - }, - { - "name": "animals.img", - "url": "animals-icon.js", - "evaluate": true - }, - { - "name": "animals-snake.img", - "url": "animals-snake.js", - "evaluate": true - }, - { - "name": "animals-duck.img", - "url": "animals-duck.js", - "evaluate": true - }, - { - "name": "animals-swan.img", - "url": "animals-swan.js", - "evaluate": true - }, - { - "name": "animals-fox.img", - "url": "animals-fox.js", - "evaluate": true - }, - { - "name": "animals-camel.img", - "url": "animals-camel.js", - "evaluate": true - }, - { - "name": "animals-pig.img", - "url": "animals-pig.js", - "evaluate": true - }, - { - "name": "animals-sheep.img", - "url": "animals-sheep.js", - "evaluate": true - }, - { - "name": "animals-mouse.img", - "url": "animals-mouse.js", - "evaluate": true - } + {"name":"animals.app.js","url":"animals.js"}, + {"name":"animals.img","url":"animals-icon.js","evaluate":true}, + {"name":"animals-snake.img","url":"animals-snake.js","evaluate":true}, + {"name":"animals-duck.img","url":"animals-duck.js","evaluate":true}, + {"name":"animals-swan.img","url":"animals-swan.js","evaluate":true}, + {"name":"animals-fox.img","url":"animals-fox.js","evaluate":true}, + {"name":"animals-camel.img","url":"animals-camel.js","evaluate":true}, + {"name":"animals-pig.img","url":"animals-pig.js","evaluate":true}, + {"name":"animals-sheep.img","url":"animals-sheep.js","evaluate":true}, + {"name":"animals-mouse.img","url":"animals-mouse.js","evaluate":true} ] }, - { - "id": "qrcode", + { "id": "qrcode", "name": "Custom QR Code", "icon": "app.png", "version":"0.02", @@ -829,8 +561,7 @@ {"name":"qrcode.img","url":"app-icon.js","evaluate":true} ] }, - { - "id": "beer", + { "id": "beer", "name": "Beer Compass", "icon": "app.png", "version":"0.01", @@ -842,8 +573,7 @@ {"name":"beer.img","url":"app-icon.js","evaluate":true} ] }, - { - "id": "route", + { "id": "route", "name": "Route Viewer", "icon": "app.png", "version":"0.01", @@ -877,337 +607,203 @@ {"name":"ncstart.json"} ] }, - { - "id": "ncfrun", + { "id": "ncfrun", "name": "NCEU 5K Fun Run", "icon": "nceu-funrun.png", - "version": "0.01", + "version":"0.01", "description": "Display a map of the NodeConf EU 2019 5K Fun Run route and your location on it", "tags": "health", "storage": [ - { - "name": "ncfrun.app.js", - "url": "nceu-funrun.js" - }, - { - "name": "ncfrun.img", - "url": "nceu-funrun-icon.js", - "evaluate": true - } + {"name":"ncfrun.app.js","url":"nceu-funrun.js"}, + {"name":"ncfrun.img","url":"nceu-funrun-icon.js","evaluate":true} ] }, - { - "id": "widnceu", + { "id": "widnceu", "name": "NCEU Logo Widget", "icon": "widget.png", - "version": "0.02", + "version":"0.02", "description": "Show the NodeConf EU logo in the top left", "tags": "widget", - "type": "widget", + "type":"widget", "storage": [ - { - "name": "widnceu.wid.js", - "url": "widget.js" - } + {"name":"widnceu.wid.js","url":"widget.js"} ] }, - { - "id": "sclock", + { "id": "sclock", "name": "Simple Clock", "icon": "clock-simple.png", - "version": "0.04", + "version":"0.04", "description": "A Simple Digital Clock", "tags": "clock", - "type": "clock", - "allow_emulator": true, + "type":"clock", + "allow_emulator":true, "storage": [ - { - "name": "sclock.app.js", - "url": "clock-simple.js" - }, - { - "name": "sclock.img", - "url": "clock-simple-icon.js", - "evaluate": true - } + {"name":"sclock.app.js","url":"clock-simple.js"}, + {"name":"sclock.img","url":"clock-simple-icon.js","evaluate":true} ] }, - { - "id": "dclock", + { "id": "dclock", "name": "Dev Clock", "icon": "clock-dev.png", - "version": "0.09", + "version":"0.09", "description": "A Digital Clock including timestamp (tst), beats(@), days in current month (dm) and days since new moon (l)", "tags": "clock", - "type": "clock", - "allow_emulator": true, + "type":"clock", + "allow_emulator":true, "storage": [ - { - "name": "dclock.app.js", - "url": "clock-dev.js" - }, - { - "name": "dclock.img", - "url": "clock-dev-icon.js", - "evaluate": true - } + {"name":"dclock.app.js","url":"clock-dev.js"}, + {"name":"dclock.img","url":"clock-dev-icon.js","evaluate":true} ] }, - { - "id": "gesture", + { "id": "gesture", "name": "Gesture Test", "icon": "gesture.png", - "version": "0.01", + "version":"0.01", "description": "BETA! Uploads a basic Tensorflow Gesture model, and then outputs each gesture as a message", "tags": "gesture,ai", - "type": "app", + "type":"app", "storage": [ - { - "name": "gesture.app.js", - "url": "gesture.js" - }, - { - "name": ".tfnames", - "url": "gesture-tfnames.js", - "evaluate": true - }, - { - "name": ".tfmodel", - "url": "gesture-tfmodel.js", - "evaluate": true - }, - { - "name": "gesture.img", - "url": "gesture-icon.js", - "evaluate": true - } + {"name":"gesture.app.js","url":"gesture.js"}, + {"name":".tfnames","url":"gesture-tfnames.js","evaluate":true}, + {"name":".tfmodel","url":"gesture-tfmodel.js","evaluate":true}, + {"name":"gesture.img","url":"gesture-icon.js","evaluate":true} ] }, - { - "id": "pparrot", + { "id": "pparrot", "name": "Party Parrot", "icon": "party-parrot.png", - "version": "0.01", + "version":"0.01", "description": "Party with a parrot on your wrist", "tags": "party,parrot,lol", - "type": "app", - "allow_emulator": true, + "type":"app", + "allow_emulator":true, "storage": [ - { - "name": "pparrot.app.js", - "url": "party-parrot.js" - }, - { - "name": "pparrot.img", - "url": "party-parrot-icon.js", - "evaluate": true - } + {"name":"pparrot.app.js","url":"party-parrot.js"}, + {"name":"pparrot.img","url":"party-parrot-icon.js","evaluate":true} ] }, - { - "id": "hrings", + { "id": "hrings", "name": "Hypno Rings", "icon": "hypno-rings.png", - "version": "0.01", + "version":"0.01", "description": "Experiment with trippy rings, press buttons for change", "tags": "rings,hypnosis,psychadelic", - "type": "app", - "allow_emulator": true, + "type":"app", + "allow_emulator":true, "storage": [ - { - "name": "hrings.app.js", - "url": "hypno-rings.js" - }, - { - "name": "hrings.img", - "url": "hypno-rings-icon.js", - "evaluate": true - } + {"name":"hrings.app.js","url":"hypno-rings.js"}, + {"name":"hrings.img","url":"hypno-rings-icon.js","evaluate":true} ] }, - { - "id": "morse", + { "id": "morse", "name": "Morse Code", "icon": "morse-code.png", - "version": "0.01", + "version":"0.01", "description": "Learn morse code by hearing/seeing/feeling the code. Tap to toggle buzz!", "tags": "morse,sound,visual,input", - "type": "app", + "type":"app", "storage": [ - { - "name": "morse.app.js", - "url": "morse-code.js" - }, - { - "name": "morse.img", - "url": "morse-code-icon.js", - "evaluate": true - } + {"name":"morse.app.js","url":"morse-code.js"}, + {"name":"morse.img","url":"morse-code-icon.js","evaluate":true} ] }, { "id": "blescan", "name": "BLE Scanner", "icon": "blescan.png", - "version": "0.01", + "version":"0.01", "description": "Scan for advertising BLE devices", - "tags": "bluetooth", - "storage": [ - { - "name": "blescan.app.js", - "url": "blescan.js" - }, - { - "name": "blescan.img", - "url": "blescan-icon.js", - "evaluate": true - } + "tags" : "bluetooth", + "storage" : [ + {"name":"blescan.app.js","url":"blescan.js"}, + {"name":"blescan.img","url":"blescan-icon.js", "evaluate":true} ] }, - { - "id": "mmonday", - "name": "Manic Monday Tone", - "icon": "manic-monday-icon.png", - "version": "0.02", - "description": "The Bangles make a comeback", - "tags": "sound", - "storage": [ - { - "name": "mmonday.app.js", - "url": "manic-monday.js" - }, - { - "name": "mmonday.img", - "url": "manic-monday-icon.js", - "evaluate": true - } - ] + { "id": "mmonday", + "name": "Manic Monday Tone", + "icon": "manic-monday-icon.png", + "version":"0.02", + "description": "The Bangles make a comeback", + "tags": "sound", + "storage": [ + {"name":"mmonday.app.js","url":"manic-monday.js"}, + {"name":"mmonday.img","url":"manic-monday-icon.js","evaluate":true} + ] }, - { - "id": "jbells", + { "id": "jbells", "name": "Jingle Bells", "icon": "jbells.png", - "version": "0.01", + "version":"0.01", "description": "Play Jingle Bells", "tags": "sound", - "type": "app", + "type":"app", "storage": [ - { - "name": "jbells.app.js", - "url": "jbells.js" - }, - { - "name": "jbells.img", - "url": "jbells-icon.js", - "evaluate": true - } + {"name":"jbells.app.js","url":"jbells.js"}, + {"name":"jbells.img","url":"jbells-icon.js","evaluate":true} ] }, - { - "id": "scolor", + { "id": "scolor", "name": "Show Color", "icon": "show-color.png", - "version": "0.01", + "version":"0.01", "description": "Display all available Colors and Names", "tags": "tool", - "type": "app", - "allow_emulator": true, + "type":"app", + "allow_emulator":true, "storage": [ - { - "name": "scolor.app.js", - "url": "show-color.js" - }, - { - "name": "scolor.img", - "url": "show-color-icon.js", - "evaluate": true - } + {"name":"scolor.app.js","url":"show-color.js"}, + {"name":"scolor.img","url":"show-color-icon.js","evaluate":true} ] }, - { - "id": "miclock", + { "id": "miclock", "name": "Mixed Clock", "icon": "clock-mixed.png", - "version": "0.04", + "version":"0.04", "description": "A mix of analog and digital Clock", "tags": "clock", - "type": "clock", - "allow_emulator": true, + "type":"clock", + "allow_emulator":true, "storage": [ - { - "name": "miclock.app.js", - "url": "clock-mixed.js" - }, - { - "name": "miclock.img", - "url": "clock-mixed-icon.js", - "evaluate": true - } + {"name":"miclock.app.js","url":"clock-mixed.js"}, + {"name":"miclock.img","url":"clock-mixed-icon.js","evaluate":true} ] }, - { - "id": "bclock", + { "id": "bclock", "name": "Binary Clock", "icon": "clock-binary.png", - "version": "0.02", + "version":"0.02", "description": "A simple binary clock watch face", "tags": "clock", - "type": "clock", - "allow_emulator": true, + "type":"clock", + "allow_emulator":true, "storage": [ - { - "name": "bclock.app.js", - "url": "clock-binary.js" - }, - { - "name": "bclock.img", - "url": "clock-binary-icon.js", - "evaluate": true - } + {"name":"bclock.app.js","url":"clock-binary.js"}, + {"name":"bclock.img","url":"clock-binary-icon.js","evaluate":true} ] }, - { - "id": "clotris", + { "id": "clotris", "name": "Clock-Tris", "icon": "clock-tris.png", - "version": "0.01", + "version":"0.01", "description": "A fully functional clone of a classic game of falling blocks", "tags": "game", - "allow_emulator": true, + "allow_emulator":true, "storage": [ - { - "name": "clotris.app.js", - "url": "clock-tris.js" - }, - { - "name": "clotris.img", - "url": "clock-tris-icon.js", - "evaluate": true - }, - { - "name": ".trishig", - "url": "clock-tris-high" - } + {"name":"clotris.app.js","url":"clock-tris.js"}, + {"name":"clotris.img","url":"clock-tris-icon.js","evaluate":true}, + {"name":".trishig","url":"clock-tris-high"} ] }, - { - "id": "flappy", + { "id": "flappy", "name": "Flappy Bird", "icon": "app.png", "version":"0.04", "description": "A Flappy Bird game clone", "tags": "game", - "allow_emulator": true, + "allow_emulator":true, "storage": [ - { - "name": "flappy.app.js", - "url": "app.js" - }, - { - "name": "flappy.img", - "url": "app-icon.js", - "evaluate": true - } + {"name":"flappy.app.js","url":"app.js"}, + {"name":"flappy.img","url":"app-icon.js","evaluate":true} ] }, { @@ -1219,203 +815,123 @@ "tags": "gps", "type": "app", "storage": [ - { - "name": "gpsinfo.app.js", - "url": "gps-info.js" - }, - { - "name": "gpsinfo.img", - "url": "gps-info-icon.js", - "evaluate": true - } + {"name":"gpsinfo.app.js","url": "gps-info.js"}, + {"name":"gpsinfo.img","url": "gps-info-icon.js","evaluate": true} ] }, { "id": "pomodo", - "name": "Pomodoro", - "icon": "pomodoro.png", - "version": "0.01", + "name":"Pomodoro", + "icon":"pomodoro.png", + "version":"0.01", "description": "A simple pomodoro timer.", "tags": "pomodoro,cooking,tools", "type": "app", - "allow_emulator": true, + "allow_emulator":true, "storage": [ - { - "name": "pomodo.app.js", - "url": "pomodoro.js" - }, - { - "name": "pomodo.img", - "url": "pomodoro-icon.js", - "evaluate": true - } + {"name":"pomodo.app.js","url": "pomodoro.js"}, + {"name":"pomodo.img","url": "pomodoro-icon.js","evaluate": true} ] }, - { - "id": "blobclk", + { "id": "blobclk", "name": "Large Digit Blob Clock", - "shortName": "Blob Clock", + "shortName" : "Blob Clock", "icon": "clock-blob.png", - "version": "0.03", + "version":"0.03", "description": "A clock with big digits", "tags": "clock", - "type": "clock", - "allow_emulator": true, + "type":"clock", + "allow_emulator":true, "storage": [ - { - "name": "blobclk.app.js", - "url": "clock-blob.js" - }, - { - "name": "blobclk.img", - "url": "clock-blob-icon.js", - "evaluate": true - } + {"name":"blobclk.app.js","url":"clock-blob.js"}, + {"name":"blobclk.img","url":"clock-blob-icon.js","evaluate":true} ] }, - { - "id": "boldclk", + { "id": "boldclk", "name": "Bold Clock", "icon": "bold_clock.png", - "version": "0.02", + "version":"0.02", "description": "Simple, readable and practical clock", "tags": "clock", - "type": "clock", - "allow_emulator": true, + "type":"clock", + "allow_emulator":true, "storage": [ - { - "name": "boldclk.app.js", - "url": "bold_clock.js" - }, - { - "name": "boldclk.img", - "url": "bold_clock-icon.js", - "evaluate": true - } + {"name":"boldclk.app.js","url":"bold_clock.js"}, + {"name":"boldclk.img","url":"bold_clock-icon.js","evaluate":true} ] }, - { - "id": "widclk", + { "id": "widclk", "name": "Digital clock widget", "icon": "widget.png", "version":"0.04", "description": "A simple digital clock widget", "tags": "widget,clock", - "type": "widget", + "type":"widget", "storage": [ - { - "name": "widclk.wid.js", - "url": "widget.js" - } + {"name":"widclk.wid.js","url":"widget.js"} ] }, - { - "id": "widpedom", + { "id": "widpedom", "name": "Pedometer widget", "icon": "widget.png", "version":"0.10", "description": "Daily pedometer widget", "tags": "widget", - "type": "widget", + "type":"widget", "storage": [ {"name":"widpedom.wid.js","url":"widget.js"}, {"name":"widpedom.settings.js","url":"settings.js"} ] }, - { - "id": "berlinc", + { "id": "berlinc", "name": "Berlin Clock", "icon": "berlin-clock.png", - "version": "0.02", + "version":"0.02", "description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)", "tags": "clock", - "type": "clock", - "allow_emulator": true, + "type":"clock", + "allow_emulator":true, "storage": [ - { - "name": "berlinc.app.js", - "url": "berlin-clock.js" - }, - { - "name": "berlinc.img", - "url": "berlin-clock-icon.js", - "evaluate": true - } + {"name":"berlinc.app.js","url":"berlin-clock.js"}, + {"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true} ] }, - { - "id": "ctrclk", + { "id": "ctrclk", "name": "Centerclock", "icon": "app.png", - "version": "0.02", + "version":"0.02", "description": "Watch-centered digital 24h clock with date in dd.mm.yyyy format.", "tags": "clock", - "type": "clock", - "allow_emulator": true, + "type":"clock", + "allow_emulator":true, "storage": [ - { - "name": "ctrclk.app.js", - "url": "app.js" - }, - { - "name": "ctrclk.img", - "url": "app-icon.js", - "evaluate": true - } + {"name":"ctrclk.app.js","url":"app.js"}, + {"name":"ctrclk.img","url":"app-icon.js","evaluate":true} ] }, - { - "id": "demoapp", + { "id": "demoapp", "name": "Demo Loop", "icon": "app.png", - "version": "0.01", + "version":"0.01", "description": "Simple demo app - displays Bangle.js, JS logo, graphics, and Bangle.js information", "tags": "", - "type": "app", - "allow_emulator": true, + "type":"app", + "allow_emulator":true, "storage": [ - { - "name": "demoapp.app.js", - "url": "app.js" - }, - { - "name": "demoapp.img", - "url": "app-icon.js", - "evaluate": true - } + {"name":"demoapp.app.js","url":"app.js"}, + {"name":"demoapp.img","url":"app-icon.js","evaluate":true} ], - "sortorder": -9 + "sortorder" : -9 }, - { - "id": "jbm8b", - "name": "Magic 8 Ball", - "shortName": "Magic 8 Ball", - "icon": "app.png", - "description": "A simple fortune telling app", - "tags": "game", - "storage": [ - { "name": "jbm8b.app.js", "url": "app.js" }, - { "name": "jbm8b.img", "url": "app-icon.js", "evaluate": true } - ], - "version": "0.03" - }, - { - "id": "flagrse", + { "id": "flagrse", "name": "Espruino Flag Raiser", "icon": "app.png", - "version": "0.01", + "version":"0.01", "description": "App to send a command to another Espruino to cause it to raise a flag", "tags": "", "storage": [ - { - "name": "flagrse.app.js", - "url": "app.js" - }, - { - "name": "flagrse.img", - "url": "app-icon.js", - "evaluate": true - } + {"name":"flagrse.app.js","url":"app.js"}, + {"name":"flagrse.img","url":"app-icon.js","evaluate":true} ] }, { @@ -1425,46 +941,27 @@ "version": "0.03", "description": "Pipboy themed clock", "tags": "clock", - "type": "clock", - "allow_emulator": true, + "type":"clock", + "allow_emulator":true, "storage": [ - { - "name": "pipboy.app.js", - "url": "app.js" - }, - { - "name": "pipboy.img", - "url": "app-icon.js", - "evaluate": true - } + {"name":"pipboy.app.js","url":"app.js"}, + {"name":"pipboy.img","url":"app-icon.js","evaluate":true} ] }, - { - "id": "torch", + { "id": "torch", "name": "Torch", - "shortName": "Torch", + "shortName":"Torch", "icon": "app.png", "version":"0.02", "description": "Turns screen white to help you see in the dark. Select from the launcher or press BTN1,BTN3,BTN1,BTN3 quickly to start when in any app that shows widgets", "tags": "tool,torch", "storage": [ - { - "name": "torch.app.js", - "url": "app.js" - }, - { - "name": "torch.wid.js", - "url": "widget.js" - }, - { - "name": "torch.img", - "url": "app-icon.js", - "evaluate": true - } + {"name":"torch.app.js","url":"app.js"}, + {"name":"torch.wid.js","url":"widget.js"}, + {"name":"torch.img","url":"app-icon.js","evaluate":true} ] }, - { - "id": "wohrm", + { "id": "wohrm", "name": "Workout HRM", "icon": "app.png", "version":"0.07", @@ -1472,32 +969,21 @@ "description": "Workout heart rate monitor notifies you with a buzz if your heart rate goes above or below the set limits.", "tags": "hrm,workout", "type": "app", - "allow_emulator": true, + "allow_emulator":true, "storage": [ - { - "name": "wohrm.app.js", - "url": "app.js" - }, - { - "name": "wohrm.img", - "url": "app-icon.js", - "evaluate": true - } + {"name":"wohrm.app.js","url":"app.js"}, + {"name":"wohrm.img","url":"app-icon.js","evaluate":true} ] }, - { - "id": "widid", + { "id": "widid", "name": "Bluetooth ID Widget", "icon": "widget.png", - "version": "0.02", + "version":"0.02", "description": "Display the last two tuple of your Bangle.js MAC address in the widget section. This is useful for figuring out which Bangle.js to connect to if you have more than one Bangle.js!", "tags": "widget,address,mac", - "type": "widget", + "type":"widget", "storage": [ - { - "name": "widid.wid.js", - "url": "widget.js" - } + {"name":"widid.wid.js","url":"widget.js"} ] }, { @@ -1508,238 +994,134 @@ "description": "Simple grocery (shopping) list - Display a list of product and track if you already put them in your cart.", "tags": "tool,outdoors,shopping,list", "type": "app", - "custom": "grocery.html", + "custom":"grocery.html", "storage": [ - { - "name": "grocery" - }, - { - "name": "grocery.app.js" - }, - { - "name": "grocery.img", - "url": "grocery-icon.js", - "evaluate": true - } + {"name":"grocery"}, + {"name":"grocery.app.js"}, + {"name":"grocery.img","url":"grocery-icon.js","evaluate":true} ] }, - { - "id": "marioclock", + { "id": "marioclock", "name": "Mario Clock", "icon": "marioclock.png", "version":"0.12", "description": "Animated retro Mario clock, with Gameboy style 8-bit grey-scale graphics.", "tags": "clock,mario,retro", "type": "clock", - "allow_emulator": true, + "allow_emulator":true, "readme": "README.md", "storage": [ - { - "name": "marioclock.app.js", - "url": "marioclock-app.js" - }, - { - "name": "marioclock.img", - "url": "marioclock-icon.js", - "evaluate": true - } + {"name":"marioclock.app.js","url":"marioclock-app.js"}, + {"name":"marioclock.img","url":"marioclock-icon.js","evaluate":true} ] }, - { - "id": "cliock", + { "id": "cliock", "name": "Commandline-Clock", - "shortName": "CLI-Clock", + "shortName":"CLI-Clock", "icon": "app.png", - "version": "0.07", + "version":"0.07", "description": "Simple CLI-Styled Clock", "tags": "clock,cli,command,bash,shell", - "type": "clock", - "allow_emulator": true, + "type":"clock", + "allow_emulator":true, "storage": [ - { - "name": "cliock.app.js", - "url": "app.js" - }, - { - "name": "cliock.img", - "url": "app-icon.js", - "evaluate": true - } + {"name":"cliock.app.js","url":"app.js"}, + {"name":"cliock.img","url":"app-icon.js","evaluate":true} ] }, - { - "id": "widver", + { "id": "widver", "name": "Firmware Version Widget", "icon": "widget.png", - "version": "0.01", + "version":"0.01", "description": "Display the version of the installed firmware in the top widget section.", "tags": "widget,tool,system", - "type": "widget", + "type":"widget", "storage": [ - { - "name": "widver.wid.js", - "url": "widget.js" - } + {"name":"widver.wid.js","url":"widget.js"} ] }, - { - "id": "barclock", + { "id": "barclock", "name": "Bar Clock", "icon": "clock-bar.png", "version":"0.05", "description": "A simple digital clock showing seconds as a bar", "tags": "clock", - "type": "clock", - "allow_emulator": true, + "type":"clock", + "allow_emulator":true, "storage": [ - { - "name": "barclock.app.js", - "url": "clock-bar.js" - }, - { - "name": "barclock.img", - "url": "clock-bar-icon.js", - "evaluate": true - } + {"name":"barclock.app.js","url":"clock-bar.js"}, + {"name":"barclock.img","url":"clock-bar-icon.js","evaluate":true} ] }, - { - "id": "dotclock", + { "id": "dotclock", "name": "Dot Clock", "icon": "clock-dot.png", - "version": "0.01", + "version":"0.01", "description": "A Minimal Dot Analog Clock", "tags": "clock", - "type": "clock", - "allow_emulator": true, + "type":"clock", + "allow_emulator":true, "storage": [ - { - "name": "dotclock.app.js", - "url": "clock-dot.js" - }, - { - "name": "dotclock.img", - "url": "clock-dot-icon.js", - "evaluate": true - } + {"name":"dotclock.app.js","url":"clock-dot.js"}, + {"name":"dotclock.img","url":"clock-dot-icon.js","evaluate":true} ] }, - { - "id": "widtbat", + { "id": "widtbat", "name": "Tiny Battery Widget", "icon": "widget.png", - "version": "0.01", + "version":"0.01", "description": "Tiny blueish battery widget, vibs and changes level color when charging", "tags": "widget,tool,system", - "type": "widget", + "type":"widget", "storage": [ - { - "name": "widtbat.wid.js", - "url": "widget.js" - } + {"name":"widtbat.wid.js","url":"widget.js"} ] }, - { - "id": "chrono", + { "id": "chrono", "name": "Chrono", - "shortName": "Chrono", + "shortName":"Chrono", "icon": "chrono.png", - "version": "0.01", + "version":"0.01", "description": "Single click BTN1 to add 5 minutes. Single click BTN2 to add 30 seconds. Single click BTN3 to add 5 seconds. Tap to pause or play to timer. Double click BTN1 to reset. When timer finishes the watch vibrates.", "tags": "Tools", "storage": [ - { - "name": "chrono.app.js", - "url": "chrono.js" - }, - { - "name": "chrono.img", - "url": "chrono-icon.js", - "evaluate": true - } + {"name":"chrono.app.js","url":"chrono.js"}, + {"name":"chrono.img","url":"chrono-icon.js","evaluate":true} ] }, - { - "id": "astrocalc", + { "id": "astrocalc", "name": "Astrocalc", "icon": "astrocalc.png", "version":"0.02", "description": "Calculates interesting information on the sun and moon cycles for the current day based on your location.", "tags": "app,sun,moon,cycles,tool,outdoors", - "allow_emulator": true, + "allow_emulator":true, "storage": [ - { - "name": "astrocalc.app.js", - "url": "astrocalc-app.js" - }, - { - "name": "suncalc.js", - "url": "suncalc.js" - }, - { - "name": "astrocalc.img", - "url": "astrocalc-icon.js", - "evaluate": true - }, - { - "name": "first-quarter.img", - "url": "first-quarter-icon.js", - "evaluate": true - }, - { - "name": "last-quarter.img", - "url": "last-quarter-icon.js", - "evaluate": true - }, - { - "name": "waning-crescent.img", - "url": "waning-crescent-icon.js", - "evaluate": true - }, - { - "name": "waning-gibbous.img", - "url": "waning-gibbous-icon.js", - "evaluate": true - }, - { - "name": "full.img", - "url": "full-icon.js", - "evaluate": true - }, - { - "name": "new.img", - "url": "new-icon.js", - "evaluate": true - }, - { - "name": "waxing-gibbous.img", - "url": "waxing-gibbous-icon.js", - "evaluate": true - }, - { - "name": "waxing-crescent.img", - "url": "waxing-crescent-icon.js", - "evaluate": true - } + {"name":"astrocalc.app.js","url":"astrocalc-app.js"}, + {"name":"suncalc.js","url":"suncalc.js"}, + {"name":"astrocalc.img","url":"astrocalc-icon.js","evaluate":true}, + {"name":"first-quarter.img","url":"first-quarter-icon.js","evaluate":true}, + {"name":"last-quarter.img","url":"last-quarter-icon.js","evaluate":true}, + {"name":"waning-crescent.img","url":"waning-crescent-icon.js","evaluate":true}, + {"name":"waning-gibbous.img","url":"waning-gibbous-icon.js","evaluate":true}, + {"name":"full.img","url":"full-icon.js","evaluate":true}, + {"name":"new.img","url":"new-icon.js","evaluate":true}, + {"name":"waxing-gibbous.img","url":"waxing-gibbous-icon.js","evaluate":true}, + {"name":"waxing-crescent.img","url":"waxing-crescent-icon.js","evaluate":true} ] }, - { - "id": "widhwt", + { "id": "widhwt", "name": "Hand Wash Timer", "icon": "widget.png", - "version": "0.01", + "version":"0.01", "description": "Swipe your wrist over the watch face to start your personal Bangle.js hand wash timer for 35 sec. Start washing after the short buzz and stop after the long buzz.", "tags": "widget,tool", - "type": "widget", + "type":"widget", "storage": [ - { - "name": "widhwt.wid.js", - "url": "widget.js" - } + {"name":"widhwt.wid.js","url":"widget.js"} ] }, - { - "id": "toucher", + { "id": "toucher", "name": "Touch Launcher", "shortName":"Toucher", "icon": "app.png", @@ -1754,7 +1136,7 @@ {"name":"toucher.app.js","url":"app.js"}, {"name":"toucher.settings.js","url":"settings.js"} ], - "sortorder": -10 + "sortorder" : -10 }, { "id": "balltastic", @@ -1765,16 +1147,9 @@ "tags": "game,fun", "type": "app", "storage": [ - { - "name": "balltastic.app.js", - "url": "app.js" - }, - { - "name": "balltastic.img", - "url": "app-icon.js", - "evaluate": true - } - ] + {"name":"balltastic.app.js","url":"app.js"}, + {"name":"balltastic.img","url":"app-icon.js","evaluate":true} + ] }, { "id": "rpgdice", @@ -1786,34 +1161,22 @@ "type": "app", "allow_emulator": true, "storage": [ - { - "name": "rpgdice.app.js", - "url": "app.js" - }, - { - "name": "rpgdice.img", - "url": "app-icon.js", - "evaluate": true - } + {"name":"rpgdice.app.js","url": "app.js"}, + {"name":"rpgdice.img","url": "app-icon.js","evaluate":true} ] }, - { - "id": "widmp", + { "id": "widmp", "name": "Moon Phase Widget", "icon": "widget.png", - "version": "0.01", + "version":"0.01", "description": "Display the current moon phase in blueish for the northern hemisphere in eight phases", "tags": "widget,tools", - "type": "widget", + "type":"widget", "storage": [ - { - "name": "widmp.wid.js", - "url": "widget.js" - } + {"name":"widmp.wid.js","url":"widget.js"} ] }, - { - "id": "minionclk", + { "id": "minionclk", "name": "Minion clock", "icon": "minionclk.png", "version": "0.02", @@ -1822,15 +1185,8 @@ "type": "clock", "allow_emulator": true, "storage": [ - { - "name": "minionclk.app.js", - "url": "app.js" - }, - { - "name": "minionclk.img", - "url": "app-icon.js", - "evaluate": true - } + {"name":"minionclk.app.js","url":"app.js"}, + {"name":"minionclk.img","url":"app-icon.js","evaluate":true} ] }, { "id": "openstmap", @@ -2390,5 +1746,18 @@ {"name":"dotmatrixclock.app.js","url":"app.js"}, {"name":"dotmatrixclock.img","url":"dotmatrixclock-icon.js","evaluate":true} ] - } -] \ No newline at end of file + }, + { + "id": "jbm8b", + "name": "Magic 8 Ball", + "shortName": "Magic 8 Ball", + "icon": "app.png", + "description": "A simple fortune telling app", + "tags": "game", + "storage": [ + { "name": "jbm8b.app.js", "url": "app.js" }, + { "name": "jbm8b.img", "url": "app-icon.js", "evaluate": true } + ], + "version": "0.03" + }, +] From 6a5bef65a362adb76ff31bc6df959cb6a5e69b06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Bov=C3=A9?= Date: Fri, 15 May 2020 13:44:14 +0200 Subject: [PATCH 12/13] Removes jbb app --- apps/jbb/ChangeLog | 2 -- apps/jbb/app-icon.js | 1 - apps/jbb/app.js | 53 ------------------------------------------- apps/jbb/app.json | 5 ---- apps/jbb/app.png | Bin 1673 -> 0 bytes 5 files changed, 61 deletions(-) delete mode 100644 apps/jbb/ChangeLog delete mode 100644 apps/jbb/app-icon.js delete mode 100644 apps/jbb/app.js delete mode 100644 apps/jbb/app.json delete mode 100644 apps/jbb/app.png diff --git a/apps/jbb/ChangeLog b/apps/jbb/ChangeLog deleted file mode 100644 index b7359ee0e..000000000 --- a/apps/jbb/ChangeLog +++ /dev/null @@ -1,2 +0,0 @@ -0.01: First version trying out stuff -0.02: First usable version \ No newline at end of file diff --git a/apps/jbb/app-icon.js b/apps/jbb/app-icon.js deleted file mode 100644 index 8fbebe9df..000000000 --- a/apps/jbb/app-icon.js +++ /dev/null @@ -1 +0,0 @@ -require("heatshrink").decompress(atob("mEwxH+AH4AvlYAVF7NVABdPAggublfVAAfU5gAKFzReCF4guL0RehFxZedF6Iu/F/hezF1AvB1YvOFzxevF54u/F6Qupqxe/FzovBLxougLxoOBACIvNwAuB6YvbXroANqqdQF4YuYLqBedDgNWdqYuZFp/+qwuC6i6nLzi6RF4nPF1peXFqgvCqouUXSheEABhrHRaovSFw9WFyo8O6vUXTb6SFodPF0xeCXTheVF1AvBwC6pLwjsBqoupF4SLqF2AvCFtYuvF4YurF4NWF1otsAH4AXA==")) \ No newline at end of file diff --git a/apps/jbb/app.js b/apps/jbb/app.js deleted file mode 100644 index f39d06280..000000000 --- a/apps/jbb/app.js +++ /dev/null @@ -1,53 +0,0 @@ -/** - * draw the current level value - */ -function draw(level) { - console.log('draw', level); - // Clear the screen - g.clear(); - g.setFontAlign(0, 0); // center font - g.setFont("6x8", 8); // bitmap font, 8x magnified - g.drawString(level + "%", 120, 80); - g.setFont("6x8", 4); - g.drawString("power", 120, 130); -} - -function getBatteryLevel() { - level = E.getBattery(); - console.log('getBatteryLevel', level); - - draw(level); - - checkCharging(Bangle.isCharging()); - - // again, 10 secs later - setTimeout(getBatteryLevel, 10E3); -} - -function checkCharging(charging) { - console.log('checkCharging', charging); - // Green LED - //LED2.write(charging); - if (charging) { - g.setFontAlign(0, 0); // center font - g.setFont("6x8", 3); // bitmap font, 3x magnifier - g.drawString("charging", 120, 160); - } -} - -function main() { - console.log('starting jbb version 0.0.1'); - getBatteryLevel(); -} - -g.clear(); -g.flip(); -Bangle.loadWidgets(); -Bangle.drawWidgets(); - -Bangle.on('charging', checkCharging); - -main(); - -// Show launcher when middle button pressed -setWatch(Bangle.showLauncher, BTN2, { repeat: false, edge: "falling" }); diff --git a/apps/jbb/app.json b/apps/jbb/app.json deleted file mode 100644 index 9e4eb893c..000000000 --- a/apps/jbb/app.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "Battery Power", - "icon": "*jbb", - "src": "-jbb" -} \ No newline at end of file diff --git a/apps/jbb/app.png b/apps/jbb/app.png deleted file mode 100644 index 6f58711b57c4be035b8368e4adbba1a5741e9532..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1673 zcmV;426p+0P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1|CU7K~!i%)md9i z9Yq-a_j0b3mIMINK(MNr%4rG$tUw}>;CI)Rcch}=*!W8dih0DHfr39mRxN(i z7A>y9wG~tJrPFCgR`H~OZTIYIP1m~#2Z&JuZ%h@K-b={HWZFpJ( zME-$$?vPR*$jW<=CzK<0O8UQqO`?6ts`PlBQ`DHXxc z02Yg$=|OmGpb4^!I}RNiu025H4Ff{~`Q(F{)K{K7*@`a}84Noc2On}pp5RJ>j*bqF z^TF&`H~O&9`s!MjY?Z=X#IMsI<{^%j4;x`upp@Lfl>)TTrbb?sQXV$ZBYQxZmkk>@^W%e$h!pD9`hh; z6y|b6b`*lsG&1KC7-*0fh@l}WOPS^1$^-Ac^Q3H9;EI9#tPQ9HNKaWPjQi%nCUN&- zc^efe(AL%_n6w_hPslcu@1T!MuhM}q~S z{X!$CsD&S)W5clr48y=3H-oL*+oeTPo94m!wieQsVU#d6AoO&?d|Q{G!2*> z?Ey`-zRRz77kHxp^Jo(~$RLtKF;PO$98@ZcbyQR?(=)rz=0Y-E46~gbb|ja}TnBo9 z26?5oU6MD!$b7gbc`?5vzeS4}3pZNiG>Mtbind6>c~^cP$G8(0&O`GO=uV-xSK8gz z1ES{FvXK7zB|*$&nAb6FRt55$U?BaTk6PjKADZyUL8Zol9>}btg3_wmzttgctl$S7 zaX` zBl%7F#2dtM_!od3Q-##I77;!~d~9sYHF-jb0+hZQ9=r>g<8HWeO7?n(Hm|_RPmaP9 zZ#9TH{3heew%6W5Cg+emB&%wqCX)Lmt8 z>;i@iDoy#_@1kzsQo;#n!~1Te3jz$2`ue-F7s;=xz;K664a6{hyuCWv4`s8EQ`oOq z0=f=-Ek~YodA9#3q=wq6N}k|J0m7G`pT_d~4DJ~ypgIiGWMZfh{@SY9%{10Gs{_{x zko6TsgZkPHj6=Cg{~AQA<6`9@@t(h0hnReL^1w4s-w$x@MPYekQHA*VHq1IqSbcna zyz1l$t`;$EcFfcueeqs^8=peY>#gwfk}6J5)j0R=2Ui{-rMEXYu+7gP{#;y;r@os_ zo=~v@WPQ4S|J4uBaiSSFCk{0=HJ)G6x<$nyL<(4cLpwG*G~zZY@<3;2rzDTXnQ0t4 zc|t`B(0^tKl;3A(XAhk`q2e`AS66pa^1EYDNI1Fd*uT{-&&Awf!__`;>j2 Date: Fri, 15 May 2020 13:45:35 +0200 Subject: [PATCH 13/13] Fixed apps.json Removed trailing comma --- apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps.json b/apps.json index a1f8a0c7a..3eb485979 100644 --- a/apps.json +++ b/apps.json @@ -1759,5 +1759,5 @@ { "name": "jbm8b.img", "url": "app-icon.js", "evaluate": true } ], "version": "0.03" - }, + } ]