From bad193f739f625a8dd698240f6040267f4c97af8 Mon Sep 17 00:00:00 2001 From: pancake Date: Tue, 16 May 2023 12:16:34 +0200 Subject: [PATCH 01/28] Fix regression in kanawatch picking the wrong bitmap sometimes --- apps/kanawatch/ChangeLog | 1 + apps/kanawatch/app.js | 2 +- apps/kanawatch/metadata.json | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/kanawatch/ChangeLog b/apps/kanawatch/ChangeLog index 70a2d18bf..b2d2bab86 100644 --- a/apps/kanawatch/ChangeLog +++ b/apps/kanawatch/ChangeLog @@ -4,3 +4,4 @@ 0.04: Show a random kana every minute to improve learning 0.05: Tell clock widgets to hide 0.06: Fix exception when showing missing hiragana 'WO' +0.07: Fix regression in bitmap selection on some code paths diff --git a/apps/kanawatch/app.js b/apps/kanawatch/app.js index 2793e9a93..264058230 100644 --- a/apps/kanawatch/app.js +++ b/apps/kanawatch/app.js @@ -224,6 +224,7 @@ function drawKana (x, y) { g.setColor(0, 0, 0); g.fillRect(0, 0, g.getWidth(), 6 * (h / 8) + 1); g.setColor(1, 1, 1); + kana = hiramode ? hiragana[curkana] : katakana[curkana]; g.drawImage(kana, x + 20, 40, { scale: 1.6 }); g.setColor(1, 1, 1); g.setFont('Vector', 24); @@ -266,4 +267,3 @@ Bangle.setUI('clock'); Bangle.loadWidgets(); tickWatch(); setInterval(tickWatch, 1000 * 60); - diff --git a/apps/kanawatch/metadata.json b/apps/kanawatch/metadata.json index c0b048a37..d7a6f8c23 100644 --- a/apps/kanawatch/metadata.json +++ b/apps/kanawatch/metadata.json @@ -2,7 +2,7 @@ "id": "kanawatch", "name": "Kanawatch", "shortName": "Kanawatch", - "version": "0.06", + "version": "0.07", "type": "clock", "description": "Learn Hiragana and Katakana", "icon": "app.png", From 5428e482b8dfeea3b6109dbaff3cff0643c439cb Mon Sep 17 00:00:00 2001 From: Richard de Boer Date: Tue, 16 May 2023 22:29:44 +0200 Subject: [PATCH 02/28] hasensors: inline config There is no need for a config file: we can customize the code directly. --- apps/hasensors/ChangeLog | 3 ++- apps/hasensors/custom.html | 30 +++++++++++++++++++++++------- apps/hasensors/lib.js | 13 +++++-------- apps/hasensors/metadata.json | 5 +---- 4 files changed, 31 insertions(+), 20 deletions(-) diff --git a/apps/hasensors/ChangeLog b/apps/hasensors/ChangeLog index 759f68777..2c904fc71 100644 --- a/apps/hasensors/ChangeLog +++ b/apps/hasensors/ChangeLog @@ -1 +1,2 @@ -0.01: New app! \ No newline at end of file +0.01: New app! +0.02: Customize code directly, remove config file diff --git a/apps/hasensors/custom.html b/apps/hasensors/custom.html index 805001701..1fd1bcc3c 100644 --- a/apps/hasensors/custom.html +++ b/apps/hasensors/custom.html @@ -39,14 +39,27 @@ your user profile.

- +

diff --git a/apps/hasensors/lib.js b/apps/hasensors/lib.js index 60cfb6da4..555e52dce 100644 --- a/apps/hasensors/lib.js +++ b/apps/hasensors/lib.js @@ -1,16 +1,13 @@ // split out into a separate file to keep bootcode short. -function s(key) { - return (require('Storage').readJSON('hasensors.settings.js', true) || {})[key]; -} - +// placeholders are replaced by custom.html before upload function post(sensor, data) { - const url = s('url') + '/api/states/sensor.' + s('id') + '_' + sensor; + const url = '{url}/api/states/sensor.{id}_' + sensor; Bangle.http(url, { method: 'POST', body: JSON.stringify(data), headers: { 'Content-Type': 'application/json', - Authorization: 'Bearer ' + s('token'), + Authorization: 'Bearer {token}', } }); } @@ -20,7 +17,7 @@ exports.sendBattery = function () { post('battery_level', { state: E.getBattery(), attributes: { - friendly_name: s('name') + " Battery Level", + friendly_name: "{name} Battery Level", unit_of_measurement: "%", device_class: "battery", state_class: "measurement", @@ -29,7 +26,7 @@ exports.sendBattery = function () { post('battery_state', { state: Bangle.isCharging() ? 'charging' : 'discharging', attributes: { - friendly_name: s('name') + " Battery State", + friendly_name: "{name} Battery State", } }); } \ No newline at end of file diff --git a/apps/hasensors/metadata.json b/apps/hasensors/metadata.json index 7713fadc7..106f11407 100644 --- a/apps/hasensors/metadata.json +++ b/apps/hasensors/metadata.json @@ -2,7 +2,7 @@ "id": "hasensors", "name": "Home Assistant Sensors", "shortName": "HA sensors", - "version": "0.01", + "version": "0.02", "description": "Send sensor values to Home Assistant using the Android Integration.", "icon": "ha.png", "type": "bootloader", @@ -14,8 +14,5 @@ "storage": [ {"name":"hasensors","url":"lib.js"}, {"name":"hasensors.boot.js","url":"boot.js"} - ], - "data": [ - {"name":"hasensors.settings.json"} ] } From b500e96b3601a2cee80f06d7f8101023d519707a Mon Sep 17 00:00:00 2001 From: Richard de Boer Date: Tue, 16 May 2023 22:54:48 +0200 Subject: [PATCH 03/28] hasensors: add icons Home Assistant already sets a level-dependant icon, but doesn't know how to apply the charging state. --- apps/hasensors/ChangeLog | 3 ++- apps/hasensors/lib.js | 25 ++++++++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/apps/hasensors/ChangeLog b/apps/hasensors/ChangeLog index 2c904fc71..7b3a63039 100644 --- a/apps/hasensors/ChangeLog +++ b/apps/hasensors/ChangeLog @@ -1,2 +1,3 @@ 0.01: New app! -0.02: Customize code directly, remove config file +0.02: Add sensor icons + Customize code directly, remove config file diff --git a/apps/hasensors/lib.js b/apps/hasensors/lib.js index 555e52dce..b8ee1bfb9 100644 --- a/apps/hasensors/lib.js +++ b/apps/hasensors/lib.js @@ -14,19 +14,30 @@ function post(sensor, data) { exports.sendBattery = function () { if (!NRF.getSecurityStatus().connected) return; + const b = E.getBattery(), + c = Bangle.isCharging(); + let i = "mdi:battery"; + if (c) i += "-charging"; + + post('battery_state', { + state: c ? 'charging' : 'discharging', + attributes: { + friendly_name: "{name} Battery State", + icon: i + (c ? "" : "-minus"), + } + }); + + if (b<10) i += "-outline"; // there is no battery-0 + else if (b<100 || c) i += "-" + Math.floor(b/10)*10; // no battery-100 either + post('battery_level', { - state: E.getBattery(), + state: b, attributes: { friendly_name: "{name} Battery Level", unit_of_measurement: "%", device_class: "battery", state_class: "measurement", - } - }); - post('battery_state', { - state: Bangle.isCharging() ? 'charging' : 'discharging', - attributes: { - friendly_name: "{name} Battery State", + icon: i, } }); } \ No newline at end of file From b79a1caae60df3678610206773860bd493b28995 Mon Sep 17 00:00:00 2001 From: Richard de Boer Date: Tue, 16 May 2023 23:04:08 +0200 Subject: [PATCH 04/28] hasensors: cleanup: use double quotes everywhere --- apps/hasensors/boot.js | 2 +- apps/hasensors/custom.html | 14 +++++++------- apps/hasensors/lib.js | 14 +++++++------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/apps/hasensors/boot.js b/apps/hasensors/boot.js index a9122be5d..efafbc8a3 100644 --- a/apps/hasensors/boot.js +++ b/apps/hasensors/boot.js @@ -1,5 +1,5 @@ (function () { - const sb = () => require('hasensors').sendBattery(); + const sb = () => require("hasensors").sendBattery(); Bangle.on("charging", sb); NRF.on("connect", () => setTimeout(sb, 2000)); setInterval(sb, 10 * 60 * 1000); diff --git a/apps/hasensors/custom.html b/apps/hasensors/custom.html index 1fd1bcc3c..265f80f46 100644 --- a/apps/hasensors/custom.html +++ b/apps/hasensors/custom.html @@ -43,19 +43,19 @@

- + From c90dd72ce39b400cf56e62f75379de2a405c8e88 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Thu, 18 May 2023 11:14:14 +0100 Subject: [PATCH 27/28] screenshots --- apps/loadingscreen/metadata.json | 1 + apps/loadingscreen/screenshot1.png | Bin 0 -> 1698 bytes apps/loadingscreen/screenshot2.png | Bin 0 -> 1641 bytes 3 files changed, 1 insertion(+) create mode 100644 apps/loadingscreen/screenshot1.png create mode 100644 apps/loadingscreen/screenshot2.png diff --git a/apps/loadingscreen/metadata.json b/apps/loadingscreen/metadata.json index 4d2327824..ed1e56e45 100644 --- a/apps/loadingscreen/metadata.json +++ b/apps/loadingscreen/metadata.json @@ -3,6 +3,7 @@ "version":"0.01", "description": "On Bangle.js 2v18+, customize the app loading screen", "icon": "app.png", + "screenshots" : [ { "url":"screenshot1.png" }, { "url":"screenshot2.png" } ], "tags": "tool", "type": "settings", "supports" : ["BANGLEJS2"], diff --git a/apps/loadingscreen/screenshot1.png b/apps/loadingscreen/screenshot1.png new file mode 100644 index 0000000000000000000000000000000000000000..2eb4055c8037136b1dd67e22be6421719d41c48e GIT binary patch literal 1698 zcmYk7c~DbV6o(;6CBZ^?fJI4&KoGT3*+eELxP&BxrEEi3Mu^c)8_Osl7D%9i52FMH z0T-6CwITxz2v|fI0ewPRp+sy{3JrwBltnC&#WS~NU&7(etncx>;UVZ)R8$><=eS=%Un!OU!3VleGM43E7emtK;2 z+0deNYbEaVWdC083CBs~;1z4n;2YqH;TtWnp}WUNX48A+DHZ>$WUrOvbp?7lO^t>2 z?MaQ}B>|PZ-t$^DpXfFDl#gO?>bfiDlh~fHLY1?bsUn7tQJTzcF>FAzE!;ASZk=)R zF_y4#m3(0J{MEY~Z2aGXE9r&JPnn{{Y7#MZCf{a_?z|l{OGH1ZDd%mk59109@c(ljaQff@` zHls8dbD~O+t`rekQ^Fl1$1YO5mb2XN;d{>GU(A(m27!%WqfN9>1bkwYCc}^~M_MP2 zof&%=j1CM%FxyCD(Q<*LzhW&^7z$08DDk+VHjrHGZ)tnq;D$yZp1N~xXXB=1BD6>M{ z^}GD?(Sq%(6`ufbQl$My+~nYm&~DLW%~vOg(S7?hNuSmm?&u#V+N*xmkB1U94bFQo zy4*J33vdqc)>E}+BQBf3_T#i-2-y{zqiUQ_s!Pe@)$Gk9@W^L%-!{$l3t8O#>MK3P*l$dOSgc0{O&8ud?xs-7S>_i5TIS@G@^$&L79J2Hgt>(hyvN=T|7yO?tH zP&Hombnop==Xz2F@8n4~f3oAil z8*V97xK%~7x;VZt>WhOOvrwP;d`BrRT26vmr&oK-~s!cz*#!Gd=rv z=Ri>|`^q^e5RqEAV26>c&+&P*FRFy88%ErYnDETlOHp{(HWbt9`IKK2N9K+me|NPf z!fugih{ljKbJ*UPgXj7Yb#jKYhUzUxQ94g)1aI4mDGgV?7GU|vz}ZS4>$ojtu^!>al$V7 z@e{ZwgVq7}!V*)TPf;{DNB$e0+k=SxC@^9d;nldzf>6mLPg-n8<(J#NX+5O^3wyeS ze9rD`oyGfMq$o!NbgdSzS7pGbrjF+s?CIBYt$zLpfSzQ*|7bJq)_Ny5R>k%ux4Aw( zmccjmwXX{9{;aw|XD{2i(hiZ6(No7j)zbgSRuw>d4$Y4~K*sU?GfwvT8zJ!;8r*zo z!Q)cN+aZ`qwPXjZBGQKc$Qc<&<&LO3Z3G+Wf5M3mw z4c=za_Tv7Fx$EYvr6D9SkGni#arg0H#<`Q|8(hyv|2>*1;D|MaLR4~`lYMD?=lkkCWO@p>X%r+Y*Sx{5+k;AU7xxNz9 zOhRhaN;Dr?N(f5jBeifD*TzhgRmuk%imPau?vJgR{dfP_nf>G5J7?yc?>+aPdpj%sLnCqHVG+@~f7wky{)ylq_0)Y%H$t1UsB--q-oH6aN z2^6@zp8xh2vP2*tLIznzQTAL?RZF`g%dc7eCiann(cHV3ELm5!uqKN(>Sl_>TYsR4 zYoW#ButJ?i1g|+aErwvIFJ4!_Rmirn;l6Z*p@J*m&b@ZxL?+^L-*iPZLA#(OCmh)tncWO&&b)M6l9-DKI5*#BGsX ztwJ3*(`5k&)*x$;Cm)uhNgpUNl{sSRB4X=)IX0slw^y4R09+{V(L#_JG4v{mj{d(xn06 zEVRri+jaX4&EGD(4tunFo(FA3Ua1@2LPZO$Oh#?0VK=zQS((4G0*QZjz5Z_fHRC>7 zHlZ~P+sb;Z-fJ~y_WJR&n}@j9D$V1+O)T#+=S`S}y zeU*v*aWiR9fA2B5X^Av4D>**gAy~%y10$}RCg!|sD({l;5ox1jI=J}-4bKeL3fL3( z;9#6}gDJr^3x4CO7%B@Gu?DjXIY}W(dDX?m!WQ{Lf=iy1-0f`3oKQLTKEx1qWo={k z?URoto0oa`BpVPl2{Mia^H*uy?ZB&xA3I;U7JLu{j8%+GSRPiA*q&u^%c+R;51XRt zc&6I;Fddxk4(3ai!fFGIhMg2+_GMCNUY{TQD!-K#DU?Is=~VC^cCxjK=~l ztpStIp`|A3!qbWrdo~v#-o3x6veU~%J6R&Re~N44v+v#x>QFy30si1%X4;UZO}ozK zS1nH$r^m0#)%nw7k_s9+xp*4Nu$l9EatM?BVXa_cwg?~Pt#p6i-_xQpVe8c66wZ_x zX0ZP(8QqrBul4Gf<#RMK8c%rgpYO}L&!RMDjuS1B^D}88l%ELIm!ZH82kkSL07uKO zUGM+yxX}$OO>nlPTt@pSlBm;_?;FQ>y{Io9@}9jYaR634O#}eB?eOYO z;7MZZ@5qDKbJvbDO8hUFf953K0q*QW4W&&IL%J;(zPckuzH2fqkn~>kv0O|27Gbb3 w7`U*$F#{mlH`J4O2gg-+ga3e(!^f5Bv2Nncfi_o1fWHGocK0XM66rtw1*Aj)&;S4c literal 0 HcmV?d00001 From 6597ba3d5f6ce2b3d2de6660ba422e20ac296b3e Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Thu, 18 May 2023 11:15:35 +0100 Subject: [PATCH 28/28] message --- apps/loadingscreen/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/loadingscreen/metadata.json b/apps/loadingscreen/metadata.json index ed1e56e45..199f4a2b4 100644 --- a/apps/loadingscreen/metadata.json +++ b/apps/loadingscreen/metadata.json @@ -1,7 +1,7 @@ { "id": "loadingscreen", "name": "Loading Screen", "version":"0.01", - "description": "On Bangle.js 2v18+, customize the app loading screen", + "description": "On Bangle.js 2v18+, this lets you customize the app loading screen via an new menu in Settings -> Apps", "icon": "app.png", "screenshots" : [ { "url":"screenshot1.png" }, { "url":"screenshot2.png" } ], "tags": "tool",