From 6ee5b7305231c03ea0ebe2e58965a59a43233593 Mon Sep 17 00:00:00 2001 From: Brian Whelan Date: Fri, 21 Jun 2024 18:44:44 +0100 Subject: [PATCH 01/57] Add new module "reply" for canned responses Adds a new module that enables replying to messages --- apps/reply/ChangeLog | 1 + apps/reply/README.md | 23 +++++++ apps/reply/app.png | Bin 0 -> 720 bytes apps/reply/interface.html | 125 ++++++++++++++++++++++++++++++++++++++ apps/reply/lib.js | 75 +++++++++++++++++++++++ apps/reply/metadata.json | 16 +++++ 6 files changed, 240 insertions(+) create mode 100644 apps/reply/ChangeLog create mode 100644 apps/reply/README.md create mode 100644 apps/reply/app.png create mode 100644 apps/reply/interface.html create mode 100644 apps/reply/lib.js create mode 100644 apps/reply/metadata.json diff --git a/apps/reply/ChangeLog b/apps/reply/ChangeLog new file mode 100644 index 000000000..f3c7b0d2c --- /dev/null +++ b/apps/reply/ChangeLog @@ -0,0 +1 @@ +0.01: New Library! \ No newline at end of file diff --git a/apps/reply/README.md b/apps/reply/README.md new file mode 100644 index 000000000..dc874d183 --- /dev/null +++ b/apps/reply/README.md @@ -0,0 +1,23 @@ +# Canned Replies Library + +A library that handles replying to messages received from Gadgetbridge/Messages apps. + +## Replying to a message +The user can define a set of canned responses via the customise page after installing the app, or alternatively if they have a keyboard installed, they can type a response back. The requesting app will receive either an object containing the full reply for GadgetBridge, or a string with the response from the user, depending on how they wish to handle the response. + +## Integrating in your app +To use this in your app, simply call + +```js +require("reply").reply(/*options*/{...}).then(result => ...); +``` + +The ```options``` object can contain the following: + +- ```msg```: A message object containing a field ```id```, the ID to respond to. If this is included in options, the result of the promise will be an object as follows: ```{t: "notify", id: msg.id, n: "REPLY", msg: "USER REPLY"}```. If not included, the result of the promise will be an object, ```{msg: "USER REPLY"}``` +- ```shouldReply```: Whether or not the library should send the response over Bluetooth with ```Bluetooth.println(...```. Useful if the calling app wants to handle the response a different way. Default is true. +- ```title```: The title to show at the top of the menu. Defaults to ```"Reply with:"```. +- ```fileOverride```: An override file to read canned responses from, which is an array of objects each with a ```text``` property. Default is ```replies.json```. Useful for apps which might want to make use of custom canned responses. + +## Known Issues +Emojis are currently not supported. \ No newline at end of file diff --git a/apps/reply/app.png b/apps/reply/app.png new file mode 100644 index 0000000000000000000000000000000000000000..bef8338cfda0a069115cd86d0978301ec2a01156 GIT binary patch literal 720 zcmV;>0x$iEP)Ou!sS{ zQUwVs+6*>cr3f}!iG`qtjTT9xjfjF0NUNYAVxvJ5BpO0o8JLA-oY|Y*o6XLJ{oz5l zoq6y7ax-&p7HZY1RjXF5|1}J>fkhy$I2M5?zu22oJagSVp0yKr-~&L$58xuOv3%cb049KM7B3x@wTWH;2g0d51^JR08u2w>Tver|y4z<0yvUx0BB=0|{!mSua>2S5`z4Lk+@S~mIa z0>*b)HmR)f0yv{;djUw|67az=<`)nFn;i1XgWx={V94_cn9^!`1&}cY+yj0a#?Asq zGIAdTUK{2u0}p`{hI-xsk~nKQF;;=QKz}OdR-mO00Db&h;9N$X(g2cZS-RKH>f0Jq zf9ucXoR&lW(g9?gR9)<g|rFG4d z@dfptx0>$+kv=jHsU>H6>2!kt6lDPDul-(X?+5Je6EQdcy9 z=LDq40idA)d?hf64$rr10P^bCbBZ1JOt6Zp1o#KcD)dHzb{Sp(0000 + + + + + + + +
+ + + +
+
+
+ +
+
+
+
+
+
+

Loading

+

Syncing custom replies with your watch

+
+
+
+
+
+ +
+

No custom replies

+

Use the field above to add a custom reply

+
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/apps/reply/lib.js b/apps/reply/lib.js new file mode 100644 index 000000000..7bd4780a5 --- /dev/null +++ b/apps/reply/lib.js @@ -0,0 +1,75 @@ +exports.reply = function (options) { + var keyboard = "textinput"; + try { + keyboard = require(keyboard); + } catch (e) { + keyboard = null; + } + + function constructReply(msg, replyText, resolve) { + var responseMessage = {msg: replyText}; + if (msg.id) { + responseMessage = { t: "notify", id: msg.id, n: "REPLY", msg: replyText }; + } + E.showMenu(); + layout.setUI(); + layout.render(); + if (options.sendReply == null || options.sendReply) { + Bluetooth.println(JSON.stringify(result)); + } + resolve(responseMessage); + } + + return new Promise((resolve, reject) => { + var menu = { + "": { + title: options.title || /*LANG*/ "Reply with:", + back: function () { + E.showMenu(); + layout.setUI(); + layout.render(); + reject("User pressed back"); + }, + }, // options + /*LANG*/ "Compose": function () { + keyboard.input().then((result) => { + constructReply(options.msg ?? {}, result, resolve); + }); + }, + }; + var replies = + require("Storage").readJSON( + options.fileOverride || "replies.json", + true + ) || {}; + replies.forEach((reply) => { + menu = Object.defineProperty(menu, reply.text, { + value: () => constructReply(options.msg ?? {}, reply.text, resolve), + }); + }); + if (!keyboard) delete menu[/*LANG*/ "Compose"]; + + if (replies.length == 0) { + if (!keyboard) { + E.showPrompt( + /*LANG*/ "Please install a keyboard app, or set a custom reply via the app loader!", + { + buttons: { Ok: true }, + remove: function () { + layout.setUI(); + layout.render(); + reject( + "Please install a keyboard app, or set a custom reply via the app loader!" + ); + }, + } + ); + } else { + keyboard.input().then((result) => { + constructReply(options.msg.id, result, resolve); + }); + } + } + E.showMenu(menu); + }); +}; diff --git a/apps/reply/metadata.json b/apps/reply/metadata.json new file mode 100644 index 000000000..34843edd4 --- /dev/null +++ b/apps/reply/metadata.json @@ -0,0 +1,16 @@ +{ "id": "reply", + "name": "Reply Library", + "version": "0.01", + "description": "A library for replying to text messages via predefined responses or keyboard", + "icon": "app.png", + "type": "module", + "provides_modules" : ["reply"], + "tags": "", + "supports" : ["BANGLEJS2"], + "readme": "README.md", + "interface": "interface.html", + "storage": [ + {"name":"reply","url":"lib.js"} + ], + "data": [{"name":"replies.json"}] +} \ No newline at end of file From 936b6aabee9352ca552c2abf618248d33bed55c7 Mon Sep 17 00:00:00 2001 From: Brian Whelan Date: Fri, 21 Jun 2024 19:29:44 +0100 Subject: [PATCH 02/57] Fix bluetooth stringify param --- apps/reply/lib.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/reply/lib.js b/apps/reply/lib.js index 7bd4780a5..0e2fd86f7 100644 --- a/apps/reply/lib.js +++ b/apps/reply/lib.js @@ -15,7 +15,7 @@ exports.reply = function (options) { layout.setUI(); layout.render(); if (options.sendReply == null || options.sendReply) { - Bluetooth.println(JSON.stringify(result)); + Bluetooth.println(JSON.stringify(responseMessage)); } resolve(responseMessage); } From beff82a2f953f73c61accd325ee54eab39eb0efa Mon Sep 17 00:00:00 2001 From: Brian Whelan Date: Mon, 24 Jun 2024 18:22:09 +0100 Subject: [PATCH 03/57] Return empty array instead of object if JSON read fails --- apps/reply/lib.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/reply/lib.js b/apps/reply/lib.js index 0e2fd86f7..e390669e8 100644 --- a/apps/reply/lib.js +++ b/apps/reply/lib.js @@ -41,7 +41,7 @@ exports.reply = function (options) { require("Storage").readJSON( options.fileOverride || "replies.json", true - ) || {}; + ) || []; replies.forEach((reply) => { menu = Object.defineProperty(menu, reply.text, { value: () => constructReply(options.msg ?? {}, reply.text, resolve), From 5f6d49a62222650579ec3f522d4121b3b34fea4a Mon Sep 17 00:00:00 2001 From: Brian Whelan Date: Thu, 27 Jun 2024 08:23:36 +0100 Subject: [PATCH 04/57] PR fixes --- apps/reply/interface.html | 15 ++++++--------- apps/reply/lib.js | 6 ------ 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/apps/reply/interface.html b/apps/reply/interface.html index 2034a1195..ddad4ef35 100644 --- a/apps/reply/interface.html +++ b/apps/reply/interface.html @@ -61,14 +61,14 @@ function toggleVisibility() { let empty = document.getElementById("empty"); let loading = document.getElementById("loading"); - if (replies.length == 0) { - empty.setAttribute("class", "d-block"); - loading.setAttribute("class", "d-hide"); - } - else if (fetching) { + if (fetching) { loading.setAttribute("class", "d-block"); empty.setAttribute("class", "d-hide"); } + else if (replies.length == 0) { + empty.setAttribute("class", "d-block"); + loading.setAttribute("class", "d-hide"); + } else { loading.setAttribute("class", "d-hide"); empty.setAttribute("class", "d-hide"); @@ -105,7 +105,7 @@ var reply = {}; reply.text = document.getElementById('msg').value; replies.push(reply); - return updateDevice(); + updateDevice(); } function updateDevice() { @@ -114,10 +114,7 @@ Util.writeStorage("replies.json", JSON.stringify(replies), () => { fetching = false; renderReplyList(); - return true; }); - fetching = false; - return false; } diff --git a/apps/reply/lib.js b/apps/reply/lib.js index e390669e8..4a040c557 100644 --- a/apps/reply/lib.js +++ b/apps/reply/lib.js @@ -12,8 +12,6 @@ exports.reply = function (options) { responseMessage = { t: "notify", id: msg.id, n: "REPLY", msg: replyText }; } E.showMenu(); - layout.setUI(); - layout.render(); if (options.sendReply == null || options.sendReply) { Bluetooth.println(JSON.stringify(responseMessage)); } @@ -26,8 +24,6 @@ exports.reply = function (options) { title: options.title || /*LANG*/ "Reply with:", back: function () { E.showMenu(); - layout.setUI(); - layout.render(); reject("User pressed back"); }, }, // options @@ -56,8 +52,6 @@ exports.reply = function (options) { { buttons: { Ok: true }, remove: function () { - layout.setUI(); - layout.render(); reject( "Please install a keyboard app, or set a custom reply via the app loader!" ); From c76f9353c51d8c4efb172c907a52ccb812e21225 Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sat, 29 Jun 2024 17:39:46 +0200 Subject: [PATCH 05/57] Create app.js --- apps/ashadyclock/app.js | 81 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 apps/ashadyclock/app.js diff --git a/apps/ashadyclock/app.js b/apps/ashadyclock/app.js new file mode 100644 index 000000000..d7ff79594 --- /dev/null +++ b/apps/ashadyclock/app.js @@ -0,0 +1,81 @@ +let drawTimeout; +// schedule a draw for the next minute +function queueDraw() { + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function() { + drawTimeout = undefined; + draw(); + }, 60000 - (Date.now() % 60000)); +} + +let images = new Array(10); +for (i=0;i<10;i++) { + let image = + { + width : 98, height : 100, bpp : 3, + transparent: 4, + buffer : require("Storage").read(i + ".bin") + }; + images[i] = image; +} + +let palBottom = new Uint16Array(E.toArrayBuffer(E.toFlatString(new Uint16Array([ + g.toColor("#000"), + g.toColor("#000"), + g.toColor("#F00"), + g.toColor("#FF0"), + g.toColor("#00F"), + g.toColor("#000"), + g.toColor("#FF0"), + g.toColor("#000") + ]).buffer))); + +let palTop = new Uint16Array(E.toArrayBuffer(E.toFlatString(new Uint16Array([ + g.toColor("#FFF"), + g.toColor("#000"), + g.toColor("#FFF"), + g.toColor("#FFF"), + g.toColor("#00F"), + g.toColor("#000"), + g.toColor("#FFF"), + g.toColor("#000"), + ]).buffer))); + +function draw() { + + // work out how to display the current time + let d = new Date(); + + g.setColor(0,0,0); + g.fillRect(0,0,g.getWidth(),g.getHeight()); + + let xOffset = (g.getWidth() - 176) / 2; + let yOffset = (g.getWidth() - 176) / 2; + + let imgUR = images[d.getMinutes() % 10]; + let imgUL = images[Math.floor(d.getMinutes()/10)]; + imgUR.palette = palBottom; + imgUL.palette = palBottom; + g.drawImage(imgUR, 75 + xOffset, 77 + yOffset); + g.drawImage(imgUL, 0 + xOffset, 77 + yOffset); + + let imgOR = images[d.getHours() % 10]; + let imgOL = images[Math.floor(d.getHours()/10)]; + imgOR.palette = palTop; + imgOL.palette = palTop; + g.drawImage(imgOR, 75 + xOffset, 0 + yOffset); + g.drawImage(imgOL, 0 + xOffset, 0 + yOffset); + + queueDraw(); +} + +// Clear the screen once, at startup +g.clear(); +// draw immediately at first +draw(); + +// Show launcher when middle button pressed +Bangle.setUI("clock"); +// Load widgets +Bangle.loadWidgets(); +Bangle.drawWidgets(); From b2a84ea6d3cbb45f5faf6a29ac9a7a9faf15aaaa Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sat, 29 Jun 2024 17:42:16 +0200 Subject: [PATCH 06/57] Add files via upload --- apps/ashadyclock/app.png | Bin 0 -> 2179 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/ashadyclock/app.png diff --git a/apps/ashadyclock/app.png b/apps/ashadyclock/app.png new file mode 100644 index 0000000000000000000000000000000000000000..e01fd0746948e6f2413136e69fed8056820f6444 GIT binary patch literal 2179 zcmV-}2z>X6P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2pCC3K~z{rotS%2 zRo4~9KL{Ygm2i1Kj7U%ui&P~b1srRWF)C)-SZ!mC7DQtmL&rMW_)n(OI2yrL>_3i9 zCpa;2QfHEBQY(^JK?K37wGx{;MNKIx@)qR%xEK1Jb2i6&UiV)7%^v*LK5Os0&f3qT z56lP*44j!bGbJU(ZnyXL_J)Ln49oD*6q%l$p2*0^k`GGy`}>t9Bxh9)8&c?;y{U0H z9H;+snx;uWYk#_S``g=R&zbFXI>W-k0s;cW0|SZAB{nxVE1IF)xOpS-`9#H>EbNE9 zQTQshE9=*<&&tkX0%Brf+(dJ`{&r_)r!WBK@~NXCckkR)gh@aPQWps2md;0=BO@ci z0G2IZCe%~G*HeT(pz!eUxVSiBxTXAWtNOV286$`t;nt~YaD zU;X-!W5~30ba%wZ#|u9hor6-|{mr||Q?6XyBiFKR`!>amnD0Xho8Q`eM*oy?!+|E>=9y!u6G&nm#xcH!y~%4aV>AG zdqX&RqT*tOuB}?`H{VZ8)bFL188W)MqMjJ;+4bvP-1LQEpy)tRLqmfwJd*QTj_!qA zi*RyFSa{fjmIu0qYN@KJ3JMAmt}a++C^IWlC<9(jp#2B-M?`4WoeFojJ-hb|3~07i z1&Q3+M8_z5ARFr?Aa156I0P z-PF{?TedI^q@|~A*}6p-1`Z!OTyv>L7#5fZ73J(b($49ty3giTZ`QeqKJhyEkNEdlE8VLUuHgr(kX( zLbSJblj{fPEZ4j+3}h|J@*DbR+8Asc)lswuhQ zq&SABAtVsPLl~TbsUsM5ARq#D-{8!*!qX%}ZayCP71q|)mN%(VYIj6GkCy@w>W63>(xWgh7z?A247{3xww9`4lP4M6oN+J9DyScZGG5u8tZ;Jx{%9!3N&)BM8W)~FT3!SEkNGCK`Lmk;c0J%;~v zV8{<2T}N>(HzE9S6(Tq-{FxbGLOf@O%?>-?c$~9a%7fjGu5nS*-Uh#D`1j(4BQ60& zhoCNB@{=Oq*2Ur?`o_>dj%dZyK2pTJX3RN;y-V=UD*!hd7Dl5Ltxg2{z{Vg9j})=> zGnYB^S`zF$Va6wh(M9x*BJ*P;6r#FA)EIsIr4M#&Tqsu()@#KF^->ROzA$;D3U=}& zpp~=ae>gNuvR1V5gXV!Go!z3w=+h{lPVM~5O2T@rsA-h`I{EQ!c%+KPE|-AD#xdfQ z%a~rA`bKhy@x{{b$gXBov|>6iBV6BB5gkr^c}q&fx_QFi$m4NbZ1U@`V3Uwe+`hv_)= zV_C6@k_Q*jGmc~bk|bA%2kc=e&BfwyVLr*}g!p$O-u$yPG;YXUijr5Pl_X*4fui6~ zsF0_rhYZb*#`#>NDba9rm|?BBau>@_qEDHdX7J$qRSu3Wfj^tDA<>GF5&YsLKE5N@ zxDRN}bX?0tvdO1`pz0R#&ZEORH{3?PSc}4imOnE*jNN58;c{}SSDb)f={nu+c{YNj|TAl6nwfGA%@*g6)lhP^G{IKF8mctLjP`vlo+PRieU$~T*M~p zXafACtS~oLSNZXATJ?#m|a6&RdK5Y z4ZL{pCD|uupH>_=hkwX#D+N@WkJJS740|K4cOv^3>I;w%W)g>&V)f@JyCntWYx9?G zLegQ&BbQ8Gl>J9qO$niL4eMDsd7(r@e5VB<-r^eMrFhtm7kLYyCaj;lc&J>nWPIl+ z#{wrEC+|~meEPVg_6^(4jJcBwN7;QwVUiEc#kH|GEV002ovPDHLk FV1iF^ARzz% literal 0 HcmV?d00001 From 2575014a00bacf4d7caea0d6bd8041f6907e4f57 Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sat, 29 Jun 2024 17:45:57 +0200 Subject: [PATCH 07/57] Create app-icon.js --- apps/ashadyclock/app-icon.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/ashadyclock/app-icon.js diff --git a/apps/ashadyclock/app-icon.js b/apps/ashadyclock/app-icon.js new file mode 100644 index 000000000..3e45d1754 --- /dev/null +++ b/apps/ashadyclock/app-icon.js @@ -0,0 +1 @@ +E.toArrayBuffer(atob("MDADAAAAHA4HHAAAHA4HA4HA4HAAAAA4//////AAH//////6///AAAA///6//9AAV/////////XAAAA//////6AAv//X//////4AAAA//////4AA////X/////4AAAA//////4AA/////6////4AAAA//////4AA///6vX///v4AAAAAA////4AA///4A//6//AAAAAAF///64AAHA4CFX////AAAAAAH//X/oAAAAAAH6///4AAAAAAH////AAAAAAAH////QAAAAAAH////AAAAAAA/////AAAAAAAH////AAAAAAC////4AAAAAAAH////AAAAAAH////4AAAAAAA6v///AAAAAA//X/9QAAAAAAA////VAAAAAA////4AAAAAAAA////4AAAAAH////4AAAAAAAA////4AAAAA/6///AAAAAAAAA////4AAAAA////6AAAAAAAAF////4AAAAH/X/94AAAAAAAAH/X//oAAAAX////AAAAAAAAAH////AAAAA/////AAAAAAAAAH////AEQAB+///4AwEAAAAAAH////AigAH////4EUGEAAAAAX////A0GA///3/AmEUigAAAAjGMYxEw0AxxGOIGg0w0igAAGikUwmGmmgwEUwmmGmk0wwAAmmmmmmmGmmgimmmmmmmGmgAGmmmGgGmmmmAmmmmiE0w00wAE0000wE000wwmmmmiA0000wAE00U0AGmmmmA0000wE0U00wAAAAAAAmmmmmAAAAAAGmmmmAAAAAAAE0000wAAAAAE00U00AAAAAACk0000QAAAAAmmmmmgAAAAAAGmmmmigAAAAA00000AAAAAAA00000UAAAAAmmmmmEAAAAAA000w00AAAAAGmmmmmAAAAAAE00000QAAAAE0U000wAAAAAA00000wAAAAA000mmiAAAAAAmmmmmiAAAAAmimmmkQAAAAAGmmmmmAAAAAE00000QAAAAAA00000wmEwmAmmmmmmEwmEwAE0000w00000wmmmmmmimmmgAGmmmmmmmmmGEw00mmmmmmmgAGmmmmmmmmmGE0w00000000AA0000U000mmmA000000000wwAGmmmmmmmmmEU0GmmmmmmmmAAAAiAEACgAECAAgCEAAiAEAAA")) From 6b66123b0ba70b090ae3bcbfe7dd964e915ff04c Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sat, 29 Jun 2024 17:56:20 +0200 Subject: [PATCH 08/57] Create metadata.json --- apps/ashadyclock/metadata.json | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 apps/ashadyclock/metadata.json diff --git a/apps/ashadyclock/metadata.json b/apps/ashadyclock/metadata.json new file mode 100644 index 000000000..749ba984d --- /dev/null +++ b/apps/ashadyclock/metadata.json @@ -0,0 +1,24 @@ +{ "id": "ashadyclock", + "name": "A Shady Clock", + "shortName":"Shady Clk", + "icon": "app.png", + "version":"0.01", + "description": "A nice clock with drop shadow. Hours and minutes. Create any color combination with the existing images by changing only the app hex values.", + "type": "clock", + "tags": "clock", + "supports": ["BANGLEJS","BANGLEJS2"], + "storage": [ + {"name":"ashadyclock.app.js","url":"app.js"}, + {"name":"ashadyclock.img","url":"app-icon.js","evaluate":true}, + {"name":"ashadyclock.0.bin","url":"0.bin"}, + {"name":"ashadyclock.1.bin","url":"1.bin"}, + {"name":"ashadyclock.2.bin","url":"2.bin"}, + {"name":"ashadyclock.3.bin","url":"3.bin"}, + {"name":"ashadyclock.4.bin","url":"4.bin"}, + {"name":"ashadyclock.5.bin","url":"5.bin"}, + {"name":"ashadyclock.6.bin","url":"6.bin"}, + {"name":"ashadyclock.7.bin","url":"7.bin"}, + {"name":"ashadyclock.8.bin","url":"8.bin"}, + {"name":"ashadyclock.9.bin","url":"9.bin"}, + ] +} From e8d93fce5db37604b39b19c5ab53d526d54f9707 Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sat, 29 Jun 2024 18:01:01 +0200 Subject: [PATCH 09/57] Add files via upload --- apps/ashadyclock/screenshot.png | Bin 0 -> 956 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/ashadyclock/screenshot.png diff --git a/apps/ashadyclock/screenshot.png b/apps/ashadyclock/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..731055915276045df41a9bf0604c21aa887e548a GIT binary patch literal 956 zcmV;t14I0YP)Px#1ZP1_K>z@;j|==^1poj53{Xr|MF0Q*`26_z008*>03D4q0ssI232;bRa{vGi z!vFvd!vV){sAK>D135`VK~!ko?U?~`vmg+K7q|f2fEg~}aR0;ofOh^gS>^2xsLiW+o5QQsU~_!6 z`7>a;0hsOu4r*}t60pAk*sH)deBu2)$Im@zKA4WLem&-SDLO0zgWtLS7#!4K5`q0L z*qjCSO0elAp#{H}G>PlM(j<%)OhPbv-88Tt1rC$I;w0vQ!3J>>=rW!KmM5VE`%&O9 z39LxMoCW5uQY3LLSdoMd>_>qWNnp1MMH0|5HnYH*BrXN3lF)!5!$?yY0VV)UgTUr2 zupb2ulfb$pfG1`Q*!QLVEHDiMo3p@v6j&Lt5ratw?p`nqtV}`%xZGc9i1+QtLIFM2wWTO|6!Ski)`5w#pI$0 z+?t%@!R63m*S$V05^%A+_7WR$Ox0?l)Qm@o<4Co$&B-KDvMm{xthTHr8RxcJHVIeV z#wOg1M?n;>%~^IX2}@13d|GN``zbTCW?Qzhvx{xDTDF>XeTXnP{mjWmY}cIfmRH$v z$7@?&*u_@7ZgyRjuU`{bu1;7#*t5Ba=Bix7YN>ISxr2Fas_i?XRkm7fu2XUhm>VOm zO?-!Ks_V1czN(M3=kB#$zOR#RF88a2#tqh~RlQRSW4Kq4`lsWB^jJv#?U_KP?5ihv z#MN<@J7(;C9&(@dT+cCc-hDW>pXwxZyfCqUI^J<~%C;iy*cv@D2vk{eEH z^{Wg=L_Nz5XSMoc_*BCQX|Zy{Ov{3(ryCj8s{bknwPd+rsKwpd@B*p#xX>cP)}x{& z-N*13tcWp&pB1sy7p#cq9+WtBlWBIM_yuw#@^idRe<4)zPZzhm~)(GIZm@2 z&&gQ#o*OnKl$UrJs~jWCID)Stg=06%@uZAZFT82DifNAf9nY=eR|}*rcC34Q9{V2z er2f=dMf49EKbfC)7-Z4_0000 Date: Sat, 29 Jun 2024 18:02:06 +0200 Subject: [PATCH 10/57] Update metadata.json --- apps/ashadyclock/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ashadyclock/metadata.json b/apps/ashadyclock/metadata.json index 749ba984d..e528924cc 100644 --- a/apps/ashadyclock/metadata.json +++ b/apps/ashadyclock/metadata.json @@ -19,6 +19,6 @@ {"name":"ashadyclock.6.bin","url":"6.bin"}, {"name":"ashadyclock.7.bin","url":"7.bin"}, {"name":"ashadyclock.8.bin","url":"8.bin"}, - {"name":"ashadyclock.9.bin","url":"9.bin"}, + {"name":"ashadyclock.9.bin","url":"9.bin"} ] } From c90b7c4c0f61843f293a3c5d024e7801538659cb Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sat, 29 Jun 2024 18:02:48 +0200 Subject: [PATCH 11/57] Add files via upload --- apps/ashadyclock/0.bin | Bin 0 -> 3675 bytes apps/ashadyclock/1.bin | Bin 0 -> 3675 bytes apps/ashadyclock/2.bin | Bin 0 -> 3675 bytes apps/ashadyclock/3.bin | Bin 0 -> 3675 bytes apps/ashadyclock/4.bin | Bin 0 -> 3675 bytes apps/ashadyclock/5.bin | Bin 0 -> 3675 bytes apps/ashadyclock/6.bin | Bin 0 -> 3675 bytes apps/ashadyclock/7.bin | Bin 0 -> 3675 bytes apps/ashadyclock/8.bin | Bin 0 -> 3675 bytes apps/ashadyclock/9.bin | Bin 0 -> 3675 bytes 10 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/ashadyclock/0.bin create mode 100644 apps/ashadyclock/1.bin create mode 100644 apps/ashadyclock/2.bin create mode 100644 apps/ashadyclock/3.bin create mode 100644 apps/ashadyclock/4.bin create mode 100644 apps/ashadyclock/5.bin create mode 100644 apps/ashadyclock/6.bin create mode 100644 apps/ashadyclock/7.bin create mode 100644 apps/ashadyclock/8.bin create mode 100644 apps/ashadyclock/9.bin diff --git a/apps/ashadyclock/0.bin b/apps/ashadyclock/0.bin new file mode 100644 index 0000000000000000000000000000000000000000..0be5abd1596413a8ddaadb0b8cfec52121c4f807 GIT binary patch literal 3675 zcmbVPK}#D!6yB94>ZSH1F|=SyjP&YxQxXD&oKz^9#X}4vusJDsX~8XvhrPNa7=s7~ z3iVgy2PneQLl5nt>%sm3mv-x|Z!$Zx?`0`S{r6a_ts3D? zw>s^=r-2=fqjxo7S#`k(eGxZm8fFZ_p&~VuzpTyb&S2in&CO`qfeLEfzSUprx|7qM zutBv?pNC0Ql_8FxOKRBTteCT&)lQt@NC|7 ztl~@uh!r97^TPqkt`vRu%+}&k#x((f-FRlktGD|*K}%$}YW&Q1+_TO{h$xwpJN>i;OvVU(Gt*~)%|46vNM?5)UXMXI6uBOTq5|u-*@l0qqG89Bs(y))QN^YI zDlYg+^j!tQkWVBf;~s%r`Y#dYp=hUGu!Z=HqR$9+Pqb6jM|>`f@GE*eHm-Pf_79ZT zc0e+X0=@>SjVOgAQ%g`f4G0H9Nml6qSNoVyl2ux_9}p#Q0FODRg*%AWk-Q%dnH zpfZ7(lE9kngc9LE3}K>7Xp5?4LR&PZbV|!YDDA~&;t>v@T%sCbCR1e6Pn0`NCU<<} zQXEn(%GXdz|E1j6a8m9;9uwtaLu=T$A538;9+fJw&A*e0I1HpX5Y_yha$CGggaeof zRSjR$ZD98pQJIV+rI%>q{!1n*N@D5PgTI@8=$dRd#7B$e(Zx}7!KS_T*JT*u2V(kZ~P6pFQd8u literal 0 HcmV?d00001 diff --git a/apps/ashadyclock/1.bin b/apps/ashadyclock/1.bin new file mode 100644 index 0000000000000000000000000000000000000000..54fe59905e461db25a98d9a3492783faba668d5f GIT binary patch literal 3675 zcmcJSziZn-6oBtsTXi7Ro>EyYR8S`&Yi6m$Wb%|PvFKnMY>=l6fkGh)B7@clh1kXz zYAC3GMIdWRK}!p5hj>Z$Vzm+3dXi#%KZyt}96}10ci+8xpPuE_tKNSZ+QVVrm$Wcg zj7tv5Y{!bG_+aNOkHY`}pyt3!c!36Z5^T~t(xWQ?o=IDI(15lK?Mhz1rRP+&UqF4A z1FBqz|l7jAw2OJ~=x)p@fwi}&t1>Hl7K?+oL*mI6eX;f4dQ$l#JH2UCHqZ_AI zaB5xKX!qr=)99@1P3cUIXUA<{K}aS-T2q!LLo;NNj!=YJyAM&Qf@>7|m6A214sJWx za7If$8cNScY{Q;kVvzLTUDs&4MmLUzt|(f>AZfEv&nJc%UQ?MIOn2jd$H%@!&GEJa zDo)QoVUhmeLE`(f=m(Xhb?uhmL17QGAT>Ei8|2n{pLm)iu3@`7i|E6xro!UUSR}8m z$J*X367`nRBu&~F&-q6dDM?842tzt&k>XIO46qGqcT^_RN1a6K&YR-_;b!PLYjz>u$pAeO_2f}Lpo%- zNwPYL)TFyfN;oEwHmUq1kEc^y6Co0zi3ll!xs)c{Op-`KO$a2uxfZU8=w(8@E!l2z zpQT;w;MfM299$Mn>I9Nd6Z{1(&?K5-HQ5y*5t=aFB&|2XT(-d_XOu;gDuKi{xFnMq z&Be0a7a@_FTytxQFqds`_edGcZCV%-r@zkJwrFC4sde?4bD5rWbQ+sIq?=2 j-%9a!6Sb-NV-x>e;&&6TzKm@dzn=$5Y{KR|=I?(2207P9 literal 0 HcmV?d00001 diff --git a/apps/ashadyclock/2.bin b/apps/ashadyclock/2.bin new file mode 100644 index 0000000000000000000000000000000000000000..a95c74b204245656d57e14a9dbb61b8f7b9f6463 GIT binary patch literal 3675 zcmb_e&r2Io5O&)d%qd=~F?h%!#`fyT!$um!Lr%6(Y8DT1Aq$(62QL;(i7DjTptzAG z)PNBG3c;f-!nTJV?7^kf-m6Ppymj`+dpq-XwWU-Z%UgN-<(qG2zIi*9!p=Xfu466S z|DjUo*-h83?|!)ZCpIkE3D((MGTO|p2g25QJ&|qSIT_hLm5aIQwS{WS7@ zyF23lJ$pVsX(zCfe`cgkOB(F!#hf(APD@sdmF#YBPD!om+IaR+N?IGQ*5@bBMJV~| zL{GJ)R%~e zz~04tS?ziVY8L=uU#(9_FPb+9u zVM;ZCm@?XZSwosHo<1qI)nQv5m}y@n)qkenVxgLkwGMDlJSd~8bzuXquyG@yGWlUn zFPiGm)Kl=>Z*)v})r;*d=aNNNa=#d5_#E`nd@`CbrFE;CQB|AQEIRqxOvC2`6PAZo zY&V9v#t`=JcyzlL3yNmMS6MSwSQ&ss@Ky41cttgDlW=@wF1RJ%g)=l|Clnk)i}MNo zvucNe_noiFd;tHDQL4ScIIfLhk68^^PZ6ap8Yxq$WhR{JQj-|J;&kDgEB z(DnpB2@)jK6|YIwcV3D1Y*JUe0PvX|qL|6mCTEsu%dGRz!bb29TP2(|=v-=p{uxrA zinfQ$ghORWF`#xsluA@0aDcGg(3x48ww}%k37ruoLRsT{3SCk~Ufae)gDHutNYRcH zLfarM+(70QQCcR&=}D9jnjkee(q)7YnkubE&m`j#iBjuyD*2c*g4EzDvERxNOMx&e?5N#WdxUq literal 0 HcmV?d00001 diff --git a/apps/ashadyclock/3.bin b/apps/ashadyclock/3.bin new file mode 100644 index 0000000000000000000000000000000000000000..db3821284b5eaeb812807b513dee48f747394279 GIT binary patch literal 3675 zcmbtXF>ljA6efs5J%tHMry`}TSUbB2R0%0lH%i3dT56X5arqDXjclnN(`Dk!St z{t6aY03mr|paWjYj$&FX8}FRFcki7YghX|U&WZi`d*6NUyKBE*>;LoUrLkQ)J~I%< z&yv!i@0p8}#*dNAaXH8od2hyfD}H!7Y^^O@LD!X&#deH!ZT`M7=g;-8@pbmEavUqT zV^3zxkCSJWO6SS$-KAT%jmiB4DYfI>m8HeoH!GcvF|pFGNXfri2%fsV7kl>}7?Y+y zo>5x2gC$j3r@Ol%xpj_+QugDXV&e9e_9P{@mnA58`%`NT5V~G4a--#Z()Dt=ZZJxd zDU*esrc?P}_%f}wjlvVtltT$Y55N(iOFcU!q!e$Kfhgp2 zqO>}rq?r)f`wYA3B>hs#2fnl!CEae*G7)o!JXv4YZF?#;(p6l#3`NXRkXpB?8!@+9oAX?4Y2Mx%#;Q#s>4Yp*EQ6Err{>>OlOL z1))m%_q^cAZU0IN-e?xrZr${DG-?&98<-wY_BN~Aif!_vg;4@!@FXyX0+~wGbiI%4STd>c<PbK zn$G4i3sCHmyfhH824%98+s6$~G{{?#PI@;H9Ciey*GLKWZkE_UiCt3j4n$%DC6+3* z!L@nP0ws1y9k=cCWCKbpFy~M@;|9B}x3b)x64S?teqAWcpkNVkyMY#y zyFam_(jZCZolN8&S6rMNmw&nEKY#iIB=d^L literal 0 HcmV?d00001 diff --git a/apps/ashadyclock/4.bin b/apps/ashadyclock/4.bin new file mode 100644 index 0000000000000000000000000000000000000000..b59e41a0dbadabd7620d0a4f508d4529ab07135e GIT binary patch literal 3675 zcmcImK}#D^5Y9@Inv*>g(NJg)8tXOZRVo2tPr0eVLn0)QoP-8?%1V%u9t|5@mk=-@ z#9z_7ErmT5S}#k%-iwPa-a2oyZ+GT7As$+I$gIguzVFR^-;8CfSpVVJC?}5bZ}ogv zPYw^G@0kHQ_b6?gs^?$5ntT4{eRT8(E>+2V`Rqlint2zVU9TO#j)Da}zm)AbsgyIH za#Af9eH7>c}X25_`-uI=A2-!aTPt-Dq42vm@;VshUBYB_C`tLAgnjFY`^3*1cx zC*7?BTdOT6IvBN&qGPb7aR z-)X=>QmOd_AzXL?`k|s~1S1qh1oagO7hJ(f9D3abei2`njKL5VsQj^BCb5_-lp1c% zDBkr}6!|}f)CBvb@|Q4hLIH_r1eHwY1V~CF;S5m>LRM~DzMgOtw^YHM!{hi@XUqZpiA@&Dv<;_CwODo(;d zY6GPB6+Q?d&FV=I?`%jQUOJMP!U^#f@%k6Wc-UQt{}iBb#2CROcMw70nJ_o$CMjM- z9M9n~94=}qOcs>eXVwNvmS0g6vg{mJ1jsLhmO-4HA9ltXw!0}?6F@?D&aV~0a3?r9p@rTRJ-LynD`-9lhlI>rvJMZ|U)#AcVe| zai|An;t23Zd07TX3@)#^o~|0VSKYnsyfsP{8~tx`UCj^Gm5e{boJr>1+u?GYy!Bd} z$B(Oo&vxzx#2<)NJ{5^wc38OwPw`}yUvU1DN^ct zd05)cc77Nw4GL?NlZ!n=l`6jsySQfMa<-r(ieX)HvqME`Htg;dd+xU3jtn;{tcl?Q z;MEFJy7Z5LNewB9qP-b&YZOeWWdDnCJIRY1W3@-1d?fp*wReU+U_Qf&jPX{-s&&S7 zI74lSqS3LCQbDsOz$fpn_FUiw^(22gX+dF42Ej}GxJzG%(|}_Q?zN-yxF!m_-c*#n z!o7HG!|grmO8g7OXHQZ(H0PbMz=3o6_!P>1D`*Lh0+hudkeeI&iwO8ha}d+M4xW%t z8mD*Xy^H(p&|F}GIGqPYsggyN^s^}E|&@uW)s|f33!Y>pi$?hDajt-&K+~{Q6****mP`f zfvHqtl%S>OM5sii)N2VfvTDn8HWHzdjbm>n`;3yBxutV-J-Bt=VU%#dl}Io~c}s-q zVtZc_9Dri3IYsmKQ*r%7_D)esao|ZV+nYJJ8-I0q61Pk;T$oC{y&v#Bkg25fi3(+tzvSCk^`z5h z%b`#pK1L;*0*sPs0KLQp6KSL#$+wi_2o#;0Ss{=t&4KYv-zbRSWC~=a_dtabB;n!m z)t!*R_PC`W+YmqjS@ z!vyzEOF_Z9(l|g2{F?-(cp1R_r%wbZu)pw#0P)RPgMO=O76o>Sb1Z^h3L=CEa4^LW Vk+Xt=0?^?1$jh>?=w<(3{{hn|y?p=x literal 0 HcmV?d00001 diff --git a/apps/ashadyclock/6.bin b/apps/ashadyclock/6.bin new file mode 100644 index 0000000000000000000000000000000000000000..d45f451b6543db8b172c4c2903c7e587941dc55a GIT binary patch literal 3675 zcmbVP&ui0Q7*40H?ZtVTT@@TsJG^>MWn&=Zw2Qcf9oj$(?a4#0i-d~R(^fi~l_IP% z$o`65JUJ1<4j%LpLB*>qYS_&;KfX8bn>Ixpp=2Z9ljnWNjrfRsSRe?AX%JVt!?m z&n;vOqrOtg7$eF3##!lK&wFc)+;XdQ`)vQv!(k)meZ2~yOwlQkmU3?fbzvnrR)-`jj zu@q5i0x@%08{YgBzfN}FgE#;JpREd9rNU%fn2hqo3@=62HrsO={3@n=*U zM5v8-_pODtH7;0P_-tFFc5m!o)*UjP{=2cHX8S5Y`K3b9cNcewU!ac>0Y~^1112HymnFW+OsJHfmsujHthRT2odIqEd;N6 z-^Ictt07X7|0J0pw_RbU1Lp~)^qZog2Rb$`gd6#Sz@DH=I$gWv&`F0PETP(BxyvR+ zl@1*`n$9Lgl{)VUr6We^IHq(-#_<@X)0vc7oRTbB#iNv-GD@-(YKNtSpCY`ARbl|3M4^NM%HBt!QVseI1P@y7tb8CklX>#Q4y-Fm08_kc0Ck<>Nl!=wuX|0+gE(+=jNS%H)I4O&X6)@jdQ8yUb111# zJCOo+=^MkNAOYV-tnjHI$ zB^Nq`ZZ2qVmfTa1QNqNr+J|x@w#3BUqvioh)DK%ubfRG26i}k!6(KYpX(P; zfN-UkNgMnSMS!WqV`6$UDN#PwxFz=7^nNo{jETZjA`*?;=*jfT^~>ZRP9|6;d>2Uc zTeQIq6qYzjsU_3~Fs*KxFgvdTOV3%)PB9elqmDLCDb zZcHiDK|w`k^L?U}4_WX-s05C0CuT*T72qWQ7vKjHfC3zG2n^okzp=xE25ux$hm-~i zoV`gv;Cw-Fi!2`+klW-34K|Yla&zOeO IPtN?yU&?u?p8x;= literal 0 HcmV?d00001 diff --git a/apps/ashadyclock/7.bin b/apps/ashadyclock/7.bin new file mode 100644 index 0000000000000000000000000000000000000000..f847816ab1b56f2d4f001f154829accd5dac2e48 GIT binary patch literal 3675 zcmc&%F>BjE6t+z5+LJT6vFYH!aoV-BQerZB%9hAvumv_)Q%bW&L71YBF%FT1FvJj0 ze?@*kOF>-P zueq{elukUlT~Ajeqb*Hpp%tjFJlIeq{VvSmp4VvQ`>niW82!d(sR%xKN@l)ae9a(j ztzH#(RdaVxTw7HFNP}X#UjXG`q1jcfnmXwY zs%tr$YYS)80x)%W1xItwpVMm8e-14`q715C63Xfh*FHFf%Lo$5kE6Mc>N*fgB{3b% zbjq&%IJgbBn|-aqw?KzHL!-W_^eCiB@Q!?#Xm30Y>7GZ3JC`e($!$3?$oj|AfFAD3 zXGr34tZo)a*WR-*OZ$2{q#Fjw+u@Li?hsQ}lg-sf4vFY4%GJ<1WHOlqUs#H+K*CX2 z*BP+_nD(M?4?)7;cv!1@tS{-|3f}^xrI7h3+s!CTJ%Dr|K)PIgrkR|ePJ*ei0+`}v zB4+G}QG-(9p`LdHc#yh)bpQ%J+^xuG=`RG-(0)Wl+d<71r!#c9e>F#x11)=7Rt&0?}eYo>eNQ(m9x)JQkr z#x#Ob)WOo@8o{umq9W05Xy3+bggReSW1~de?jo)cOezeBsYMz=+wCBYq*1#|)`$pc zhBU(EkATG*oymLFJw@OGdv%ipkCpIE8Xe4?1 nXBv@sj-2zm7Ag{aIZ2j3j5c)7LCN9KU?d6uG!6Lg|I7IWvR)w? literal 0 HcmV?d00001 diff --git a/apps/ashadyclock/8.bin b/apps/ashadyclock/8.bin new file mode 100644 index 0000000000000000000000000000000000000000..deb47c3c03a5951ba918b96d688e42921ff454af GIT binary patch literal 3675 zcmb7HL2KJc6t-MjZT4bc8f;(cgJaWc&q_%!J@}Lqmd2t7%V2?Y${|o#uojVnt_coN zf(azuK=LaLd(E<-?O_kwix1nf*Ai_ja_bvKGw(geT38r_Y&4&~_q}hv8BKbv$^RcO zdL1MFH2LX2=8jJ0ULwXgAHQP6ksSZzJa!KvuQ$uy*o~US$5ylUL@#RZe{Jslz65H^ zD{NOctZJ>KYX$w0UrruEb)&+UhUWW@-q3=g)qGZX2({%s`lDJK9`;LBt)y>^bZxu* zZ9zbRQ*(4*^G{cTVhZ@I0CKU%yuUyA{ZgS1l&sZy+3&-6?cK6xD$OtZjy|>8`@@T= z7WhuP@kIBHJ1WBZzpsOhQMGPW`*1Dko7So}Jp6IMWHZC(`1gXJG=eC1scui@ZuCGxxv2GE(%susKKlLXw|fX zdO6%2hBZ6fv_ljA*(KF=qvsa@GIg&`-K(hs1;S0xaN0Feo%eMZns!((2WB}CAU50p zt8fQR)iK_Q=>U?B24Fhv6!tQbg0CfWfg^?>ChyB|GgCG=i$6+`dnmjbu~cB-;dF(Q z-n>Oh(esQ9B4o(d(aTKm_2jdp!EsFcSW@a3w*=ujqV&d+($V}4p)^bWB(TZ@dvxx( zK`XtEqzAmOgbA!%0!t{7(wsP2CqKv1;U`LM0NnK`B~)qeH&V_4qjZUs?ii(?2_@CI zjzKs8B`Uu15~DQmsQ5ecQRWj$={jQK$I43{p>&+g2_>|5g;E;FRQv$MJJ>H)MmE;q4Qm@O4lqPmtYsHN47W3~|-F-vDc?aWCi0aQ1lB4^db%8+SawwQk; zr5ScD4+nw{jU-CTQHiSEF}|TPMD26sZLmSYLI6EL4Ung{iwV%0`VQRx+iFiPT$r=r`1xiY#GrF4qrDcud2>^#K^b&}lHI5kob`!da z6(wc>SY>yZC+H=%Y%f``kPVJxENqUSkrLXQQR3?bcN3-(no1CxseEH95sBO@Gyqo# z`2gk)9+p@+q-ziYDwpzdGBgLulaP}i>2$ou(pnQ{Z%RpRln^*D?!FysyL}kw9W)J+ir%in#yc z##JO9K&2-20lAdq3)Nyhy@gdXr?ys@D_h{4Hs4PaK#>VbqboXKMLHyb$AmA9r z?n*4$jzwXTNk@%AW=f%odslJ5NhIU#oN8{z4Tia?Ut*|+wFDsJL3PEbCV&!5V!N4r zg=nQazZO%fnYx$A0SHh6G|hNf))Dgs#Td>TgK8$Nj$r^!vYIfePp#+jb6LlRjb={k zr{aAVq@B~+CDnXNl*GehCoNK0pC1a093vyTYrp*4f4u zkg2r+iVc8blaJP#S6$Y*0FXWdVQ6xswD-aW$|c(vIGWs12liXMoy^Nkk5a=51Yv(X z5tQ^lhz7yYdYsaN62b?dnp~wrTb5JOPQ6NJ;GB{<{e~!wl<80TQ&0l65v46#N34P= zRi`uYJ<&L&tn&j=s_W#Zq=Yz3IzCFCEsK~#-y!0ka+L@NptOoa<6ioQ(uHKWV|xd8 zL}ej<5iU9HoT#K#iS1N~kV&e2(o=A}XQN2TYku z9Y0 z&ILV*2SO+g zDIJ74tnto;m9r-V{~s%M$~zZI;|~&df>jcffDZ>@6P)C-b8+Mz2X`(=gk*s*!IXIC z7D&E9m>^1`bEzlGLN4Znt-v;cFhOe9Lc;`ksm?pMK#Zi|N@eHrJ9pL~Wn5`U=bn&C zt9Q9`@7B3@2$P<}A34N4SR!=icEiI2Vv~E4sDw_9d2-ErnS{5SCST6vVj`4A@+nBX zgia0RWVb*M9YM)ZVr@dU3yX@25(+el56P{>OA8N^y6`sZ?qI>epWdy+)*Q$Lz}%!n zu!dEK??8v{P}FxHv8p630C|c%m>Sc>DteI0|0C<_*dU>f**mD-|3g zV4(mU(EKxtrd37^o^UX~j}Rm=98J!7C2&nQ|4ank+8epoxA@@9&CIi95s$tFxBvVL DI0mlD literal 0 HcmV?d00001 From ce2e7c1c48aa92e07014c5894150531cfea5c27e Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sat, 29 Jun 2024 18:04:56 +0200 Subject: [PATCH 12/57] Update metadata.json --- apps/ashadyclock/metadata.json | 35 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/apps/ashadyclock/metadata.json b/apps/ashadyclock/metadata.json index e528924cc..cd1bf9d4d 100644 --- a/apps/ashadyclock/metadata.json +++ b/apps/ashadyclock/metadata.json @@ -1,24 +1,17 @@ -{ "id": "ashadyclock", - "name": "A Shady Clock", - "shortName":"Shady Clk", - "icon": "app.png", - "version":"0.01", - "description": "A nice clock with drop shadow. Hours and minutes. Create any color combination with the existing images by changing only the app hex values.", - "type": "clock", - "tags": "clock", - "supports": ["BANGLEJS","BANGLEJS2"], +{ + "id": "distortclk", + "name": "Distort Clock", + "shortName":"Distort Clock", + "version": "0.03", + "description": "A clockface", + "icon": "app.png", + "type": "clock", + "tags": "clock", + "supports": ["BANGLEJS2"], + "allow_emulator": true, + "readme":"README.md", "storage": [ - {"name":"ashadyclock.app.js","url":"app.js"}, - {"name":"ashadyclock.img","url":"app-icon.js","evaluate":true}, - {"name":"ashadyclock.0.bin","url":"0.bin"}, - {"name":"ashadyclock.1.bin","url":"1.bin"}, - {"name":"ashadyclock.2.bin","url":"2.bin"}, - {"name":"ashadyclock.3.bin","url":"3.bin"}, - {"name":"ashadyclock.4.bin","url":"4.bin"}, - {"name":"ashadyclock.5.bin","url":"5.bin"}, - {"name":"ashadyclock.6.bin","url":"6.bin"}, - {"name":"ashadyclock.7.bin","url":"7.bin"}, - {"name":"ashadyclock.8.bin","url":"8.bin"}, - {"name":"ashadyclock.9.bin","url":"9.bin"} + {"name":"distortclk.app.js","url":"app.js"}, + {"name":"distortclk.img","url":"app-icon.js","evaluate":true} ] } From 250b6a6b26d485a0c1f141b0be4945ff0fb96838 Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sat, 29 Jun 2024 18:05:14 +0200 Subject: [PATCH 13/57] Update metadata.json --- apps/ashadyclock/metadata.json | 35 ++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/apps/ashadyclock/metadata.json b/apps/ashadyclock/metadata.json index cd1bf9d4d..e528924cc 100644 --- a/apps/ashadyclock/metadata.json +++ b/apps/ashadyclock/metadata.json @@ -1,17 +1,24 @@ -{ - "id": "distortclk", - "name": "Distort Clock", - "shortName":"Distort Clock", - "version": "0.03", - "description": "A clockface", - "icon": "app.png", - "type": "clock", - "tags": "clock", - "supports": ["BANGLEJS2"], - "allow_emulator": true, - "readme":"README.md", +{ "id": "ashadyclock", + "name": "A Shady Clock", + "shortName":"Shady Clk", + "icon": "app.png", + "version":"0.01", + "description": "A nice clock with drop shadow. Hours and minutes. Create any color combination with the existing images by changing only the app hex values.", + "type": "clock", + "tags": "clock", + "supports": ["BANGLEJS","BANGLEJS2"], "storage": [ - {"name":"distortclk.app.js","url":"app.js"}, - {"name":"distortclk.img","url":"app-icon.js","evaluate":true} + {"name":"ashadyclock.app.js","url":"app.js"}, + {"name":"ashadyclock.img","url":"app-icon.js","evaluate":true}, + {"name":"ashadyclock.0.bin","url":"0.bin"}, + {"name":"ashadyclock.1.bin","url":"1.bin"}, + {"name":"ashadyclock.2.bin","url":"2.bin"}, + {"name":"ashadyclock.3.bin","url":"3.bin"}, + {"name":"ashadyclock.4.bin","url":"4.bin"}, + {"name":"ashadyclock.5.bin","url":"5.bin"}, + {"name":"ashadyclock.6.bin","url":"6.bin"}, + {"name":"ashadyclock.7.bin","url":"7.bin"}, + {"name":"ashadyclock.8.bin","url":"8.bin"}, + {"name":"ashadyclock.9.bin","url":"9.bin"} ] } From 4c0d309dd8d8905689d1b78de81be57315febba0 Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sat, 29 Jun 2024 18:07:16 +0200 Subject: [PATCH 14/57] Update metadata.json --- apps/ashadyclock/metadata.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/ashadyclock/metadata.json b/apps/ashadyclock/metadata.json index e528924cc..b0333deac 100644 --- a/apps/ashadyclock/metadata.json +++ b/apps/ashadyclock/metadata.json @@ -6,6 +6,8 @@ "description": "A nice clock with drop shadow. Hours and minutes. Create any color combination with the existing images by changing only the app hex values.", "type": "clock", "tags": "clock", + "allow_emulator": true, + "screenshots": [{"url":"screenshot.png"}], "supports": ["BANGLEJS","BANGLEJS2"], "storage": [ {"name":"ashadyclock.app.js","url":"app.js"}, From 808cf03252d74f21232a1ea9fad5c5c77f3e4704 Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sat, 29 Jun 2024 18:11:59 +0200 Subject: [PATCH 15/57] Update metadata.json --- apps/ashadyclock/metadata.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/ashadyclock/metadata.json b/apps/ashadyclock/metadata.json index b0333deac..da06a8768 100644 --- a/apps/ashadyclock/metadata.json +++ b/apps/ashadyclock/metadata.json @@ -3,11 +3,11 @@ "shortName":"Shady Clk", "icon": "app.png", "version":"0.01", - "description": "A nice clock with drop shadow. Hours and minutes. Create any color combination with the existing images by changing only the app hex values.", + "description": "A nice clock with drop shadow. Hours and minutes. Create any color combination with the existing images by changing only the app color values.", "type": "clock", "tags": "clock", "allow_emulator": true, - "screenshots": [{"url":"screenshot.png"}], + "screenshots": [{"url":"screenshot.png"},{"url":"screenshot-1.png"}], "supports": ["BANGLEJS","BANGLEJS2"], "storage": [ {"name":"ashadyclock.app.js","url":"app.js"}, From 7165c504e7fe69f03cca1c16174d742dc347b276 Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sat, 29 Jun 2024 18:22:32 +0200 Subject: [PATCH 16/57] Add files via upload --- apps/ashadyclock/screenshot-1.png | Bin 0 -> 4405 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/ashadyclock/screenshot-1.png diff --git a/apps/ashadyclock/screenshot-1.png b/apps/ashadyclock/screenshot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..31a46610438be189c1ba775966b8b7935d878f44 GIT binary patch literal 4405 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 Date: Sat, 29 Jun 2024 18:40:23 +0200 Subject: [PATCH 17/57] Update app.js --- apps/ashadyclock/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ashadyclock/app.js b/apps/ashadyclock/app.js index d7ff79594..b0101dbec 100644 --- a/apps/ashadyclock/app.js +++ b/apps/ashadyclock/app.js @@ -14,7 +14,7 @@ for (i=0;i<10;i++) { { width : 98, height : 100, bpp : 3, transparent: 4, - buffer : require("Storage").read(i + ".bin") + buffer : require("Storage").read("ashadyclock".i + ".bin") }; images[i] = image; } From ca2537d894d5e76dfbc19a15514999910bdc5c1c Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sat, 29 Jun 2024 18:43:49 +0200 Subject: [PATCH 18/57] Update app.js --- apps/ashadyclock/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ashadyclock/app.js b/apps/ashadyclock/app.js index b0101dbec..b86cee52f 100644 --- a/apps/ashadyclock/app.js +++ b/apps/ashadyclock/app.js @@ -14,7 +14,7 @@ for (i=0;i<10;i++) { { width : 98, height : 100, bpp : 3, transparent: 4, - buffer : require("Storage").read("ashadyclock".i + ".bin") + buffer : require("Storage").read("ashadyclock.".i + ".bin") }; images[i] = image; } From 55735966c0677575721a017ac2763d67c7390fd4 Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sat, 29 Jun 2024 18:48:56 +0200 Subject: [PATCH 19/57] Update metadata.json --- apps/ashadyclock/metadata.json | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/ashadyclock/metadata.json b/apps/ashadyclock/metadata.json index da06a8768..58006f5ac 100644 --- a/apps/ashadyclock/metadata.json +++ b/apps/ashadyclock/metadata.json @@ -6,7 +6,6 @@ "description": "A nice clock with drop shadow. Hours and minutes. Create any color combination with the existing images by changing only the app color values.", "type": "clock", "tags": "clock", - "allow_emulator": true, "screenshots": [{"url":"screenshot.png"},{"url":"screenshot-1.png"}], "supports": ["BANGLEJS","BANGLEJS2"], "storage": [ From 283541fa1d3e19da2f7436abdba5a59cd08db963 Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sat, 29 Jun 2024 18:54:42 +0200 Subject: [PATCH 20/57] Update app.js --- apps/ashadyclock/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ashadyclock/app.js b/apps/ashadyclock/app.js index b86cee52f..474886795 100644 --- a/apps/ashadyclock/app.js +++ b/apps/ashadyclock/app.js @@ -14,7 +14,7 @@ for (i=0;i<10;i++) { { width : 98, height : 100, bpp : 3, transparent: 4, - buffer : require("Storage").read("ashadyclock.".i + ".bin") + buffer : require("Storage").read("ashadyclock." + i + ".bin") }; images[i] = image; } From 19d94c11d19a052e929918031bd92415ac27270a Mon Sep 17 00:00:00 2001 From: thyttan <6uuxstm66@mozmail.com⁩> Date: Sun, 30 Jun 2024 18:03:54 +0200 Subject: [PATCH 21/57] delaylock: delay lock 5 sec after backlight off New bootloader app for delaying the locking of the touchscreen to 5 seconds after the backlight turns off. Giving you the chance to interact with the watch without having to press the hardware button again. Inspired by the conversation between Gordon Williams and user156427 linked here: https://forum.espruino.com/conversations/392219/ --- apps/delaylock/ChangeLog | 1 + apps/delaylock/README.md | 23 +++++++++++++++++++++++ apps/delaylock/app.png | Bin 0 -> 1350 bytes apps/delaylock/boot.js | 21 +++++++++++++++++++++ apps/delaylock/metadata.json | 13 +++++++++++++ 5 files changed, 58 insertions(+) create mode 100644 apps/delaylock/ChangeLog create mode 100644 apps/delaylock/README.md create mode 100644 apps/delaylock/app.png create mode 100644 apps/delaylock/boot.js create mode 100644 apps/delaylock/metadata.json diff --git a/apps/delaylock/ChangeLog b/apps/delaylock/ChangeLog new file mode 100644 index 000000000..5560f00bc --- /dev/null +++ b/apps/delaylock/ChangeLog @@ -0,0 +1 @@ +0.01: New App! diff --git a/apps/delaylock/README.md b/apps/delaylock/README.md new file mode 100644 index 000000000..da2ef3cda --- /dev/null +++ b/apps/delaylock/README.md @@ -0,0 +1,23 @@ +# Delayed Locking + +Delay the locking of the touchscreen to 5 seconds after the backlight turns off. Giving you the chance to interact with the watch without having to press the hardware button again. + +## Usage + +Just install and the behavior is tweaked at boot time. + +## Features + +- respects the LCD Timeout and Brightness as configured in the settings app. + +## Requests + +Tag @thyttan in an issue to https://gitbub.com/espruino/BangleApps/issues to report problems or suggestions. + +## Creator + +thyttan + +## Acknowledgements + +Inspired by the conversation between Gordon Williams and user156427 linked here: https://forum.espruino.com/conversations/392219/ diff --git a/apps/delaylock/app.png b/apps/delaylock/app.png new file mode 100644 index 0000000000000000000000000000000000000000..7bdce945db62321b6d5053ba6adbfa223d2f14b1 GIT binary patch literal 1350 zcmV-M1-bf(P)M_w3HcA8ZI+fhqAj!RbWX;p(~clE=aar;HfWK&ahAlgQce^C|B$nttw?xljiC!h) zeP()Hh|YsS<~eG+0frCn!V*(~5wq-;7t_}5%Ut3=!GqiS5D&r{BUq@YRC^C-sML0#8$}%#2BD`8LA7wh(4D9^4^m`bh+x) z2FH=Go3PT7s@2Iga3DVt5zqMRu)bI$2YHS)9vCjfoKQ^wmg{@~0mmU&`}q{WY74+W z-+E)UMIMVbPWA-bi0M&HfLmhj2mbT*Ka6pa4jdjU{+Elz;o+WfaOM+*qSpxYO=1~%lDqh-{xo*rNqJ)5pRSeDbY;`L`npoK;N#mYCj%Z`ir)sPO z8Rafu?5YWHAv!OzO*F8+zRx0Ly%bS|Bhy!Xlri7m zj?8Em*+W1FpQY3UmKY&gvPKmU^(JOYDYXG;Uj}K!9$NsSM^nQw*S>7C z{c5uIK&1Gpwfnc6lFI8^R#??>!n7hfA!zNs2k``;tfztmaC|pbSO*!@v@E; zMhwjspMd&Kds*l@S;WSCRkMX8_KoZ_;_ieAAS92o1Mu{uaKXR*H+x~8$!_JT5B+i?wNiDHly9~({WcmIv%`=<80vJj(b z+8t>xAwx(h1TS{=g;ki^HrrmmfUB5@PN;y!w%PI8<{2>5Pk~T924~KVz$Ya`@~J2` z$}e`{(0#-P#1646WU};>2U>{OE}^BA*N>GRFAVm7UXcR|%5TEi^P}+jg$bytn`jB$ zM-ov^VqVkI#t08}DTQ9V|yubaAWGS6VMWzJ`zE8WiJE8jWmMTEk9OG=?q zMvZZn(d?oMSpX@)R5FlLAU*J(1e$-;TKOX5glTd)kxPnPR;FkdS)1*boRaf)9Vh&y z<@g^HdXWX<{X*#tuLv}sQ-F@fT2H)8+5_?|+HB7lE_dpQ&uiPS$)Rs1twdK9nNviQ z_Ji8S*r8+jhyG?xSW0R$mkj7Qp+BG-y^(4@X{3=x8q}unAMPu)uw890ZU6uP07*qo IM6N<$f`CV!Z literal 0 HcmV?d00001 diff --git a/apps/delaylock/boot.js b/apps/delaylock/boot.js new file mode 100644 index 000000000..87dcbf186 --- /dev/null +++ b/apps/delaylock/boot.js @@ -0,0 +1,21 @@ +{ + let backlightTimeout = Bangle.getOptions().backlightTimeout; + let brightness = require("Storage").readJSON("setting.json", true); + brightness = brightness?brightness.brightness:1; + + Bangle.setOptions({ + backlightTimeout: backlightTimeout, + lockTimeout: backlightTimeout+5000 + }); + + let turnLightsOn = (_,numOrObj)=>{ + if (!Bangle.isBacklightOn()) { + Bangle.setLCDPower(brightness); + if (typeof numOrObj !== "number") E.stopEventPropagation(); // Touches will not be passed on to other listeners, but swipes will. + } + }; + + setWatch(turnLightsOn, BTN1, { repeat: true, edge: 'rising' }); + Bangle.prependListener("swipe", turnLightsOn); + Bangle.prependListener("touch", turnLightsOn); +} diff --git a/apps/delaylock/metadata.json b/apps/delaylock/metadata.json new file mode 100644 index 000000000..dff4d9219 --- /dev/null +++ b/apps/delaylock/metadata.json @@ -0,0 +1,13 @@ +{ "id": "delaylock", + "name": "Delayed Locking", + "version":"0.01", + "description": "Delay the locking of the screen to 5 seconds after the backlight turns off.", + "icon": "app.png", + "tags": "settings, configuration, backlight, touchscreen, screen", + "type": "bootloader", + "supports" : ["BANGLEJS2"], + "readme": "README.md", + "storage": [ + {"name":"delaylock.boot.js","url":"boot.js"} + ] +} From ff574897dd1e9a8fde40592787354218731a6557 Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sun, 30 Jun 2024 21:52:29 +0200 Subject: [PATCH 22/57] Update app.js --- apps/ashadyclock/app.js | 119 ++++++++++++++++++++++++---------------- 1 file changed, 72 insertions(+), 47 deletions(-) diff --git a/apps/ashadyclock/app.js b/apps/ashadyclock/app.js index 474886795..90f147bc9 100644 --- a/apps/ashadyclock/app.js +++ b/apps/ashadyclock/app.js @@ -1,3 +1,9 @@ +var settings = Object.assign({ + // default values + showWidgets: false, + alternativeColor: false, +}, require('Storage').readJSON("ashadyclock.json", true) || {}); + let drawTimeout; // schedule a draw for the next minute function queueDraw() { @@ -8,28 +14,31 @@ function queueDraw() { }, 60000 - (Date.now() % 60000)); } -let images = new Array(10); -for (i=0;i<10;i++) { - let image = - { - width : 98, height : 100, bpp : 3, - transparent: 4, - buffer : require("Storage").read("ashadyclock." + i + ".bin") - }; - images[i] = image; +let palBottom; +if (settings.alternativeColor) { + palBottom = new Uint16Array(E.toArrayBuffer(E.toFlatString(new Uint16Array([ + g.toColor("#000"), + g.toColor("#000"), + g.toColor("#0FF"), + g.toColor("#0FF"), + g.toColor("#00F"), + g.toColor("#000"), + g.toColor("#00F"), + g.toColor("#000") + ]).buffer))); +} else { + palBottom = new Uint16Array(E.toArrayBuffer(E.toFlatString(new Uint16Array([ + g.toColor("#000"), + g.toColor("#000"), + g.toColor("#F00"), + g.toColor("#FF0"), + g.toColor("#00F"), + g.toColor("#000"), + g.toColor("#FF0"), + g.toColor("#000") + ]).buffer))); } -let palBottom = new Uint16Array(E.toArrayBuffer(E.toFlatString(new Uint16Array([ - g.toColor("#000"), - g.toColor("#000"), - g.toColor("#F00"), - g.toColor("#FF0"), - g.toColor("#00F"), - g.toColor("#000"), - g.toColor("#FF0"), - g.toColor("#000") - ]).buffer))); - let palTop = new Uint16Array(E.toArrayBuffer(E.toFlatString(new Uint16Array([ g.toColor("#FFF"), g.toColor("#000"), @@ -41,41 +50,57 @@ let palTop = new Uint16Array(E.toArrayBuffer(E.toFlatString(new Uint16Array([ g.toColor("#000"), ]).buffer))); +let xOffset = (g.getWidth() - 176) / 2; +let yOffset = (g.getHeight() - 176) / 2; + +function drawTop(d0, d1) { + if (settings.showWidgets && g.getHeight()<=176) { + drawNumber(d0, 82 + xOffset, 24 + yOffset, palTop, {scale: 0.825}); + drawNumber(d1, 13 + xOffset, 24 + yOffset, palTop, {scale: 0.825}); + } else { + drawNumber(d0, 80, 0, palTop); + drawNumber(d1, -1, 0, palTop); + } +} + +function drawBottom(d0, d1) { + if (settings.showWidgets && g.getHeight()<=176) { + drawNumber(d1, 82 + xOffset, 92 + yOffset, palBottom, {scale: 0.825}); + drawNumber(d0, 13 + xOffset, 92 + yOffset, palBottom, {scale: 0.825}); + } else { + drawNumber(d1, 80, 75, palBottom); + drawNumber(d0, -1, 75, palBottom); + } +} + +function drawNumber(number, x, y, palette, options) { + let image = + { + width : 98, height : 100, bpp : 3, + transparent: 4, + buffer : require("Storage").read("ashadyclock." + number +".bin") + }; + image.palette = palette; + g.drawImage(image, x, y, options); +} + function draw() { - - // work out how to display the current time - let d = new Date(); - - g.setColor(0,0,0); - g.fillRect(0,0,g.getWidth(),g.getHeight()); - - let xOffset = (g.getWidth() - 176) / 2; - let yOffset = (g.getWidth() - 176) / 2; - - let imgUR = images[d.getMinutes() % 10]; - let imgUL = images[Math.floor(d.getMinutes()/10)]; - imgUR.palette = palBottom; - imgUL.palette = palBottom; - g.drawImage(imgUR, 75 + xOffset, 77 + yOffset); - g.drawImage(imgUL, 0 + xOffset, 77 + yOffset); - - let imgOR = images[d.getHours() % 10]; - let imgOL = images[Math.floor(d.getHours()/10)]; - imgOR.palette = palTop; - imgOL.palette = palTop; - g.drawImage(imgOR, 75 + xOffset, 0 + yOffset); - g.drawImage(imgOL, 0 + xOffset, 0 + yOffset); + let d = new Date(); + g.clearRect(0, settings.showWidgets ? 24 : 0, g.getWidth(),g.getHeight()); + drawBottom(0, 5); + drawTop(0, 5); queueDraw(); } -// Clear the screen once, at startup g.clear(); // draw immediately at first draw(); // Show launcher when middle button pressed Bangle.setUI("clock"); -// Load widgets -Bangle.loadWidgets(); -Bangle.drawWidgets(); + +if(settings.showWidgets) { + Bangle.loadWidgets(); + Bangle.drawWidgets(); +} From b1cae599e41e403fcbaf35aa0e675381dce005b0 Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sun, 30 Jun 2024 21:53:05 +0200 Subject: [PATCH 23/57] Create settings.js --- apps/ashadyclock/settings.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 apps/ashadyclock/settings.js diff --git a/apps/ashadyclock/settings.js b/apps/ashadyclock/settings.js new file mode 100644 index 000000000..eef57e519 --- /dev/null +++ b/apps/ashadyclock/settings.js @@ -0,0 +1,32 @@ +(function(back) { + var FILE = "ashadyclock.json"; + // Load settings + var settings = Object.assign({ + showWidgets: false, + alternativeColor: false, + }, require('Storage').readJSON(FILE, true) || {}); + + function writeSettings() { + require('Storage').writeJSON(FILE, settings); + } + + // Show the menu + E.showMenu({ + "" : { "title" : "Shady Clck" }, + "< Back" : () => back(), + 'Show Widgets': { + value: !!settings.showWidgets, // !! converts undefined to false + onchange: v => { + settings.showWidgets = v; + writeSettings(); + } + }, + 'Blue Color': { + value: !!settings.alternativeColor, // !! converts undefined to false + onchange: v => { + settings.alternativeColor = v; + writeSettings(); + } + }, + }); +}) From da0c4a62343fd5f1d25a3ede6218555eba308cbd Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sun, 30 Jun 2024 21:57:58 +0200 Subject: [PATCH 26/57] Update metadata.json --- apps/ashadyclock/metadata.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/ashadyclock/metadata.json b/apps/ashadyclock/metadata.json index 58006f5ac..f360b4f90 100644 --- a/apps/ashadyclock/metadata.json +++ b/apps/ashadyclock/metadata.json @@ -20,6 +20,8 @@ {"name":"ashadyclock.6.bin","url":"6.bin"}, {"name":"ashadyclock.7.bin","url":"7.bin"}, {"name":"ashadyclock.8.bin","url":"8.bin"}, - {"name":"ashadyclock.9.bin","url":"9.bin"} - ] + {"name":"ashadyclock.9.bin","url":"9.bin"}, + {"name":"ashadyclock.settings.js","url":"settings.js"}, + ], + "data": [{"name":"ashadyclock.json"} } From c79a70e1725857f841cdd026a512281fa2dfb4a9 Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sun, 30 Jun 2024 21:59:59 +0200 Subject: [PATCH 27/57] Update metadata.json --- apps/ashadyclock/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ashadyclock/metadata.json b/apps/ashadyclock/metadata.json index f360b4f90..c74f0ff2f 100644 --- a/apps/ashadyclock/metadata.json +++ b/apps/ashadyclock/metadata.json @@ -23,5 +23,5 @@ {"name":"ashadyclock.9.bin","url":"9.bin"}, {"name":"ashadyclock.settings.js","url":"settings.js"}, ], - "data": [{"name":"ashadyclock.json"} + "data": [{"name":"ashadyclock.json"}] } From 8a77119c870f91d321fe8177a0b12fa7bcea86c7 Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sun, 30 Jun 2024 22:01:47 +0200 Subject: [PATCH 28/57] Update metadata.json --- apps/ashadyclock/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ashadyclock/metadata.json b/apps/ashadyclock/metadata.json index c74f0ff2f..1072af13f 100644 --- a/apps/ashadyclock/metadata.json +++ b/apps/ashadyclock/metadata.json @@ -21,7 +21,7 @@ {"name":"ashadyclock.7.bin","url":"7.bin"}, {"name":"ashadyclock.8.bin","url":"8.bin"}, {"name":"ashadyclock.9.bin","url":"9.bin"}, - {"name":"ashadyclock.settings.js","url":"settings.js"}, + {"name":"ashadyclock.settings.js","url":"settings.js"} ], "data": [{"name":"ashadyclock.json"}] } From 7f616e01d3b2411d8e65efecefc2bb6422ec63b6 Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sun, 30 Jun 2024 22:07:53 +0200 Subject: [PATCH 29/57] Update app.js --- apps/ashadyclock/app.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/ashadyclock/app.js b/apps/ashadyclock/app.js index 90f147bc9..5228ef9f9 100644 --- a/apps/ashadyclock/app.js +++ b/apps/ashadyclock/app.js @@ -87,8 +87,9 @@ function drawNumber(number, x, y, palette, options) { function draw() { let d = new Date(); g.clearRect(0, settings.showWidgets ? 24 : 0, g.getWidth(),g.getHeight()); - drawBottom(0, 5); - drawTop(0, 5); + + drawBottom(Math.floor(d.getMinutes()/10), d.getMinutes() % 10); + drawTop(Math.floor(d.getHours()/10), d.getHours() % 10); queueDraw(); } From 7d7e8325516e320b5191e6967bf16a78c4c5f6ab Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sun, 30 Jun 2024 22:29:50 +0200 Subject: [PATCH 30/57] Add files via upload --- apps/ashadyclock/screenshot-1.png | Bin 4405 -> 1454 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/ashadyclock/screenshot-1.png b/apps/ashadyclock/screenshot-1.png index 31a46610438be189c1ba775966b8b7935d878f44..a0c7ea3be5d87ab963eafa8ead8769aff5995e2a 100644 GIT binary patch delta 1448 zcmV;Z1y}mDBCZRN7=Hu<0002Yd-S0I0004VQb$4nuFf3k00004XF*Lt006O%3;baP z0000LP)t-s00030|Nj90|Nj60`26?){P+L>_zl7#4FCWD32;bRa{vGi!vFvd!vV){ zsAK>D1tLjAK~#9!?V8PY@*og~$L~Pa_6|I~f?fg(*t76t?SCfse+wUwR9l$p*2|Ll?z?)AdHiL- z$1NY1Wq@tvLI(WG1?+1zGI04~%vNLUg@7}DpHGX7U47Imke;5No}Qkbo}Ql*?IPSw zEjO*vXDRoTdxX-BR1v68!JhW?B&FNPVc&HYEL5~}Zhuc2xB@hm5^ft=>k=@|^#_X? zyux*4Vz4UYM$e=Li*;_jatTKSZoCY5qL>4SkZ#TI#}-thAm+A z`@#B8fqz$qejHdgfE6KFCBfoFz`z8K{q!N=D2fXVoM6!a21;;pBcX5$82G@zC!7Hb zHg4`E1=oR2F4fq6k#Vyp*rUL!M_TcMwPqtH{~X69pAzt%>&FH#UCb+?gwUk1M~YYfV|?Bmw!C?4_pBGTUTD-mwskuCu*O6EqY#iZMophg8_^g#mlLh8kb(wTdyuLxWcxy|w${F)Z#)hh)*G_Mx47z?+gc(m zoHd5H>bBL`k7bR4!5H>39*c}+WG7p@+Ef@@#26Ti?Q@MejD1rhjm~fE|K<>l$$u9y z1_onfC~E3pH?V3l~h|R%29nhiQxp^DkTy7v?t}M{E-F z8?OnYZ<8pEN4&!9OSM@OW?s04RexdTg=<}y*LYazXdg~vq@y1f^f-;jgfQn)of76; zxDp)=tP5A7qk+>nEzD<}EHE%G)v1p5DVWAp#yMfGg)38FU|YD-9qq$oJY)(COvc#) z18RJ2HXifB*d?Flrk2?PLsU>pa2>Pc>O6KmU}`ot`NVIJ<80;*MaKCLB!4!8Ws!0A z6Bx^6oc+w{#$*iSB`z|~f67*IYAP|#f67*IG9HVJfx4%QrZIBSr(L+zSW*j@8UwX( z*-{PZA_J3gI6Dhs;bLQ;oWoGOaQUnWS8+>EPGKJj3%tn~FLNcgaH(EG=Uci|e@2k> z^PJ)m&uMSx>QLDByncFpdm(yydU|?#dU|^H4Zwe|whWs94oqkO0000 literal 4405 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 Date: Sun, 30 Jun 2024 22:30:40 +0200 Subject: [PATCH 31/57] Update metadata.json --- apps/ashadyclock/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ashadyclock/metadata.json b/apps/ashadyclock/metadata.json index 1072af13f..a9e955591 100644 --- a/apps/ashadyclock/metadata.json +++ b/apps/ashadyclock/metadata.json @@ -6,7 +6,7 @@ "description": "A nice clock with drop shadow. Hours and minutes. Create any color combination with the existing images by changing only the app color values.", "type": "clock", "tags": "clock", - "screenshots": [{"url":"screenshot.png"},{"url":"screenshot-1.png"}], + "screenshots": [{"url":"screenshot-1.png"},{"url":"screenshot.png"}], "supports": ["BANGLEJS","BANGLEJS2"], "storage": [ {"name":"ashadyclock.app.js","url":"app.js"}, From 703010b29bdf74df5b979546d9a47337a9fbc356 Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Sun, 30 Jun 2024 22:31:38 +0200 Subject: [PATCH 32/57] Update metadata.json --- apps/ashadyclock/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ashadyclock/metadata.json b/apps/ashadyclock/metadata.json index a9e955591..1b92ecabc 100644 --- a/apps/ashadyclock/metadata.json +++ b/apps/ashadyclock/metadata.json @@ -3,7 +3,7 @@ "shortName":"Shady Clk", "icon": "app.png", "version":"0.01", - "description": "A nice clock with drop shadow. Hours and minutes. Create any color combination with the existing images by changing only the app color values.", + "description": "A nice clock with drop shadow. Hours and minutes. Configure color and widgets in settings. Create any color combination with the existing images by changing only the app color values.", "type": "clock", "tags": "clock", "screenshots": [{"url":"screenshot-1.png"},{"url":"screenshot.png"}], From 6abb02dff19a65a6db1ce11ac23de501048144fb Mon Sep 17 00:00:00 2001 From: Chriz76 <48691511+Chriz76@users.noreply.github.com> Date: Mon, 1 Jul 2024 06:42:09 +0200 Subject: [PATCH 33/57] Update app.js --- apps/ashadyclock/app.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/ashadyclock/app.js b/apps/ashadyclock/app.js index 5228ef9f9..8c86ca8d2 100644 --- a/apps/ashadyclock/app.js +++ b/apps/ashadyclock/app.js @@ -55,11 +55,11 @@ let yOffset = (g.getHeight() - 176) / 2; function drawTop(d0, d1) { if (settings.showWidgets && g.getHeight()<=176) { - drawNumber(d0, 82 + xOffset, 24 + yOffset, palTop, {scale: 0.825}); - drawNumber(d1, 13 + xOffset, 24 + yOffset, palTop, {scale: 0.825}); + drawNumber(d1, 82 + xOffset, 24 + yOffset, palTop, {scale: 0.825}); + drawNumber(d0, 13 + xOffset, 24 + yOffset, palTop, {scale: 0.825}); } else { - drawNumber(d0, 80, 0, palTop); - drawNumber(d1, -1, 0, palTop); + drawNumber(d1, 80, 0, palTop); + drawNumber(d0, -1, 0, palTop); } } From 59f3726deb16d7a795aafe245d09f5c5256ae5f0 Mon Sep 17 00:00:00 2001 From: jla-42 <66872002+jla-42@users.noreply.github.com> Date: Tue, 2 Jul 2024 16:25:14 +0200 Subject: [PATCH 34/57] updated sleepquiet --- README.md | 4 +- apps/.eslintrc.js | 203 ---- apps/_example_app/metadata.json | 2 +- apps/_example_clock/clock.js | 44 - apps/_example_clock/metadata.json | 1 + apps/activityreminder/ChangeLog | 1 + apps/activityreminder/lib.js | 15 +- apps/activityreminder/metadata.json | 4 +- apps/advcasio/ChangeLog | 3 +- apps/advcasio/README.md | 13 +- apps/advcasio/app.js | 6 +- apps/advcasio/metadata.json | 7 +- apps/alarm/ChangeLog | 2 + apps/alarm/README.md | 2 +- apps/alarm/app.js | 115 +- apps/alarm/metadata.json | 2 +- apps/andark/ChangeLog | 5 +- apps/andark/README.md | 14 +- apps/andark/andark_screen.png | Bin 3660 -> 3710 bytes apps/andark/app.js | 160 +-- apps/andark/metadata.json | 7 +- apps/android/ChangeLog | 3 + apps/android/README.md | 4 + apps/android/boot.js | 30 +- apps/android/metadata.json | 2 +- apps/android/test.js | 153 --- apps/astrocalc/ChangeLog | 1 + apps/astrocalc/astrocalc-app.js | 29 +- apps/astrocalc/metadata.json | 2 +- apps/autoreset/ChangeLog | 1 + apps/autoreset/README.md | 6 +- apps/autoreset/boot.js | 23 +- apps/autoreset/metadata.json | 8 +- apps/backswipe/ChangeLog | 3 + apps/backswipe/boot.js | 4 +- apps/backswipe/metadata.json | 2 +- apps/backswipe/settings.js | 3 +- apps/bigdclock/ChangeLog | 1 + apps/bigdclock/bigdclock.app.js | 16 +- apps/bigdclock/metadata.json | 2 +- apps/binaryclk/ChangeLog | 7 + apps/binaryclk/app.js | 89 +- apps/binaryclk/metadata.json | 4 +- apps/binaryclk/screenshot.png | Bin 16648 -> 2178 bytes apps/binaryclk/settings.js | 8 + apps/boot/ChangeLog | 3 + apps/boot/bootupdate.js | 18 +- apps/boot/metadata.json | 2 +- apps/bootgattbat/ChangeLog | 1 + apps/bootgattbat/boot.js | 20 +- apps/bootgattbat/metadata.json | 2 +- apps/bootgatthrm/ChangeLog | 4 +- apps/bootgatthrm/boot.js | 32 +- apps/bootgatthrm/metadata.json | 2 +- apps/btadv/ChangeLog | 2 + apps/btadv/app.js | 9 +- apps/btadv/app.ts | 22 +- apps/btadv/metadata.json | 2 +- apps/bthome/ChangeLog | 6 +- apps/bthome/app.js | 26 +- apps/bthome/boot.js | 20 +- apps/bthome/metadata.json | 2 +- apps/bthome/settings.js | 54 +- apps/bthometemp/ChangeLog | 1 + apps/bthometemp/app.js | 17 +- apps/bthometemp/metadata.json | 2 +- apps/bthrm/ChangeLog | 5 + apps/bthrm/README.md | 8 + apps/bthrm/bthrm.js | 13 +- apps/bthrm/default.json | 3 +- apps/bthrm/lib.js | 319 ++---- apps/bthrm/metadata.json | 2 +- apps/bthrm/recorder.js | 4 +- apps/bthrm/settings.js | 198 +++- apps/buffgym/.eslintrc.json | 35 - apps/cards/ChangeLog | 1 + apps/cards/app.js | 43 +- apps/cards/metadata.json | 9 +- apps/chargent/ChangeLog | 2 + apps/chargent/README.md | 4 +- apps/chargent/boot.js | 3 +- apps/chargent/metadata.json | 2 +- apps/clkinfocal/ChangeLog | 3 + apps/clkinfocal/clkinfo.js | 7 +- apps/clkinfocal/metadata.json | 2 +- apps/clkinfogps/clkinfo.js | 2 +- apps/clkinfogps/geotools.js | 6 +- apps/clock_info/ChangeLog | 4 + apps/clock_info/lib.js | 61 +- apps/clock_info/metadata.json | 4 +- apps/clockcal/ChangeLog | 4 +- apps/clockcal/README.md | 15 +- apps/clockcal/app.js | 51 +- apps/clockcal/metadata.json | 2 +- apps/clockcal/settings.js | 10 +- apps/color_catalog/ChangeLog | 1 + apps/color_catalog/app.js | 8 +- apps/color_catalog/metadata.json | 2 +- apps/contacts/ChangeLog | 1 + apps/contacts/contacts.app.js | 216 ++-- apps/contacts/metadata.json | 2 +- apps/cscsensor/ChangeLog | 4 + apps/cscsensor/cscsensor.app.js | 131 +-- apps/cscsensor/metadata.json | 3 +- apps/cycling/ChangeLog | 1 + apps/cycling/README.md | 4 +- apps/cycling/blecsc-emu.js | 111 -- apps/cycling/blecsc.js | 150 --- apps/cycling/cycling.app.js | 28 +- apps/cycling/metadata.json | 4 +- apps/daisy/ChangeLog | 1 + apps/daisy/README.md | 3 +- apps/daisy/app.js | 29 +- apps/daisy/metadata.json | 2 +- apps/daisy/settings.js | 11 +- apps/doztime/ChangeLog | 3 +- apps/doztime/app-bangle2.js | 15 +- apps/doztime/metadata.json | 2 +- apps/drained/ChangeLog | 1 + apps/drained/app.js | 25 +- apps/drained/app.ts | 30 +- apps/drained/metadata.json | 2 +- apps/fastload/README.md | 8 +- apps/fastreset/README.md | 2 +- apps/fastreset/metadata.json | 2 +- apps/fileman/ChangeLog | 1 + apps/fileman/metadata.json | 1 + apps/folderlaunch/ChangeLog | 3 +- apps/folderlaunch/app.js | 15 +- apps/folderlaunch/app.ts | 15 +- apps/folderlaunch/configLoad.ts | 2 +- apps/folderlaunch/metadata.json | 2 +- apps/folderlaunch/types.d.ts | 2 +- apps/fontall/ChangeLog | 1 + apps/fontall/font.pbf | Bin 2039413 -> 1953834 bytes apps/fontall/metadata.json | 4 +- apps/fontext/ChangeLog | 1 + apps/fontext/font.pbf | Bin 21305 -> 20066 bytes apps/fontext/metadata.json | 5 +- apps/fuzzyw/ChangeLog | 3 +- apps/fuzzyw/README.md | 1 + apps/fuzzyw/fuzzyw.app.js | 212 ++-- apps/fuzzyw/fuzzyw.settings.js | 25 +- apps/fuzzyw/metadata.json | 2 +- apps/fwupdate/custom.html | 19 +- apps/gipy/pkg/gps.d.ts | 2 +- apps/gipy/pkg/gps_bg.wasm.d.ts | 2 +- apps/gpsinfo/ChangeLog | 1 + apps/gpsinfo/gps-info.js | 16 +- apps/gpsinfo/metadata.json | 2 +- apps/gpstouch/geotools.js | 6 +- apps/ha/ChangeLog | 1 + apps/ha/README.md | 4 +- apps/ha/ha.app.js | 115 +- apps/ha/ha.lib.js | 59 +- apps/ha/metadata.json | 2 +- apps/hassio/ChangeLog | 3 +- apps/hassio/hassio.boot.js | 4 +- apps/hassio/metadata.json | 4 +- apps/health/ChangeLog | 1 + apps/health/app.js | 1 - apps/health/metadata.json | 2 +- apps/helloworld/ChangeLog | 1 + apps/helloworld/helloworld.app.js | 6 +- apps/helloworld/metadata.json | 2 +- apps/hrm/ChangeLog | 1 + apps/hrm/heartrate.js | 5 +- apps/hrm/metadata.json | 2 +- apps/imgclock/ChangeLog | 3 +- apps/imgclock/app.js | 1 + apps/imgclock/metadata.json | 4 +- apps/intclock/README.md | 4 +- apps/ios/ChangeLog | 3 +- apps/ios/boot.js | 2 +- apps/ios/metadata.json | 2 +- apps/kbmulti/ChangeLog | 2 + apps/kbmulti/lib.js | 38 +- apps/kbmulti/metadata.json | 2 +- apps/kbmulti/settings.js | 25 +- apps/kineticscroll/ChangeLog | 2 + apps/kineticscroll/boot.js | 132 ++- apps/kineticscroll/boot.min.js | 9 +- apps/kineticscroll/metadata.json | 2 +- apps/kitchen/kitchen.app.js | 2 +- apps/launch/ChangeLog | 1 + apps/launch/app.js | 83 +- apps/launch/metadata.json | 2 +- apps/lcars/ChangeLog | 1 + apps/lcars/lcars.app.js | 2 +- apps/lcars/metadata.json | 2 +- apps/lint_exemptions.js | 627 ++++------- apps/locale/ChangeLog | 2 + apps/locale/README.md | 1 - apps/locale/locale.html | 57 +- apps/locale/locales.js | 106 +- apps/locale/metadata.json | 2 +- apps/messagegui/ChangeLog | 2 + apps/messagegui/app.js | 32 +- apps/messagegui/metadata.json | 2 +- apps/messagesoverlay/ChangeLog | 10 + apps/messagesoverlay/README.md | 13 +- apps/messagesoverlay/lib.js | 745 +++++++++---- apps/messagesoverlay/metadata.json | 7 +- apps/multitimer/ChangeLog | 3 + apps/multitimer/app.js | 2 + apps/multitimer/boot.js | 2 +- apps/multitimer/metadata.json | 2 +- apps/notify/ChangeLog | 1 + apps/notify/metadata.json | 2 +- apps/notify/notify_bjs2.js | 1 + apps/openhaystack/ChangeLog | 1 + apps/openhaystack/custom.html | 2 +- apps/openhaystack/metadata.json | 2 +- apps/owmweather/ChangeLog | 2 + apps/owmweather/lib.js | 22 +- apps/owmweather/metadata.json | 2 +- apps/patriotclk/app.js | 6 +- apps/pebblepp/ChangeLog | 3 + apps/pebblepp/app.js | 41 +- apps/pebblepp/metadata.json | 7 +- apps/pebblepp/settings.js | 16 +- apps/promenu/ChangeLog | 7 + apps/promenu/README.md | 2 + apps/promenu/bootb2.js | 314 +++--- apps/promenu/metadata.json | 2 +- apps/ratchet_launch/ChangeLog | 1 + apps/ratchet_launch/app.js | 6 +- apps/ratchet_launch/metadata.json | 2 +- apps/recorder/ChangeLog | 6 + apps/recorder/app.js | 14 +- apps/recorder/clkinfo.js | 4 +- apps/recorder/interface.html | 121 +- apps/recorder/metadata.json | 2 +- apps/recorder/widget.js | 19 +- apps/rellotge/ChangeLog | 3 + apps/rellotge/README.md | 8 + apps/rellotge/metadata.json | 2 +- apps/rellotge/rellotge.js | 264 +++-- apps/rep/app.ts | 6 +- apps/run/ChangeLog | 1 + apps/run/README.md | 2 + apps/run/metadata.json | 4 +- apps/runplus/ChangeLog | 4 + apps/runplus/README.md | 3 + apps/runplus/app.js | 166 ++- apps/runplus/karvonen.js | 510 +++++---- apps/runplus/metadata.json | 9 +- apps/runplus/settings.js | 8 + apps/sched/ChangeLog | 2 + apps/sched/lib.js | 3 +- apps/sched/metadata.json | 2 +- apps/sched/sched.js | 5 +- apps/schoolCalendar/fullcalendar/main.js | 18 +- apps/setting/ChangeLog | 1 + apps/setting/metadata.json | 2 +- apps/setting/settings.js | 28 + apps/sixths/ChangeLog | 3 +- apps/sixths/metadata.json | 2 +- apps/sixths/sixths.app.js | 193 ++-- apps/sleeplog/ChangeLog | 2 + apps/sleeplog/README.md | 2 + apps/sleeplog/app.js | 8 +- apps/sleeplog/boot.js | 61 +- apps/sleeplog/lib.js | 46 +- apps/sleeplog/metadata.json | 2 +- apps/sleeplog/settings.js | 60 +- apps/sleepphasealarm/ChangeLog | 2 + apps/sleepphasealarm/app.js | 8 +- apps/sleepphasealarm/interface.html | 6 +- apps/sleepphasealarm/metadata.json | 2 +- apps/sleepphasealarm/settings.js | 16 +- apps/slpquiet/.eslintrc.json | 5 - apps/slpquiet/ChangeLog | 1 + apps/slpquiet/README.md | 6 + apps/slpquiet/app.js | 11 + apps/slpquiet/boot.js | 2 +- apps/slpquiet/metadata.json | 2 +- apps/taglaunch/ChangeLog | 1 + apps/taglaunch/app.js | 3 +- apps/taglaunch/metadata.json | 2 +- apps/teatimer/ChangeLog | 1 + apps/teatimer/README.md | 2 +- apps/teatimer/app.js | 7 +- apps/teatimer/metadata.json | 4 +- apps/thmswtch/README.md | 6 + apps/timerclk/ChangeLog | 1 + apps/timerclk/alarm.js | 6 +- apps/timerclk/metadata.json | 2 +- apps/timerclk/timer.js | 6 +- apps/twenties/metadata.json | 2 +- apps/walkersclock/app.js | 46 +- apps/widChargingStatus/ChangeLog | 2 + apps/widChargingStatus/metadata.json | 2 +- apps/widChargingStatus/widget.js | 5 +- apps/widChargingStatus/widget.ts | 7 +- apps/widbata/widbata.wid.js | 2 +- apps/widbtstates/widget.js | 6 +- apps/widbtstates/widget.ts | 6 +- apps/widdevst/ChangeLog | 2 + apps/widdevst/README.md | 4 + apps/widdevst/metadata.json | 5 +- apps/widdevst/wid.js | 38 +- apps/widdst/ChangeLog | 3 +- apps/widdst/metadata.json | 2 +- apps/widdst/settings.js | 13 +- apps/widhid/wid.ts | 4 +- apps/widmsggrid/ChangeLog | 1 + apps/widmsggrid/metadata.json | 2 +- apps/widmsggrid/widget.js | 2 +- apps/wohrm/app.js | 6 +- apps/worldclock/ChangeLog | 1 + apps/worldclock/app.js | 28 +- apps/worldclock/metadata.json | 2 +- bin/bulk-update-apps.mjs | 2 +- bin/exempt-lint.mjs | 2 +- bin/font_creator.js | 35 +- bin/runapptests.js | 526 +++++++-- bin/sanitycheck.js | 9 +- bin/sync-lint-exemptions.mjs | 2 +- core | 2 +- css/main.css | 2 +- lang/da_DK.json | 31 +- loader.js | 2 +- modules/.eslintrc.json | 163 --- modules/ClockFace_menu.js | 3 +- modules/Layout.js | 2 +- modules/Layout.md | 17 + modules/Slider.js | 11 +- modules/Slider.md | 8 +- modules/date_utils.js | 1 - modules/exstats.js | 75 +- modules/suncalc.js | 4 +- modules/widget_utils.js | 61 +- package-lock.json | 740 +++++++++++- package.json | 8 +- tsconfig.json | 4 +- typescript/package-lock.json | 16 +- typescript/package.json | 2 +- typescript/types/clock_info.d.ts | 4 +- typescript/types/layout.d.ts | 10 +- typescript/types/locale.d.ts | 10 + typescript/types/main.d.ts | 1298 ++++++++++++++++++---- typescript/types/settings.d.ts | 2 + webtools | 2 +- 344 files changed, 6493 insertions(+), 4269 deletions(-) delete mode 100644 apps/.eslintrc.js delete mode 100644 apps/_example_clock/clock.js delete mode 100644 apps/android/test.js delete mode 100644 apps/buffgym/.eslintrc.json delete mode 100644 apps/cycling/blecsc-emu.js delete mode 100644 apps/cycling/blecsc.js delete mode 100644 apps/slpquiet/.eslintrc.json delete mode 100644 modules/.eslintrc.json diff --git a/README.md b/README.md index ee1c22061..d595c7df1 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ Bangle.js App Loader (and Apps) * Try the **release version** at [banglejs.com/apps](https://banglejs.com/apps) * Try the **development version** at [espruino.github.io](https://espruino.github.io/BangleApps/) +The release version is manually refreshed with regular intervals while the development version is continuously updated as new code is committed to this repository. + **All software (including apps) in this repository is MIT Licensed - see [LICENSE](LICENSE)** By submitting code to this repository you confirm that you are happy with it being MIT licensed, and that it is not licensed in another way that would make this impossible. @@ -403,7 +405,7 @@ in an iframe. - +
Loading...