Squashed commit of the following:

commit 5ed43a28b5
Merge: 4cf9192c a385c099
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sun Dec 5 17:12:45 2021 +0000

    Merge branch 'espruino:master' into Base

commit 4cf9192c43
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sun Dec 5 17:11:25 2021 +0000

    Update core

commit 69a54194a9
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sun Dec 5 17:11:14 2021 +0000

    Squashed commit of the following:

    commit a385c09922
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Fri Dec 3 12:04:40 2021 +0000

        openstmap .10: Improve scale factor calculation to fix scaling issues (#984)

    commit 052eb41ebc
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Fri Dec 3 09:20:13 2021 +0000

        Stop crypto polyfill being pulled in - fix http://forum.espruino.com/conversations/369197/#comment16294286

    commit 6baddd3b43
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Fri Dec 3 09:15:37 2021 +0000

        Add gbdebug app

    commit b5fa5fb64e
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Fri Dec 3 08:24:12 2021 +0000

        tweak for lint errors - still some assignment warnings

    commit d504017782
    Merge: e2ae57fa 633cad5c
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Fri Dec 3 08:18:47 2021 +0000

        Merge pull request #986 from stephenPspackman/master

        pooq Roman - a watch face

    commit e2ae57faa4
    Merge: 79f37b2b 3595fab0
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Fri Dec 3 08:13:52 2021 +0000

        Merge pull request #951 from rigrig/qmsched-clean

        Move Quiet Mode LCD options from global settings to the Quiet Mode Schedule app

    commit 79f37b2bfa
    Merge: 56b9e04f b595e603
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Fri Dec 3 08:12:21 2021 +0000

        Merge pull request #987 from hughbarney/master

        Pebble: use LECO1976 font, update boot icon, redo screenshots

    commit 633cad5cd3
    Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
    Date:   Fri Dec 3 00:11:07 2021 -0800

        Update app.js

        Fix (hopefully) time zone issues and boundaries in the event scanner.

    commit b595e60333
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Thu Dec 2 22:17:00 2021 +0000

        Pebble: switched to LECO1976 font and slanting boot icon

    commit 3595fab079
    Author: Richard de Boer <git@tubul.net>
    Date:   Fri Nov 26 20:05:40 2021 +0100

        qmsched: manage LCD options

        Also migrates old settings file: we now store options in qmsched.json,
        instead of in the global setting.json.

    commit d743b2266a
    Author: Richard de Boer <git@tubul.net>
    Date:   Tue Nov 23 21:27:37 2021 +0100

        boot: remove Quiet Mode options

        Updating these will be handled by the Quiet Mode Schedule app (qmsched)

    commit c24f67b06b
    Author: Richard de Boer <git@tubul.net>
    Date:   Tue Nov 23 21:25:26 2021 +0100

        settings: remove Quiet Mode LCD options

        Updating these will be handled by the Quiet Mode Schedule app (qmsched)

    commit 32980bf3be
    Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
    Date:   Thu Dec 2 13:04:29 2021 -0800

        Update apps.json

        Declare pooqroman.json, our private config file.

    commit ade94521b7
    Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
    Date:   Thu Dec 2 12:57:25 2021 -0800

        Update README.md

        Github flubs UTF-8? Really?

    commit 2906e228ba
    Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
    Date:   Thu Dec 2 12:54:03 2021 -0800

        Update apps.json

    commit 9c8fd93783
    Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
    Date:   Thu Dec 2 12:53:18 2021 -0800

        Create README.md

    commit 6ed4565ee1
    Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
    Date:   Thu Dec 2 12:16:53 2021 -0800

        Add files via upload

        Upload the right file this time :-}.

    commit 98bb9c28b3
    Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
    Date:   Thu Dec 2 12:02:15 2021 -0800

        Add files via upload

    commit 4803365ab3
    Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
    Date:   Thu Dec 2 11:49:28 2021 -0800

        Update app.js

        Conform to filename conventions for our settings file—it is json.

    commit 8ff08cbaab
    Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
    Date:   Thu Dec 2 11:35:39 2021 -0800

        Create resourcer.js

    commit ad96a97ae9
    Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
    Date:   Thu Dec 2 11:34:25 2021 -0800

        Create app-icon.js

    commit 2fc3cee139
    Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
    Date:   Thu Dec 2 11:27:53 2021 -0800

        Create app.js

    commit 43a68fb908
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Thu Dec 2 19:01:40 2021 +0000

        Pebble: 0.03 changed font to Leco1976, updated screenshots

    commit 56b9e04ff0
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Thu Dec 2 10:37:08 2021 +0000

        new core

    commit 9d26a6448e
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Thu Dec 2 10:28:38 2021 +0000

        launcher 0.09: Bangle.js 2 - pressing the button goes back to clock (fix #971)
              After 10s of being locked, the launcher goes back to the clock screen

    commit 5b967184b6
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Thu Dec 2 10:07:45 2021 +0000

        0.03: Fix unfreed memory, and clearInterval that disabled all clocks at midnight (fix #946)
              Fix app icon
              Change menu order so 'back' is at the top

    commit ce2d182247
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Thu Dec 2 09:43:03 2021 +0000

        tweak 2v11 firmware mentions

    commit 829ee9129a
    Merge: 0cb1dfbb 7a1bb02b
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Thu Dec 2 09:06:21 2021 +0000

        Merge pull request #983 from hughbarney/master

        Pebble: deploy settings file, updated README

    commit 0cb1dfbb82
    Merge: e0018a49 3baa465f
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Thu Dec 2 09:06:07 2021 +0000

        Merge pull request #982 from rigrig/delete-settings-library

        remove Settings module

    commit e0018a495c
    Merge: 7218acf0 cb8ee706
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Thu Dec 2 08:12:16 2021 +0000

        Merge pull request #981 from andrewgoz/master

        New icon, improved UI

    commit cb8ee70625
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Thu Dec 2 16:05:36 2021 +0800

        Update app.js

    commit 012982e910
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Thu Dec 2 16:03:22 2021 +0800

        Update README.md

    commit 7a1bb02bce
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Wed Dec 1 21:07:41 2021 +0000

        Pebble: updated README

    commit bd8bb638d4
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Wed Dec 1 20:29:34 2021 +0000

        Pebble: deploy pebble.settings.js in apps.json

    commit 3baa465f01
    Author: Richard de Boer <git@tubul.net>
    Date:   Wed Dec 1 19:34:52 2021 +0100

        remove Settings module

        Better not to have this at all than to have a library that you can't
        actually use in widgets/boot/settings code

    commit b848c45ce4
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 23:42:17 2021 +0800

        Improve token display

        Limit label length. Reduce digits font size until it fits.

    commit 86ea0554b3
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 23:26:45 2021 +0800

        Colour icon

    commit 3305a5db6a
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 23:23:44 2021 +0800

        Colour icon

    commit 26cc978a40
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 22:29:37 2021 +0800

        Update README.md

    commit 21961edf42
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 22:26:01 2021 +0800

        Update ChangeLog

    commit 4d239bf71e
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 22:24:43 2021 +0800

        Version 0.03

    commit 16f20970d9
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 22:21:21 2021 +0800

        Limit scanned label length

        Fixed #5

    commit d4ddf22399
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 22:15:55 2021 +0800

        Try new JSON settings format

    commit 60a8c487ad
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 22:05:53 2021 +0800

        Support updated settings file

    commit 7a9b64a7fd
    Merge: dfd7a02e 7218acf0
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 21:28:07 2021 +0800

        Merge branch 'espruino:master' into master

    commit 7218acf0b4
    Merge: adca628e a789e0be
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Dec 1 13:26:44 2021 +0000

        Merge pull request #980 from myxor/poweroff-icon-color-fix

        Poweroff: icon color fix & README improvement

    commit dfd7a02e12
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 21:26:41 2021 +0800

        Show placeholder "Calculating"

        Fixes #2

    commit a789e0bea4
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Wed Dec 1 13:55:25 2021 +0100

        Icon white with 1px black border

    commit ca6b73e3e4
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Wed Dec 1 13:54:49 2021 +0100

        Icon white with 1px black border

    commit 871c345cea
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Wed Dec 1 13:49:25 2021 +0100

        Update README.md

    commit e2a4428be2
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Wed Dec 1 13:48:03 2021 +0100

        Fix gramar and link in README

    commit 2d190278f2
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Wed Dec 1 13:45:24 2021 +0100

        Change app icon color to white

    commit f3dffdb3e1
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Wed Dec 1 13:44:12 2021 +0100

        Change app icon to white

    commit adca628e2c
    Merge: 38c6e160 edec2442
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Dec 1 12:06:47 2021 +0000

        Merge branch 'master' of github.com:espruino/BangleApps

    commit edec24429a
    Merge: 013d7704 43312a78
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Dec 1 09:37:09 2021 +0000

        Merge pull request #978 from myxor/mylocation-spelling

        Spelling issue in mylocation README

    commit 43312a782a
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Wed Dec 1 10:23:07 2021 +0100

        Update README.md

        Fix spelling of the Scottish capital city in the README :)

    commit 013d7704a9
    Merge: 527bbf8e a9530f64
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Dec 1 09:00:19 2021 +0000

        Merge pull request #973 from rigrig/widbars

        New widget: Widbars

    commit a9530f64ea
    Merge: 8580952e 527bbf8e
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Dec 1 09:00:08 2021 +0000

        Merge branch 'master' into widbars

    commit 527bbf8e59
    Merge: 68b73d2e a44d5420
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Dec 1 08:59:27 2021 +0000

        Merge pull request #974 from rigrig/widbatpc-fix

        widbatpc: Fix drawing the bar when charging

    commit 68b73d2e17
    Merge: 097a3153 1108983c
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Dec 1 08:58:35 2021 +0000

        Merge pull request #977 from alainsaas/master

        New app: A Speech Timer

    commit 1108983cba
    Merge: 3c7d6b79 097a3153
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Dec 1 08:58:30 2021 +0000

        Merge branch 'master' into master

    commit 097a315395
    Merge: 3ddd1696 24e2b01e
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Dec 1 08:51:48 2021 +0000

        Merge pull request #975 from hughbarney/master

        Mylocation (APP), Pastel sunrise, sunset, A Pebble Clock to keep the revolution going

    commit 3c7d6b795d
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Wed Dec 1 15:28:23 2021 +0900

        Update apps.json

    commit 3507dcde45
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Wed Dec 1 15:26:52 2021 +0900

        Update apps.json

    commit 541adf4c16
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Wed Dec 1 15:22:44 2021 +0900

        Update README.md

    commit 8f0856d871
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Wed Dec 1 15:21:21 2021 +0900

        Update README.md

    commit 13b01fe829
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Wed Dec 1 15:20:52 2021 +0900

        Add files via upload

    commit 18c3461e6e
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Wed Dec 1 15:20:41 2021 +0900

        Create README.md

    commit da133e2ccd
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Wed Dec 1 15:09:06 2021 +0900

        Create ChangeLog

    commit 9033db08bf
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Wed Dec 1 15:03:45 2021 +0900

        Create app-icon.js

    commit 673fa8820f
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Wed Dec 1 15:01:48 2021 +0900

        Add files via upload

    commit 312bed6491
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Wed Dec 1 15:00:58 2021 +0900

        Create app.js

    commit 24e2b01e22
    Merge: 7785c7ea 3ddd1696
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Tue Nov 30 23:45:24 2021 +0000

        Merge remote-tracking branch 'upstream/master'

    commit 7785c7ea56
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Tue Nov 30 23:38:29 2021 +0000

        Mylocation: make into an app

    commit 848ccd2be9
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Tue Nov 30 23:16:56 2021 +0000

        Mylocation: make into an app

    commit 8ad8ed15dc
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Tue Nov 30 23:15:45 2021 +0000

        Mylocation: make into an app

    commit 8e56dce22c
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Tue Nov 30 23:10:36 2021 +0000

        Mylocation: make into an app

    commit 4cbd7e8ea6
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Tue Nov 30 22:46:37 2021 +0000

        Mylocation: make into an app

    commit e3745f94fc
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Tue Nov 30 22:43:45 2021 +0000

        Mylocation: make into an app

    commit a44d542053
    Author: Richard de Boer <git@tubul.net>
    Date:   Tue Nov 30 22:30:28 2021 +0100

        widbatpc: Fix drawing the bar when charging

    commit 8580952e69
    Author: Richard de Boer <git@tubul.net>
    Date:   Tue Nov 30 21:06:23 2021 +0100

        widbars: comment out HRM/temperature

        They didn't seem very useful

    commit 7caac64a86
    Author: Richard de Boer <git@tubul.net>
    Date:   Tue Nov 30 20:40:33 2021 +0100

        widbars: new widget

    commit 4669099645
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Tue Nov 30 18:11:08 2021 +0000

        MyLocation added mylocation.app.js

    commit 3ddd169612
    Merge: a20a2e42 31eaeade
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 30 17:14:26 2021 +0000

        Merge pull request #972 from andrewgoz/master

        Fix JSON save format

    commit 31eaeadee2
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 00:26:39 2021 +0800

        Update Authentiwatch version

    commit f094cc6e35
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 00:25:00 2021 +0800

        Update ChangeLog

    commit e1c67cf345
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 00:22:23 2021 +0800

        Save in new JSON format too

    commit 989dc5ccd4
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 00:18:44 2021 +0800

        Use new JSON format.

    commit 51c91bf9ee
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 00:17:26 2021 +0800

        Rename variable

    commit f127bef66b
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 00:14:47 2021 +0800

        Load new JSON format

    commit 0e3b17be67
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Tue Nov 30 16:12:47 2021 +0000

        Added icon for mylocation

    commit c1a48e7b48
    Author: Andrew Gregory <andrew.gregory@gmail.com>
    Date:   Wed Dec 1 00:09:52 2021 +0800

        Try different JSON format

    commit 78c3791c1e
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Tue Nov 30 13:48:20 2021 +0000

        Pebble screenshot updated

    commit 5b7bbd83db
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Tue Nov 30 13:30:13 2021 +0000

        Pebble: added README, battery warning if below 30%

    commit 4cf5d86083
    Merge: ac1425ca a20a2e42
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Tue Nov 30 13:18:27 2021 +0000

        merged upstream

    commit ac1425ca7c
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Tue Nov 30 13:07:56 2021 +0000

        set mylocation to an app

    commit a20a2e4292
    Merge: dec4ec8c c30ee355
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 30 08:28:19 2021 +0000

        Merge pull request #967 from myxor/poweroff-app

        Poweroff app

    commit c30ee355bb
    Merge: bd1fa974 dec4ec8c
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 30 08:28:14 2021 +0000

        Merge branch 'master' into poweroff-app

    commit dec4ec8c19
    Merge: c1dd7c6c d2cb4be4
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 30 08:27:16 2021 +0000

        Merge pull request #966 from reelyactive/master

        Added SensiBLE app

    commit bd1fa974d1
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Tue Nov 30 09:04:43 2021 +0100

        Update ChangeLog

    commit 31dba4df49
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Tue Nov 30 08:59:37 2021 +0100

        Change icon to black

    commit ffd7eebf25
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Tue Nov 30 08:59:20 2021 +0100

        Change icon to black

    commit 4a852e7138
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Tue Nov 30 08:52:47 2021 +0100

        Rename Readme.md to README.md

    commit a08a8d8a24
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Tue Nov 30 08:52:29 2021 +0100

        Update apps.json

    commit 166994311e
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Tue Nov 30 08:46:04 2021 +0100

        Add app to apps.json

    commit ea10cea706
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Tue Nov 30 08:44:45 2021 +0100

        Update Readme.md

    commit f73055253e
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Tue Nov 30 08:42:30 2021 +0100

        Add files via upload

    commit eef1569c99
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Tue Nov 30 08:41:49 2021 +0100

        Create app-icon.js

    commit eeb3206a09
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Tue Nov 30 08:39:36 2021 +0100

        Create Readme.md

    commit c822b62789
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Tue Nov 30 08:36:28 2021 +0100

        Create app.js

    commit 8775a6f339
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Tue Nov 30 08:24:43 2021 +0100

        Create ChangeLog

    commit d2cb4be4b4
    Author: jeffyactive <jeff@reelyactive.com>
    Date:   Mon Nov 29 21:48:30 2021 -0500

        Corrected variable initialisation

    commit 4d107148c7
    Author: jeffyactive <jeff@reelyactive.com>
    Date:   Mon Nov 29 21:31:53 2021 -0500

        Added SensiBLE app

    commit 6642b21606
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Mon Nov 29 20:27:25 2021 +0000

        added pebble icon

    commit b50faa919a
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Mon Nov 29 20:12:25 2021 +0000

        Pebble - long live the rebellion

    commit 3fa435e57d
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Mon Nov 29 19:58:19 2021 +0000

        Pastel, MyLocation updated README files

    commit 6510e4b7d2
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Mon Nov 29 19:02:01 2021 +0000

        Pastel added dependancy on widpedom

    commit 784f7f8492
    Merge: 22d06c8c c1dd7c6c
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Mon Nov 29 18:57:56 2021 +0000

        resolved apps.json conflict

    commit 22d06c8cf6
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Mon Nov 29 18:45:44 2021 +0000

        Pastel changed dependancy on MyLocation to type app

    commit 38c6e16010
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Mon Nov 29 16:29:34 2021 +0000

        new about pixels

    commit c1dd7c6cab
    Merge: c2b70103 616afad0
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Mon Nov 29 11:37:02 2021 +0000

        Merge pull request #957 from JamesLMilner/minor-style-updates

        Tweak styling to give a more aligned and spaced out layout

    commit c2b70103a6
    Merge: cd0de091 3e1c90e4
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Mon Nov 29 10:54:30 2021 +0000

        Merge pull request #955 from alainsaas/master

        New app: A Clock with Timer, v0.01

    commit 3e1c90e485
    Merge: 17e13a63 cd0de091
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Mon Nov 29 10:54:23 2021 +0000

        Merge branch 'master' into master

    commit cd0de091f3
    Merge: 0dd00635 6fc1e738
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Mon Nov 29 10:52:43 2021 +0000

        Merge pull request #956 from JamesLMilner/mandlebrotclock

        Add Mandlebrot Clock app

    commit 0dd00635b8
    Merge: 72d3c44f ba506741
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Mon Nov 29 10:50:28 2021 +0000

        Merge pull request #959 from dratini0/recorder-fixes

        Assorted bugfixes to the recorder apps

    commit 72d3c44ffd
    Merge: 33ce71f2 0d45f2c2
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Mon Nov 29 10:09:47 2021 +0000

        Merge branch 'master' of github.com:espruino/BangleApps

    commit 0d45f2c2e8
    Merge: c4238eba 075d7a84
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Mon Nov 29 10:08:07 2021 +0000

        Merge pull request #962 from myxor/myxor-temperature-app

        Update degree Celsius temperature app

    commit 33ce71f279
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Mon Nov 29 10:06:21 2021 +0000

        fix for sanity test errors

    commit c4238ebae7
    Merge: d4f1e7d3 10d170d3
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Mon Nov 29 10:01:40 2021 +0000

        Merge pull request #950 from jg76379/master

        Add new Interval Timer App

    commit 10d170d31e
    Merge: 4f5ec608 d4f1e7d3
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Mon Nov 29 10:00:29 2021 +0000

        Merge branch 'master' into master

    commit d4f1e7d3cb
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Mon Nov 29 09:52:47 2021 +0000

        minor fixes for #952

    commit 795d2b83ec
    Merge: d1534bdc 99ec40cd
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Mon Nov 29 09:51:51 2021 +0000

        Merge branch 'master' of github.com:espruino/BangleApps

    commit 99ec40cd8e
    Merge: 30e421e2 6220a88d
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Mon Nov 29 09:48:20 2021 +0000

        Merge pull request #952 from rigrig/locale-12h

        locale: Apply 12hour setting to time

    commit 075d7a840c
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Mon Nov 29 10:43:42 2021 +0100

        Update apps.json

    commit c9d0a19947
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Mon Nov 29 10:40:32 2021 +0100

        Add space after temperature value

        Add space after temperature value

    commit baba42ae25
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Mon Nov 29 10:36:31 2021 +0100

        Fix changelog syntax

    commit cd67486547
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Mon Nov 29 10:25:14 2021 +0100

        Update ChangeLog

    commit 765a683c89
    Author: Marco H <myxor@users.noreply.github.com>
    Date:   Mon Nov 29 10:23:54 2021 +0100

        Update app.js

        Improving messages and added Celsius sign

    commit 30e421e225
    Merge: 94f8b4bc 918dcba6
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Mon Nov 29 08:38:52 2021 +0000

        Merge pull request #960 from leer10/master

        Add 93 Dub Watchface

    commit 918dcba633
    Merge: bb537b17 050b9c2b
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sun Nov 28 14:58:18 2021 -0800

        Merge pull request #1 from leer10/style-cleanup

        style cleanup

    commit 050b9c2b80
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sun Nov 28 14:56:18 2021 -0800

        Update apps.json

    commit ada93e894d
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sun Nov 28 14:55:46 2021 -0800

        Update ChangeLog

    commit 590f022a91
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sun Nov 28 14:55:32 2021 -0800

        Update ChangeLog

    commit f423a6b91b
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sun Nov 28 14:54:17 2021 -0800

        Update app.js

    commit bb537b1738
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sun Nov 28 14:27:14 2021 -0800

        Update ChangeLog

    commit 656ca2ecaa
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sun Nov 28 14:25:23 2021 -0800

        Update apps.json

        added new version in json

    commit 438885ae92
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sun Nov 28 14:24:18 2021 -0800

        Add files via upload

    commit b9b7cfb50c
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sun Nov 28 14:23:49 2021 -0800

        Delete screenshot.png

    commit 36aead94e7
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sun Nov 28 14:23:24 2021 -0800

        Create ChangeLog

    commit b2cb4e7c0a
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sun Nov 28 14:22:04 2021 -0800

        Add files via upload

    commit b25ad7573e
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sun Nov 28 14:21:57 2021 -0800

        Delete screenshot.png

    commit c3fac095b8
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sun Nov 28 14:19:21 2021 -0800

        Update app.js

        add discominotaur's adjustments (cause a battery on the watchface isn't useful when the widget does the work anyways) maybe i'll do it as a setting later

    commit 426ec0350f
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sun Nov 28 14:10:47 2021 -0800

        Update README.md

        added credits

    commit ba50674173
    Author: Balint Kovacs <dratini0@gmail.com>
    Date:   Sun Nov 28 18:58:26 2021 +0000

        Update app versions and changelog

    commit 1a118a6037
    Author: Balint Kovacs <dratini0@gmail.com>
    Date:   Sun Nov 28 18:44:47 2021 +0000

        Recorded: Slightly improve plot altitude if data has NaNs

    commit 22fa78ff8d
    Author: Balint Kovacs <dratini0@gmail.com>
    Date:   Sun Nov 28 18:43:44 2021 +0000

        Even out x axis grid points

    commit 466fd2155c
    Author: Balint Kovacs <dratini0@gmail.com>
    Date:   Sun Nov 28 18:18:18 2021 +0000

        Remove superfluous semicolon

    commit a622781628
    Author: Balint Kovacs <dratini0@gmail.com>
    Date:   Sun Nov 28 16:46:01 2021 +0000

        Make the recorder handle missing coordinates in plot speed

    commit 69c6a34ead
    Author: Balint Kovacs <dratini0@gmail.com>
    Date:   Sun Nov 28 15:46:02 2021 +0000

        Fix some text overflowing the screen in recorder and gpsrec

        On Bangle.js 2

    commit 616afad056
    Author: James <jamesmilner22@hotmail.com>
    Date:   Sun Nov 28 14:10:29 2021 +0000

        Title indent again

    commit 41c80ae767
    Author: James <jamesmilner22@hotmail.com>
    Date:   Sun Nov 28 14:08:30 2021 +0000

        Indent logo slightly to line up more accurately

    commit 617ed688c5
    Author: James <jamesmilner22@hotmail.com>
    Date:   Sun Nov 28 14:05:49 2021 +0000

        Use rem

    commit a28b3b78e4
    Author: James <jamesmilner22@hotmail.com>
    Date:   Sun Nov 28 13:58:41 2021 +0000

        Add spacing to layout, small css tweaks

    commit 6fc1e738f1
    Author: James <jamesmilner22@hotmail.com>
    Date:   Sun Nov 28 13:22:42 2021 +0000

        Add mandlebrot clock app

    commit 89e88e7172
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 23:39:51 2021 -0800

        Update app-icon.js

        hopefully fix launcher icon

    commit 40d19aad2e
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 22:29:57 2021 -0800

        Update apps.json

        added screenshot to app store listing

    commit d87930e4d3
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 22:27:51 2021 -0800

        Update apps.json

    commit 6eb7a844d6
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 22:26:36 2021 -0800

        Update app.js

        fix battery graphics

    commit da41d04d26
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 22:20:21 2021 -0800

        Update apps.json

    commit 47c8edba4f
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 22:19:25 2021 -0800

        Add files via upload

    commit b28986c249
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 22:19:09 2021 -0800

        Delete app.png

    commit 9e897dfd50
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 22:13:21 2021 -0800

        Update app.js

        removed other nonfunctional comment block

    commit 6fd7a0eb63
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 22:11:06 2021 -0800

        Update app.js

        battery icon actually works now

    commit 4a3e1bbe28
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 21:52:13 2021 -0800

        Update app.js

        12 hr/24 hr specific behavior now from settings instead of hardcoded

    commit 3d03895b9d
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 21:44:49 2021 -0800

        Update README.md

    commit 0d5892769d
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 21:42:19 2021 -0800

        Add files via upload

        add screenshot for 93dub

    commit 82e515e0e5
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 21:39:55 2021 -0800

        Create README.md

        added dub93's readme

    commit 8a3f9f848a
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 21:36:48 2021 -0800

        Update app.js

        stripped license and info block of text since it's already enclosed in an MIT-licensed repo

    commit 4294a27279
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 21:31:41 2021 -0800

        Update apps.json

        apps.json updates

    commit 251ceb9dd1
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 21:27:35 2021 -0800

        Update apps.json

        oops comma

    commit b49223d5b9
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 21:24:09 2021 -0800

        Update apps.json

    commit 2d21ce7445
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 21:21:29 2021 -0800

        Add files via upload

    commit c0e5d4432e
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 21:19:34 2021 -0800

        Create app-icon.js

        added icon

    commit 0d6bfc7c13
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 20:59:32 2021 -0800

        Update app.js

        redid background, adjusted graphics to look nice on bangle 2

    commit 17e13a6325
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Sun Nov 28 13:43:31 2021 +0900

        Update apps.json

    commit a19da85de7
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Sun Nov 28 13:41:56 2021 +0900

        Update README.md

    commit 9d4c251b73
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Sun Nov 28 13:39:41 2021 +0900

        Update apps.json

    commit f9fa4a7df1
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Sun Nov 28 13:32:58 2021 +0900

        Update apps.json

    commit ff95dd3b2c
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Sun Nov 28 13:29:06 2021 +0900

        Create README.md

    commit c23960c12c
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Sun Nov 28 13:20:48 2021 +0900

        Add files via upload

    commit d9d6133559
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Sun Nov 28 13:20:15 2021 +0900

        Create ChangeLog

    commit de4d744e26
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Sun Nov 28 13:19:15 2021 +0900

        Create app-icon.js

    commit de9a526517
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Sun Nov 28 13:14:06 2021 +0900

        Add files via upload

    commit 662963b208
    Author: Alain Saas <alainsaas@gmail.com>
    Date:   Sun Nov 28 13:06:47 2021 +0900

        Create app.js

    commit 56f3044e5e
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 12:02:34 2021 -0800

        Update app.js

        background needed redraw after notification

        background redraw broke widgets, so temp fix

    commit 228a3664c7
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 11:41:39 2021 -0800

        Update apps.json

    commit 33b3e91869
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 11:40:13 2021 -0800

        Update apps.json

    commit 7d646945df
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 11:37:56 2021 -0800

        Update apps.json

    commit dabaa06efb
    Author: leer10 <brandon.abbott@charter.net>
    Date:   Sat Nov 27 11:33:19 2021 -0800

        Create app.js

    commit 3fbb46b046
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Sat Nov 27 11:23:03 2021 +0000

        Pastel, recalc sunrise,sunset every hour

    commit 21fe6e7ea4
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Fri Nov 26 21:52:05 2021 +0000

        Pastel added dependancy on MyLocation app, display sunrise,sunset times

    commit b426c479a3
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Fri Nov 26 21:29:46 2021 +0000

        Pastel added dependancy on MyLocation app, display sunrise,sunset times

    commit 070558a0a6
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Fri Nov 26 20:48:27 2021 +0000

        MyLocation - adds menu to set preferred city or setup from GPS

    commit 6220a88d29
    Author: Richard de Boer <git@tubul.net>
    Date:   Fri Nov 26 21:29:58 2021 +0100

        locale: Apply 12hour setting to time

        Fixes #892

    commit ce0e50ed94
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Fri Nov 26 20:25:28 2021 +0000

        MyLocation - adds menu to set preferred city or setup from GPS

    commit 4f5ec608de
    Author: James G <me@jgough.net>
    Date:   Fri Nov 26 12:48:20 2021 -0500

        fix formatting in README for interval timer app

    commit 2ae9585193
    Author: James G <me@jgough.net>
    Date:   Fri Nov 26 12:43:36 2021 -0500

        rename intervalTimer.app.js to app.js

    commit bff43e662d
    Author: James G <me@jgough.net>
    Date:   Fri Nov 26 12:42:13 2021 -0500

        Fix url for intervalTimer.app.js in app.json

    commit fc6ecaccce
    Author: James G <me@jgough.net>
    Date:   Fri Nov 26 12:35:35 2021 -0500

        Add new Interval Timer app.

    commit d1534bdcbf
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Fri Nov 26 15:05:05 2021 +0000

        comment

    commit 94f8b4bca7
    Merge: dc8edba0 4cfbe11e
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Fri Nov 26 12:01:01 2021 +0000

        Merge pull request #947 from peerdavid/master

        [LCARS clock] Alarm works also if clock is closed and opened again.

    commit dc8edba00d
    Merge: db1c5b74 fa4fd118
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Fri Nov 26 11:59:41 2021 +0000

        Merge pull request #948 from Smooklu/master

        Updated fd6fdetect

    commit db1c5b7481
    Merge: a4299586 045251f5
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Fri Nov 26 11:59:15 2021 +0000

        Merge pull request #949 from johan-m-o/master

        Update Spirit Level to work on Bangle.js 2

    commit 045251f55f
    Author: johan-m-o <85756863+johan-m-o@users.noreply.github.com>
    Date:   Fri Nov 26 11:50:19 2021 +0100

        Update spiritlevel.js

    commit b6e5175675
    Author: johan-m-o <85756863+johan-m-o@users.noreply.github.com>
    Date:   Fri Nov 26 11:44:21 2021 +0100

        Update spiritlevel.js

    commit 6f300299b5
    Author: johan-m-o <85756863+johan-m-o@users.noreply.github.com>
    Date:   Fri Nov 26 11:34:52 2021 +0100

        Update apps.json

    commit fe5ca8bc76
    Author: johan-m-o <85756863+johan-m-o@users.noreply.github.com>
    Date:   Fri Nov 26 11:33:49 2021 +0100

        Update spiritlevel.js

    commit a89dd4d544
    Author: johan-m-o <85756863+johan-m-o@users.noreply.github.com>
    Date:   Fri Nov 26 11:23:43 2021 +0100

        Update ChangeLog

    commit a4299586e8
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Fri Nov 26 10:04:02 2021 +0000

        cscsensor 0.06: Now read wheel rev as well as cadence sensor
              Improve connection code

    commit fa4fd118e2
    Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
    Date:   Thu Nov 25 13:20:52 2021 -0600

        Update apps.json

    commit 43b447f81c
    Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
    Date:   Thu Nov 25 13:17:35 2021 -0600

        Update apps.json

    commit 1ea1706e61
    Merge: 08fd95ab 095165c5
    Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
    Date:   Thu Nov 25 13:04:40 2021 -0600

        Merge branch 'espruino:master' into master

    commit 08fd95ab9a
    Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
    Date:   Thu Nov 25 13:04:09 2021 -0600

        Update README.md

    commit bc27677f5e
    Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
    Date:   Thu Nov 25 13:02:43 2021 -0600

        Update apps.json

    commit f9286cbee9
    Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
    Date:   Thu Nov 25 13:00:48 2021 -0600

        Update README.md

    commit a1a56601c0
    Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
    Date:   Thu Nov 25 13:00:38 2021 -0600

        Update README.md

    commit 4cfbe11e45
    Author: David Peer <david.peer@outlook.com>
    Date:   Thu Nov 25 20:00:36 2021 +0100

        Show text for each icon.

    commit 4fb4d12ba4
    Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
    Date:   Thu Nov 25 13:00:28 2021 -0600

        Update README.md

    commit 6508ed8b3f
    Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
    Date:   Thu Nov 25 12:57:25 2021 -0600

        Update apps.json

    commit 85b7115c73
    Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
    Date:   Thu Nov 25 12:54:33 2021 -0600

        Update README.md

    commit 6482297881
    Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
    Date:   Thu Nov 25 12:53:16 2021 -0600

        Update ChangeLog

    commit f5940b5bdb
    Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
    Date:   Thu Nov 25 12:52:27 2021 -0600

        Update README.md

    commit 9f00293401
    Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
    Date:   Thu Nov 25 12:50:35 2021 -0600

        Update README.md

    commit 2818a63e2c
    Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
    Date:   Thu Nov 25 12:48:36 2021 -0600

        Create README.md

    commit 95f845ad4e
    Author: David Peer <david.peer@outlook.com>
    Date:   Thu Nov 25 19:10:05 2021 +0100

        New icon for alarm

    commit ca3453440c
    Merge: dcee49cd 4a530371
    Author: David Peer <david.peer@outlook.com>
    Date:   Thu Nov 25 19:01:24 2021 +0100

        Merge branch 'master' of https://github.com/peerdavid/BangleApps

    commit dcee49cdc8
    Author: David Peer <david.peer@outlook.com>
    Date:   Thu Nov 25 19:01:22 2021 +0100

        New GPS Icon

    commit 4a5303714d
    Merge: 93e2a88a 095165c5
    Author: Peer David <4281901+peerdavid@users.noreply.github.com>
    Date:   Thu Nov 25 18:52:23 2021 +0100

        Merge branch 'espruino:master' into master

    commit 93e2a88a4c
    Author: David Peer <david.peer@outlook.com>
    Date:   Thu Nov 25 18:51:20 2021 +0100

        Updated screenshot

    commit d99cea9ae0
    Merge: 232dcc4b 7e1b0422
    Author: David Peer <david.peer@outlook.com>
    Date:   Thu Nov 25 18:49:46 2021 +0100

        Merge branch 'master' of https://github.com/peerdavid/BangleApps

    commit 232dcc4b9d
    Author: David Peer <david.peer@outlook.com>
    Date:   Thu Nov 25 18:49:44 2021 +0100

        Real icons - its an image of the real planet :)

    commit 095165c5c9
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Thu Nov 25 16:33:45 2021 +0000

        oops - fix uncommitted file!

    commit bf964ce3e4
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Thu Nov 25 16:06:26 2021 +0000

        The 'update all' button shouldn't update apps that require 'custom.html' (fix #748)

    commit 7e1b042255
    Merge: ccce57ae 944b24e6
    Author: Peer David <4281901+peerdavid@users.noreply.github.com>
    Date:   Thu Nov 25 16:56:53 2021 +0100

        Merge branch 'espruino:master' into master

    commit ccce57ae89
    Merge: a99d9d5e c381e7ef
    Author: David Peer <david.peer@outlook.com>
    Date:   Thu Nov 25 16:56:35 2021 +0100

        Merge branch 'master' of https://github.com/peerdavid/BangleApps

    commit a99d9d5e7c
    Author: David Peer <david.peer@outlook.com>
    Date:   Thu Nov 25 16:56:32 2021 +0100

        Store alarm in settings

    commit 944b24e6c3
    Merge: e8264cc8 1b9477be
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Thu Nov 25 15:52:25 2021 +0000

        Merge branch 'master' of github.com:espruino/BangleApps

    commit e8264cc8f8
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Thu Nov 25 15:50:07 2021 +0000

        messages 0.07: Added settings menu with option to choose vibrate pattern and frequency (fix #909)

    commit 5f5ca64cb4
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Thu Nov 25 15:21:59 2021 +0000

        android 0.04: Android icon now goes to settings page with 'find phone'

    commit 6aa6bcf179
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Thu Nov 25 15:12:04 2021 +0000

        messages 0.06: New messages now go at the start (fix #898)
              Answering true/false now exits the messages app if no new messages
              Back now marks a message as read
              Clicking top-left opens a menu which allows you to delete a message or mark unread

    commit 1b9477be5d
    Merge: e28f9c15 2b7091bd
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Thu Nov 25 12:19:48 2021 +0000

        Merge pull request #945 from nlisgo/improve-ux-add-timer

        Cube Scramble: Improved UX and display solve time

    commit 2b7091bd6b
    Author: nlisgo <nathan@aeopus.com>
    Date:   Thu Nov 25 11:40:37 2021 +0000

        Set default title for showPrompt

    commit c381e7ef21
    Merge: 1ab98707 e28f9c15
    Author: Peer David <4281901+peerdavid@users.noreply.github.com>
    Date:   Thu Nov 25 11:41:01 2021 +0100

        Merge branch 'espruino:master' into master

    commit e28f9c157b
    Merge: e040cc4e cb9866ff
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Thu Nov 25 08:55:39 2021 +0000

        Merge pull request #932 from hughbarney/master

        Pastel: created font modules

    commit 1ab98707ed
    Author: David Peer <david.peer@outlook.com>
    Date:   Thu Nov 25 09:17:25 2021 +0100

        Minor changes

    commit 9940b38bbd
    Author: nlisgo <nathan@aeopus.com>
    Date:   Thu Nov 25 00:13:06 2021 +0000

        Force LCD on

    commit f175f4c48c
    Author: nlisgo <nathan@aeopus.com>
    Date:   Thu Nov 25 00:06:02 2021 +0000

        Update screenshots

    commit f6c689eeed
    Author: nlisgo <nathan@aeopus.com>
    Date:   Wed Nov 24 23:56:47 2021 +0000

        Amend app description

    commit 3c984f1fee
    Author: nlisgo <nathan@aeopus.com>
    Date:   Wed Nov 24 23:52:28 2021 +0000

        Cube Scramble: Improved UX and display solve time

    commit cb9866ffe2
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Wed Nov 24 21:11:47 2021 +0000

        Pastel: updated screenshots and README

    commit 8b46634c9b
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Wed Nov 24 21:05:45 2021 +0000

        Pastel: updated screenshots and README

    commit cbb38ec1ce
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Wed Nov 24 20:18:29 2021 +0000

        Pastel: added cycle through info items to bottom of screen

    commit 469c329640
    Merge: 37ca6251 e040cc4e
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Wed Nov 24 19:59:57 2021 +0000

        Merge remote-tracking branch 'upstream/master'

    commit 37ca625174
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Wed Nov 24 19:59:46 2021 +0000

        Pastel: added cycle through info items to bottom of screen

    commit c6096675fb
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Wed Nov 24 19:06:06 2021 +0000

        Pastel: added cycle through info items to bottom of screen

    commit a537e98116
    Author: David Peer <david.peer@outlook.com>
    Date:   Wed Nov 24 18:04:59 2021 +0100

        Font improvements

    commit 59692c8ca1
    Merge: 657e64b0 e040cc4e
    Author: Peer David <4281901+peerdavid@users.noreply.github.com>
    Date:   Wed Nov 24 17:52:48 2021 +0100

        Merge branch 'espruino:master' into master

    commit 657e64b078
    Author: David Peer <david.peer@outlook.com>
    Date:   Wed Nov 24 17:52:25 2021 +0100

        Added readme also to app.json

    commit e040cc4e24
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Nov 24 15:22:16 2021 +0000

        replace tabs!

    commit 60c2fa710c
    Merge: 38b2e417 f3cb7e9a
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Nov 24 13:29:46 2021 +0000

        Merge pull request #942 from madman2021/master

        Add new TimeCal app

    commit 38b2e417bf
    Merge: 94bd895b 43b38cc8
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Nov 24 13:26:43 2021 +0000

        Merge pull request #943 from peerdavid/master

        [LCARS Clock] Shows icons for charging and out of battery

    commit 94bd895baf
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Nov 24 12:56:56 2021 +0000

        welcome 0.14: Turn off and run later to use softOff to time is set right
        plus other minor tweaks

    commit 43b38cc8ab
    Author: David Peer <david.peer@outlook.com>
    Date:   Wed Nov 24 13:40:47 2021 +0100

        New screenshot. Updated version.

    commit 34c6589f06
    Author: David Peer <david.peer@outlook.com>
    Date:   Wed Nov 24 13:37:07 2021 +0100

        Minor improvement

    commit c403a5af67
    Author: David Peer <david.peer@outlook.com>
    Date:   Wed Nov 24 13:36:21 2021 +0100

        New design. Removed png icon files - only converted icons are needed.

    commit 19655ea327
    Merge: 274b705c b1fb0e6b
    Author: David Peer <david.peer@outlook.com>
    Date:   Wed Nov 24 13:22:44 2021 +0100

        Merge branch 'master' of https://github.com/peerdavid/BangleApps

    commit 274b705c1e
    Author: David Peer <david.peer@outlook.com>
    Date:   Wed Nov 24 13:22:37 2021 +0100

        More lcars style

    commit f3cb7e9a0b
    Author: Jordan Coulam <madman2021@users.noreply.github.com>
    Date:   Wed Nov 24 10:53:14 2021 +0000

        Remove Icon as it renders massive

    commit 1a9f537555
    Author: Jordan Coulam <madman2021@users.noreply.github.com>
    Date:   Wed Nov 24 10:46:03 2021 +0000

        Add missing supports tag for TimeCal

    commit 3738bde22a
    Author: Jordan Coulam <madman2021@users.noreply.github.com>
    Date:   Wed Nov 24 10:43:38 2021 +0000

        Add TimeCal to the app library

        Add TimeCal to the app library

    commit b1fb0e6b7d
    Merge: 559e8208 dabc22c2
    Author: Peer David <4281901+peerdavid@users.noreply.github.com>
    Date:   Wed Nov 24 11:10:36 2021 +0100

        Merge branch 'espruino:master' into master

    commit dabc22c2d7
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Nov 24 09:54:11 2021 +0000

        custom code works on bangle2

    commit 2e83a511d2
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Nov 24 08:51:20 2021 +0000

        metronome supports bangle 2 now

    commit cea51d06d0
    Merge: cd1daba0 4eee3f05
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Nov 24 08:50:24 2021 +0000

        Merge pull request #938 from bengwalker/master

        Add Bangle.js 2 support for metronome app

    commit cd1daba0c5
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Nov 24 08:46:13 2021 +0000

        0.25: Fix issue where if Bangle.js 2 got a GPS fix but no reported time, errors could be caused by the widget (fix #935)

    commit c03ab08687
    Merge: 1750c72e f10bf240
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Nov 24 08:40:53 2021 +0000

        Merge pull request #939 from Ronin0000/master

        Add Screenshots to Many Apps

    commit 1750c72e94
    Merge: 5eeb1181 1def233d
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Wed Nov 24 08:38:06 2021 +0000

        Merge pull request #936 from Vingelar/master

        Binwatch: re-format background images

    commit 559e820880
    Author: David Peer <david.peer@outlook.com>
    Date:   Wed Nov 24 07:14:04 2021 +0100

        Minor design change

    commit d24b8c80da
    Author: David Peer <david.peer@outlook.com>
    Date:   Wed Nov 24 07:12:25 2021 +0100

        Minor design chnges

    commit f10bf24018
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 17:04:07 2021 -0800

        Update apps.json

    commit c66b098236
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:53:48 2021 -0800

        Update apps.json

    commit 638fea73c7
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:24:10 2021 -0800

        Add files via upload

    commit 4e79c896c6
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:23:33 2021 -0800

        Add files via upload

    commit 33809d8cdf
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:22:58 2021 -0800

        Add files via upload

    commit 6cb83284a7
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:22:45 2021 -0800

        Add files via upload

    commit 7e521d0d29
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:22:17 2021 -0800

        Add files via upload

    commit 9985ff03f2
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:22:00 2021 -0800

        Add files via upload

    commit 6f437c3986
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:21:15 2021 -0800

        Add files via upload

    commit ffe218a004
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:20:56 2021 -0800

        Add files via upload

    commit 9400133dd4
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:20:39 2021 -0800

        Add files via upload

    commit 76463d9279
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:19:37 2021 -0800

        Add files via upload

    commit 4011accb47
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:19:19 2021 -0800

        Add files via upload

    commit bc5960d61a
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:19:07 2021 -0800

        Add files via upload

    commit da5634beda
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:18:51 2021 -0800

        Add files via upload

    commit b9c4640f85
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:18:25 2021 -0800

        Add files via upload

    commit d27a605a24
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:18:07 2021 -0800

        Add files via upload

    commit 52baa42e69
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:17:48 2021 -0800

        Add files via upload

    commit db3b6a58e4
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:17:16 2021 -0800

        Add files via upload

    commit f0de0d8a9d
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:16:52 2021 -0800

        Add files via upload

    commit 6d4cb98ba8
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:16:34 2021 -0800

        Add files via upload

    commit 5f434d9d32
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:16:23 2021 -0800

        Add files via upload

    commit 6e72349f05
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:15:37 2021 -0800

        Add files via upload

    commit 03e4d0d7c0
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:15:21 2021 -0800

        Add files via upload

    commit ead12a1c11
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:14:54 2021 -0800

        Add files via upload

    commit a1ed32c913
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:14:30 2021 -0800

        Add files via upload

    commit fae08d7a73
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:13:57 2021 -0800

        Add files via upload

    commit b889e431ed
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:13:32 2021 -0800

        Add files via upload

    commit f177480160
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:13:02 2021 -0800

        Add files via upload

    commit a2fe8c3722
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:11:42 2021 -0800

        Add files via upload

    commit c1cdf15bf5
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:10:49 2021 -0800

        Add files via upload

    commit fb1c5529f0
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:10:11 2021 -0800

        Add files via upload

    commit 530089e083
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:09:35 2021 -0800

        Add files via upload

    commit 3556e66856
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:09:12 2021 -0800

        Add files via upload

    commit e1e32772e4
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:08:56 2021 -0800

        Add files via upload

    commit 8084bb92b7
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:08:37 2021 -0800

        Add files via upload

    commit 2c997d2964
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:08:18 2021 -0800

        Add files via upload

    commit 747626b66c
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:07:24 2021 -0800

        Add files via upload

    commit ed36fae0ac
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:06:59 2021 -0800

        Add files via upload

    commit e8baad3c37
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:06:33 2021 -0800

        Add files via upload

    commit 1efcebe84a
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:06:16 2021 -0800

        Add files via upload

    commit 082d3d1e95
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:05:21 2021 -0800

        Add files via upload

    commit b10f62a6c5
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:04:58 2021 -0800

        Add files via upload

    commit 24b41c2c6f
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:04:42 2021 -0800

        Add files via upload

    commit 19a2ef1a44
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:04:01 2021 -0800

        Add files via upload

    commit 7089d6e74c
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 16:03:38 2021 -0800

        Add files via upload

    commit 431824f828
    Merge: 15aa41c7 5eeb1181
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 15:15:57 2021 -0800

        Merge branch 'espruino:master' into master

    commit 5eeb1181d0
    Merge: 546a0b16 6b05d928
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 20:29:18 2021 +0000

        Merge pull request #937 from rigrig/barclock-b2

        Barclock works fine on the Bangle.js 2 :-)

    commit 15aa41c766
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 12:23:03 2021 -0800

        Add files via upload

    commit 6a93494e3f
    Merge: 12443640 546a0b16
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 12:22:27 2021 -0800

        Merge branch 'espruino:master' into master

    commit 546a0b16cc
    Merge: cb6e14f6 18fbd289
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 20:20:55 2021 +0000

        Merge branch 'master' of github.com:espruino/BangleApps

    commit cb6e14f6c1
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 20:20:37 2021 +0000

        messages, start of call handling and message responses, fix for scroll issue when only 2 menu items

    commit 12443640c9
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 11:54:22 2021 -0800

        Update apps.json

    commit 9bdc07f861
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 11:47:36 2021 -0800

        Update apps.json

    commit 4eee3f05e9
    Merge: aafc93f0 18fbd289
    Author: bengwalker <63957296+bengwalker@users.noreply.github.com>
    Date:   Tue Nov 23 20:46:32 2021 +0100

        Merge branch 'master' into master

    commit 298fa47cd8
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 11:42:50 2021 -0800

        Update apps.json

    commit 52c07f6dc8
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 11:40:42 2021 -0800

        Update apps.json

    commit fe340d75bb
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 11:39:31 2021 -0800

        Update apps.json

    commit aafc93f09a
    Author: bengwalker <63957296+bengwalker@users.noreply.github.com>
    Date:   Tue Nov 23 20:35:35 2021 +0100

        Update README.md

        update README

    commit bd80ea5ca0
    Author: bengwalker <63957296+bengwalker@users.noreply.github.com>
    Date:   Tue Nov 23 20:31:33 2021 +0100

        Update metronome.js

        print instructuions for banglejs2

    commit 51afd5ef04
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 11:29:27 2021 -0800

        Add files via upload

    commit ff62b603a2
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 11:28:51 2021 -0800

        Add files via upload

    commit ffbd331c13
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 11:28:29 2021 -0800

        Add files via upload

    commit 93c113a95a
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 11:27:25 2021 -0800

        Add files via upload

    commit b2be26fcce
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 11:27:07 2021 -0800

        Add files via upload

    commit 899e78539c
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 11:26:06 2021 -0800

        Add files via upload

    commit 50a88d41cd
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 11:25:35 2021 -0800

        Add files via upload

    commit b1d636bac2
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 11:25:10 2021 -0800

        Add files via upload

    commit 6b05d92875
    Author: Richard de Boer <git@tubul.net>
    Date:   Tue Nov 23 19:42:12 2021 +0100

        barclock: Fix time/date disappearing after fullscreen notification

        By forcing a complete redraw at lcdPower-on

    commit 32e3d326aa
    Author: Richard de Boer <git@tubul.net>
    Date:   Sat Nov 20 17:13:36 2021 +0100

        barclock works fine on the Bangle.js 2 :-)

    commit 1def233de2
    Author: Vingelar <Vingelar@mantisse.de>
    Date:   Tue Nov 23 19:09:16 2021 +0100

        changed format of bg images to binary raw format (export from emulator

    commit e021aa2c9d
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 17:59:49 2021 +0100

        Update app.js

        binwatch: adapted names of bg images

    commit 3dd723d10b
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 17:58:48 2021 +0100

        Update apps.json

        binwatch: shorten names of background images

    commit 275402344e
    Merge: cf027b37 18fbd289
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 17:36:45 2021 +0100

        Merge branch 'espruino:master' into master

    commit 18fbd2898d
    Merge: 5be6981a df364bab
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 16:34:15 2021 +0000

        Merge pull request #933 from peerdavid/master

        [LCARS Clock] Added lcars icon to watch face.

    commit cf027b3783
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 17:34:13 2021 +0100

        Update app.js

        changed names of background images

    commit 5be6981acd
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 16:31:42 2021 +0000

        oops - named stub wrong

    commit d328d94d34
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 17:30:20 2021 +0100

        Add files via upload

        added background files exported from Emulator

    commit c36fb16a68
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 17:28:54 2021 +0100

        Delete Background240_center.js

        removed background240_center.js (wrong format)

    commit 4719fada28
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 16:28:34 2021 +0000

        Android Remove messages on disconnect, Fix music control (ref #909)

    commit f431bd8a2c
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 17:28:25 2021 +0100

        Delete Background176_center.js

        remove backgounrd176_center.js (wrong format)

    commit 1b548c9bbb
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 17:27:33 2021 +0100

        Update apps.json

        adapted naming for image files

    commit df364babab
    Merge: d28517b2 a1eeadfc
    Author: Peer David <4281901+peerdavid@users.noreply.github.com>
    Date:   Tue Nov 23 17:16:00 2021 +0100

        Merge branch 'espruino:master' into master

    commit d28517b2a5
    Merge: cd93a201 465c93d8
    Author: David Peer <david.peer@outlook.com>
    Date:   Tue Nov 23 17:15:18 2021 +0100

        Merge branch 'master' of https://github.com/peerdavid/BangleApps

    commit cd93a201f8
    Author: David Peer <david.peer@outlook.com>
    Date:   Tue Nov 23 17:15:15 2021 +0100

        Moved logo

    commit dd2bb22f07
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 17:08:57 2021 +0100

        Update apps.json

        use .js files as background images

    commit 03c5f996f4
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 17:07:21 2021 +0100

        Add files via upload

        added background files as js

    commit 7d81bfe2bb
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 16:53:40 2021 +0100

        Update apps.json

        added missing "url" to background storage

    commit 51b73894e4
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 16:51:40 2021 +0100

        Update app.js

        use background images from storage

    commit dab36d05a7
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 16:48:50 2021 +0100

        Update apps.json

        added background images to stroage

    commit 31f2809341
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 15:44:49 2021 +0000

        Fix https://github.com/espruino/BangleApps/issues/927 - App loader offers to update unknown apps

    commit a1eeadfc22
    Merge: 68429483 0a695e51
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 15:40:09 2021 +0000

        Merge pull request #934 from Ronin0000/master

        Fix School Calendar Bug

    commit 0a695e5143
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 07:09:14 2021 -0800

        Update custom.html

        fix bug that was for testing

    commit cfecc24f42
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 23 07:05:47 2021 -0800

        Delete boot.js

    commit 684294830d
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 13:57:46 2021 +0000

        app manager works in bjs2

    commit 465c93d830
    Merge: d20f5e59 3ba779ee
    Author: Peer David <4281901+peerdavid@users.noreply.github.com>
    Date:   Tue Nov 23 14:53:47 2021 +0100

        Merge branch 'espruino:master' into master

    commit d20f5e597e
    Author: David Peer <david.peer@outlook.com>
    Date:   Tue Nov 23 14:53:27 2021 +0100

        Updated screenshot

    commit a283cf58fb
    Author: David Peer <david.peer@outlook.com>
    Date:   Tue Nov 23 14:51:55 2021 +0100

        Included lcars logo

    commit be3345d143
    Merge: e3310ffc 3ba779ee
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Tue Nov 23 13:22:30 2021 +0000

        Merge remote-tracking branch 'upstream/master'

    commit e3310ffc32
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Tue Nov 23 13:13:17 2021 +0000

        Pastel: architect font module

    commit 3ba779ee58
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 11:48:34 2021 +0000

        Fix bangleapps after recent PRs

    commit aaf06b113c
    Merge: a0351381 06a6b72d
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 11:42:26 2021 +0000

        Merge branch 'master' of github.com:espruino/BangleApps

    commit 9600f16671
    Author: David Peer <david.peer@outlook.com>
    Date:   Tue Nov 23 11:19:48 2021 +0100

        Updated changelog

    commit 98577b6269
    Merge: 1ccabca0 d3cd47f9
    Author: David Peer <david.peer@outlook.com>
    Date:   Tue Nov 23 11:18:52 2021 +0100

        Merge branch 'master' of https://github.com/peerdavid/BangleApps

    commit 1ccabca0c6
    Author: David Peer <david.peer@outlook.com>
    Date:   Tue Nov 23 11:18:50 2021 +0100

        No hrm icon - its shown too much.

    commit d3cd47f957
    Merge: 2e18795c 06a6b72d
    Author: Peer David <4281901+peerdavid@users.noreply.github.com>
    Date:   Tue Nov 23 11:12:43 2021 +0100

        Merge branch 'espruino:master' into master

    commit 2e18795c57
    Author: David Peer <david.peer@outlook.com>
    Date:   Tue Nov 23 11:11:33 2021 +0100

        Fixed string

    commit 36edd449c5
    Author: David Peer <david.peer@outlook.com>
    Date:   Tue Nov 23 11:10:33 2021 +0100

        Minor change

    commit 06a6b72d42
    Merge: a39d4102 be083113
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 10:03:45 2021 +0000

        Merge pull request #925 from Ronin0000/master

        Add School Calendar

    commit a39d410296
    Merge: ab2cb243 930cfa13
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 10:02:41 2021 +0000

        Merge pull request #928 from peerdavid/master

        [LCARS Clock] Icons for different states such as GPS or HRM.

    commit 5c3b0468d4
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 10:59:26 2021 +0100

        Update apps.json

        corrected format

    commit 336501059d
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 10:56:25 2021 +0100

        Update apps.json

        removed background image

    commit 3f4c49a8ae
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 10:55:07 2021 +0100

        Update app.js

        integrated BG image into app

    commit ff3223e1b9
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 10:51:02 2021 +0100

        Update app.js

        added "require" for bg image

    commit ab2cb24385
    Merge: adadf7ef 162dc1f2
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 09:51:01 2021 +0000

        Merge pull request #929 from weeurey/master

        Update app

    commit adadf7efd3
    Merge: b7f403e7 0f9d938f
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 09:49:26 2021 +0000

        Merge pull request #931 from reelyactive/master

        emojuino@0.02

    commit b7f403e79b
    Merge: f4e997d4 46383d4d
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 09:49:12 2021 +0000

        Merge pull request #930 from rigrig/gbmusic-fix

        gbmusic: fix "previous" button image

    commit a035138129
    Author: Gordon Williams <gw@pur3.co.uk>
    Date:   Tue Nov 23 09:44:24 2021 +0000

        fix download icon on android

    commit b128f5c155
    Author: Vingelar <vingelar@weltherrschaft.at>
    Date:   Tue Nov 23 10:38:02 2021 +0100

        Update apps.json

        added background image to upload

    commit 930cfa1331
    Author: David Peer <david.peer@outlook.com>
    Date:   Tue Nov 23 09:43:24 2021 +0100

        New HRM Icon

    commit 7f3f7b9eee
    Author: David Peer <david.peer@outlook.com>
    Date:   Tue Nov 23 08:26:37 2021 +0100

        Currently, no confidence > 80 is reached...

    commit 1fb861b82c
    Author: David Peer <david.peer@outlook.com>
    Date:   Tue Nov 23 08:25:11 2021 +0100

        HRM confidence of 80 to display

    commit 7d95221e16
    Author: David Peer <david.peer@outlook.com>
    Date:   Tue Nov 23 08:24:15 2021 +0100

        Minor change

    commit 6d8d98fb03
    Author: David Peer <david.peer@outlook.com>
    Date:   Tue Nov 23 08:21:41 2021 +0100

        Show HRM

    commit a0cc4c633e
    Author: David Peer <david.peer@outlook.com>
    Date:   Tue Nov 23 08:10:00 2021 +0100

        Minor changes

    commit be08311331
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Nov 22 19:11:40 2021 -0800

        Update custom.html

    commit 0664a44c45
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Nov 22 18:52:43 2021 -0800

        Update apps.json

    commit b032ca0fc1
    Merge: 7fd37f7e f1f063fd
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Nov 22 18:49:27 2021 -0800

        Merge branch 'espruino-master'

    commit f1f063fd1a
    Merge: 7fd37f7e f4e997d4
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Nov 22 18:49:09 2021 -0800

        merge3

    commit 0f9d938fa6
    Author: jeffyactive <jeff@reelyactive.com>
    Date:   Mon Nov 22 20:23:17 2021 -0500

        Version bump

    commit 5a01047cd0
    Author: jeffyactive <jeff@reelyactive.com>
    Date:   Mon Nov 22 20:21:29 2021 -0500

        Added screenshots

    commit ae55c2d39f
    Author: jeffyactive <jeff@reelyactive.com>
    Date:   Mon Nov 22 20:09:26 2021 -0500

        Allow emulator, specify type as app

    commit 58f9e7cd5b
    Author: jeffyactive <jeff@reelyactive.com>
    Date:   Mon Nov 22 20:03:18 2021 -0500

        Upgrade to emoji images and supporting text

    commit 1a75f0813b
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Mon Nov 22 22:50:27 2021 +0000

        Pastel: font modules

    commit d450758f1a
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Mon Nov 22 22:09:52 2021 +0000

        Pastel: font modules

    commit cf66db35a9
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Mon Nov 22 22:08:47 2021 +0000

        Pastel: font modules

    commit 29ecb8daa2
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Mon Nov 22 22:08:19 2021 +0000

        Pastel: font modules

    commit a29bba62cb
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Mon Nov 22 21:29:26 2021 +0000

        Pastel: f_orbitron font module

    commit 8576d90e50
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Mon Nov 22 21:24:27 2021 +0000

        Pastel: f_orbitron font module

    commit 723e1a6cb2
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Mon Nov 22 21:17:50 2021 +0000

        Pastel: f_orbitron font module

    commit ec7f9ac69d
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Mon Nov 22 21:13:48 2021 +0000

        Pastel: f_orbitron font module

    commit d68bcf1ff1
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Mon Nov 22 21:05:28 2021 +0000

        Pastel: f_orbitron font module

    commit ff1d5f2d76
    Author: hughbarney <hughbarney@googlemail.com>
    Date:   Mon Nov 22 21:03:53 2021 +0000

        Pastel: f_orbitron font module

    commit 7fd37f7e4e
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Nov 22 12:18:44 2021 -0800

        Update custom.html

    commit 84d9ca4b33
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Nov 22 10:57:14 2021 -0800

        Update boot.js

    commit 740f4a9566
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Nov 22 10:52:27 2021 -0800

        Create boot.js

        not part of the current merge

    commit d3538a03f1
    Author: David Peer <david.peer@outlook.com>
    Date:   Mon Nov 22 19:12:50 2021 +0100

        Added raster

    commit 20310fdb75
    Author: David Peer <david.peer@outlook.com>
    Date:   Mon Nov 22 19:02:27 2021 +0100

        Smaller icons

    commit 3863be1830
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Nov 22 09:06:52 2021 -0800

        Delete apps/schoolCalendar/fullcalendar/interaction/src directory

    commit 5d8c13a7e6
    Author: David Peer <david.peer@outlook.com>
    Date:   Mon Nov 22 17:56:29 2021 +0100

        Updated screenshot accordingly

    commit 21134a1dcd
    Author: David Peer <david.peer@outlook.com>
    Date:   Mon Nov 22 17:55:21 2021 +0100

        Better background

    commit cab3d43085
    Author: David Peer <david.peer@outlook.com>
    Date:   Mon Nov 22 17:39:48 2021 +0100

        Better alarm - shown only in icon so we can display more data.

    commit db22bac0ec
    Author: David Peer <david.peer@outlook.com>
    Date:   Mon Nov 22 17:11:15 2021 +0100

        Use correct alarm icon

    commit 162dc1f293
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Mon Nov 22 16:11:07 2021 +0000

        Update apps.json

    commit dc24ae9bfb
    Author: David Peer <david.peer@outlook.com>
    Date:   Mon Nov 22 17:10:58 2021 +0100

        Better HRM Icon

    commit 8e688d144a
    Merge: 741f7aab f4e997d4
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Mon Nov 22 16:09:43 2021 +0000

        Merge branch 'espruino:master' into master

    commit 741f7aab52
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Mon Nov 22 16:08:38 2021 +0000

        Update apps.json

    commit 247ed9faa2
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Mon Nov 22 16:07:39 2021 +0000

        Create ChangeLog

    commit d878d46d4c
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Mon Nov 22 16:05:57 2021 +0000

        Update app.js

    commit c720fc314b
    Author: David Peer <david.peer@outlook.com>
    Date:   Mon Nov 22 17:03:21 2021 +0100

        New alarm icon

    commit 75fbd6882d
    Author: David Peer <david.peer@outlook.com>
    Date:   Mon Nov 22 16:37:48 2021 +0100

        Added icon for alarm

    commit eb20f15537
    Author: David Peer <david.peer@outlook.com>
    Date:   Mon Nov 22 16:33:42 2021 +0100

        Compeletely new design with icons for GPS, HRM and Compass. All Icons are open source and mentioned in the Readme.md file.

    commit 46383d4d55
    Author: Richard de Boer <git@tubul.net>
    Date:   Mon Nov 22 13:18:01 2021 +0100

        gbmusic: fix "previous" button image

    commit 1bf5132a5c
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 21:07:49 2021 -0800

        Update custom.html

    commit 618c5b7a10
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 21:02:29 2021 -0800

        Update custom.html

    commit adfeb5e535
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 21:00:21 2021 -0800

        Update custom.html

    commit f950fd2ee8
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 20:57:52 2021 -0800

        Update custom.html

    commit 3ee0e9bae6
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 20:49:48 2021 -0800

        Update apps.json

    commit 387bd30236
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 20:48:14 2021 -0800

        Rename ChangeLog.md to ChangeLog

    commit 6e07f282b8
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 20:41:26 2021 -0800

        Add files via upload

    commit fea37b4992
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 20:37:40 2021 -0800

        Update apps.json

    commit 939d8f6a9a
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 20:37:21 2021 -0800

        Add files via upload

    commit 854ae5361d
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 20:34:28 2021 -0800

        Update README.md

    commit 426768eb11
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 20:32:14 2021 -0800

        Update custom.html

    commit bf994d9acc
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 18:24:29 2021 -0800

        Update apps.json

    commit 7c74c5d43f
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 18:15:40 2021 -0800

        Update apps.json

    commit 8981aa3f61
    Merge: e878e547 100384f2
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 18:12:19 2021 -0800

        Merge branch 'espruino:master' into master

    commit e878e54787
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 18:11:43 2021 -0800

        merge

    commit 3bde4d2e48
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 16:12:16 2021 -0800

        Update custom.html

    commit 5f3c93df8c
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 08:37:41 2021 -0800

        Update custom.html

    commit 26bd9e35be
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 08:35:47 2021 -0800

        Update custom.html

    commit 8f2cc6e213
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 08:34:09 2021 -0800

        Update custom.html

    commit 66f0611123
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 08:32:48 2021 -0800

        Update custom.html

    commit 87a9504912
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 08:30:44 2021 -0800

        Update custom.html

    commit 626498da9d
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 08:24:01 2021 -0800

        Update custom.html

    commit 3472ca355a
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 08:21:57 2021 -0800

        Update custom.html

    commit 529b0cb463
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 08:19:53 2021 -0800

        Update custom.html

    commit e77d998002
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 08:18:21 2021 -0800

        Update custom.html

        update

    commit a712c37c76
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 08:17:58 2021 -0800

        Update custom.html

    commit 4d9d6abb9e
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 08:14:02 2021 -0800

        Update custom.html

    commit f35b248448
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 08:09:44 2021 -0800

        Update custom.html

    commit d0336b2854
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 08:06:56 2021 -0800

        Update custom.html

    commit 640c8e491e
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 08:03:42 2021 -0800

        Update custom.html

    commit 604153cb24
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 08:01:45 2021 -0800

        Update custom.html

    commit 0f8f1e38e8
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 07:58:44 2021 -0800

        Update custom.html

    commit 7f7dcb0bcf
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 07:58:22 2021 -0800

        Update custom.html

    commit d42fe03dc8
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 07:55:08 2021 -0800

        Update custom.html

    commit 98f172fad4
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 07:53:01 2021 -0800

        Update custom.html

    commit daf8dde32b
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 07:49:25 2021 -0800

        Update custom.html

    commit 408bd24080
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 07:48:38 2021 -0800

        Update custom.html

    commit 68db21acbb
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 07:44:30 2021 -0800

        Update custom.html

    commit 45feb1b2ff
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 07:39:42 2021 -0800

        Update custom.html

    commit 3bc5fd87b6
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 07:39:12 2021 -0800

        Update custom.html

    commit c3eede9868
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 07:37:42 2021 -0800

        Update custom.html

    commit 8426356c01
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 07:35:55 2021 -0800

        Update custom.html

    commit 93f09c216a
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 07:27:39 2021 -0800

        Update apps.json

    commit cb748a251d
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Nov 21 07:27:20 2021 -0800

        Update custom.html

    commit a994ed6630
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 19:53:38 2021 -0800

        Update custom.html

    commit b76bb48973
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 19:50:08 2021 -0800

        Update custom.html

    commit f99ce683e9
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 19:46:32 2021 -0800

        Update custom.html

    commit ddfdd94ff8
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 19:42:51 2021 -0800

        Update custom.html

    commit 52675f7eff
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 18:48:03 2021 -0800

        Update custom.html

    commit d491103414
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 18:44:23 2021 -0800

        Update custom.html

    commit 71ff5959ae
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 18:42:58 2021 -0800

        Update custom.html

    commit daba705b37
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 18:42:16 2021 -0800

        Update custom.html

    commit 19cb5fc749
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 18:39:15 2021 -0800

        Update apps.json

    commit 6c20945898
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 18:37:41 2021 -0800

        Update custom.html

    commit ff519bdc0d
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 18:15:29 2021 -0800

        Update custom.html

    commit 34843d703a
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 18:11:54 2021 -0800

        Update custom.html

    commit 4da82197f3
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 18:01:20 2021 -0800

        Update custom.html

    commit a9c5a32bc1
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 17:56:54 2021 -0800

        Update custom.html

    commit 352fea3479
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 17:53:38 2021 -0800

        Update apps.json

    commit ab6f56c381
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 17:52:34 2021 -0800

        Update custom.html

    commit a65742ce34
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 17:48:25 2021 -0800

        Update apps.json

    commit a1a387dd60
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 17:47:52 2021 -0800

        Update custom.html

    commit 180e88e0e4
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 17:46:50 2021 -0800

        Update custom.html

    commit 0099736b8c
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 17:46:14 2021 -0800

        Update apps.json

    commit 1fdf4e954e
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 17:44:43 2021 -0800

        Update apps.json

    commit faa5b6b21a
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 17:44:10 2021 -0800

        Update custom.html

    commit d617803c13
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 16:37:44 2021 -0800

        Update apps.json

    commit dc669254bc
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 16:37:10 2021 -0800

        Update custom.html

    commit 303247fb4e
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 16:25:00 2021 -0800

        Update custom.html

    commit d836cbd2ba
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 16:15:16 2021 -0800

        Update custom.html

    commit e206bd4e1c
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 16:08:00 2021 -0800

        Update custom.html

    commit 1a6c1acce5
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 16:04:06 2021 -0800

        Update custom.html

    commit aa20fac50e
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 16:02:52 2021 -0800

        Update apps.json

    commit 5625414e90
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 15:34:30 2021 -0800

        Update apps.json

    commit ebc2d80961
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 15:33:27 2021 -0800

        Update custom.html

    commit 6c43de3766
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 15:21:11 2021 -0800

        Update apps.json

    commit 37da3c68ae
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 15:19:46 2021 -0800

        Update custom.html

    commit 92707b9d13
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 15:12:50 2021 -0800

        Update ChangeLog.md

    commit d3ca682cff
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 15:09:56 2021 -0800

        Update apps.json

    commit dfd9e59993
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 15:08:52 2021 -0800

        Update custom.html

    commit 5d24a09ffa
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 15:04:41 2021 -0800

        Update apps.json

    commit e965bd7d96
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 15:02:43 2021 -0800

        Update custom.html

    commit 345d9c1551
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 15:02:12 2021 -0800

        Delete schoolCalendar.js

    commit dc9db8a476
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 15:01:58 2021 -0800

        Update schoolCalendar.js

    commit 58df0a5ca2
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 15:01:03 2021 -0800

        Update apps.json

    commit 65ad4979e8
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 13:27:10 2021 -0800

        Update custom.html

    commit 9c07800c5e
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 13:07:38 2021 -0800

        Update custom.html

    commit b108bc45fb
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 12:58:24 2021 -0800

        Update custom.html

    commit d871855f8e
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 12:55:58 2021 -0800

        Update apps.json

    commit 99112920b2
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 12:47:34 2021 -0800

        Update apps.json

    commit 37f4329ec5
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 12:39:49 2021 -0800

        Update apps.json

    commit ba2aee642b
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 12:39:06 2021 -0800

        Update custom.html

    commit 98048dc23c
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 12:37:23 2021 -0800

        Update apps.json

    commit 1a53e8d34a
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 12:33:43 2021 -0800

        Update custom.html

    commit 993bb7298c
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 12:31:41 2021 -0800

        Rename interface.html to custom.html

    commit 3a3962bfdc
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 12:30:12 2021 -0800

        Rename custom.html to interface.html

    commit c8ad92a3dc
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 12:20:33 2021 -0800

        Update apps.json

    commit ae85c1cee7
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Nov 20 12:14:33 2021 -0800

        Update custom.html

    commit c1b467ba8e
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Sat Nov 20 18:14:50 2021 +0000

        Update app.js

    commit 438537ace2
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Sat Nov 20 18:10:03 2021 +0000

        Update app.js

    commit e6d736860d
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Sat Nov 20 17:57:57 2021 +0000

        Update app.js

    commit e1add5e2b2
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Sat Nov 20 17:45:02 2021 +0000

        Update app.js

    commit 09be008dfa
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Sat Nov 20 17:39:48 2021 +0000

        Update app.js

    commit 9f26994f5c
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Sat Nov 20 17:33:47 2021 +0000

        Update app.js

    commit 0cf4c5d70a
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Sat Nov 20 17:10:31 2021 +0000

        Update app.js

    commit cfdb944395
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Sat Nov 20 16:32:34 2021 +0000

        Update app.js

        Add Media controls

    commit e3cd8f5607
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Sat Nov 20 16:16:37 2021 +0000

        Update app.js

        Removed extra unneeded code

    commit ceed8a1238
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Sat Nov 20 15:05:28 2021 +0000

        Update app.js

    commit 721a3f2608
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Sat Nov 20 14:39:30 2021 +0000

        Update app.js

    commit a16bfe4d73
    Author: weeurey <liamure@yahoo.co.uk>
    Date:   Sat Nov 20 14:32:57 2021 +0000

        Update app.js

    commit e72bf84a7a
    Author: bengwalker <63957296+bengwalker@users.noreply.github.com>
    Date:   Wed Nov 17 21:29:57 2021 +0100

        use dark theme for metronome

    commit 071a7a7e68
    Author: bengwalker <63957296+bengwalker@users.noreply.github.com>
    Date:   Wed Nov 17 20:46:18 2021 +0100

        add support for Bangle.js 2

    commit 7a7175fa48
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Thu Nov 4 16:00:41 2021 -0700

        Update custom.html

    commit e292849869
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Wed Nov 3 08:22:32 2021 -0700

        Rename interface.html to custom.html

    commit cd7579269e
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Wed Nov 3 08:22:04 2021 -0700

        Update apps.json

    commit df7f9cc530
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Wed Nov 3 08:20:09 2021 -0700

        Update interface.html

    commit ada94b11cf
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Wed Nov 3 08:06:50 2021 -0700

        Update interface.html

    commit 08fc58deb5
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 2 20:20:57 2021 -0700

        Update interface.html

    commit 04b9e74a4d
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 2 20:10:58 2021 -0700

        Update interface.html

    commit be7af68455
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 2 20:08:24 2021 -0700

        Update interface.html

    commit aaee5f3c06
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 2 19:13:08 2021 -0700

        Update interface.html

    commit 73819933ee
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 2 18:52:09 2021 -0700

        Update schoolCalendar.js

    commit fa5cbd71c6
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 2 18:49:22 2021 -0700

        Update README.md

    commit fa392008d1
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 2 18:45:24 2021 -0700

        Update README.md

    commit c280e41560
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Nov 2 18:42:39 2021 -0700

        Update README.md

    commit 6b84a8eb30
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Oct 18 19:43:26 2021 -0700

        Update schoolCalendar.js

    commit 5bbfb11099
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Oct 18 19:43:11 2021 -0700

        Update interface.html

        update interface

    commit 6660dad4c0
    Merge: 8c003cf6 1e0f6cd6
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Oct 18 07:35:54 2021 -0700

        Merge branch 'espruino:master' into master

    commit 8c003cf6ff
    Merge: 5c11881f f1ce196a
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Fri Oct 15 07:33:21 2021 -0700

        Merge branch 'espruino:master' into master

    commit 5c11881f75
    Merge: 8c149dbe be34e2b0
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Thu Oct 14 17:14:45 2021 -0700

        Merge branch 'espruino:master' into master

    commit 8c149dbea1
    Merge: 7888cc6c 300ed35b
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Wed Oct 13 07:46:16 2021 -0700

        Merge branch 'espruino:master' into master

    commit 7888cc6ce0
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Oct 11 17:43:59 2021 -0700

        Create README.md

    commit 36a52b8b00
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Oct 11 17:43:52 2021 -0700

        Update README.md

    commit 4f5558c41e
    Merge: 5db16d19 68cc9fbd
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Oct 11 16:43:12 2021 -0700

        Merge branch 'espruino:master' into master

    commit 5db16d190b
    Merge: e7995505 54d98db6
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Oct 11 07:03:23 2021 -0700

        Merge branch 'espruino:master' into master

    commit e799550544
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Thu Oct 7 17:02:57 2021 -0700

        Update schoolCalendar.js

    commit 89f82a5043
    Merge: 7107d510 f3712e66
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Thu Oct 7 17:02:38 2021 -0700

        Merge branch 'espruino:master' into master

    commit 7107d510a5
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Oct 4 20:06:28 2021 -0700

        Update schoolCalendar.js

    commit a618797532
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Oct 4 19:55:30 2021 -0700

        Update schoolCalendar.js

    commit 3c9e46c216
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Oct 4 15:59:03 2021 -0700

        Update apps.json

    commit 941bc852c1
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Oct 4 15:57:53 2021 -0700

        Add files via upload

    commit 4cbfac212e
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Oct 4 15:57:26 2021 -0700

        Delete apps/schoolCalender directory

    commit c7b723f87e
    Merge: 8d2f4ccc ba08863b
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Oct 4 07:31:25 2021 -0700

        Merge branch 'espruino:master' into master

    commit 8d2f4ccca7
    Merge: 7846b48c 44aa03e4
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Fri Oct 1 07:31:42 2021 -0700

        Merge branch 'espruino:master' into master

    commit 7846b48cf6
    Merge: 59aa9909 d0fd2f01
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Thu Sep 30 17:22:33 2021 -0700

        Merge branch 'espruino:master' into master

    commit 59aa99092d
    Merge: 9061acee 03bbe1d2
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Wed Sep 29 08:06:54 2021 -0700

        Merge branch 'espruino:master' into master

    commit 9061acee5d
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Sep 28 17:44:12 2021 -0700

        Update interface.html

    commit 79bacc4593
    Merge: bb5fcdaa 48bb819b
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Sep 28 07:12:44 2021 -0700

        Merge branch 'espruino:master' into master

    commit bb5fcdaafc
    Merge: 814fbdd6 28bd9e83
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Sep 27 16:15:07 2021 -0700

        Merge branch 'espruino:master' into master

    commit 814fbdd61e
    Merge: 83d88a1e f3fd0f25
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Sep 25 08:01:44 2021 -0700

        Merge branch 'espruino:master' into master

    commit 83d88a1ea1
    Merge: c9bed74e 71471d37
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Fri Sep 24 19:35:52 2021 -0700

        Merge branch 'espruino:master' into master

    commit c9bed74ec2
    Merge: 1f130c53 16fe8470
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Thu Sep 23 15:21:18 2021 -0700

        Merge branch 'espruino:master' into master

    commit 1f130c53b4
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Wed Sep 22 07:25:41 2021 -0700

        Update interface.html

    commit 3d8ebe82c2
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Sep 21 21:07:20 2021 -0700

        Update interface.html

    commit 2ca58d2cc4
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Sep 21 21:02:14 2021 -0700

        Update custom.html

    commit d8c149073f
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Sep 21 21:01:31 2021 -0700

        Update apps.json

    commit ceab5d46a2
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Sep 21 20:58:01 2021 -0700

        Rename schoolCalender.js to app.js

    commit 9b344eb1ec
    Merge: ec453c0e 3b15a7f9
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Tue Sep 21 07:24:54 2021 -0700

        Merge branch 'espruino:master' into master

    commit ec453c0e10
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Sep 20 19:45:50 2021 -0700

        Update README.md

    commit a8f7fe7292
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Sep 20 07:31:41 2021 -0700

        Update interface.html

    commit 51c41d5c48
    Merge: b7a4ecb5 50ec8d97
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Mon Sep 20 07:25:50 2021 -0700

        Merge branch 'espruino:master' into master

    commit b7a4ecb578
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Sep 19 16:48:24 2021 -0700

        Update interface.html

    commit 82320ab073
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Sep 19 16:40:43 2021 -0700

        Update interface.html

    commit 27d025bf82
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Sep 19 14:01:04 2021 -0700

        Update interface.html

    commit bd92c0e67f
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Sep 19 13:51:31 2021 -0700

        Update interface.html

    commit f0c596d14f
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Sep 19 13:40:29 2021 -0700

        Update interface.html

    commit d6542bac6d
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Sep 19 07:29:46 2021 -0700

        Update interface.html

    commit 7a2ee0f711
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Sep 19 07:15:29 2021 -0700

        Update interface.html

    commit c65ddbfc52
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sun Sep 19 07:05:32 2021 -0700

        Update interface.html

    commit 43c684f389
    Merge: ddd1a83c 5f5b5c0d
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Sep 18 19:45:25 2021 -0700

        Merge branch 'espruino-master'

    commit 5f5b5c0dc2
    Merge: ddd1a83c cc2e1bbd
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Sat Sep 18 19:42:47 2021 -0700

        Merge branch 'master' of git://github.com/espruino/BangleApps into espruino-master

    commit ddd1a83c61
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Fri Sep 17 18:27:57 2021 -0700

        Update interface.html

    commit 632c98f8be
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Fri Sep 17 15:13:46 2021 -0700

        Update interface.html

    commit c252f74e16
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Fri Sep 17 07:31:16 2021 -0700

        Update interface.html

    commit b9b0a43e99
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Thu Sep 16 19:28:35 2021 -0700

        Update interface.html

    commit afafd449fb
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Thu Sep 16 19:22:01 2021 -0700

        Update interface.html

    commit 45a0d50b01
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Thu Sep 16 19:15:25 2021 -0700

        Update interface.html

    commit eb146fe07b
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Thu Sep 16 19:07:51 2021 -0700

        Update interface.html

    commit 34baf995e7
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Thu Sep 16 19:04:33 2021 -0700

        Update interface.html

    commit 751fbdda43
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Thu Sep 16 19:00:47 2021 -0700

        Update interface.html

    commit bc71f31731
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Thu Sep 16 18:47:13 2021 -0700

        Update interface.html

    commit cfde9e14a8
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Thu Sep 16 18:41:40 2021 -0700

        Update interface.html

    commit 135165c983
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Thu Sep 16 18:37:52 2021 -0700

        Add files via upload

    commit d50ba356d6
    Author: Ronin0000 <89286474+Ronin0000@users.noreply.github.com>
    Date:   Thu Sep 16 18:36:59 2021 -0700

        Update apps.json

commit a385c09922
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Fri Dec 3 12:04:40 2021 +0000

    openstmap .10: Improve scale factor calculation to fix scaling issues (#984)

commit 052eb41ebc
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Fri Dec 3 09:20:13 2021 +0000

    Stop crypto polyfill being pulled in - fix http://forum.espruino.com/conversations/369197/#comment16294286

commit 6baddd3b43
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Fri Dec 3 09:15:37 2021 +0000

    Add gbdebug app

commit b5fa5fb64e
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Fri Dec 3 08:24:12 2021 +0000

    tweak for lint errors - still some assignment warnings

commit d504017782
Merge: e2ae57fa 633cad5c
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Fri Dec 3 08:18:47 2021 +0000

    Merge pull request #986 from stephenPspackman/master

    pooq Roman - a watch face

commit e2ae57faa4
Merge: 79f37b2b 3595fab0
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Fri Dec 3 08:13:52 2021 +0000

    Merge pull request #951 from rigrig/qmsched-clean

    Move Quiet Mode LCD options from global settings to the Quiet Mode Schedule app

commit 79f37b2bfa
Merge: 56b9e04f b595e603
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Fri Dec 3 08:12:21 2021 +0000

    Merge pull request #987 from hughbarney/master

    Pebble: use LECO1976 font, update boot icon, redo screenshots

commit 633cad5cd3
Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
Date:   Fri Dec 3 00:11:07 2021 -0800

    Update app.js

    Fix (hopefully) time zone issues and boundaries in the event scanner.

commit b595e60333
Author: hughbarney <hughbarney@googlemail.com>
Date:   Thu Dec 2 22:17:00 2021 +0000

    Pebble: switched to LECO1976 font and slanting boot icon

commit 3595fab079
Author: Richard de Boer <git@tubul.net>
Date:   Fri Nov 26 20:05:40 2021 +0100

    qmsched: manage LCD options

    Also migrates old settings file: we now store options in qmsched.json,
    instead of in the global setting.json.

commit d743b2266a
Author: Richard de Boer <git@tubul.net>
Date:   Tue Nov 23 21:27:37 2021 +0100

    boot: remove Quiet Mode options

    Updating these will be handled by the Quiet Mode Schedule app (qmsched)

commit c24f67b06b
Author: Richard de Boer <git@tubul.net>
Date:   Tue Nov 23 21:25:26 2021 +0100

    settings: remove Quiet Mode LCD options

    Updating these will be handled by the Quiet Mode Schedule app (qmsched)

commit 32980bf3be
Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
Date:   Thu Dec 2 13:04:29 2021 -0800

    Update apps.json

    Declare pooqroman.json, our private config file.

commit ade94521b7
Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
Date:   Thu Dec 2 12:57:25 2021 -0800

    Update README.md

    Github flubs UTF-8? Really?

commit 2906e228ba
Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
Date:   Thu Dec 2 12:54:03 2021 -0800

    Update apps.json

commit 9c8fd93783
Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
Date:   Thu Dec 2 12:53:18 2021 -0800

    Create README.md

commit 6ed4565ee1
Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
Date:   Thu Dec 2 12:16:53 2021 -0800

    Add files via upload

    Upload the right file this time :-}.

commit 98bb9c28b3
Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
Date:   Thu Dec 2 12:02:15 2021 -0800

    Add files via upload

commit 4803365ab3
Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
Date:   Thu Dec 2 11:49:28 2021 -0800

    Update app.js

    Conform to filename conventions for our settings file—it is json.

commit 8ff08cbaab
Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
Date:   Thu Dec 2 11:35:39 2021 -0800

    Create resourcer.js

commit ad96a97ae9
Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
Date:   Thu Dec 2 11:34:25 2021 -0800

    Create app-icon.js

commit 2fc3cee139
Author: stephenPspackman <93166870+stephenPspackman@users.noreply.github.com>
Date:   Thu Dec 2 11:27:53 2021 -0800

    Create app.js

commit 43a68fb908
Author: hughbarney <hughbarney@googlemail.com>
Date:   Thu Dec 2 19:01:40 2021 +0000

    Pebble: 0.03 changed font to Leco1976, updated screenshots

commit 56b9e04ff0
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Thu Dec 2 10:37:08 2021 +0000

    new core

commit 9d26a6448e
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Thu Dec 2 10:28:38 2021 +0000

    launcher 0.09: Bangle.js 2 - pressing the button goes back to clock (fix #971)
          After 10s of being locked, the launcher goes back to the clock screen

commit 5b967184b6
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Thu Dec 2 10:07:45 2021 +0000

    0.03: Fix unfreed memory, and clearInterval that disabled all clocks at midnight (fix #946)
          Fix app icon
          Change menu order so 'back' is at the top

commit ce2d182247
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Thu Dec 2 09:43:03 2021 +0000

    tweak 2v11 firmware mentions

commit 829ee9129a
Merge: 0cb1dfbb 7a1bb02b
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Thu Dec 2 09:06:21 2021 +0000

    Merge pull request #983 from hughbarney/master

    Pebble: deploy settings file, updated README

commit 0cb1dfbb82
Merge: e0018a49 3baa465f
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Thu Dec 2 09:06:07 2021 +0000

    Merge pull request #982 from rigrig/delete-settings-library

    remove Settings module

commit e0018a495c
Merge: 7218acf0 cb8ee706
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Thu Dec 2 08:12:16 2021 +0000

    Merge pull request #981 from andrewgoz/master

    New icon, improved UI

commit cb8ee70625
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Thu Dec 2 16:05:36 2021 +0800

    Update app.js

commit 012982e910
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Thu Dec 2 16:03:22 2021 +0800

    Update README.md

commit 7a1bb02bce
Author: hughbarney <hughbarney@googlemail.com>
Date:   Wed Dec 1 21:07:41 2021 +0000

    Pebble: updated README

commit bd8bb638d4
Author: hughbarney <hughbarney@googlemail.com>
Date:   Wed Dec 1 20:29:34 2021 +0000

    Pebble: deploy pebble.settings.js in apps.json

commit 3baa465f01
Author: Richard de Boer <git@tubul.net>
Date:   Wed Dec 1 19:34:52 2021 +0100

    remove Settings module

    Better not to have this at all than to have a library that you can't
    actually use in widgets/boot/settings code

commit b848c45ce4
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 23:42:17 2021 +0800

    Improve token display

    Limit label length. Reduce digits font size until it fits.

commit 86ea0554b3
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 23:26:45 2021 +0800

    Colour icon

commit 3305a5db6a
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 23:23:44 2021 +0800

    Colour icon

commit 26cc978a40
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 22:29:37 2021 +0800

    Update README.md

commit 21961edf42
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 22:26:01 2021 +0800

    Update ChangeLog

commit 4d239bf71e
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 22:24:43 2021 +0800

    Version 0.03

commit 16f20970d9
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 22:21:21 2021 +0800

    Limit scanned label length

    Fixed #5

commit d4ddf22399
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 22:15:55 2021 +0800

    Try new JSON settings format

commit 60a8c487ad
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 22:05:53 2021 +0800

    Support updated settings file

commit 7a9b64a7fd
Merge: dfd7a02e 7218acf0
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 21:28:07 2021 +0800

    Merge branch 'espruino:master' into master

commit 7218acf0b4
Merge: adca628e a789e0be
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Wed Dec 1 13:26:44 2021 +0000

    Merge pull request #980 from myxor/poweroff-icon-color-fix

    Poweroff: icon color fix & README improvement

commit dfd7a02e12
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 21:26:41 2021 +0800

    Show placeholder "Calculating"

    Fixes #2

commit a789e0bea4
Author: Marco H <myxor@users.noreply.github.com>
Date:   Wed Dec 1 13:55:25 2021 +0100

    Icon white with 1px black border

commit ca6b73e3e4
Author: Marco H <myxor@users.noreply.github.com>
Date:   Wed Dec 1 13:54:49 2021 +0100

    Icon white with 1px black border

commit 871c345cea
Author: Marco H <myxor@users.noreply.github.com>
Date:   Wed Dec 1 13:49:25 2021 +0100

    Update README.md

commit e2a4428be2
Author: Marco H <myxor@users.noreply.github.com>
Date:   Wed Dec 1 13:48:03 2021 +0100

    Fix gramar and link in README

commit 2d190278f2
Author: Marco H <myxor@users.noreply.github.com>
Date:   Wed Dec 1 13:45:24 2021 +0100

    Change app icon color to white

commit f3dffdb3e1
Author: Marco H <myxor@users.noreply.github.com>
Date:   Wed Dec 1 13:44:12 2021 +0100

    Change app icon to white

commit adca628e2c
Merge: 38c6e160 edec2442
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Wed Dec 1 12:06:47 2021 +0000

    Merge branch 'master' of github.com:espruino/BangleApps

commit edec24429a
Merge: 013d7704 43312a78
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Wed Dec 1 09:37:09 2021 +0000

    Merge pull request #978 from myxor/mylocation-spelling

    Spelling issue in mylocation README

commit 43312a782a
Author: Marco H <myxor@users.noreply.github.com>
Date:   Wed Dec 1 10:23:07 2021 +0100

    Update README.md

    Fix spelling of the Scottish capital city in the README :)

commit 013d7704a9
Merge: 527bbf8e a9530f64
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Wed Dec 1 09:00:19 2021 +0000

    Merge pull request #973 from rigrig/widbars

    New widget: Widbars

commit a9530f64ea
Merge: 8580952e 527bbf8e
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Wed Dec 1 09:00:08 2021 +0000

    Merge branch 'master' into widbars

commit 527bbf8e59
Merge: 68b73d2e a44d5420
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Wed Dec 1 08:59:27 2021 +0000

    Merge pull request #974 from rigrig/widbatpc-fix

    widbatpc: Fix drawing the bar when charging

commit 68b73d2e17
Merge: 097a3153 1108983c
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Wed Dec 1 08:58:35 2021 +0000

    Merge pull request #977 from alainsaas/master

    New app: A Speech Timer

commit 1108983cba
Merge: 3c7d6b79 097a3153
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Wed Dec 1 08:58:30 2021 +0000

    Merge branch 'master' into master

commit 097a315395
Merge: 3ddd1696 24e2b01e
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Wed Dec 1 08:51:48 2021 +0000

    Merge pull request #975 from hughbarney/master

    Mylocation (APP), Pastel sunrise, sunset, A Pebble Clock to keep the revolution going

commit 3c7d6b795d
Author: Alain Saas <alainsaas@gmail.com>
Date:   Wed Dec 1 15:28:23 2021 +0900

    Update apps.json

commit 3507dcde45
Author: Alain Saas <alainsaas@gmail.com>
Date:   Wed Dec 1 15:26:52 2021 +0900

    Update apps.json

commit 541adf4c16
Author: Alain Saas <alainsaas@gmail.com>
Date:   Wed Dec 1 15:22:44 2021 +0900

    Update README.md

commit 8f0856d871
Author: Alain Saas <alainsaas@gmail.com>
Date:   Wed Dec 1 15:21:21 2021 +0900

    Update README.md

commit 13b01fe829
Author: Alain Saas <alainsaas@gmail.com>
Date:   Wed Dec 1 15:20:52 2021 +0900

    Add files via upload

commit 18c3461e6e
Author: Alain Saas <alainsaas@gmail.com>
Date:   Wed Dec 1 15:20:41 2021 +0900

    Create README.md

commit da133e2ccd
Author: Alain Saas <alainsaas@gmail.com>
Date:   Wed Dec 1 15:09:06 2021 +0900

    Create ChangeLog

commit 9033db08bf
Author: Alain Saas <alainsaas@gmail.com>
Date:   Wed Dec 1 15:03:45 2021 +0900

    Create app-icon.js

commit 673fa8820f
Author: Alain Saas <alainsaas@gmail.com>
Date:   Wed Dec 1 15:01:48 2021 +0900

    Add files via upload

commit 312bed6491
Author: Alain Saas <alainsaas@gmail.com>
Date:   Wed Dec 1 15:00:58 2021 +0900

    Create app.js

commit 24e2b01e22
Merge: 7785c7ea 3ddd1696
Author: hughbarney <hughbarney@googlemail.com>
Date:   Tue Nov 30 23:45:24 2021 +0000

    Merge remote-tracking branch 'upstream/master'

commit 7785c7ea56
Author: hughbarney <hughbarney@googlemail.com>
Date:   Tue Nov 30 23:38:29 2021 +0000

    Mylocation: make into an app

commit 848ccd2be9
Author: hughbarney <hughbarney@googlemail.com>
Date:   Tue Nov 30 23:16:56 2021 +0000

    Mylocation: make into an app

commit 8ad8ed15dc
Author: hughbarney <hughbarney@googlemail.com>
Date:   Tue Nov 30 23:15:45 2021 +0000

    Mylocation: make into an app

commit 8e56dce22c
Author: hughbarney <hughbarney@googlemail.com>
Date:   Tue Nov 30 23:10:36 2021 +0000

    Mylocation: make into an app

commit 4cbd7e8ea6
Author: hughbarney <hughbarney@googlemail.com>
Date:   Tue Nov 30 22:46:37 2021 +0000

    Mylocation: make into an app

commit e3745f94fc
Author: hughbarney <hughbarney@googlemail.com>
Date:   Tue Nov 30 22:43:45 2021 +0000

    Mylocation: make into an app

commit a44d542053
Author: Richard de Boer <git@tubul.net>
Date:   Tue Nov 30 22:30:28 2021 +0100

    widbatpc: Fix drawing the bar when charging

commit 8580952e69
Author: Richard de Boer <git@tubul.net>
Date:   Tue Nov 30 21:06:23 2021 +0100

    widbars: comment out HRM/temperature

    They didn't seem very useful

commit 7caac64a86
Author: Richard de Boer <git@tubul.net>
Date:   Tue Nov 30 20:40:33 2021 +0100

    widbars: new widget

commit 4669099645
Author: hughbarney <hughbarney@googlemail.com>
Date:   Tue Nov 30 18:11:08 2021 +0000

    MyLocation added mylocation.app.js

commit 3ddd169612
Merge: a20a2e42 31eaeade
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Tue Nov 30 17:14:26 2021 +0000

    Merge pull request #972 from andrewgoz/master

    Fix JSON save format

commit 31eaeadee2
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 00:26:39 2021 +0800

    Update Authentiwatch version

commit f094cc6e35
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 00:25:00 2021 +0800

    Update ChangeLog

commit e1c67cf345
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 00:22:23 2021 +0800

    Save in new JSON format too

commit 989dc5ccd4
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 00:18:44 2021 +0800

    Use new JSON format.

commit 51c91bf9ee
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 00:17:26 2021 +0800

    Rename variable

commit f127bef66b
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 00:14:47 2021 +0800

    Load new JSON format

commit 0e3b17be67
Author: hughbarney <hughbarney@googlemail.com>
Date:   Tue Nov 30 16:12:47 2021 +0000

    Added icon for mylocation

commit c1a48e7b48
Author: Andrew Gregory <andrew.gregory@gmail.com>
Date:   Wed Dec 1 00:09:52 2021 +0800

    Try different JSON format

commit 78c3791c1e
Author: hughbarney <hughbarney@googlemail.com>
Date:   Tue Nov 30 13:48:20 2021 +0000

    Pebble screenshot updated

commit 5b7bbd83db
Author: hughbarney <hughbarney@googlemail.com>
Date:   Tue Nov 30 13:30:13 2021 +0000

    Pebble: added README, battery warning if below 30%

commit 4cf5d86083
Merge: ac1425ca a20a2e42
Author: hughbarney <hughbarney@googlemail.com>
Date:   Tue Nov 30 13:18:27 2021 +0000

    merged upstream

commit ac1425ca7c
Author: hughbarney <hughbarney@googlemail.com>
Date:   Tue Nov 30 13:07:56 2021 +0000

    set mylocation to an app

commit a20a2e4292
Merge: dec4ec8c c30ee355
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Tue Nov 30 08:28:19 2021 +0000

    Merge pull request #967 from myxor/poweroff-app

    Poweroff app

commit c30ee355bb
Merge: bd1fa974 dec4ec8c
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Tue Nov 30 08:28:14 2021 +0000

    Merge branch 'master' into poweroff-app

commit dec4ec8c19
Merge: c1dd7c6c d2cb4be4
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Tue Nov 30 08:27:16 2021 +0000

    Merge pull request #966 from reelyactive/master

    Added SensiBLE app

commit bd1fa974d1
Author: Marco H <myxor@users.noreply.github.com>
Date:   Tue Nov 30 09:04:43 2021 +0100

    Update ChangeLog

commit 31dba4df49
Author: Marco H <myxor@users.noreply.github.com>
Date:   Tue Nov 30 08:59:37 2021 +0100

    Change icon to black

commit ffd7eebf25
Author: Marco H <myxor@users.noreply.github.com>
Date:   Tue Nov 30 08:59:20 2021 +0100

    Change icon to black

commit 4a852e7138
Author: Marco H <myxor@users.noreply.github.com>
Date:   Tue Nov 30 08:52:47 2021 +0100

    Rename Readme.md to README.md

commit a08a8d8a24
Author: Marco H <myxor@users.noreply.github.com>
Date:   Tue Nov 30 08:52:29 2021 +0100

    Update apps.json

commit 166994311e
Author: Marco H <myxor@users.noreply.github.com>
Date:   Tue Nov 30 08:46:04 2021 +0100

    Add app to apps.json

commit ea10cea706
Author: Marco H <myxor@users.noreply.github.com>
Date:   Tue Nov 30 08:44:45 2021 +0100

    Update Readme.md

commit f73055253e
Author: Marco H <myxor@users.noreply.github.com>
Date:   Tue Nov 30 08:42:30 2021 +0100

    Add files via upload

commit eef1569c99
Author: Marco H <myxor@users.noreply.github.com>
Date:   Tue Nov 30 08:41:49 2021 +0100

    Create app-icon.js

commit eeb3206a09
Author: Marco H <myxor@users.noreply.github.com>
Date:   Tue Nov 30 08:39:36 2021 +0100

    Create Readme.md

commit c822b62789
Author: Marco H <myxor@users.noreply.github.com>
Date:   Tue Nov 30 08:36:28 2021 +0100

    Create app.js

commit 8775a6f339
Author: Marco H <myxor@users.noreply.github.com>
Date:   Tue Nov 30 08:24:43 2021 +0100

    Create ChangeLog

commit d2cb4be4b4
Author: jeffyactive <jeff@reelyactive.com>
Date:   Mon Nov 29 21:48:30 2021 -0500

    Corrected variable initialisation

commit 4d107148c7
Author: jeffyactive <jeff@reelyactive.com>
Date:   Mon Nov 29 21:31:53 2021 -0500

    Added SensiBLE app

commit 6642b21606
Author: hughbarney <hughbarney@googlemail.com>
Date:   Mon Nov 29 20:27:25 2021 +0000

    added pebble icon

commit b50faa919a
Author: hughbarney <hughbarney@googlemail.com>
Date:   Mon Nov 29 20:12:25 2021 +0000

    Pebble - long live the rebellion

commit 3fa435e57d
Author: hughbarney <hughbarney@googlemail.com>
Date:   Mon Nov 29 19:58:19 2021 +0000

    Pastel, MyLocation updated README files

commit 6510e4b7d2
Author: hughbarney <hughbarney@googlemail.com>
Date:   Mon Nov 29 19:02:01 2021 +0000

    Pastel added dependancy on widpedom

commit 784f7f8492
Merge: 22d06c8c c1dd7c6c
Author: hughbarney <hughbarney@googlemail.com>
Date:   Mon Nov 29 18:57:56 2021 +0000

    resolved apps.json conflict

commit 22d06c8cf6
Author: hughbarney <hughbarney@googlemail.com>
Date:   Mon Nov 29 18:45:44 2021 +0000

    Pastel changed dependancy on MyLocation to type app

commit 38c6e16010
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Mon Nov 29 16:29:34 2021 +0000

    new about pixels

commit c1dd7c6cab
Merge: c2b70103 616afad0
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Mon Nov 29 11:37:02 2021 +0000

    Merge pull request #957 from JamesLMilner/minor-style-updates

    Tweak styling to give a more aligned and spaced out layout

commit c2b70103a6
Merge: cd0de091 3e1c90e4
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Mon Nov 29 10:54:30 2021 +0000

    Merge pull request #955 from alainsaas/master

    New app: A Clock with Timer, v0.01

commit 3e1c90e485
Merge: 17e13a63 cd0de091
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Mon Nov 29 10:54:23 2021 +0000

    Merge branch 'master' into master

commit cd0de091f3
Merge: 0dd00635 6fc1e738
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Mon Nov 29 10:52:43 2021 +0000

    Merge pull request #956 from JamesLMilner/mandlebrotclock

    Add Mandlebrot Clock app

commit 0dd00635b8
Merge: 72d3c44f ba506741
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Mon Nov 29 10:50:28 2021 +0000

    Merge pull request #959 from dratini0/recorder-fixes

    Assorted bugfixes to the recorder apps

commit 72d3c44ffd
Merge: 33ce71f2 0d45f2c2
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Mon Nov 29 10:09:47 2021 +0000

    Merge branch 'master' of github.com:espruino/BangleApps

commit 0d45f2c2e8
Merge: c4238eba 075d7a84
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Mon Nov 29 10:08:07 2021 +0000

    Merge pull request #962 from myxor/myxor-temperature-app

    Update degree Celsius temperature app

commit 33ce71f279
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Mon Nov 29 10:06:21 2021 +0000

    fix for sanity test errors

commit c4238ebae7
Merge: d4f1e7d3 10d170d3
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Mon Nov 29 10:01:40 2021 +0000

    Merge pull request #950 from jg76379/master

    Add new Interval Timer App

commit 10d170d31e
Merge: 4f5ec608 d4f1e7d3
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Mon Nov 29 10:00:29 2021 +0000

    Merge branch 'master' into master

commit d4f1e7d3cb
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Mon Nov 29 09:52:47 2021 +0000

    minor fixes for #952

commit 795d2b83ec
Merge: d1534bdc 99ec40cd
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Mon Nov 29 09:51:51 2021 +0000

    Merge branch 'master' of github.com:espruino/BangleApps

commit 99ec40cd8e
Merge: 30e421e2 6220a88d
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Mon Nov 29 09:48:20 2021 +0000

    Merge pull request #952 from rigrig/locale-12h

    locale: Apply 12hour setting to time

commit 075d7a840c
Author: Marco H <myxor@users.noreply.github.com>
Date:   Mon Nov 29 10:43:42 2021 +0100

    Update apps.json

commit c9d0a19947
Author: Marco H <myxor@users.noreply.github.com>
Date:   Mon Nov 29 10:40:32 2021 +0100

    Add space after temperature value

    Add space after temperature value

commit baba42ae25
Author: Marco H <myxor@users.noreply.github.com>
Date:   Mon Nov 29 10:36:31 2021 +0100

    Fix changelog syntax

commit cd67486547
Author: Marco H <myxor@users.noreply.github.com>
Date:   Mon Nov 29 10:25:14 2021 +0100

    Update ChangeLog

commit 765a683c89
Author: Marco H <myxor@users.noreply.github.com>
Date:   Mon Nov 29 10:23:54 2021 +0100

    Update app.js

    Improving messages and added Celsius sign

commit 30e421e225
Merge: 94f8b4bc 918dcba6
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Mon Nov 29 08:38:52 2021 +0000

    Merge pull request #960 from leer10/master

    Add 93 Dub Watchface

commit 918dcba633
Merge: bb537b17 050b9c2b
Author: leer10 <brandon.abbott@charter.net>
Date:   Sun Nov 28 14:58:18 2021 -0800

    Merge pull request #1 from leer10/style-cleanup

    style cleanup

commit 050b9c2b80
Author: leer10 <brandon.abbott@charter.net>
Date:   Sun Nov 28 14:56:18 2021 -0800

    Update apps.json

commit ada93e894d
Author: leer10 <brandon.abbott@charter.net>
Date:   Sun Nov 28 14:55:46 2021 -0800

    Update ChangeLog

commit 590f022a91
Author: leer10 <brandon.abbott@charter.net>
Date:   Sun Nov 28 14:55:32 2021 -0800

    Update ChangeLog

commit f423a6b91b
Author: leer10 <brandon.abbott@charter.net>
Date:   Sun Nov 28 14:54:17 2021 -0800

    Update app.js

commit bb537b1738
Author: leer10 <brandon.abbott@charter.net>
Date:   Sun Nov 28 14:27:14 2021 -0800

    Update ChangeLog

commit 656ca2ecaa
Author: leer10 <brandon.abbott@charter.net>
Date:   Sun Nov 28 14:25:23 2021 -0800

    Update apps.json

    added new version in json

commit 438885ae92
Author: leer10 <brandon.abbott@charter.net>
Date:   Sun Nov 28 14:24:18 2021 -0800

    Add files via upload

commit b9b7cfb50c
Author: leer10 <brandon.abbott@charter.net>
Date:   Sun Nov 28 14:23:49 2021 -0800

    Delete screenshot.png

commit 36aead94e7
Author: leer10 <brandon.abbott@charter.net>
Date:   Sun Nov 28 14:23:24 2021 -0800

    Create ChangeLog

commit b2cb4e7c0a
Author: leer10 <brandon.abbott@charter.net>
Date:   Sun Nov 28 14:22:04 2021 -0800

    Add files via upload

commit b25ad7573e
Author: leer10 <brandon.abbott@charter.net>
Date:   Sun Nov 28 14:21:57 2021 -0800

    Delete screenshot.png

commit c3fac095b8
Author: leer10 <brandon.abbott@charter.net>
Date:   Sun Nov 28 14:19:21 2021 -0800

    Update app.js

    add discominotaur's adjustments (cause a battery on the watchface isn't useful when the widget does the work anyways) maybe i'll do it as a setting later

commit 426ec0350f
Author: leer10 <brandon.abbott@charter.net>
Date:   Sun Nov 28 14:10:47 2021 -0800

    Update README.md

    added credits

commit ba50674173
Author: Balint Kovacs <dratini0@gmail.com>
Date:   Sun Nov 28 18:58:26 2021 +0000

    Update app versions and changelog

commit 1a118a6037
Author: Balint Kovacs <dratini0@gmail.com>
Date:   Sun Nov 28 18:44:47 2021 +0000

    Recorded: Slightly improve plot altitude if data has NaNs

commit 22fa78ff8d
Author: Balint Kovacs <dratini0@gmail.com>
Date:   Sun Nov 28 18:43:44 2021 +0000

    Even out x axis grid points

commit 466fd2155c
Author: Balint Kovacs <dratini0@gmail.com>
Date:   Sun Nov 28 18:18:18 2021 +0000

    Remove superfluous semicolon

commit a622781628
Author: Balint Kovacs <dratini0@gmail.com>
Date:   Sun Nov 28 16:46:01 2021 +0000

    Make the recorder handle missing coordinates in plot speed

commit 69c6a34ead
Author: Balint Kovacs <dratini0@gmail.com>
Date:   Sun Nov 28 15:46:02 2021 +0000

    Fix some text overflowing the screen in recorder and gpsrec

    On Bangle.js 2

commit 616afad056
Author: James <jamesmilner22@hotmail.com>
Date:   Sun Nov 28 14:10:29 2021 +0000

    Title indent again

commit 41c80ae767
Author: James <jamesmilner22@hotmail.com>
Date:   Sun Nov 28 14:08:30 2021 +0000

    Indent logo slightly to line up more accurately

commit 617ed688c5
Author: James <jamesmilner22@hotmail.com>
Date:   Sun Nov 28 14:05:49 2021 +0000

    Use rem

commit a28b3b78e4
Author: James <jamesmilner22@hotmail.com>
Date:   Sun Nov 28 13:58:41 2021 +0000

    Add spacing to layout, small css tweaks

commit 6fc1e738f1
Author: James <jamesmilner22@hotmail.com>
Date:   Sun Nov 28 13:22:42 2021 +0000

    Add mandlebrot clock app

commit 89e88e7172
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 23:39:51 2021 -0800

    Update app-icon.js

    hopefully fix launcher icon

commit 40d19aad2e
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 22:29:57 2021 -0800

    Update apps.json

    added screenshot to app store listing

commit d87930e4d3
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 22:27:51 2021 -0800

    Update apps.json

commit 6eb7a844d6
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 22:26:36 2021 -0800

    Update app.js

    fix battery graphics

commit da41d04d26
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 22:20:21 2021 -0800

    Update apps.json

commit 47c8edba4f
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 22:19:25 2021 -0800

    Add files via upload

commit b28986c249
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 22:19:09 2021 -0800

    Delete app.png

commit 9e897dfd50
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 22:13:21 2021 -0800

    Update app.js

    removed other nonfunctional comment block

commit 6fd7a0eb63
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 22:11:06 2021 -0800

    Update app.js

    battery icon actually works now

commit 4a3e1bbe28
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 21:52:13 2021 -0800

    Update app.js

    12 hr/24 hr specific behavior now from settings instead of hardcoded

commit 3d03895b9d
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 21:44:49 2021 -0800

    Update README.md

commit 0d5892769d
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 21:42:19 2021 -0800

    Add files via upload

    add screenshot for 93dub

commit 82e515e0e5
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 21:39:55 2021 -0800

    Create README.md

    added dub93's readme

commit 8a3f9f848a
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 21:36:48 2021 -0800

    Update app.js

    stripped license and info block of text since it's already enclosed in an MIT-licensed repo

commit 4294a27279
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 21:31:41 2021 -0800

    Update apps.json

    apps.json updates

commit 251ceb9dd1
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 21:27:35 2021 -0800

    Update apps.json

    oops comma

commit b49223d5b9
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 21:24:09 2021 -0800

    Update apps.json

commit 2d21ce7445
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 21:21:29 2021 -0800

    Add files via upload

commit c0e5d4432e
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 21:19:34 2021 -0800

    Create app-icon.js

    added icon

commit 0d6bfc7c13
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 20:59:32 2021 -0800

    Update app.js

    redid background, adjusted graphics to look nice on bangle 2

commit 17e13a6325
Author: Alain Saas <alainsaas@gmail.com>
Date:   Sun Nov 28 13:43:31 2021 +0900

    Update apps.json

commit a19da85de7
Author: Alain Saas <alainsaas@gmail.com>
Date:   Sun Nov 28 13:41:56 2021 +0900

    Update README.md

commit 9d4c251b73
Author: Alain Saas <alainsaas@gmail.com>
Date:   Sun Nov 28 13:39:41 2021 +0900

    Update apps.json

commit f9fa4a7df1
Author: Alain Saas <alainsaas@gmail.com>
Date:   Sun Nov 28 13:32:58 2021 +0900

    Update apps.json

commit ff95dd3b2c
Author: Alain Saas <alainsaas@gmail.com>
Date:   Sun Nov 28 13:29:06 2021 +0900

    Create README.md

commit c23960c12c
Author: Alain Saas <alainsaas@gmail.com>
Date:   Sun Nov 28 13:20:48 2021 +0900

    Add files via upload

commit d9d6133559
Author: Alain Saas <alainsaas@gmail.com>
Date:   Sun Nov 28 13:20:15 2021 +0900

    Create ChangeLog

commit de4d744e26
Author: Alain Saas <alainsaas@gmail.com>
Date:   Sun Nov 28 13:19:15 2021 +0900

    Create app-icon.js

commit de9a526517
Author: Alain Saas <alainsaas@gmail.com>
Date:   Sun Nov 28 13:14:06 2021 +0900

    Add files via upload

commit 662963b208
Author: Alain Saas <alainsaas@gmail.com>
Date:   Sun Nov 28 13:06:47 2021 +0900

    Create app.js

commit 56f3044e5e
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 12:02:34 2021 -0800

    Update app.js

    background needed redraw after notification

    background redraw broke widgets, so temp fix

commit 228a3664c7
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 11:41:39 2021 -0800

    Update apps.json

commit 33b3e91869
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 11:40:13 2021 -0800

    Update apps.json

commit 7d646945df
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 11:37:56 2021 -0800

    Update apps.json

commit dabaa06efb
Author: leer10 <brandon.abbott@charter.net>
Date:   Sat Nov 27 11:33:19 2021 -0800

    Create app.js

commit 3fbb46b046
Author: hughbarney <hughbarney@googlemail.com>
Date:   Sat Nov 27 11:23:03 2021 +0000

    Pastel, recalc sunrise,sunset every hour

commit 21fe6e7ea4
Author: hughbarney <hughbarney@googlemail.com>
Date:   Fri Nov 26 21:52:05 2021 +0000

    Pastel added dependancy on MyLocation app, display sunrise,sunset times

commit b426c479a3
Author: hughbarney <hughbarney@googlemail.com>
Date:   Fri Nov 26 21:29:46 2021 +0000

    Pastel added dependancy on MyLocation app, display sunrise,sunset times

commit 070558a0a6
Author: hughbarney <hughbarney@googlemail.com>
Date:   Fri Nov 26 20:48:27 2021 +0000

    MyLocation - adds menu to set preferred city or setup from GPS

commit 6220a88d29
Author: Richard de Boer <git@tubul.net>
Date:   Fri Nov 26 21:29:58 2021 +0100

    locale: Apply 12hour setting to time

    Fixes #892

commit ce0e50ed94
Author: hughbarney <hughbarney@googlemail.com>
Date:   Fri Nov 26 20:25:28 2021 +0000

    MyLocation - adds menu to set preferred city or setup from GPS

commit 4f5ec608de
Author: James G <me@jgough.net>
Date:   Fri Nov 26 12:48:20 2021 -0500

    fix formatting in README for interval timer app

commit 2ae9585193
Author: James G <me@jgough.net>
Date:   Fri Nov 26 12:43:36 2021 -0500

    rename intervalTimer.app.js to app.js

commit bff43e662d
Author: James G <me@jgough.net>
Date:   Fri Nov 26 12:42:13 2021 -0500

    Fix url for intervalTimer.app.js in app.json

commit fc6ecaccce
Author: James G <me@jgough.net>
Date:   Fri Nov 26 12:35:35 2021 -0500

    Add new Interval Timer app.

commit d1534bdcbf
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Fri Nov 26 15:05:05 2021 +0000

    comment

commit 94f8b4bca7
Merge: dc8edba0 4cfbe11e
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Fri Nov 26 12:01:01 2021 +0000

    Merge pull request #947 from peerdavid/master

    [LCARS clock] Alarm works also if clock is closed and opened again.

commit dc8edba00d
Merge: db1c5b74 fa4fd118
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Fri Nov 26 11:59:41 2021 +0000

    Merge pull request #948 from Smooklu/master

    Updated fd6fdetect

commit db1c5b7481
Merge: a4299586 045251f5
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Fri Nov 26 11:59:15 2021 +0000

    Merge pull request #949 from johan-m-o/master

    Update Spirit Level to work on Bangle.js 2

commit 045251f55f
Author: johan-m-o <85756863+johan-m-o@users.noreply.github.com>
Date:   Fri Nov 26 11:50:19 2021 +0100

    Update spiritlevel.js

commit b6e5175675
Author: johan-m-o <85756863+johan-m-o@users.noreply.github.com>
Date:   Fri Nov 26 11:44:21 2021 +0100

    Update spiritlevel.js

commit 6f300299b5
Author: johan-m-o <85756863+johan-m-o@users.noreply.github.com>
Date:   Fri Nov 26 11:34:52 2021 +0100

    Update apps.json

commit fe5ca8bc76
Author: johan-m-o <85756863+johan-m-o@users.noreply.github.com>
Date:   Fri Nov 26 11:33:49 2021 +0100

    Update spiritlevel.js

commit a89dd4d544
Author: johan-m-o <85756863+johan-m-o@users.noreply.github.com>
Date:   Fri Nov 26 11:23:43 2021 +0100

    Update ChangeLog

commit a4299586e8
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Fri Nov 26 10:04:02 2021 +0000

    cscsensor 0.06: Now read wheel rev as well as cadence sensor
          Improve connection code

commit fa4fd118e2
Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
Date:   Thu Nov 25 13:20:52 2021 -0600

    Update apps.json

commit 43b447f81c
Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
Date:   Thu Nov 25 13:17:35 2021 -0600

    Update apps.json

commit 1ea1706e61
Merge: 08fd95ab 095165c5
Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
Date:   Thu Nov 25 13:04:40 2021 -0600

    Merge branch 'espruino:master' into master

commit 08fd95ab9a
Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
Date:   Thu Nov 25 13:04:09 2021 -0600

    Update README.md

commit bc27677f5e
Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
Date:   Thu Nov 25 13:02:43 2021 -0600

    Update apps.json

commit f9286cbee9
Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
Date:   Thu Nov 25 13:00:48 2021 -0600

    Update README.md

commit a1a56601c0
Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
Date:   Thu Nov 25 13:00:38 2021 -0600

    Update README.md

commit 4cfbe11e45
Author: David Peer <david.peer@outlook.com>
Date:   Thu Nov 25 20:00:36 2021 +0100

    Show text for each icon.

commit 4fb4d12ba4
Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
Date:   Thu Nov 25 13:00:28 2021 -0600

    Update README.md

commit 6508ed8b3f
Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
Date:   Thu Nov 25 12:57:25 2021 -0600

    Update apps.json

commit 85b7115c73
Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
Date:   Thu Nov 25 12:54:33 2021 -0600

    Update README.md

commit 6482297881
Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
Date:   Thu Nov 25 12:53:16 2021 -0600

    Update ChangeLog

commit f5940b5bdb
Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
Date:   Thu Nov 25 12:52:27 2021 -0600

    Update README.md

commit 9f00293401
Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
Date:   Thu Nov 25 12:50:35 2021 -0600

    Update README.md

commit 2818a63e2c
Author: Smooklu <37220586+Smooklu@users.noreply.github.com>
Date:   Thu Nov 25 12:48:36 2021 -0600

    Create README.md

commit 95f845ad4e
Author: David Peer <david.peer@outlook.com>
Date:   Thu Nov 25 19:10:05 2021 +0100

    New icon for alarm

commit ca3453440c
Merge: dcee49cd 4a530371
Author: David Peer <david.peer@outlook.com>
Date:   Thu Nov 25 19:01:24 2021 +0100

    Merge branch 'master' of https://github.com/peerdavid/BangleApps

commit dcee49cdc8
Author: David Peer <david.peer@outlook.com>
Date:   Thu Nov 25 19:01:22 2021 +0100

    New GPS Icon

commit 4a5303714d
Merge: 93e2a88a 095165c5
Author: Peer David <4281901+peerdavid@users.noreply.github.com>
Date:   Thu Nov 25 18:52:23 2021 +0100

    Merge branch 'espruino:master' into master

commit 93e2a88a4c
Author: David Peer <david.peer@outlook.com>
Date:   Thu Nov 25 18:51:20 2021 +0100

    Updated screenshot

commit d99cea9ae0
Merge: 232dcc4b 7e1b0422
Author: David Peer <david.peer@outlook.com>
Date:   Thu Nov 25 18:49:46 2021 +0100

    Merge branch 'master' of https://github.com/peerdavid/BangleApps

commit 232dcc4b9d
Author: David Peer <david.peer@outlook.com>
Date:   Thu Nov 25 18:49:44 2021 +0100

    Real icons - its an image of the real planet :)

commit 095165c5c9
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Thu Nov 25 16:33:45 2021 +0000

    oops - fix uncommitted file!

commit bf964ce3e4
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Thu Nov 25 16:06:26 2021 +0000

    The 'update all' button shouldn't update apps that require 'custom.html' (fix #748)

commit 7e1b042255
Merge: ccce57ae 944b24e6
Author: Peer David <4281901+peerdavid@users.noreply.github.com>
Date:   Thu Nov 25 16:56:53 2021 +0100

    Merge branch 'espruino:master' into master

commit ccce57ae89
Merge: a99d9d5e c381e7ef
Author: David Peer <david.peer@outlook.com>
Date:   Thu Nov 25 16:56:35 2021 +0100

    Merge branch 'master' of https://github.com/peerdavid/BangleApps

commit a99d9d5e7c
Author: David Peer <david.peer@outlook.com>
Date:   Thu Nov 25 16:56:32 2021 +0100

    Store alarm in settings

commit 944b24e6c3
Merge: e8264cc8 1b9477be
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Thu Nov 25 15:52:25 2021 +0000

    Merge branch 'master' of github.com:espruino/BangleApps

commit e8264cc8f8
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Thu Nov 25 15:50:07 2021 +0000

    messages 0.07: Added settings menu with option to choose vibrate pattern and frequency (fix #909)

commit 5f5ca64cb4
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Thu Nov 25 15:21:59 2021 +0000

    android 0.04: Android icon now goes to settings page with 'find phone'

commit 6aa6bcf179
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Thu Nov 25 15:12:04 2021 +0000

    messages 0.06: New messages now go at the start (fix #898)
          Answering true/false now exits the messages app if no new messages
          Back now marks a message as read
          Clicking top-left opens a menu which allows you to delete a message or mark unread

commit 1b9477be5d
Merge: e28f9c15 2b7091bd
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Thu Nov 25 12:19:48 2021 +0000

    Merge pull request #945 from nlisgo/improve-ux-add-timer

    Cube Scramble: Improved UX and display solve time

commit 2b7091bd6b
Author: nlisgo <nathan@aeopus.com>
Date:   Thu Nov 25 11:40:37 2021 +0000

    Set default title for showPrompt

commit c381e7ef21
Merge: 1ab98707 e28f9c15
Author: Peer David <4281901+peerdavid@users.noreply.github.com>
Date:   Thu Nov 25 11:41:01 2021 +0100

    Merge branch 'espruino:master' into master

commit e28f9c157b
Merge: e040cc4e cb9866ff
Author: Gordon Williams <gw@pur3.co.uk>
Date:   Thu Nov 25 08:55:39 2021 +0000

    Merge pull request #932 from hughbarney/master

    Pastel: created font modules

commit 1ab98707ed
Author: David Peer <david.peer@outlook.com>
Date:   Thu Nov 25 09:17:25 2021 +0100

    Minor changes

commit 9940b38bbd
Author: nlisgo <nathan@aeopus.com>
Date:   Thu Nov 25 00:13:06 2021 +0000

    Force LCD on

commit f175f4c48c
Author: nlisgo <nathan@aeopus.com>
Date:   Thu Nov 25 00:06:02 2021 +0000

    Update screenshots

commit f6c689eeed
Author: nlisgo <nathan@aeopus.com>
Date:   Wed Nov 24 23:56:47 2021 +0000

    Amend app description

commit 3c984f1fee
Author: nlisgo <nathan@aeopus.com>
Date:   Wed Nov 24 23:52:28 2021 +0000

    Cube Scramble: Improved UX and display solve time

commit cb9866ffe2
Author: hughbarney <hughbarney@googlemail.com>
Date:   Wed Nov 24 21:11:47 2021 +0000

    Pastel: updated screenshots and README

commit 8b46634c9b
Author: hughbarney <hughbarney@googlemail.com>
Date:   Wed Nov 24 21:05:45 2021 +0000

    Pastel: updated screenshots and README

commit cbb38ec1ce
Author: hughbarney <hughbarney@googlemail.com>
Date:   Wed Nov 24 20:18:29 2021 +0000

    Pastel: added cycle through info items to bottom of screen

commit 469c329640
Merge: 37ca6251 e040cc4e
Author: hughbarney <hughbarney@googlemail.com>
Date:   Wed Nov 24 19:59:57 2021 +0000

    Merge remote-tracking branch 'upstream/master'

commit 37ca625174
Author: hughbarney <hughbarney@googlemail.com>
Date:   Wed Nov 24 19:59:46 2021 +0000

    Pastel: added cycle through info items to bottom of screen

commit c6096675fb
Author: hughbarney <hughbarney@googlemail.com>
Date:   Wed Nov 24 19:06:06 2021 +0000

    Pastel: added cycle through info items to bottom of screen

commit a537e98116
Author: David Peer <david.peer@outlook.com>
Date:   Wed Nov 24 18:04:59 2021 +0100

    Font improvements

commit 59692c8ca1
Merge: 657e64b0 e040cc4e
Author: Peer David <4281901+peerdavid@users.noreply.github.com>
Date:   Wed Nov 24 17:52:48 2021 +0100

    Merge branch 'espruino:master' into master

commit 657e64b078
Author: David Peer <david.peer@outlook.com>
Date:   Wed Nov 24 17:52:25 2021 +0100

    Added readme also to app.json

commit be3345d143
Merge: e3310ffc 3ba779ee
Author: hughbarney <hughbarney@googlemail.com>
Date:   Tue Nov 23 13:22:30 2021 +0000

    Merge remote-tracking branch 'upstream/master'

commit e3310ffc32
Author: hughbarney <hughbarney@googlemail.com>
Date:   Tue Nov 23 13:13:17 2021 +0000

    Pastel: architect font module

commit 1a75f0813b
Author: hughbarney <hughbarney@googlemail.com>
Date:   Mon Nov 22 22:50:27 2021 +0000

    Pastel: font modules

commit d450758f1a
Author: hughbarney <hughbarney@googlemail.com>
Date:   Mon Nov 22 22:09:52 2021 +0000

    Pastel: font modules

commit cf66db35a9
Author: hughbarney <hughbarney@googlemail.com>
Date:   Mon Nov 22 22:08:47 2021 +0000

    Pastel: font modules

commit 29ecb8daa2
Author: hughbarney <hughbarney@googlemail.com>
Date:   Mon Nov 22 22:08:19 2021 +0000

    Pastel: font modules

commit a29bba62cb
Author: hughbarney <hughbarney@googlemail.com>
Date:   Mon Nov 22 21:29:26 2021 +0000

    Pastel: f_orbitron font module

commit 8576d90e50
Author: hughbarney <hughbarney@googlemail.com>
Date:   Mon Nov 22 21:24:27 2021 +0000

    Pastel: f_orbitron font module

commit 723e1a6cb2
Author: hughbarney <hughbarney@googlemail.com>
Date:   Mon Nov 22 21:17:50 2021 +0000

    Pastel: f_orbitron font module

commit ec7f9ac69d
Author: hughbarney <hughbarney@googlemail.com>
Date:   Mon Nov 22 21:13:48 2021 +0000

    Pastel: f_orbitron font module

commit d68bcf1ff1
Author: hughbarney <hughbarney@googlemail.com>
Date:   Mon Nov 22 21:05:28 2021 +0000

    Pastel: f_orbitron font module

commit ff1d5f2d76
Author: hughbarney <hughbarney@googlemail.com>
Date:   Mon Nov 22 21:03:53 2021 +0000

    Pastel: f_orbitron font module

commit b51c842297
Merge: f4e997d4 d1da165e
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Mon Nov 22 12:20:57 2021 +0000

    Merge branch 'Combined' into Base

commit d1da165eb4
Merge: f927549b 2c257605
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Mon Nov 22 03:30:56 2021 +0000

    Merge pull request #9 from t0m1o1/scaledlauncher

    Update apps.json

commit f927549b2c
Merge: 3cfd575d 411118aa
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Mon Nov 22 03:16:59 2021 +0000

    Merge pull request #8 from t0m1o1/scaledlauncher

    Scaledlauncher

commit 3cfd575da4
Merge: 9a311219 9d1429ca
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Mon Nov 22 03:04:17 2021 +0000

    Merge pull request #7 from t0m1o1/scaledlauncher

    Update settings.js

commit 9a311219b2
Merge: 43c42711 5b1b752d
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Mon Nov 22 02:56:33 2021 +0000

    Merge pull request #6 from t0m1o1/scaledlauncher

    Scaledlauncher

commit 43c4271101
Merge: dec967f1 084bba39
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 21:18:16 2021 +0000

    Merge pull request #5 from t0m1o1/compass-fix

    Compass fix

commit dec967f1ac
Merge: 21c48263 dfa40407
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 20:56:22 2021 +0000

    Merge pull request #4 from t0m1o1/Swipe-Launcher

    Stop the swiping coming up if mode is undefined

commit 21c482639a
Merge: dea2ec96 4c9d04de
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 05:19:27 2021 +0000

    Merge pull request #3 from t0m1o1/Swipe-Launcher

    Update Swiper Clock Launch

commit dea2ec9693
Merge: 92d156fb 51766844
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 05:15:16 2021 +0000

    Merge pull request #2 from t0m1o1/master

    Master

commit 92d156fb39
Merge: 100384f2 7d37a9eb
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 05:14:13 2021 +0000

    Merge pull request #1 from t0m1o1/Swipe-Launcher

    Swipe launcher

commit 51766844e6
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 02:49:56 2021 +0000

    Update apps.json

commit 6fda7a5f33
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 02:37:07 2021 +0000

    Update apps.json

commit b7a0672344
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 02:32:09 2021 +0000

    Rename hidmsicswipe.app.js to hidmsicswipe.js

commit 97065f1d62
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 02:31:55 2021 +0000

    Delete hidmsicswipe.info

commit 21f184d6c4
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 02:31:10 2021 +0000

    Add files via upload

commit 3917f28ae5
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 02:30:45 2021 +0000

    Delete hidmsicswipe.img

commit a65668300f
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 02:30:18 2021 +0000

    Delete hid-music.png

commit 5fce838e8a
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 02:29:36 2021 +0000

    Add files via upload

commit ffa37f2ab3
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 02:22:38 2021 +0000

    Create hidmsicswipe-icon.js

commit b656e5973c
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 01:59:19 2021 +0000

    Create changelog

commit ad943ca565
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 01:58:19 2021 +0000

    Add files via upload

commit ac433ac7bd
Author: t0m1o1 <94725994+t0m1o1@users.noreply.github.com>
Date:   Sat Nov 20 01:57:39 2021 +0000

    Create hidmsicswipe.info
pull/924/head
t0m1o1 2021-12-05 17:14:06 +00:00
parent ae6ca3b8f8
commit 0bf99b0af8
193 changed files with 4373 additions and 713 deletions

View File

@ -384,14 +384,18 @@ Example `settings.js`
```js
// make sure to enclose the function in parentheses
(function(back) {
function get(key, def) { return require('Settings').get('myappid', key, def); }
function set(key, value) { require('Settings').set('myappid', key, value); }
let settings = require('Storage').readJSON('myappid.json',1)||{};
if (typeof settings.monkeys !== "number") settings.monkeys = 12; // default value
function save(key, value) {
settings[key] = value;
require('Storage').write('myappid.json', settings);
}
const appMenu = {
'': {'title': 'App Settings'},
'< Back': back,
'Monkeys': {
value: get('monkeys', 12),
onchange: (m) => set('monkeys', m)
value: settings.monkeys,
onchange: (m) => {save('monkeys', m)}
}
};
E.showMenu(appMenu)

300
apps.json
View File

@ -16,7 +16,7 @@
{
"id": "boot",
"name": "Bootloader",
"version": "0.36",
"version": "0.37",
"description": "This is needed by Bangle.js to automatically load the clock, menu, widgets and settings",
"icon": "bootloader.png",
"type": "bootloader",
@ -32,7 +32,7 @@
{
"id": "messages",
"name": "Messages",
"version": "0.05",
"version": "0.07",
"description": "App to display notifications from iOS and Gadgetbridge",
"icon": "app.png",
"type": "app",
@ -41,18 +41,19 @@
"readme": "README.md",
"storage": [
{"name":"messages.app.js","url":"app.js"},
{"name":"messages.settings.js","url":"settings.js"},
{"name":"messages.img","url":"app-icon.js","evaluate":true},
{"name":"messages.wid.js","url":"widget.js"},
{"name":"messages","url":"lib.js"}
],
"data": [{"name":"messages.json"}],
"data": [{"name":"messages.json"},{"name":"messages.settings.json"}],
"sortorder": -9
},
{
"id": "android",
"name": "Android Integration",
"shortName": "Android",
"version": "0.03",
"version": "0.04",
"description": "(BETA) App to display notifications from Gadgetbridge on Android. This will eventually replace the Gadgetbridge widget.",
"icon": "app.png",
"tags": "tool,system,messages,notifications",
@ -60,6 +61,7 @@
"supports": ["BANGLEJS","BANGLEJS2"],
"storage": [
{"name":"android.app.js","url":"app.js"},
{"name":"android.settings.js","url":"settings.js"},
{"name":"android.img","url":"app-icon.js","evaluate":true},
{"name":"android.boot.js","url":"boot.js"}
],
@ -85,7 +87,7 @@
"id": "health",
"name": "Health Tracking",
"version": "0.08",
"description": "Logs health data and provides an app to view it (BETA - requires firmware 2v11)",
"description": "Logs health data and provides an app to view it (requires firmware 2v10.100 or later)",
"icon": "app.png",
"tags": "tool,system,health",
"supports": ["BANGLEJS","BANGLEJS2"],
@ -110,19 +112,14 @@
"supports": ["BANGLEJS","BANGLEJS2"],
"storage": [
{"name":"launch.app.js","url":"app-bangle1.js","supports":["BANGLEJS"]},
{"name":"launch.app.js","url":"app-bangle2.js","supports":["BANGLEJS2"]},
{"name":"launch.settings.js","url":"settings.js","supports":["BANGLEJS2"]}
{"name":"launch.app.js","url":"app-bangle2.js","supports":["BANGLEJS2"]}
],
"data": [
{"name":"launch.json"}
]
,
"sortorder": -10
},
{
"id": "setting",
"name": "Settings",
"version": "0.33",
"version": "0.34",
"description": "A menu for setting up Bangle.js",
"icon": "settings.png",
"tags": "tool,system",
@ -138,7 +135,7 @@
{
"id": "about",
"name": "About",
"version": "0.11",
"version": "0.12",
"description": "Bangle.js About page - showing software version, stats, and a collaborative mural from the Bangle.js KickStarter backers",
"icon": "app.png",
"tags": "tool,system",
@ -173,7 +170,7 @@
{
"id": "locale",
"name": "Languages",
"version": "0.09",
"version": "0.10",
"description": "Translations for different countries",
"icon": "locale.png",
"type": "locale",
@ -272,6 +269,20 @@
],
"data": [{"name":"gbridge.json"}]
},
{ "id": "gbdebug",
"name": "Gadgetbridge Debug",
"shortName":"GB Debug",
"version":"0.01",
"description": "Debug info for Gadgetbridge. Run this app and when Gadgetbridge messages arrive they are displayed on-screen.",
"icon": "app.png",
"tags": "",
"supports" : ["BANGLEJS2"],
"readme": "README.md",
"storage": [
{"name":"gbdebug.app.js","url":"app.js"},
{"name":"gbdebug.img","url":"app-icon.js","evaluate":true}
]
},
{
"id": "mclock",
"name": "Morphing Clock",
@ -451,6 +462,27 @@
{"name":"matrixclock.img","url":"matrixclock-icon.js","evaluate":true}
]
},
{
"id": "mandlebrotclock",
"name": "Mandlebrot Clock",
"version": "0.01",
"description": "A mandlebrot set themed clock cool",
"icon": "mandlebrotclock.png",
"screenshots": [{ "url": "screenshot_mandlebrotclock.png" }],
"type": "clock",
"tags": "clock",
"supports": ["BANGLEJS2"],
"readme": "README.md",
"allow_emulator": true,
"storage": [
{ "name": "mandlebrotclock.app.js", "url": "mandlebrotclock.js" },
{
"name": "mandlebrotclock.img",
"url": "mandlebrotclock-icon.js",
"evaluate": true
}
]
},
{
"id": "imgclock",
"name": "Image background clock",
@ -556,8 +588,8 @@
{
"id": "cubescramble",
"name": "Cube Scramble",
"version":"0.03",
"description": "A random scramble generator for the 3x3 Rubik's cube",
"version":"0.04",
"description": "A random scramble generator for the 3x3 Rubik's cube with a basic timer",
"icon": "cube-scramble.png",
"tags": "",
"supports" : ["BANGLEJS","BANGLEJS2"],
@ -667,7 +699,7 @@
{
"id": "gpsrec",
"name": "GPS Recorder",
"version": "0.25",
"version": "0.26",
"description": "Application that allows you to record a GPS track. Can run in background",
"icon": "app.png",
"tags": "tool,outdoors,gps,widget",
@ -686,7 +718,7 @@
"id": "recorder",
"name": "Recorder (BETA)",
"shortName": "Recorder",
"version": "0.03",
"version": "0.04",
"description": "Record GPS position, heart rate and more in the background, then download to your PC.",
"icon": "app.png",
"tags": "tool,outdoors,gps,widget",
@ -737,11 +769,11 @@
{
"id": "slevel",
"name": "Spirit Level",
"version": "0.01",
"version": "0.02",
"description": "Show the current angle of the watch, so you can use it to make sure something is absolutely flat",
"icon": "spiritlevel.png",
"tags": "tool",
"supports": ["BANGLEJS"],
"supports": ["BANGLEJS","BANGLEJS2"],
"storage": [
{"name":"slevel.app.js","url":"spiritlevel.js"},
{"name":"slevel.img","url":"spiritlevel-icon.js","evaluate":true}
@ -854,7 +886,7 @@
"id": "widbatpc",
"name": "Battery Level Widget (with percentage)",
"shortName": "Battery Widget",
"version": "0.13",
"version": "0.14",
"description": "Show the current battery level and charging status in the top right of the clock, with charge percentage",
"icon": "widget.png",
"type": "widget",
@ -1896,7 +1928,7 @@
"id": "openstmap",
"name": "OpenStreetMap",
"shortName": "OpenStMap",
"version": "0.09",
"version": "0.10",
"description": "[BETA] Loads map tiles from OpenStreetMap onto your Bangle.js and displays a map of where you are",
"icon": "app.png",
"tags": "outdoors,gps",
@ -2951,7 +2983,7 @@
"id": "cscsensor",
"name": "Cycling speed sensor",
"shortName": "CSCSensor",
"version": "0.05",
"version": "0.06",
"description": "Read BLE enabled cycling speed and cadence sensor and display readings on watch",
"icon": "icons8-cycling-48.png",
"tags": "outdoors,exercise,ble,bluetooth",
@ -3779,10 +3811,11 @@
"id": "qmsched",
"name": "Quiet Mode Schedule and Widget",
"shortName": "Quiet Mode",
"version": "0.03",
"description": "Automatically turn Quiet Mode on or off at set times",
"version": "0.04",
"description": "Automatically turn Quiet Mode on or off at set times, and change LCD options while Quiet Mode is active.",
"icon": "app.png",
"screenshots": [{"url":"screenshot_edit.png"},{"url":"screenshot_main.png"},{"url":"screenshot_widget_alarms.png"},{"url":"screenshot_widget_silent.png"}],
"screenshots": [{"url":"screenshot_b1_main.png"},{"url":"screenshot_b1_edit.png"},{"url":"screenshot_b1_lcd.png"},
{"url":"screenshot_b2_main.png"},{"url":"screenshot_b2_edit.png"},{"url":"screenshot_b2_lcd.png"}],
"tags": "tool,widget",
"supports": ["BANGLEJS","BANGLEJS2"],
"readme": "README.md",
@ -3896,8 +3929,8 @@
{
"id": "thermom",
"name": "Thermometer",
"version": "0.02",
"description": "Displays the current temperature, updated every 20 seconds",
"version": "0.03",
"description": "Displays the current temperature in degree Celsius, updated every 20 seconds",
"icon": "app.png",
"tags": "tool",
"supports": ["BANGLEJS"],
@ -4042,10 +4075,11 @@
"id": "fd6fdetect",
"name": "fd6fdetect",
"shortName": "fd6fdetect",
"version": "0.1",
"version": "0.2",
"description": "Allows you to see 0xFD6F beacons near you.",
"icon": "app.png",
"tags": "tool",
"readme": "README.md",
"supports": ["BANGLEJS"],
"storage": [
{"name":"fd6fdetect.app.js","url":"app.js"},
@ -4087,15 +4121,24 @@
"id": "pastel",
"name": "Pastel Clock",
"shortName": "Pastel",
"version": "0.05",
"description": "A Configurable clock with custom fonts and background",
"version": "0.08",
"description": "A Configurable clock with custom fonts and background. Has a cyclic information line that includes, day, date, battery, sunrise and sunset times",
"icon": "pastel.png",
"dependencies": {"mylocation":"app"},
"screenshots": [{"url":"screenshot_pastel.png"}],
"type": "clock",
"tags": "clock",
"supports": ["BANGLEJS","BANGLEJS2"],
"readme": "README.md",
"storage": [
{"name":"f_architect","url":"f_architect.js"},
{"name":"f_gochihand","url":"f_gochihand.js"},
{"name":"f_cabin","url":"f_cabin.js"},
{"name":"f_orbitron","url":"f_orbitron.js"},
{"name":"f_monoton","url":"f_monoton.js"},
{"name":"f_elite","url":"f_elite.js"},
{"name":"f_lato","url":"f_lato.js"},
{"name":"f_latosmall","url":"f_latosmall.js"},
{"name":"pastel.app.js","url":"pastel.app.js"},
{"name":"pastel.img","url":"pastel.icon.js","evaluate":true},
{"name":"pastel.settings.js","url":"pastel.settings.js"}
@ -4122,7 +4165,7 @@
"id": "waveclk",
"name": "Wave Clock",
"version": "0.02",
"description": "A clock using a wave image by [Lillith May](https://www.instagram.com/_lilustrations_/). **Note: This requires firmware 2v11 or later Bangle.js 1**",
"description": "A clock using a wave image by [Lillith May](https://www.instagram.com/_lilustrations_/). **Note: Works on any Bangle.js 2, but requires firmware 2v11 or later on Bangle.js 1**",
"icon": "app.png",
"screenshots": [{"url":"screenshot.png"}],
"type": "clock",
@ -4138,7 +4181,7 @@
"id": "floralclk",
"name": "Floral Clock",
"version": "0.01",
"description": "A clock with a flower background by [Lillith May](https://www.instagram.com/_lilustrations_/). **Note: This requires firmware 2v11 or later Bangle.js 1**",
"description": "A clock with a flower background by [Lillith May](https://www.instagram.com/_lilustrations_/). **Note: Works on any Bangle.js 2 but requires firmware 2v11 or later on Bangle.js 1**",
"icon": "app.png",
"screenshots": [{"url":"screenshot_floral.png"}],
"type": "clock",
@ -4282,7 +4325,7 @@
"name": "Q Alarm and Timer",
"shortName": "Q Alarm",
"icon": "app.png",
"version": "0.02",
"version": "0.03",
"description": "Alarm and timer app with days of week and 'hard' option.",
"tags": "tool,alarm,widget",
"supports": ["BANGLEJS", "BANGLEJS2"],
@ -4355,7 +4398,8 @@
"name": "LCARS Clock",
"shortName":"LCARS",
"icon": "lcars.png",
"version":"0.05",
"version":"0.06",
"readme": "README.md",
"supports": ["BANGLEJS2"],
"description": "Library Computer Access Retrieval System (LCARS) clock.",
"type": "clock",
@ -4371,7 +4415,7 @@
"shortName":"BinWatch",
"icon": "app.png",
"screenshots": [{"url":"screenshot.png"}],
"version":"0.03",
"version":"0.04",
"supports": ["BANGLEJS2"],
"readme": "README.md",
"allow_emulator":true,
@ -4405,7 +4449,7 @@
"shortName": "AuthWatch",
"icon": "app.png",
"screenshots": [{"url":"screenshot.png"}],
"version": "0.01",
"version": "0.03",
"description": "Google Authenticator compatible tool.",
"tags": "tool",
"interface": "interface.html",
@ -4449,5 +4493,187 @@
"storage": [
{"name":"timecal.app.js","url":"timecal.app.js"}
]
},
{
"id": "a_clock_timer",
"name": "A Clock with Timer",
"version": "0.01",
"description": "A Clock with Timer, Map and Time Zones",
"icon": "app.png",
"screenshots": [{"url":"screenshot.png"}],
"type": "clock",
"tags": "clock",
"supports": ["BANGLEJS2"],
"allow_emulator": true,
"readme": "README.md",
"storage": [
{"name":"a_clock_timer.app.js","url":"app.js"},
{"name":"a_clock_timer.img","url":"app-icon.js","evaluate":true}
]
},
{
"id":"intervalTimer",
"name":"Interval Timer",
"shortName":"Interval Timer",
"icon": "app.png",
"version":"0.01",
"description": "Interval Timer for workouts, HIIT, or whatever else.",
"tags": "timer, interval, hiit, workout",
"readme":"README.md",
"supports":["BANGLEJS2"],
"storage": [
{"name":"intervalTimer.app.js","url":"app.js"},
{"name":"intervalTimer.img","url":"app-icon.js","evaluate":true}
]
},
{ "id": "93dub",
"name": "93 Dub",
"shortName":"93 Dub",
"icon": "93dub.png",
"screenshots": [{"url":"screenshot.png"}],
"version":"0.03",
"description": "Fan recreation of orviwan's 91 Dub app for the Pebble smartwatch. Uses assets from his 91-Dub-v2.0 repo",
"tags": "clock",
"type": "clock",
"supports":["BANGLEJS2"],
"readme": "README.md",
"allow_emulator": true,
"storage": [
{"name":"93dub.app.js","url":"app.js"},
{"name":"93dub.img","url":"app-icon.js","evaluate":true}
]
},
{ "id": "poweroff",
"name": "Poweroff",
"shortName":"Poweroff",
"version":"0.01",
"description": "Simple app to power off your Bangle.js",
"icon": "app.png",
"tags": "poweroff, shutdown",
"supports" : ["BANGLEJS", "BANGLEJS2"],
"readme": "README.md",
"storage": [
{"name":"poweroff.app.js","url":"app.js"},
{"name":"poweroff.img","url":"app-icon.js","evaluate":true}
]
},
{
"id": "sensible",
"name": "SensiBLE",
"shortName": "SensiBLE",
"version": "0.02",
"description": "Collect, display and advertise real-time sensor data.",
"icon": "sensible.png",
"type": "app",
"tags": "tool,sensors",
"supports" : [ "BANGLEJS2" ],
"allow_emulator": true,
"readme": "README.md",
"storage": [
{ "name": "sensible.app.js", "url": "sensible.js" },
{ "name": "sensible.img", "url": "sensible-icon.js", "evaluate": true }
]
},
{
"id": "widbars",
"name": "Bars Widget",
"version": "0.01",
"description": "Display several measurements as vertical bars.",
"icon": "icon.png",
"screenshots": [{"url":"screenshot.png"}],
"readme": "README.md",
"type": "widget",
"tags": "widget",
"supports": ["BANGLEJS","BANGLEJS2"],
"storage": [
{"name":"widbars.wid.js","url":"widget.js"}
]
},
{
"id":"a_speech_timer",
"name":"A Speech Timer",
"icon": "app.png",
"version":"1.00",
"description": "A timer designed to help keeping your speeches and presentations to time.",
"tags": "tool,timer",
"readme":"README.md",
"supports":["BANGLEJS2"],
"storage": [
{"name":"a_speech_timer.app.js","url":"app.js"},
{"name":"a_speech_timer.img","url":"app-icon.js","evaluate":true}
]
},
{
"id": "sensible",
"name": "SensiBLE",
"shortName": "SensiBLE",
"version": "0.02",
"description": "Collect, display and advertise real-time sensor data.",
"icon": "sensible.png",
"type": "app",
"tags": "tool,sensors",
"supports" : [ "BANGLEJS2" ],
"allow_emulator": true,
"readme": "README.md",
"storage": [
{ "name": "sensible.app.js", "url": "sensible.js" },
{ "name": "sensible.img", "url": "sensible-icon.js", "evaluate": true }
]
},
{ "id": "mylocation",
"name": "My Location",
"shortName":"My Location",
"icon": "mylocation.png",
"type": "app",
"screenshots": [{"url":"screenshot_1.png"}],
"version":"0.01",
"description": "Sets and stores the lat and long of your preferred City or it can be set from the GPS. mylocation.json can be used by other apps that need your main location lat and lon. See README",
"readme": "README.md",
"tags": "tool,utility",
"supports": ["BANGLEJS", "BANGLEJS2"],
"storage": [
{"name":"mylocation.app.js","url":"mylocation.app.js"},
{"name":"mylocation.img","url":"mylocation.icon.js","evaluate": true }
],
"data": [
{"name":"mylocation.json"}
]
},
{
"id": "pebble",
"name": "Pebble Clock",
"shortName": "Pebble",
"version": "0.03",
"description": "A pebble style clock to keep the rebellion going",
"readme": "README.md",
"icon": "pebble.png",
"screenshots": [{"url":"pebble_screenshot.png"}],
"type": "clock",
"tags": "clock",
"supports": ["BANGLEJS2"],
"storage": [
{"name":"pebble.app.js","url":"pebble.app.js"},
{"name":"pebble.settings.js","url":"pebble.settings.js"},
{"name":"pebble.img","url":"pebble.icon.js","evaluate":true}
]
},
{ "id": "pooqroman",
"name": "pooq Roman watch face",
"shortName":"pooq Roman",
"version":"0.0.0",
"description": "A classic watch face with a certain dynamicity. Most amusing in 24h mode. Slide up to show more hands, down for less(!). By design does not support standard widgets, sorry!",
"icon": "app.png",
"type": "clock",
"tags": "clock",
"supports" : ["BANGLEJS2"],
"allow_emulator":true,
"readme": "README.md",
"storage": [
{"name":"pooqroman.app.js","url":"app.js"},
{"name":"pooqroman.img","url":"app-icon.js","evaluate":true}
],
"data": [
{"name":"pooqroman.json"}
]
}
]

BIN
apps/93dub/93dub.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

3
apps/93dub/ChangeLog Normal file
View File

@ -0,0 +1,3 @@
0.01: Initial version for upload
0.02: DiscoMinotaur's adjustments (removed battery and adjusted spacing)
0.03: Code style cleanup

11
apps/93dub/README.md Normal file
View File

@ -0,0 +1,11 @@
# 93 Dub
![](screenshot.png)
Uses many portions from Espruino documentation, example watchfaces, and the waveclk app. It also sourced from Jon Barlow's 91 Dub v2.0 source code and resources and adapted for Bangle.js 2's screen. Time, date and the battery display works. It is not pixel perfect to the original.
Contributors:
Leer10
Orviwan (original watchface and assets)
Gordon Williams (Bangle.js, watchapps for reference code and documentation)
DiscoMinotaur (adjustments)

1
apps/93dub/app-icon.js Normal file
View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("mEwwkBG2XwAgcPC6P/h//AAIDBA4Pwh/w+AGBAgIDBC4oVDAAITBCAIIBAYIBBAgIvHh4YCFgQPBAoIvCCwoAWIQYAQGLgAWI6bQVdQiiDOyAX/C/7+IAIYvSh4RBAYIXLAwJAHC6ZFCF5yn/C7wDBBAJ3EVAKBDC5QLBYAoLFC5nwCgoXlL44vSL653sL4QXBL6DvXC9YCBACIXCZ4YAQFaYAgPAhqCa4SDFLoZpICYIXDQKLyCDIQXVAAKI0AAYA=="))

137
apps/93dub/app.js Normal file
View File

@ -0,0 +1,137 @@
// get 12 hour status, code from barclock
const is12Hour = (require("Storage").readJSON("setting.json", 1) || {})["12hour"];
// define background
var imgBg = require("heatshrink").decompress(atob("2GwgJC/AH4A/AH4A/AH4A/AH4A/ACcGAhAV/Cp3gvdug+Gj0AgeABYMBAQMIggVEg/w/9/h/Gn8As3ACpk559zznmseAs0B13nq/Rie+uodCIIUZw9hzFmv+AgcCmco7MRilow1ACpN8gFhwMilFRCoMowgVEIIVhIINhwFg4GiCpfw/dhx/mn4uBCoXRhWktAVFTIVhw9mj8YseDkUnqPEoeuugVEAAlgSgICBACAVC8AUQCQQVSAEsD/4ASeYgA/ACkHNiK5Cj4VR/AVBng+RCQVwCqMOAQPhIKOHgEB44VR8YVBx4VR+eAgOfCqPxwEDCqX5CoKvS/PAgc/YqQVU/gV/Cv4V/Cv4V/Cv4V/Cv4V/Cv4V/Cv4V/Cv4V/Cv4V/Cv4V/Cv4V/Cv4V/Cv4V/Cv4V/CsMfCqP4CoOfCqP54EBx4VR+OAgPPCqPzwEA44VR4cAgHhCqMHCoNwAQIAPjwCBngVRvgCBV6XwCoMHCqPAHyIA/AEigEf4IAOkAEDoAPJWAtA+PHv+Al6uPCofAGAgALoHz51/8AVT+IVS+4VPpMR73woH27n/8Eh8+ZmadIqsoyGICofAkMUktJFZAVBzgVBv34YgMhi8RkIVJnGQIIN8/H34FB8kJiIVIkVEyGQkF8/Pj4GBkhBKCoOexEQvHx8fBgMXzMxTJkICoXCVx8AggDGABsD/4AB/AVQAH4APA"));
// define fonts
// reg number first char 48 28 by 41
var fontNum = atob("AAAAAAAAAAAAAA//8D//g//8P/+I//8//44//w//j4//A/+P4/8A/4/4AAAAD/4AAAAP/wAAAAf/gAAAA//AAAAB/+AAAAD/8AAAAH/4AAAAP/wAAAAf/gAAAA//AAAAB/+AAAAD/8AAAAH/wAAAAH/H/gH/H8f/gf/Hx//h//HH//n//Ef/+H//B//4H//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wB/4AP/4H/4A//4f/4D//5//4P//h//4//+B//4AAAAAAAAAAAAAAAAAf/+AAAB//4gAAD//jgAAD/+PgABj/4/gAHj/j/gAfgAP/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/AA/AAf8f88AAfx/8wAAfH/8AAAcf/8AAAR//4AAAH//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAA4AAAAAD4AAYAAP4AD8AA/4AH4AD/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/wAHgAH/H/GH/H8f/gf/Hx//h//HH//n//Ef/+H//B//4H//AAAAAAAAAAAAAAP//AAAAP//AAAAP//AAAAP/8AAAAP/2AAAAP/eAAAAAB+AAAAAD8AAAAAH4AAAAAPwAAAAAfgAAAAA/AAAAAB+AAAAAD8AAAAAH4AAAAAPwAAAAAfgAAAAA/AAAAAB+AAAAAD8AAAB/7x/4AH/7H/4Af/4f/4B//5//4H//h//4f/+B//4AAAAAAAAAAAAAD//wAAAD//wAAAj//gAADj/+AAAPj/5gAA/j/ngAD/gAfgAP/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/AA/AAf8AA8f8fwAAx/8fAAAH/8cAAAf/8QAAA//8AAAA//8AAAAAAAAAAAAAA//8D//g//8P/+I//8//44//0//j4//Y/+P4/94/4/4AH4AD/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/wAPwAH/AAPH/H8AAMf/HwAAB//HAAAH//EAAAH//AAAAH//AAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAGAAAAAAOAAAAAAeAAAAAA+AAAAAB+AAAAAD8AAAAAH4AAAAAPwAAAAAfgAAAAA/AAAAAB+AAAAAD8AAAAAH4AAAAAPwAAAAAfgAAAAA/AAAAAB8AAAAADx/4B/4HH/4H/4Mf/4f/4R//5//4H//h//4f/+B//4AAAAAAAAAAAAAD//wP/+D//w//4j//z//jj//T/+Pj/9j/4/j/3j/j/gAfgAP/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/AA/AAf8f+8f8fx/+x/8fH/+H/8cf/+f/8R//4f/8H//gf/8AAAAAAAAAAAAAA//8AAAA//8AAAI//8AAA4//0AAD4//YAAP4/94AA/4AH4AD/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/wAPwAH/H/vH/H8f/sf/Hx//h//HH//n//Ef/+H//B//4H//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
// tiny font for percentage first char 48 6 by 8
var fontTiny = atob("AH6BgYF+ACFB/wEBAGGDhYlxAEKBkZFuAAx0hP8EAPqRkZGOAH6RkZFOAICHmKDAAG6RkZFuAHKJiYl+AAAAAAAAAAAAAAAA");
// date font first char 48 12 by 15
var fontDate = atob("AAAAAfv149wAeADwAeADwAeADvHr9+AAAAAAAAAAAAAAAAAAAAAAAAAPHn9/AAAAAAP0A9wweGDwweGDwweGDvAL8AAAAAAAAAAAgwOGDwweGDwweGDvHp98AAAAA/gB6AAwAGAAwAGAAwAGAPHj9/AAAAAfgF6BwweGDwweGDwweGDgHoB+AAAAAfv169wweGDwweGDwweGDgHoB+AAAAAAAAAAgAGAAwAGAAwAGAAvHh9/AAAAAfv169wweGDwweGDwweGDvHr9+AAAAAfgF6BwweGDwweGDwweGDvHr9+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
// define days of the week images
var imgMon = E.toArrayBuffer(atob("Ig8BgHwfD5AvB8HD8z8wMPzPzMQzM/M/DMz8z8c7f7f7z////3Oz+3+PzPzPw/M/M/D8z8z8PzPzPw/vB8/n/8H3/A=="));
var imgTue = E.toArrayBuffer(atob("Ig8BwDv9wDAOfmgf/5+Z///n5n/5+fmf/n5+Z//fv9oH////Af37/b/+fn5n/5+fmf/n5+Z/+fn5n/5/g+gfn+D8AA=="));
var imgWed = E.toArrayBuffer(atob("Ig8Bf7gHgM/NA9Az8z/z8PzP/Pw/M/8/D8z/z8c7QPf7z+A//3O3/3+MzP/PwzM/8/D8z/z8PzP/PxAtA9A4B4B4DA=="));
var imgThu = E.toArrayBuffer(atob("Ig8BgHf7f6Ac/M/P/z8z8//PzPzz8/M/PPz8z8+/QLf7/+A///v3+3+8/PzPzz8/M/PPz8z88/PzPzz8/vB/P3/8HA=="));
var imgFri = E.toArrayBuffer(atob("Ig8B/wDwP7+geg/P5/5+c/n/n5z+f+fnP5/5+c/oHoF7/AfAf/7/7/+/n/k/z+f+R/P5/5j8/n/nHz+/++PP7//8+A=="));
var imgSat = E.toArrayBuffer(atob("Ig8B4DwDwDgOgXAJ/5+f/n/n5/+f+fn55/5+fnoHoF/fAfAf//+b/f3/5n5+f/mfn5/+Z+fn//n5+eAef358B7//nA=="));
var imgSun = E.toArrayBuffer(atob("Ig8BwHf7D7Ac/MHD/z8wMP/PzMQ/8/M/D/z8z8QPf7f6A/////83+3+/zPzPz/M/M/P8z8z8//PzPwA/B8/oD8H3/A=="));
// define icons
var imgSep = E.toArrayBuffer(atob("BhsBAAAAAA///////////////AAAAAAA"));
var imgPercent = E.toArrayBuffer(atob("BwcBuq7ffbqugA=="));
var img24hr = E.toArrayBuffer(atob("EwgBj7vO53na73tcDtu9uDev7vA93g=="));
var imgPM = E.toArrayBuffer(atob("EwgB+HOfdnPu1X3ar4dV9+q+/bfftg=="));
//vars
var separator = true;
var is24hr = !is12Hour;
var leadingZero = true;
//the following 2 sections are used from waveclk to schedule minutely updates
// timeout used to update every minute
var drawTimeout;
// schedule a draw for the next minute
function queueDraw() {
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = setTimeout(function() {
drawTimeout = undefined;
draw();
}, 60000 - (Date.now() % 60000));
}
function drawBackground() {
g.setBgColor(0,0,0);
g.setColor(1,1,1);
g.clear();
g.drawImage(imgBg,0,0);
g.reset();
}
function draw(){
drawBackground();
var date = new Date();
var h = date.getHours(), m = date.getMinutes();
var d = date.getDate(), w = date.getDay();
g.reset();
g.setBgColor(0,0,0);
g.setColor(1,1,1);
//draw 24 hr indicator and 12 hr specific behavior
if (is24hr){
g.drawImage(img24hr,32, 65);
if (leadingZero){
h = ("0"+h).substr(-2);
}
} else if (h > 12) {
g.drawImage(imgPM,40, 70);
h = h - 12;
if (leadingZero){
h = ("0"+h).substr(-2);
} else {
h = " " + h;
}
}
//draw separator
if (separator){
g.drawImage(imgSep, 85,98);}
//draw day of week
var imgW = null;
if (w == 0) {imgW = imgSun;}
if (w == 1) {imgW = imgMon;}
if (w == 2) {imgW = imgTue;}
if (w == 3) {imgW = imgWed;}
if (w == 4) {imgW = imgThr;}
if (w == 5) {imgW = imgFri;}
if (w == 6) {imgW = imgSat;}
g.drawImage(imgW, 85, 63);
// draw nums
// draw time
g.setColor(0,0,0);
g.setBgColor(1,1,1);
g.setFontCustom(fontNum, 48, 28, 41);
if (h<10) {
if (leadingZero) {
h = ("0"+h).substr(-2);
} else {
h = " " + h;
}
}
g.drawString(h, 25, 90, true);
g.drawString(("0"+m).substr(-2), 92, 90, true);
// draw date
g.setFontCustom(fontDate, 48, 12, 15);
g.drawString(("0"+d).substr(-2), 123,63, true);
// widget redraw
Bangle.drawWidgets();
queueDraw();
}
draw();
//the following section is also from waveclk
Bangle.on('lcdPower',on=>{
if (on) {
draw(); // draw immediately, queue redraw
} else { // stop draw timer
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = undefined;
}
});
Bangle.setUI("clock");
Bangle.loadWidgets();
Bangle.drawWidgets();

BIN
apps/93dub/screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1 @@
0.01: Beta version for Bangle 2 (2021/11/28)

View File

@ -0,0 +1,15 @@
# A Clock with Timer, Map and Time Zones
* Works with Bangle 2
* Timer
* Right tap: start/increase by 10 minutes; Left tap: decrease by 5 minutes
* Short buzz at T-30, T-20, T-10 ; Double buzz at T
* Other time zones
* Currently hardcoded to Paris and Tokyo (this will be customizable in a future version)
* World Map
* The yellow line shows the position of the sun
![](screenshot.png)
## Creator
[@alainsaas](https://github.com/alainsaas)

View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("mEwgP/AAnAnEH4Ef+eAiEDAoPDz+T/ff/+T3+T/VAj8z/0f4VP51zDoX/5Hzz/z//f5EBAoP+r4FBFIgPBAAP4v5AFABPvrwSB0YFBrtX/+nCI3u/+vhFhh/q/f/9Fhu4NB187v3n/fvCIf/CIIAFRIUB8EAg3QgJmB4H/iAEB//+/lggqUC//wi4FB8AHBj4FB+H/wEzBgPg/0AkE3BIP8gE8n4VBGIN/IAPAsEA//8v6OBAoUjgEIAoPwkMATIN//BQBgfgg/wAoMH/EHEwILB/gNBgFgAocByEB/ED9AoCAoPAgE4gHwgeAgOYgAVBAoMYAoKECAoIVBAoIfBoCRCAAw="))

129
apps/a_clock_timer/app.js Normal file
View File

@ -0,0 +1,129 @@
// assets
function getImg() {
return require("heatshrink").decompress(atob("2FRgP/ABnxBRP5BJH+gEfBZHghnAv4JFmA+Bj0PBIn3//4h3An4oDAQJWEEIf8AwMEuFOCofAh/QjAWEg4VEwEAnw2DDoKEHEYPwAoUBmgrDhgUHS4XgAwUD/gVC/g+FAAZgEwEf4YqC/EQFQ4NDFgV/4Z3C/EcCo1974VCLAV/V4d7Co9/Co0PCoX+vk4Ko/HCosCRYX5nwTFkEAr/nCokICoL+B/aCGCoMHCoq3EdoraGCosPz4HBcILEJCocBwEHOwQrIgQrHgoHCFYMEgwVJYoMBsEnCofAnkMNQJXH4D4EbQMPkF/xwrEj+/HIkAoAVDj8QueHCoorDCoUDLwd96J0BKwgrHh4VDv+9CosDx6QCCo4HB//8VwvvXgQVDJIYSBCo/sBwaZBgF/NoYVHgH8V4qYDAwUYlAVFEYbFDDgwAGConogf9Zg8DCpP4cIh0Dg0BGAgVE+gVIgUA+AVI+wVE/xAEh5HDEgn+CpEAbgJCCHQoVBn4VJ/ED4ANDAAQVJ4EPPQPAt4VF4BeDColgj/8h/gFYwJBCpF//k//ANDCAYVIcgP+CpH/54VHCAIVB/4VIwYECCocIAwIVBx4VG9+AMITbCYAYJB34VG/UAj4VI7/9Cgw9CJYXAmBtDMAQsIfYhvCCofyvywGB4QFFgYGC/d+agYVLSgf8+ArG/APBD4QVBgh0CAwNwv/fCo4PCCo94s7VDCohnDAoI7Enlv8BZECoRCDAggAB3/3/gzDMAIVFY4IVE4IPBOoZ9DCpXwCoMvCqKxB//3bYywD4BtFAAPfDooVFFYIVGw4VFB4KZFngNE/uPCovgFYgEBuK+Fg4zFCoIrFCovwgQVF+AVFgPxEYzFEbgQVD4EDCoozBYogVCgYVE8bpGCo4HDCoPzBgoVIL4fAg4MGgAIHCofgCszND8BOHK4x2BCofwXgv4h6vGCps/Co6uDAA/7RgIjDDwTaDABPA//9FaAtDCop0FC5YVDLwoAH8//94GD/wVNCYKNECpwPBQggVPNggVBNp4VFFZwAGCquHCqnzCB4"));
}
var IMAGEWIDTH = 176;
var IMAGEHEIGHT = 81;
Graphics.prototype.setFontMichroma36 = function() {
g.setFontCustom(atob("AAAAAAAAAAAAAAAAeAAAAAeAAAAAeAAAAAeAAAAAAAAAAAAAAAAAAAAAAAGAAAAA+AAAAD+AAAAP+AAAA/8AAAD/wAAAf/AAAB/4AAAH/gAAAf+AAAB/4AAAH/gAAAf+AAAAfwAAAAfAAAAAcAAAAAAAAAAAAAAAAAAAAAAAA///AAD///wAH///4AP///8APwAD+APAAAeAeAAAeAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAeAPAAAeAPwAD+AP///8AH///4AD///wAA///AAAAAAAAAAAAAAAAAAAAAEAAAAAOAAAAAfAAAAA+AAAAB8AAAAD8AAAAH4AAAAPwAAAAPgAAAAfAAAAAf///+Af///+Af///+Af///+AAAAAAAAAAAAAAAAAAAAAAAAAA/Af+AD/A/+AH/B/+AP/D/+APwD4eAPADweAfADweAeADweAeADweAeADweAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAPgeAeAPAeAeAPAeAeAPAeAeAPAeAfAPAeAPw/AeAP/+AeAH/+AeAD/8AeAB/wAOAAAAAAAAAAAAAAAAAAAAAAAAAB8APgAD8AP4AH8AP8AP8AP8APgAB+AfAAAeAeAAAeAeAAAPAeAAAPAeAAAPAeAAAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAeAfAeAeAPx/h+AP///+AH///8AD///4AB/h/gAAAAAAAAAAAAAAAAAAAAAAeAAAAA/AAAAA/AAAAB/AAAAD/AAAAH/AAAAPvAAAAPPAAAAfPAAAA+PAAAB8PAAAD4PAAADwPAAAHwPAAAPgPAAAfAPAAA+APAAA8APAAB8APAAD4APAAHwAPAAPgAPAAPAAPAAfAAPAAf///+Af///+Af///+Af///+AAAAPAAAAAPAAAAAPAAAAAPAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAf/8PgAf/8P4Af/8P8Af/8P8AeB4A+AeB4AeAeDwAeAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAfAeDwAeAeD4A+AeD+D+AeB//8AeB//4AeA//4AAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAA///AAD///wAH///4AH///8AP4fB+APAeAeAfA8AeAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAfA8APAPA+AeAPgeAeAP8fh+AH8f/8AD8P/8AA8H/4AAAB/gAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAeAAAAAeAAAAAeAAAAAeAAAAAeAAACAeAAAGAeAAAOAeAAAeAeAAA+AeAAD+AeAAH8AeAAP4AeAAfwAeAA/gAeAB/AAeAD+AAeAP4AAeAfwAAeA/gAAeB/AAAeD+AAAeH8AAAefwAAAe/gAAAf/AAAAf+AAAAf8AAAAf4AAAAfgAAAAfAAAAAAAAAAAAAAAAAAAAAAAAAAMAAB+B/wAD/j/4AH/3/8AP///+AP//A+AfB+AeAeA+AeAeA+APAeA+APAeA+APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA+APAeA+APAeA+APAeA+AOAeA+AeAPh/A+AP///+AP/3/8AH/3/8AB/D/wAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAD/4HAAH/8HwAP/+H4AP5/H8AfAfA8AeAPAeAeAPAeAeAPAeAeAHgfAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHAPAeAPAOAeAPAeAPAPAeAPwfB+AP///8AH///4AD///wAA///AAAAAAAAAAAAAAAAAAAAAAAAAAAB8DwAAB8HwAAB8HwAAB8DwAAAAAAAAAAAAA"), 46, atob("CBIkESMjJCMjIyMjCA=="), 36+(1<<8)+(1<<16));
};
Graphics.prototype.setFontMichroma16 = function(scale) {
g.setFontCustom(atob("AAAAGAAYAAAAGAB4A/APwD4AeADgAAAAAAA/8H/4YBjAGMAcwBzAHMAcwBzAHMAYYBh/+D/wAAAAABgAOABwAGAA//h/+AAAAAA4+Hn4YZjhmMOYw5jDmMMYwxjDGOMYYxh/GD4YAAAAADBwcHhgGOAYwBzHHMccxxzHHMcc5xhnGH/4PfAAAAAAAOAB4APgB2AGYAxgHGA4YDBgYGD/+P/4AOAAYAAAAAD+cP547BjsGOwc7BzsHOwc7BzsHOwY7zjv+APgAAAAAD/wf/hmGOYYxhzGHMYcxhzGHOYYZhh3uDP4AeAAAEAA4ADgAOAI4DjgeODw4eDjgOcA7gD8APgA8AAAAAAAAAA58H/4bxjmGMYcxhzGHMYcxhzGHOYYbxh/+DnwAAAAADxgfnBnOOMYwxjDHMMcwxzDHMMY4xhjOH/4P/AAAAAABnAGcAAA"), 46, atob("BAgQCBAQEBAQEBAQBA=="), 16+(scale<<8)+(1<<16));
};
// timer
var timervalue = 0;
var istimeron = false;
var timertick;
Bangle.on('touch',t=>{
if (t == 1) {
Bangle.buzz(30);
if (timervalue < 5*60) { timervalue = 1 ; }
else { timervalue -= 5*60; }
}
else if (t == 2) {
Bangle.buzz(30);
if (!istimeron) {
istimeron = true;
timertick = setInterval(countDown, 1000);
}
timervalue += 60*10;
}
});
function timeToString(duration) {
var hrs = ~~(duration / 3600);
var mins = ~~((duration % 3600) / 60);
var secs = ~~duration % 60;
var ret = "";
if (hrs > 0) {
ret += "" + hrs + ":" + (mins < 10 ? "0" : "");
}
ret += "" + mins + ":" + (secs < 10 ? "0" : "");
ret += "" + secs;
return ret;
}
function countDown() {
timervalue--;
g.reset().clearRect(0, 76, 44+44, g.getHeight()/2+6);
g.setFontAlign(0, -1, 0);
g.setFont("6x8").drawString("Timer", 44, g.getHeight()/2-20);
g.setFont("Michroma16").drawString(timeToString(timervalue), 44, g.getHeight()/2-10);
if (timervalue <= 0) {
istimeron = false;
clearInterval(timertick);
Bangle.buzz().then(()=>{
return new Promise(resolve=>setTimeout(resolve, 500));
}).then(()=>{
return Bangle.buzz(1000);
});
}
else
if ((timervalue <= 30) && (timervalue % 10 == 0)) { Bangle.buzz(); }
}
function showWelcomeMessage() {
g.reset().clearRect(0, 76, 44+44, g.getHeight()/2+6);
g.setFontAlign(0, 0).setFont("6x8");
g.drawString("Touch right to", 44, 80);
g.drawString("start timer", 44, 88);
setTimeout(function(){ g.reset().clearRect(0, 76, 44+44, g.getHeight()/2+6); }, 8000);
}
// time
var drawTimeout;
function getGmt() {
var d = new Date();
var gmt = new Date(d.getTime() + d.getTimezoneOffset() * 60 * 1000);
return gmt;
}
function getTimeFromTimezone(offset) {
return new Date(getGmt().getTime() + offset * 60 * 60 * 1000);
}
function queueNextDraw() {
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = setTimeout(function() {
drawTimeout = undefined;
draw();
}, 60000 - (Date.now() % 60000));
}
function draw() {
g.reset().clearRect(0,24,g.getWidth(),g.getHeight()-IMAGEHEIGHT);
g.drawImage(getImg(),0,g.getHeight()-IMAGEHEIGHT);
var x_sun = 176 - (getGmt().getHours() / 24 * 176 + 4);
g.setColor('#ff0').drawLine(x_sun, g.getHeight()-IMAGEHEIGHT, x_sun, g.getHeight());
g.reset();
var locale = require("locale");
var date = new Date();
g.setFontAlign(0,0);
g.setFont("Michroma36").drawString(locale.time(date,1), g.getWidth()/2, 46);
g.setFont("6x8");
g.drawString(locale.date(new Date(),1), 125, 68);
g.drawString("PAR "+locale.time(getTimeFromTimezone(1),1), 125, 80);
g.drawString("TYO "+locale.time(getTimeFromTimezone(9),1), 125, 88);
queueNextDraw();
}
// init
g.setTheme({bg:"#fff",fg:"#000",dark:false}).clear();
draw();
Bangle.setUI("clock");
Bangle.loadWidgets();
Bangle.drawWidgets();
showWelcomeMessage();

BIN
apps/a_clock_timer/app.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1 @@
1.00: Release (2021/12/01)

View File

@ -0,0 +1,16 @@
# A Speech Timer
* A timer designed to help keeping your speeches and presentations to time
* Vibrates 1-2-3 times and changes screen color within the target time range.
* Example for a 5 to 7 minutes speech: vibrates once at 5:00 (green), twice at 6:00 (yellow), thrice at 7:00 (red).
* Use the buttons to start a timer
* Swipe left or right to choose different target times
* Touching the timer on the upper part of the screen locks (or unlocks) the buttons to prevent accidental changes
![](screenshot0.png)
![](screenshot1.png)
![](screenshot2.png)
![](screenshot3.png)
## Creator
[@alainsaas](https://github.com/alainsaas)

View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("mEwgP//kAj//AAP5/+PApH7//PAonvAoXzAonj//nApHggEHAoWAgA5BAAJCCAoU/IYIFCv///w0CAonrv/HAoXLv+DAogLFgPeAoV+nlOAoV4/8+AoV79+eFIVzAof7u/v5xBCs4FL84FE//O74FBu4FB64FD73TAoNz/+eAoV5IIIFCvl8vwFCv8A/wFDO4IFFFIQFCGoSVFUIqtDh65D/1vYof+Y4LLDw7dD/0ndIYRCeoQFC/P/z/+i///oFBGoX8gEfAgI="))

173
apps/a_speech_timer/app.js Normal file
View File

@ -0,0 +1,173 @@
Graphics.prototype.setFontMichroma36 = function() {
g.setFontCustom(atob("AAAAAAAAAAAAAAAAeAAAAAeAAAAAeAAAAAeAAAAAAAAAAAAAAAAAAAAAAAGAAAAA+AAAAD+AAAAP+AAAA/8AAAD/wAAAf/AAAB/4AAAH/gAAAf+AAAB/4AAAH/gAAAf+AAAAfwAAAAfAAAAAcAAAAAAAAAAAAAAAAAAAAAAAA///AAD///wAH///4AP///8APwAD+APAAAeAeAAAeAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAPAeAAAeAPAAAeAPwAD+AP///8AH///4AD///wAA///AAAAAAAAAAAAAAAAAAAAAEAAAAAOAAAAAfAAAAA+AAAAB8AAAAD8AAAAH4AAAAPwAAAAPgAAAAfAAAAAf///+Af///+Af///+Af///+AAAAAAAAAAAAAAAAAAAAAAAAAA/Af+AD/A/+AH/B/+AP/D/+APwD4eAPADweAfADweAeADweAeADweAeADweAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAHgeAeAPgeAeAPAeAeAPAeAeAPAeAeAPAeAfAPAeAPw/AeAP/+AeAH/+AeAD/8AeAB/wAOAAAAAAAAAAAAAAAAAAAAAAAAAB8APgAD8AP4AH8AP8AP8AP8APgAB+AfAAAeAeAAAeAeAAAPAeAAAPAeAAAPAeAAAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAPAeAeAeAfAeAeAPx/h+AP///+AH///8AD///4AB/h/gAAAAAAAAAAAAAAAAAAAAAAeAAAAA/AAAAA/AAAAB/AAAAD/AAAAH/AAAAPvAAAAPPAAAAfPAAAA+PAAAB8PAAAD4PAAADwPAAAHwPAAAPgPAAAfAPAAA+APAAA8APAAB8APAAD4APAAHwAPAAPgAPAAPAAPAAfAAPAAf///+Af///+Af///+Af///+AAAAPAAAAAPAAAAAPAAAAAPAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAf/8PgAf/8P4Af/8P8Af/8P8AeB4A+AeB4AeAeDwAeAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAPAeDwAfAeDwAeAeD4A+AeD+D+AeB//8AeB//4AeA//4AAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAA///AAD///wAH///4AH///8AP4fB+APAeAeAfA8AeAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAfA8APAPA+AeAPgeAeAP8fh+AH8f/8AD8P/8AA8H/4AAAB/gAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAeAAAAAeAAAAAeAAAAAeAAAAAeAAACAeAAAGAeAAAOAeAAAeAeAAA+AeAAD+AeAAH8AeAAP4AeAAfwAeAA/gAeAB/AAeAD+AAeAP4AAeAfwAAeA/gAAeB/AAAeD+AAAeH8AAAefwAAAe/gAAAf/AAAAf+AAAAf8AAAAf4AAAAfgAAAAfAAAAAAAAAAAAAAAAAAAAAAAAAAMAAB+B/wAD/j/4AH/3/8AP///+AP//A+AfB+AeAeA+AeAeA+APAeA+APAeA+APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA8APAeA+APAeA+APAeA+APAeA+AOAeA+AeAPh/A+AP///+AP/3/8AH/3/8AB/D/wAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAD/4HAAH/8HwAP/+H4AP5/H8AfAfA8AeAPAeAeAPAeAeAPAeAeAHgfAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHgPAeAHAPAeAPAOAeAPAeAPAPAeAPwfB+AP///8AH///4AD///wAA///AAAAAAAAAAAAAAAAAAAAAAAAAAAB8DwAAB8HwAAB8HwAAB8DwAAAAAAAAAAAAA"), 46, atob("CBIkESMjJCMjIyMjCA=="), 36+(1<<8)+(1<<16));
};
Graphics.prototype.setFontMichroma16 = function(scale) {
g.setFontCustom(atob("AAAAGAAYAAAAGAB4A/APwD4AeADgAAAAAAA/8H/4YBjAGMAcwBzAHMAcwBzAHMAYYBh/+D/wAAAAABgAOABwAGAA//h/+AAAAAA4+Hn4YZjhmMOYw5jDmMMYwxjDGOMYYxh/GD4YAAAAADBwcHhgGOAYwBzHHMccxxzHHMcc5xhnGH/4PfAAAAAAAOAB4APgB2AGYAxgHGA4YDBgYGD/+P/4AOAAYAAAAAD+cP547BjsGOwc7BzsHOwc7BzsHOwY7zjv+APgAAAAAD/wf/hmGOYYxhzGHMYcxhzGHOYYZhh3uDP4AeAAAEAA4ADgAOAI4DjgeODw4eDjgOcA7gD8APgA8AAAAAAAAAA58H/4bxjmGMYcxhzGHMYcxhzGHOYYbxh/+DnwAAAAADxgfnBnOOMYwxjDHMMcwxzDHMMY4xhjOH/4P/AAAAAABnAGcAAA"), 46, atob("BAgQCBAQEBAQEBAQBA=="), 16+(scale<<8)+(1<<16));
};
function timeToString(duration) {
var hrs = ~~(duration / 3600);
var mins = ~~((duration % 3600) / 60);
var secs = ~~duration % 60;
var ret = "";
if (hrs > 0) {
ret += "" + hrs + ":" + (mins < 10 ? "0" : "");
}
ret += "" + mins + ":" + (secs < 10 ? "0" : "");
ret += "" + secs;
return ret;
}
var newtimer_left_from = 60;
var newtimer_left_to = 2*60;
var newtimer_right_from = 5*60;
var newtimer_right_to = 7*60;
var current_from = 5*60;
var current_mid = 6*60;
var current_to = 7*60;
var current_value = 0;
var timerinterval;
var istimeron = false;
var islocked = false;
function countDown() {
current_value++;
draw();
if (current_value == current_from) {
Bangle.buzz(500);
} else if (current_value == current_mid) {
Bangle.buzz(400).then(()=>{
return new Promise(resolve=>setTimeout(resolve, 800));
}).then(()=>{
return Bangle.buzz(500);
});
} else if (current_value == current_to) {
Bangle.buzz(300).then(()=>{
return new Promise(resolve=>setTimeout(resolve, 600));
}).then(()=>{
Bangle.buzz(300).then(()=>{
return new Promise(resolve=>setTimeout(resolve, 600));
}).then(()=>{
return Bangle.buzz(500);
});
});
}
}
Bangle.on('touch',(touchside, touchdata)=>{
if (!islocked && istimeron && touchdata.y > (100+10)) {
Bangle.buzz(40);
istimeron = false;
clearInterval(timerinterval);
} else if (touchdata.y > 24 && touchdata.y < (100-10)) {
Bangle.buzz(40);
islocked = !islocked;
} else if (!islocked && touchdata.y > (100+10) && touchdata.x > 88 + 10) {
Bangle.buzz(40);
current_from = newtimer_right_from;
current_to = newtimer_right_to;
current_mid = (current_from + current_to) / 2;
current_value = 0;
if (timerinterval) clearInterval(timerinterval);
timerinterval = setInterval(countDown, 1000);
istimeron = true;
} else if (!islocked && touchdata.y > (100+10) && touchdata.x < 88 - 10) {
Bangle.buzz(40);
current_from = newtimer_left_from;
current_to = newtimer_left_to;
current_mid = (current_from + current_to) / 2;
current_value = 0;
if (timerinterval) clearInterval(timerinterval);
timerinterval = setInterval(countDown, 1000);
istimeron = true;
}
showInstructions = false;
draw();
});
Bangle.on('swipe',(swiperight, swipedown)=>{
console.log(swiperight);
console.log(swipedown);
if (swiperight == -1) {
if (newtimer_left_from >= 60) {
newtimer_left_from += 60;
newtimer_left_to += 60;
} else { // special case for 0:30 to 1:00
newtimer_left_from = 60;
newtimer_left_to = 120;
}
newtimer_right_from += 60;
newtimer_right_to += 60;
draw();
} else if (swiperight == 1) {
if (newtimer_left_from > 60) {
newtimer_left_from -= 60;
newtimer_left_to -= 60;
} else { // special case for 0:30 to 1:00
newtimer_left_from = 30;
newtimer_left_to = 60;
}
if (newtimer_right_from > 120) {
newtimer_right_from -= 60;
newtimer_right_to -= 60;
}
draw();
}
});
var drawTimeout;
var showInstructions = true;
function draw() {
g.reset();
if (current_value >= current_to) { g.setBgColor("#F00"); }
else if (current_value >= current_mid) { g.setBgColor("#FF0"); }
else if (current_value >= current_from) { g.setBgColor("#8F8"); }
g.clearRect(0,24,176,176);
g.reset();
g.setFontAlign(0, 0);
g.setFont("Michroma36").drawString(timeToString(current_value), 88, 62);
g.setFont("HaxorNarrow7x17");
g.drawString(timeToString(current_from), 44, 62+26);
g.drawString(timeToString(current_mid), 88, 62+26);
g.drawString(timeToString(current_to), 132, 62+26);
if (current_value >= current_from) { g.drawRect(44-1,62+26+9,44+1,62+26+9+1); }
if (current_value >= current_mid) { g.drawRect(88-1,62+26+9,88+1,62+26+9+1); }
if (current_value >= current_to) { g.drawRect(132-1,62+26+9,132+1,62+26+9+1); }
if (showInstructions) {
g.setFont("6x8").drawString("Tapping timer locks buttons", 88, 100+5);
g.setFont("6x8").drawString("<= Swipe to change time =>", 88, 168);
}
g.setColor(islocked ? "#444" : "#000");
g.setFont("Michroma16");
g.drawString(timeToString(newtimer_left_from), 44, 138-9);
g.drawString(timeToString(newtimer_left_to), 44, 138+9);
g.drawString(timeToString(newtimer_right_from), 132, 138-9);
g.drawString(timeToString(newtimer_right_to), 132, 138+9);
g.drawRect(0+8,138-24, 88-9+1, 138+22+1);
g.drawRect(0+8,138-24, 88-9, 138+22);
g.drawRect(88+8,138-24, 176-10+1, 138+22+1);
g.drawRect(88+8,138-24, 176-10, 138+22);
}
require("FontHaxorNarrow7x17").add(Graphics);
g.clear();
Bangle.loadWidgets();
Bangle.drawWidgets();
draw();

BIN
apps/a_speech_timer/app.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -9,3 +9,4 @@
0.09: Actual Bangle.js 1 pixels as of 13 Oct 2021
0.10: Added separate Bangle.js 2 file with Bangle.js 2 kickstarter pixels (as of 28 Oct 2021)
0.11: Bangle.js2: New pixels, btn1 to exit
0.12: Actual pixels as of 29th Nov 2021

File diff suppressed because one or more lines are too long

View File

@ -2,3 +2,4 @@
0.02: Remove messages on disconnect
Fix music control
0.03: Handling of message actions (ok/clear)
0.04: Android icon now goes to settings page with 'find phone'

View File

@ -1,2 +1,3 @@
// Config app not implemented yet
setTimeout(()=>load("messages.app.js"),10);
Bangle.loadWidgets();
Bangle.drawWidgets();
eval(require("Storage").read("android.settings.js"))(()=>load());

18
apps/android/settings.js Normal file
View File

@ -0,0 +1,18 @@
(function(back) {
function gb(j) {
Bluetooth.println(JSON.stringify(j));
}
var mainmenu = {
"" : { "title" : "Android" },
"< Back" : back,
"Connected" : { value : NRF.getSecurityStatus().connected?"Yes":"No" },
"Find Phone" : () => E.showMenu({
"" : { "title" : "Find Phone" },
"< Back" : ()=>E.showMenu(mainmenu),
"On" : _=>gb({t:"findPhone",n:true}),
"Off" : _=>gb({t:"findPhone",n:false}),
}),
"Messages" : ()=>load("messages.app.js")
};
E.showMenu(mainmenu);
})

View File

@ -1 +1,3 @@
0.03: Add "Calculating" placeholder, update JSON save format
0.02: Fix JSON save format
0.01: First release

View File

@ -1,5 +1,8 @@
# Authentiwatch - 2FA Authenticator
* GitHub: https://github.com/andrewgoz/Authentiwatch <-- Report bugs here
* Bleeding edge AppLoader: https://andrewgoz.github.io/Authentiwatch/
## Supports
* Google Authenticator compatible 2-factor authentication

View File

@ -1 +1 @@
require("heatshrink").decompress(atob("mUywkBiIADCxoTFAAcQGBwY/DDQIKDBiMDDCgGCBI4YMGAIDFDCAFEBQwYLFgIYEGQgYMApoYJGAJjFMogYMSQgCDDBwDCY4oMEDBZgHHQQYQf4oYVBgwYQBogYPPYZpFDBKMEDAbdDCxT9IDYIFFABqSEAogySQYoWNFgrFDJZoQBJggYRBwhLGDBwyFDCZGEDCYAEDGrIMbwhnGDEpLGAwxlLFQgQDJiYoFDDAZDDCpMDMpQOCNxQYNBo4KKBpwYYBYJ8NeJgYkLBQY8UYQXVGQIwN"))
require("heatshrink").decompress(atob("mEwxH+AH4AD64ADFlgAFF04INFz4LUF0QwjEBwv/FzwwgF/4v/F6nMAAWi1AFD5nOeEHPEweoFooAB5/X5wvdFwotG5nN6/WAoQuaEoguHSYPQLwIIDF8uo5ouB6AJEFzuiFwup5/WFwI6GL0esXYKMBHYy9j1WqfBSOhBIYKJF8gAKF/4v6cZAvhGDAuWSDAvXMCwuYF+AwUFzX+0XGGAgxKFrYuBAAQxEeg4tcF4oABBQnGAAgv/F6b5KXsIvIGAqNnF/69fX8ZeSF7btNR8IuOF75ePL8ouOd74NKF8IANF94wEF1QAXA"))

View File

@ -6,8 +6,13 @@ const algos = {
"SHA256":{sha:crypto.SHA256,retsz:32,blksz:64 },
"SHA1" :{sha:crypto.SHA1 ,retsz:20,blksz:64 },
};
const calculating = "Calculating";
const notokens = "No tokens";
const notsupported = "Not supported";
var tokens = require("Storage").readJSON("authentiwatch.json", true) || [];
var settings = require("Storage").readJSON("authentiwatch.json", true) || {tokens:[],misc:{}};
if (settings.data ) tokens = settings.data ; /* v0.02 settings */
if (settings.tokens) tokens = settings.tokens; /* v0.03+ settings */
// QR Code Text
//
@ -66,9 +71,8 @@ function do_hmac(key, message, algo) {
var v = new DataView(ret, ret[ret.length - 1] & 0x0F, 4);
return v.getUint32(0) & 0x7FFFFFFF;
}
function hotp(token) {
function hotp(d, token, dohmac) {
var tick;
var d = new Date();
if (token.period > 0) {
// RFC6238 - timed
var seconds = Math.floor(d.getTime() / 1000);
@ -81,15 +85,17 @@ function hotp(token) {
var v = new DataView(msg.buffer);
v.setUint32(0, tick >> 16 >> 16);
v.setUint32(4, tick & 0xFFFFFFFF);
var ret = "";
try {
var hash = do_hmac(b32decode(token.secret), msg, token.algorithm.toUpperCase());
ret = "" + hash % Math.pow(10, token.digits);
while (ret.length < token.digits) {
ret = "0" + ret;
var ret = calculating;
if (dohmac) {
try {
var hash = do_hmac(b32decode(token.secret), msg, token.algorithm.toUpperCase());
ret = "" + hash % Math.pow(10, token.digits);
while (ret.length < token.digits) {
ret = "0" + ret;
}
} catch(err) {
ret = notsupported;
}
} catch(err) {
ret = "Not supported";
}
return {hotp:ret, next:((token.period > 0) ? ((tick + 1) * token.period * 1000) : d.getTime() + 30000)};
}
@ -109,7 +115,7 @@ function drawToken(id, r) {
var y1 = r.y;
var x2 = r.x + r.w - 1;
var y2 = r.y + r.h - 1;
var adj;
var adj, sz;
g.setClipRect(Math.max(x1, Bangle.appRect.x ), Math.max(y1, Bangle.appRect.y ),
Math.min(x2, Bangle.appRect.x2), Math.min(y2, Bangle.appRect.y2));
if (id == state.curtoken) {
@ -129,7 +135,7 @@ function drawToken(id, r) {
adj = (y1 + y2) / 2;
}
g.clearRect(x1, y1, x2, y2);
g.drawString(tokens[id].label, (x1 + x2) / 2, adj, false);
g.drawString(tokens[id].label.substr(0, 10), (x1 + x2) / 2, adj, false);
if (id == state.curtoken) {
if (tokens[id].period > 0) {
// timed - draw progress bar
@ -143,7 +149,10 @@ function drawToken(id, r) {
adj = 5;
}
// digits just below label
g.setFont("Vector", (state.otp.length > 8) ? 26 : 30);
sz = 30;
do {
g.setFont("Vector", sz--);
} while (g.stringWidth(state.otp) > (r.w - adj));
g.drawString(state.otp, (x1 + x2) / 2 + adj, y1 + 16, false);
}
// shaded lines top and bottom
@ -157,6 +166,9 @@ function draw() {
var d = new Date();
if (state.curtoken != -1) {
var t = tokens[state.curtoken];
if (state.otp == calculating) {
state.otp = hotp(d, t, true).hotp;
}
if (d.getTime() > state.nextTime) {
if (state.hide == 0) {
// auto-hide the current token
@ -167,7 +179,7 @@ function draw() {
state.nextTime = 0;
} else {
// time to generate a new token
var r = hotp(t);
var r = hotp(d, t, state.otp != "");
state.nextTime = r.next;
state.otp = r.hotp;
if (t.period <= 0) {
@ -195,7 +207,13 @@ function draw() {
if (state.drawtimer) {
clearTimeout(state.drawtimer);
}
state.drawtimer = setTimeout(draw, (tokens[state.curtoken].period > 0) ? 1000 : state.nexttime - d.getTime());
var dly;
if (tokens[state.curtoken].period > 0) {
dly = (state.otp == calculating) ? 1 : 1000;
} else {
dly = state.nexttime - d.getTime();
}
state.drawtimer = setTimeout(draw, dly);
if (tokens[state.curtoken].period <= 0) {
state.hide = 0;
}
@ -210,7 +228,7 @@ function draw() {
} else {
g.setFont("Vector", 30);
g.setFontAlign(0, 0, 0);
g.drawString("No tokens", Bangle.appRect.x + Bangle.appRect.w / 2,Bangle.appRect.y + Bangle.appRect.h / 2, false);
g.drawString(notokens, Bangle.appRect.x + Bangle.appRect.w / 2, Bangle.appRect.y + Bangle.appRect.h / 2, false);
}
}
@ -231,6 +249,7 @@ function onTouch(zone, e) {
if (y > Bangle.appRect.h) {
state.listy += (y - Bangle.appRect.h);
}
state.otp = "";
}
state.nextTime = 0;
state.curtoken = id;
@ -257,8 +276,10 @@ function onSwipe(e) {
}
if (e == -1 && state.curtoken != -1 && tokens[state.curtoken].period <= 0) {
tokens[state.curtoken].period--;
require("Storage").writeJSON("authentiwatch.json", tokens);
let newsettings={tokens:tokens,misc:settings.misc};
require("Storage").writeJSON("authentiwatch.json", newsettings);
state.nextTime = 0;
state.otp = "";
state.hide = 2;
draw();
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 964 B

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -35,8 +35,9 @@ const otpAuthUrl = 'otpauth://';
const tokentypes = ['TOTP (Timed)', 'HOTP (Counter)'];
/* Array of TOTP tokens */
var tokens=[];
/* Settings */
var settings = {tokens:[], misc:{}};
var tokens = settings.tokens;
/* Remove any non-base-32 characters from the given string and collapses
* whitespace to a single space. Optionally removes all whitespace from
@ -261,6 +262,7 @@ qrcode.callback = res => {
scanning = false;
editToken(parseInt(document.forms['edittoken'].elements['tokenid'].value));
t['label'] = (t['issuer'] == '') ? t['account'] : t['issuer'] + ' (' + t['account'] + ')';
t['label'] = t['label'].substr(0, 10);
var fe = document.forms['edittoken'].elements;
if (res.startsWith(otpAuthUrl + 'hotp/')) {
t['period'] = '30';
@ -319,21 +321,21 @@ function doScan() {
*/
function loadTokens() {
Util.showModal('Loading...');
Puck.eval(`require('Storage').read(${JSON.stringify('authentiwatch.json')})`,data=>{
Puck.eval(`require('Storage').readJSON(${JSON.stringify('authentiwatch.json')})`,data=>{
Util.hideModal();
try {
tokens = JSON.parse(data);
updateTokens();
} catch {
tokens = [];
}
if (data.data ) settings.tokens = data.data ; /* v0.02 settings */
if (data.tokens) settings.tokens = data.tokens; /* v0.03+ settings */
if (data.misc ) settings.misc = data.misc ; /* v0.03+ settings */
tokens = settings.tokens;
updateTokens();
});
}
/* Save settings as a JSON file on the watch.
*/
function saveTokens() {
Util.showModal('Saving...');
Puck.write(`\x10require('Storage').write(${JSON.stringify('authentiwatch.json')},${JSON.stringify(tokens)})\n`,()=>{
let newsettings={tokens:tokens,misc:settings.misc};
Puck.write(`\x10require('Storage').writeJSON(${JSON.stringify('authentiwatch.json')},${JSON.stringify(newsettings)})\n`,()=>{
Util.hideModal();
});
}

View File

@ -40,3 +40,4 @@
0.35: Add Bangle.appRect polyfill
Don't set beep vibration up on Bangle.js 2 (built in)
0.36: Add comments to .boot0 to make debugging a bit easier
0.37: Remove Quiet Mode settings: now handled by Quiet Mode Schedule app

View File

@ -78,13 +78,7 @@ boot += `E.on('errorFlag', function(errorFlags) {
if (global.save) boot += `global.save = function() { throw new Error("You can't use save() on Bangle.js without overwriting the bootloader!"); }\n`;
// Apply any settings-specific stuff
if (s.options) boot+=`Bangle.setOptions(${E.toJS(s.options)});\n`;
if (s.quiet && s.qmOptions) boot+=`Bangle.setOptions(${E.toJS(s.qmOptions)});\n`;
if (s.quiet && s.qmBrightness) {
if (s.qmBrightness!=1) boot+=`Bangle.setLCDBrightness(${s.qmBrightness});\n`;
} else {
if (s.brightness && s.brightness!=1) boot+=`Bangle.setLCDBrightness(${s.brightness});\n`;
}
if (s.quiet && s.qmTimeout) boot+=`Bangle.setLCDTimeout(${s.qmTimeout});\n`;
if (s.brightness && s.brightness!=1) boot+=`Bangle.setLCDBrightness(${s.brightness});\n`;
if (s.passkey!==undefined && s.passkey.length==6) boot+=`NRF.setSecurity({passkey:${s.passkey}, mitm:1, display:1});\n`;
if (s.whitelist) boot+=`NRF.on('connect', function(addr) { if (!(require('Storage').readJSON('setting.json',1)||{}).whitelist.includes(addr)) NRF.disconnect(); });\n`;
// Pre-2v10 firmwares without a theme/setUI

View File

@ -3,3 +3,5 @@
0.03: Save total distance traveled
0.04: Add sensor battery level indicator
0.05: Add cadence sensor support
0.06: Now read wheel rev as well as cadence sensor
Improve connection code

View File

@ -16,3 +16,9 @@ If the watch app has not received an update from the sensor for at least 10 seco
Button 2 switches between the display for cycling speed and cadence.
Values displayed are imperial or metric (depending on locale), cadence is in RPM, the wheel circumference can be adjusted in the global settings app.
# TODO
* Use Layout Library to provide proper Bangle.js 2 support
* Turn CSC sensor support into a library
* Support for `Recorder` app, to allow CSC readings to be logged alongside GPS

View File

@ -5,6 +5,8 @@ var characteristic;
const SETTINGS_FILE = 'cscsensor.json';
const storage = require('Storage');
const W = g.getWidth();
const H = g.getHeight();
class CSCSensor {
constructor() {
@ -152,7 +154,7 @@ class CSCSensor {
var qChanged = false;
if (event.target.uuid == "0x2a5b") {
if (event.target.value.getUint8(0, true) & 0x2) {
// crank revolution
// crank revolution - if enabled
const crankRevs = event.target.value.getUint16(1, true);
const crankTime = event.target.value.getUint16(3, true);
if (crankTime > this.lastCrankTime) {
@ -161,44 +163,43 @@ class CSCSensor {
}
this.lastCrankRevs = crankRevs;
this.lastCrankTime = crankTime;
} else {
// wheel revolution
var wheelRevs = event.target.value.getUint32(1, true);
var dRevs = (this.lastRevs>0 ? wheelRevs-this.lastRevs : 0);
if (dRevs>0) {
qChanged = true;
this.totaldist += dRevs*this.wheelCirc/63360.0;
if ((this.totaldist-this.settings.totaldist)>0.1) {
this.settings.totaldist = this.totaldist;
storage.writeJSON(SETTINGS_FILE, this.settings);
}
}
this.lastRevs = wheelRevs;
if (this.lastRevsStart<0) this.lastRevsStart = wheelRevs;
var wheelTime = event.target.value.getUint16(5, true);
var dT = (wheelTime-this.lastTime)/1024;
var dBT = (Date.now()-this.lastBangleTime)/1000;
this.lastBangleTime = Date.now();
if (dT<0) dT+=64;
if (Math.abs(dT-dBT)>3) dT = dBT;
this.lastTime = wheelTime;
this.speed = this.lastSpeed;
if (dRevs>0 && dT>0) {
this.speed = (dRevs*this.wheelCirc/63360.0)*3600/dT;
this.speedFailed = 0;
this.movingTime += dT;
}
else {
this.speedFailed++;
qChanged = false;
if (this.speedFailed>3) {
this.speed = 0;
qChanged = (this.lastSpeed>0);
}
}
this.lastSpeed = this.speed;
if (this.speed>this.maxSpeed && (this.movingTime>3 || this.speed<20) && this.speed<50) this.maxSpeed = this.speed;
}
// wheel revolution
var wheelRevs = event.target.value.getUint32(1, true);
var dRevs = (this.lastRevs>0 ? wheelRevs-this.lastRevs : 0);
if (dRevs>0) {
qChanged = true;
this.totaldist += dRevs*this.wheelCirc/63360.0;
if ((this.totaldist-this.settings.totaldist)>0.1) {
this.settings.totaldist = this.totaldist;
storage.writeJSON(SETTINGS_FILE, this.settings);
}
}
this.lastRevs = wheelRevs;
if (this.lastRevsStart<0) this.lastRevsStart = wheelRevs;
var wheelTime = event.target.value.getUint16(5, true);
var dT = (wheelTime-this.lastTime)/1024;
var dBT = (Date.now()-this.lastBangleTime)/1000;
this.lastBangleTime = Date.now();
if (dT<0) dT+=64;
if (Math.abs(dT-dBT)>3) dT = dBT;
this.lastTime = wheelTime;
this.speed = this.lastSpeed;
if (dRevs>0 && dT>0) {
this.speed = (dRevs*this.wheelCirc/63360.0)*3600/dT;
this.speedFailed = 0;
this.movingTime += dT;
}
else {
this.speedFailed++;
qChanged = false;
if (this.speedFailed>3) {
this.speed = 0;
qChanged = (this.lastSpeed>0);
}
}
this.lastSpeed = this.speed;
if (this.speed>this.maxSpeed && (this.movingTime>3 || this.speed<20) && this.speed<50) this.maxSpeed = this.speed;
}
if (qChanged && this.qUpdateScreen) this.updateScreen();
}
@ -215,44 +216,47 @@ function getSensorBatteryLevel(gatt) {
});
}
function parseDevice(d) {
device = d;
g.clearRect(0, 60, 239, 239).setFontAlign(0, 0, 0).setColor(0, 1, 0).drawString("Found device", 120, 120).flip();
device.gatt.connect().then(function(ga) {
gatt = ga;
g.clearRect(0, 60, 239, 239).setFontAlign(0, 0, 0).setColor(0, 1, 0).drawString("Connected", 120, 120).flip();
return gatt.getPrimaryService("1816");
}).then(function(s) {
service = s;
return service.getCharacteristic("2a5b");
}).then(function(c) {
characteristic = c;
characteristic.on('characteristicvaluechanged', (event)=>mySensor.updateSensor(event));
return characteristic.startNotifications();
}).then(function() {
console.log("Done!");
g.clearRect(0, 60, 239, 239).setColor(1, 1, 1).flip();
getSensorBatteryLevel(gatt);
mySensor.updateScreen();
}).catch(function(e) {
g.clearRect(0, 60, 239, 239).setColor(1, 0, 0).setFontAlign(0, 0, 0).drawString("ERROR"+e, 120, 120).flip();
console.log(e);
})}
function connection_setup() {
NRF.setScan();
mySensor.screenInit = true;
NRF.setScan(parseDevice, { filters: [{services:["1816"]}], timeout: 2000});
g.clearRect(0, 48, 239, 239).setFontVector(18).setFontAlign(0, 0, 0).setColor(0, 1, 0);
g.drawString("Scanning for CSC sensor...", 120, 120);
E.showMessage("Scanning for CSC sensor...");
NRF.requestDevice({ filters: [{services:["1816"]}]}).then(function(d) {
device = d;
E.showMessage("Found device");
return device.gatt.connect();
}).then(function(ga) {
gatt = ga;
E.showMessage("Connected");
return gatt.getPrimaryService("1816");
}).then(function(s) {
service = s;
return service.getCharacteristic("2a5b");
}).then(function(c) {
characteristic = c;
characteristic.on('characteristicvaluechanged', (event)=>mySensor.updateSensor(event));
return characteristic.startNotifications();
}).then(function() {
console.log("Done!");
g.reset().clearRect(Bangle.appRect).flip();
getSensorBatteryLevel(gatt);
mySensor.updateScreen();
}).catch(function(e) {
E.showMessage(e.toString(), "ERROR");
console.log(e);
});
}
connection_setup();
setWatch(function() { mySensor.reset(); g.clearRect(0, 48, 239, 239); mySensor.updateScreen(); }, BTN1, {repeat:true, debounce:20});
E.on('kill',()=>{ if (gatt!=undefined) gatt.disconnect(); mySensor.settings.totaldist = mySensor.totaldist; storage.writeJSON(SETTINGS_FILE, mySensor.settings); });
setWatch(function() { if (Date.now()-mySensor.lastBangleTime>10000) connection_setup(); }, BTN3, {repeat:true, debounce:20});
setWatch(function() { mySensor.toggleDisplayCadence(); g.clearRect(0, 48, 239, 239); mySensor.updateScreen(); }, BTN2, {repeat:true, debounce:20});
NRF.on('disconnect', connection_setup);
E.on('kill',()=>{
if (gatt!=undefined) gatt.disconnect();
mySensor.settings.totaldist = mySensor.totaldist;
storage.writeJSON(SETTINGS_FILE, mySensor.settings);
});
NRF.on('disconnect', connection_setup); // restart if disconnected
Bangle.setUI("updown", d=>{
if (d<0) { mySensor.reset(); g.clearRect(0, 48, W, H); mySensor.updateScreen(); }
if (d==0) { if (Date.now()-mySensor.lastBangleTime>10000) connection_setup(); }
if (d>0) { mySensor.toggleDisplayCadence(); g.clearRect(0, 48, W, H); mySensor.updateScreen(); }
});
Bangle.loadWidgets();
Bangle.drawWidgets();

View File

@ -1,3 +1,4 @@
0.01: Initial Release
0.02: Replace icon with one found on https://icons8.com
0.03: Re-render icon fixing display in settings
0.04: Improved UX and display solve time

View File

@ -1,12 +1,11 @@
# Cube Scramble
A random scramble generator for the 3x3 Rubik's cube
A random scramble generator for the 3x3 Rubik's cube with a basic timer.
## Future features
I'm keen to complete this project with
* Add a timer
* Add the ability for times to be stored and exported
## Requests

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -1,4 +1,3 @@
// Scramble code from: https://raw.githubusercontent.com/bjcarlson42/blog-post-sample-code/master/Rubik's%20Cube%20JavaScript%20Scrambler/part_two.js
const makeScramble = () => {
const options = ["F", "F2", "F'", "R", "R2", "R'", "U", "U2", "U'", "B", "B2", "B'", "L", "L2", "L'", "D", "D2", "D'"];
@ -59,16 +58,36 @@ const getRandomInt = max => Math.floor(Math.random() * Math.floor(max)); // retu
const getRandomIntBetween = (min, max) => Math.floor(Math.random() * (max - min) + min);
const presentScramble = () => {
g.clear();
E.showMessage(makeScramble().join(" "));
showPrompt(makeScramble().join(" "), {
buttons: {"solve": true, "reset": false}
}).then((v) => {
if (v) {
const start = new Date();
showPrompt(" ", {
buttons: {"stop": true}
}).then(() => {
const time = parseFloat(((new Date()).getTime() - start.getTime()) / 1000);
showPrompt(String(time.toFixed(3)), {
buttons: {"next": true}
}).then(() => {
presentScramble();
});
});
} else {
presentScramble();
}
});
};
const showPrompt = (text, options = {}) => {
options.title = options.title || "cube scramble";
return E.showPrompt(text, options);
};
const init = () => {
Bangle.setLCDTimeout(0);
Bangle.setLCDPower(1);
presentScramble();
setWatch(() => {
presentScramble();
}, BTN1, {repeat:true});
};
init();

View File

@ -1 +1,2 @@
0.1: Added source code
0.2: Added a README file

View File

@ -0,0 +1,3 @@
# FD6FDetect
An app dedicated to letting you know how many Exposure Notification beacons are near you.

1
apps/gbdebug/ChangeLog Normal file
View File

@ -0,0 +1 @@
0.01: New App!

26
apps/gbdebug/README.md Normal file
View File

@ -0,0 +1,26 @@
# Gadgetbridge Debug
This is useful if your Bangle isn't responding to the Gadgetbridge
Android app properly.
This app disables all existing Gadgetbridge handlers and then displays the
messages that come from Gadgetbridge on the screen
of the watch. It also saves the last 10 messages in a variable
called `history`.
More info on Gadgetbridge at http://www.espruino.com/Gadgetbridge
## Usage
* Run the `GB Debug` app on your Bangle
* Connect your Bangle to Gadgetbridge
* Do whatever was causing you problems (eg receiving a call)
* The Gadgetbridge message should now be displayed on-screen
If you want to get the *actual* data rather than copying it from the screen.
* Ensure the `GB Debug` app is kept running after the above steps
* Disconnect Gadgetbridge from the Bangle
* Connect the Web IDE on your PC
* Type `show()` on the left-hand side of the IDE and the
last 10 messages from Gadgetbridge will be shown.

1
apps/gbdebug/app-icon.js Normal file
View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("mEw4cBzsE/4AClMywH680rlOW9N9kmSpICnyBBBgQRMkBUDgIRKoBoGGRYAFHBGARpARHT5MJKxQAFLgzELCIlIBQkSCIsEPRKBHCIYbGoIRFiQRJhJgFCISeEBwMQOQykCCIqlBpMEBIgRHOQYRIYQbPDhAbBNwgRJVwOCTIgRFMAJKDgQRGOQprBCIMSGogHBJwwbBkC2FCJNbUgMNwHYBYPJCIhODju0yFNCIUGCJGCoE2NwO24EAmw1FHgWCpMGgQOBBIMwCJGSpMmyAjDCI6eBCIWAhu2I4IRCUIYREk+Ah3brEB2CzFAAIRCl3b23btsNCJckjoRC1h2CyAREtoNC9oDC2isCCIgHBjdt5MtCJj2CowjD2uyCIOSCI83lu123tAQIRI4EB28/++39/0mwRCoARCgbfByU51/3rev+mWCIQwCPok0EYIRB/gRDpJ+EcYQRJkARQdgq/Bl5HE7IRDZAltwAREyXbCIbIFgEfCIXsBwQCDQAYRNLgvfCIXtCI44Dm3JCIUlYoYCGkrjBk9bxMkyy9CChICFA="))

21
apps/gbdebug/app.js Normal file
View File

@ -0,0 +1,21 @@
E.showMessage("Waiting for message");
Bangle.loadWidgets();
Bangle.drawWidgets();
var history = [];
GB = function(e) {
if (history.length > 10)
history = history.slice(history.length-10);
history.push(e);
var s = JSON.stringify(e,null,2);
g.reset().clear(Bangle.appRect);
g.setFont("6x8").setFontAlign(-1,0);
g.drawString(s, 10, g.getHeight()/2);
};
function show() {
print(JSON.stringify(history,null,2));
}

BIN
apps/gbdebug/app.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -23,6 +23,7 @@
}
var mainmenu = {
"" : { "title" : "Gadgetbridge" },
"< Back" : back,
"Connected" : { value : NRF.getSecurityStatus().connected?"Yes":"No" },
"Show Icon" : {
value: settings().showIcon,
@ -34,8 +35,7 @@
value: !!settings().hrm,
format: v => v?"Yes":"No",
onchange: v => updateSetting('hrm', v)
},
"< Back" : back,
}
};
var findPhone = {

View File

@ -27,3 +27,4 @@
0.23: Fix issue where tracks wouldn't record when running from OpenStMap if a period hadn't been set up first
0.24: Better support for Bangle.js 2, avoid widget area for Graphs, smooth graphs more
0.25: Fix issue where if Bangle.js 2 got a GPS fix but no reported time, errors could be caused by the widget (fix #935)
0.26: Multiple bugfixes

View File

@ -249,10 +249,10 @@ function plotTrack(info) {
g.fillCircle(ox,oy,5);
if (info.qOSTM) g.setColor(0, 0, 0);
else g.setColor(1,1,1);
g.drawString(require("locale").distance(dist),120,220);
g.drawString(require("locale").distance(dist),g.getWidth() / 2, g.getHeight() - 20);
g.setFont("6x8",2);
g.setFontAlign(0,0,3);
g.drawString("Back",230,200);
g.drawString("Back",g.getWidth() - 10, g.getHeight() - 40);
setWatch(function() {
viewTrack(info.fn, info);
}, global.BTN3||BTN1);
@ -330,13 +330,13 @@ function plotGraph(info, style) {
height: g.getHeight()-(24+8),
axes : true,
gridy : grid,
gridx : 50,
gridx : infn.length / 3,
title: title,
xlabel : x=>Math.round(x*dur/(60*infn.length))+" min" // minutes
});
g.setFont("6x8",2);
g.setFontAlign(0,0,3);
g.drawString("Back",230,200);
g.drawString("Back",g.getWidth() - 10, g.getHeight() - 40);
setWatch(function() {
viewTrack(info.fn, info);
}, global.BTN3||BTN1);

View File

@ -0,0 +1 @@
0.01: First Release

View File

@ -0,0 +1,34 @@
# Interval Timer
An interval timer for workouts and whatever else!
## Usage
First set the active time (i.e. the number of seconds to perform exercises).
![Set Active Time](images/set-active.png)
Next set the rest time (i.e. number of seconds to rest between exercises).
![Set Rest Time](images/set-rest.png)
Finally choose the number of sets to perform.
![Set Number Sets](images/set-sets.png)
Active time will be shown in red, rest time in green. The watch will buzz whenever active or rest time gets to 0.
![Timer (active)](images/timer1.png)
![Timer (rest)](images/timer2.png)
You can press the physical button during timer countdown to pause the timer.
![Paused](images/pause.png)
View after all sets are completed. Press menu to change settings or restart to start timer again with the same settings.
![Completed view](images/done.png)
## Creator
James Gough

View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("mEwwg96hWq1WgDCgXWxGZzOICqQABC4QABCyIXFDBsICIeJyfznAFBwAWPC4Of///mYYMCwgXBl4XB/4xCFxwABn4XCDAQwICw2ICwf/+YwJxGDHoQXHGARGIn/4C5QwBJAwQDC5QLCIw6GEC5BIGIwQLBJAgXGJAwXEJAgXPHgoXIEYIXFLwRIFC484C4h2DJAoIFPA+Ix4MGAAJoDHYgXKf4QXUJAYJGC5p5CF6hIBO44XNABIXGEw4AIU4rXFC5jvFc5AAHxAXGQwwAHQAIXcPCB2FC4RgOB4IXFJBxGHJB5GHJAYwKFwIXIJAIwKFwJGHGAYYICwIuIGAeImYWFmYJBFxIYEwZjC+YtCCxZJDAA4WMDBIWODIwVRAH4AXA=="))

306
apps/intervalTimer/app.js Normal file
View File

@ -0,0 +1,306 @@
/**
Interval Timer
An app for the Bangle.js watch
*/
var Layout = require("Layout");
// Globals
var timerMode; // 'active' || 'rest'
var numSets = 1;
var activeTime = 20;
var restTime = 10;
var counter;
var setsRemaining;
var counterInterval;
var outOfTimeTimeout;
var timerIsPaused;
var timerLayout;
/** Called to initialize the timer layout */
function initTimerLayout() {
timerLayout = new Layout( {
type:"v", c: [
{type:"txt", font:"40%", pad: 10, label:"00:00", id:"time" },
{type:"txt", font:"6x8:2", label:"0", id:"set" }
]
}, {btns: [
{label: "Stop", cb: l => {
if (timerIsPaused){
timerIsPaused = false;
resumeTimer();
}
else{
timerIsPaused = true;
pauseTimer();
}
}
}
]
});
}
/** Pauses the timer by clearing the counterInterval */
function pauseTimer() {
if (counterInterval){
clearTimeout(counterInterval);
counterInterval = undefined;
}
// update layout to display "Paused"
timerLayout.clear(timerLayout.time);
timerLayout.time.label = "||";
timerLayout.clear(timerLayout.set);
timerLayout.set.label = "Paused";
timerLayout.render();
}
/** Reumes the timer by setting the counterInterval again */
function resumeTimer() {
if (!counterInterval){
counterInterval = setInterval(countDown, 1000);
}
// display the timer values again.
timerLayout.clear(timerLayout.time);
timerLayout.time.label = counter;
timerLayout.clear(timerLayout.set);
timerLayout.set.label = `Sets: ${setsRemaining}`;
timerLayout.render();
}
/** Display 'Done' view, called when all sets are completed */
function outOfTime() {
var stopLayout = new Layout( {
type:"v", c: [
{type:"txt", font:"30%", label:"Done!", id:"time" },
]
}, {btns: [
// menu button allows user to modify times and sets
{label:"Menu", cb: l=> {
if (outOfTimeTimeout){
clearTimeout(outOfTimeTimeout);
outOfTimeTimeout = undefined;
}
//stopLayout.remove();
setup();
}
},
// restart button runs timer again with the same settings
{label:"Restart", cb: l=> {
if (outOfTimeTimeout){
clearTimeout(outOfTimeTimeout);
outOfTimeTimeout = undefined;
}
//stopLayout.remove();
timerMode = 'active';
startTimer();
}
}
]});
if (counterInterval) return;
setsRemaining = numSets;
g.clear();
stopLayout.render();
Bangle.buzz(500);
Bangle.beep(200, 4000)
.then(() => new Promise(resolve => setTimeout(resolve,200)))
.then(() => Bangle.beep(200, 3000));
}
/** Function called by the counterInterval at each second.
Updates the timer display values.
*/
function countDown() {
// Out of time
if (counter<=0) {
if(timerMode === 'active'){
timerMode = 'rest';
startTimer();
return;
}
else{
--setsRemaining;
if (setsRemaining === 0){
clearInterval(counterInterval);
counterInterval = undefined;
//setWatch(startTimer, (process.env.HWVERSION==2) ? BTN1 : BTN2);
outOfTime();
return;
}
timerMode = 'active';
startTimer();
return;
}
}
timerLayout.clear(timerLayout.time);
timerLayout.time.label = counter;
timerLayout.render();
counter--;
}
/** Start the interval timer. */
function startTimer() {
timerIsPaused = false;
g.clear();
if(timerMode === 'active'){
counter = activeTime;
timerLayout.time.col = '#f00';
}
else{
counter = restTime;
timerLayout.time.col = '#0f0';
}
timerLayout.clear(timerLayout.set);
timerLayout.set.label = `Sets: ${setsRemaining}`;
timerLayout.render();
Bangle.buzz();
countDown();
if (!counterInterval){
counterInterval = setInterval(countDown, 1000);
}
}
/** Menu step in which user sets the number of sets to be performed. */
function setNumSets(){
g.clear();
var menuLayout = new Layout( {
type:"v", c: [
{type:"txt", font:"6x8:2", label:"Number Sets", id:"title" },
{type:"txt", font:"30%", pad: 20, label: numSets, id:"value" },
{type:"btn", font:"6x8:2", label:"Back", cb: l => {
setRestTime();
}
}
]
}, {btns: [
{label:"+", cb: l=> {
incrementNumSets();
}},
{label:"Go", cb: l=> {
setsRemaining = numSets;
initTimerLayout();
startTimer();
}},
{label:"-", cb: l=>{
decrementNumSets();
}}
]});
menuLayout.render();
const incrementNumSets = () => {
++numSets;
menuLayout.clear(menuLayout.numSets);
menuLayout.value.label = numSets;
menuLayout.render();
};
const decrementNumSets = () => {
if(numSets === 1){
return;
}
--numSets;
menuLayout.clear(menuLayout.numSets);
menuLayout.value.label = numSets;
menuLayout.render();
};
}
/** Menu step in which user sets the number of seconds of rest time for each set. */
function setRestTime(){
g.clear();
var menuLayout = new Layout( {
type:"v", c: [
{type:"txt", font:"6x8:2", label:"Rest Time", id:"title" },
{type:"txt", font:"30%", pad: 20, label: restTime, id:"value" },
{type:"btn", font:"6x8:2", label:"Back", cb: l => {
setActiveTime();
}
}
]
}, {btns: [
{label:"+", cb: l=> {
incrementRestTime();
}},
{label:"OK", cb: l=>setNumSets()},
{label:"-", cb: l=>{
decrementRestTime();
}}
]});
menuLayout.render();
const incrementRestTime = () => {
restTime += 5;
menuLayout.clear(menuLayout.restTime);
menuLayout.value.label = restTime;
menuLayout.render();
};
const decrementRestTime = () => {
if(restTime === 0){
return;
}
restTime -= 5;
menuLayout.clear(menuLayout.restTime);
menuLayout.value.label = restTime;
menuLayout.render();
};
}
/** Menu step in which user sets the number of seconds of active time for each set. */
function setActiveTime(){
g.clear();
var menuLayout = new Layout( {
type:"v", c: [
{type:"txt", font:"6x8:2", label:"Active Time", id:"title" },
{type:"txt", font:"30%", pad: 20, label: activeTime, id:"value" }
]
}, {btns: [
{font:"20%", label:"+", fillx:1, cb: l=> {
incrementActiveTime();
}},
{label:"OK", cb: l => setRestTime()},
{type:"btn", font:"20%", label:"-", fillx:1, cb: l=> {
decrementActiveTime();
}
}
]});
menuLayout.render();
const incrementActiveTime = () => {
activeTime += 5;
menuLayout.clear(menuLayout.activeTime);
menuLayout.value.label = activeTime;
menuLayout.render();
};
const decrementActiveTime = () => {
if(activeTime === 0){
return;
}
activeTime -= 5;
menuLayout.clear(menuLayout.activeTime);
menuLayout.value.label = activeTime;
menuLayout.render();
};
}
/** Start the setup menu, walks through setting active time, rest time, and number of sets. */
function setup(){
if (timerLayout){
// remove timerLayout, otherwise it's pause button callback will still be registered
timerLayout.remove(timerLayout);
timerLayout = undefined;
}
Bangle.setUI(); // remove all existing input handlers
timerMode = 'active';
setActiveTime();
}
// this keeps the watch LCD lit up
Bangle.setLCDPower(1);
setup();

BIN
apps/intervalTimer/app.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -6,4 +6,5 @@
0.06: Use Bangle.setUI for buttons
0.07: Theme colours fix
0.08: Merge Bangle.js 1 and 2 launchers
0.09: Added Scaling factor to settings and changed to vector font for Bangle.js2
0.09: Bangle.js 2 - pressing the button goes back to clock (fix #971)
After 10s of being locked, the launcher goes back to the clock screen

View File

@ -64,3 +64,12 @@ Bangle.setUI("updown",dir=>{
});
Bangle.loadWidgets();
Bangle.drawWidgets();
// 10s of inactivity goes back to clock
if (Bangle.setLocked) Bangle.setLocked(false); // unlock initially
var lockTimeout;
Bangle.on('lock', locked => {
if (lockTimeout) clearTimeout(lockTimeout);
lockTimeout = undefined;
if (locked)
lockTimeout = setTimeout(_=>load(), 10000);
});

View File

@ -52,3 +52,16 @@ E.showScroller({
}
}
});
// pressing button goes back
setWatch(_=>load(), BTN1, {edge:"falling"});
// 10s of inactivity goes back to clock
Bangle.setLocked(false); // unlock initially
var lockTimeout;
Bangle.on('lock', locked => {
if (lockTimeout) clearTimeout(lockTimeout);
lockTimeout = undefined;
if (locked)
lockTimeout = setTimeout(_=>load(), 10000);
});

View File

@ -3,3 +3,4 @@
0.03: New design with different icons if gps, hrm or compass is on.
0.04: Inluded LCARS Logo.
0.05: Additional icons for (1) charging and (2) bat < 30%.
0.06: Fix - Alarm disabled, if clock was closed

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

@ -1,53 +1,78 @@
const filename = "lcars.setting.json";
const Storage = require("Storage");
let settings = Storage.readJSON(filename,1) || {
alarm: -1,
};
/*
* Requirements and globals
*/
const locale = require('locale');
var alarm = -1;
var hrmValue = "-";
var backgroundImage = {
width : 176, height : 151, bpp : 3,
transparent : 2,
buffer : require("heatshrink").decompress(atob("AAdx48cATojCufPnnzASocCyVJkgCdyAkCh158+eASsAgMHQDyDggKAeQcKAgQYodZgRoFpAkCAG0QJQtwIPMSQYtAIPLOGQfSADAQRA5Qf6D6g/gQf8H/iD/n//wCD9gP/Qf5BBQf5BC+CD9h5BB/yD8jl/IIPx46D6g4/BQYU//+AQe8B/6DD//Hj/x4CD2v/4AQJBC4ED/4IBQegvBPQJBERgSD1j/wgB9BAASACn/gQepECIIaACg/8QeY1DQYjCD/+AQeUHQZSPDwUIkACDQdT7DIJEfQYIAxg44DIJHwIOU/fwYAERgUDIOUBPQhBE/hB1QZRBFjlx44CDuBBpg4CCHwdxIIcfIIPnz15AQeAQdT+CIIXgZwJBDHAM8+fPAQbOqQY0AIIkcAQKDxg44BIIX4RgX/GoICCQeR3BIIXARIfwJoSDyfYI4B//+BAaABn/gAoKDxfYNx459BJQnx/4FCQeUAv7EBIIv//AFCQeUAgPH/lwAwUHQYPAQe0An6EBAAfj/wMDQeZ9B/jIC//HgCJDQe3gAYICCgF+Qe8B/4IGIIiD0nAHGhyD3ABqD0ABiD/Qf4ADjiD/gEnQYuQQf6D7gaDFzxB5gFzQYnz4JB5hyDFATfkEwUN23btoCVgEBQYoCcIIRhZDYMJQf4ABjiD/AH4A/AH4AGiFx48cATokCufPnnzASocCyVJkgCdyAkCj158+eASsAgKAfQcEJQDyDhNA8QoMEAQIqCACweEASkCNAtIHbIAfdI1wIPMSQYtAQf6D7QAYCCIHKD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/AH4A/AH4A/AH4Asjlx44CDsBB57dt2wCDQfWevPnAQaD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf4Akjlx44CDQfQA/AH4A/AH4A/ABM8+fPAQfwIPPnz15AQeAQf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf4AZjiD/gEHQYuQQf6D7gaDFzxB5gFzQYnz48cuICZEwQdZgECQYoCb8hBChMkyVJASsAgPHQYgCcQboABQf4ABfzACIQbg="))
buffer : require("heatshrink").decompress(atob("AAUEufPnnzATkAg4daIIXnz15ATvkwEDDrUAgPHQDyDghyAeQcNzJQ0cuPHATCDBDrUDJQ1AgAA3jjOF+BA4T4KDFyBB5Qf4ABQAaD9QAaD/QesH8CD/n/8Qf8//+AQfsB///GQ6D2h5BJQf6D7/yD8jl/IIIABjiD5n4/DAAWAQe8B//8QYfH//x4CD2HwMDQIf4AoP4Qesf/56BQYYFBuP/Qev//0AQYoKBn/gQecH/lwQwQADBYaDzGoZBHR4OAQehBKj5BBsuWrICDBAIAofYZBFBAZ6qIJJ6DQZBB3IAiDDgZBygJ6EIIn8IOqDKIIscuPHAQdwINkHIJEfIIPnz15AQeAINT+CHwcPAYI1BIIU8+fPAQbOqg56BQYcAgKD4IIv4RgSDCAQSD34AIC//wBYSDyO4P+IIoIB+E/8AFBQeL7B//HHYJKE+P/AoSDygF/QQJBF//4AoSDygEBQYgFBj/xZYaDzgE/PoIAE/wMDQeZBB/jICAAMcuAMDQevgQwR0CvyD3gP/BAxBEQek4A40OQe4ANQegAMQf6D/AAccQf8Ak6DFyCD/QfcDQYueIPMAuaDE+fBIPMOQYoCb8glB7dt2wCW2EAgKDFATkAg2atOmAS5eBhKDigyDZ2zHCjiD/AAMChEgwQCcQb4AiQb5BiQbscuPHATyDfyfPnnzATnwQbsBQD6DghKAeQcJoHiFBggCYQYVhdwQATgOmgVPNAnOECwAGQYIZXgM2dI1wIL2aoCDYibsF4CD/QcGYILGmyaDFwCD/QfaADQf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D4jCD/ADKDnILSD/Qf6DEHO6DJIP6D/Qf6D/QY8cuPHAQdAQfPz588AQeAQf8cuCD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6DqoCD5HO6DJIP6D/Qf6D/QY8cuPHAQdwE7sGzCDZ+fPngCDwBBe7aD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/QfcTQYvAQf6DgzVAQbECp6DE5yD5gCDFATqDCsOAIKtB00AhKDEATnwQYVt2wCXQwKDltOmAS6IC2aD82BBCQccaQbGAA=="))
}
var iconPlanet = {
var iconEarth = {
text: "EARTH",
width : 50, height : 50, bpp : 3,
transparent : 5,
buffer : require("heatshrink").decompress(atob("23btoCD6PHjlx9oLGAQuGiVJkmSpIRK2lxEYQCDCJOGjEhEYNBwUI5drEw/xEYwCB8oRGDoMhwmSsAFBkGM237NZICGj15OgnaDoOGI4cgwUa5dv332EwdHEZACB8+evYRCtAdBEAQpDscs3379+9HAW8EZPHz158+WSQQjFwUYsMs2QjBEwPrSRZuCJQN5TAJuCEYkhwUS5cvJQRxCNxZKDOIXgJQkh0mYtMk2XLJQXv1u0EZSVDOIWsJQsSpMkyVJljgB9gmB7YjLOgtq4BKEsIjCAQNLlgCBt+9EZwCCj8sJQpxB00aJoYCB5cBEZ4CB+RKFJoeGjAjCoOGzBKaAQeGJQQFBwJKSsAjIcweSBwRKRjojKOgYFCxZKRtAaBjHrlm4FJUN3hKQi3ShAjB2XLAQQmI7dHJR97tsh9gjEAQLpHlu2+PnExvF23an3794mF2BKFm3btsevImMjwRB23v3wmB3xNF5BuDCIPb8+eEwOeExIRCtojCJo5uEEwRxBEwRuJHAdI+YmCTYlgJQIREtrjCEwLdHCIiYBhF7OgnJSQgmFjhxCOgiSDAQvSX4QmB90IkQRIX4gmCEZICDvwmCBY3QA"))
buffer : require("heatshrink").decompress(atob("AFtx48ECBsDwU5k/yhARLjgjBjlzAQMQEZcIkOP/fn31IEZgCBnlz58cEpM4geugEgwU/8+WNZJHDuHHvgmBCQ8goEOnVgJoMnyV58mACItHI4X8uAFBuVHnnz4BuGxk4////Egz3IkmWvPgNw8f/prB//BghTC+AjE7848eMjNnzySBwUJkmf/BuGuPDAQIjBiPHhhTCSQnjMo0ITANJn44Dg8MuFBggCCiFBcAJ0Bv5xEh+ITo2OhHkyf/OIQdBWwVHhgjBNwUE+fP/5EEgePMoYLBhMgyVJk/+BQQdC688I4XxOIc8v//NAvr+QEBj/5NwKVBy1/QYUciPBhk1EAJrC+KeC489QYaMBgU/8BNB9+ChEjz1Jkn/QYMBDQIgCcYTCCiP/nlzJQmenMAgV4//uy/9wRaB/1J8iVCcAfHjt9TYYICnhKCgRKBw159/v//r927OIeeoASBDQccvv3791KYVDBYPLJQeCnPnz//AAP6ocEjEkXgMgJQtz79fLAP8KYkccAcJ8Gf/f/xu/cAMQ4eP5MlyQRCMolx40YsOGBAPfnnzU4KVDpKMBvz8Dh0/8me7IICgkxJQXPIgZTD58sEgcJk+eNoONnFBhk4/5uB/pcDg5KD+4mEv4CBXISVDhEn31/8/+mH7x//JQK5CAAMB4JBCnnxJQf/+fJEgkAa4L+CAQOOjMn/1bXIRxDJQXx58f//Hhlz/88EgsChMgz/Zs/+nfkyV/8huDOI6SD498NwoACi1Z8+S/Plz17/+QCI7jC+ZxBmfPnojIAAMDcYWSp//2wRJEwq2GABECjMgNYwAmA="))
}
var iconGps = {
var iconSaturn = {
text: "SATURN",
width : 50, height : 50, bpp : 3,
transparent : 1,
buffer : require("heatshrink").decompress(atob("AH4A/AEkQuPHCJ0ChEAwARNjAjBjgjOhs06Q2OEYVx4ARMhEggUMkANIDoIgBoEEgEBNxJEC6ZrBAAMwNxAjDNYcHNxIjB7dtEwIHBwRoKj158+cuPEjlwCRAjC23bpu0wRNDAAsHEYWeEwaSJ6YjCAQUNSRQjEzxQBWZMNEYlsmg2JWAIjCz95SoJuJggjDtuw6dMG5JKCz998wFBJRVNEYW0yaVBJRNhJQN9+4pCzhKJmBKC4YpB/fINxIgCzFxSoQ3J4ENm3CAQPb98wbpEcAQMYWwKYBNxMDXgc2/fv3g2IEAOAgAjBjy5CEhEMfYICBgfPnjdLjj+CgMHiC3JknDhhoINw4jCAB0IJQIANR4QjPAH4A/AFA"))
}
var iconMoon = {
text: "MOON",
width : 50, height : 50, bpp : 3,
transparent : 1,
buffer : require("heatshrink").decompress(atob("AH4AQjlx44CCCZsg8eOkHDwAQKEYgmPhEgEQM48AOIgMHEYoCB4ATI8UAmH/x04JoRuJsImHuBKLn37EwZuIgEQOI8cEpXj/yYBhE8+YNGgkYoJxITBUPnAaC///nC+FjBuIOJZEB8YeCh/8AoYACoMEEAnEjhQDPQJKJ/DCDAoi5DoLdHAoMQgLjFWYPOnngh02IwXzwDjEgPGEYS8BI4MBYoSVG4fP/nghkAgZrDkngJQqSG4gvBg4sBQgkImHihEAWwP8ZBMBEYl5/+cSoVAGQIUFh04weJn///0gj/OEw5KEz45BzhuCTYQAEgePB4IACAoJuBnAQEa4XHjxKB//xFgWHJQsCRgMDEonipwjENwUBDQNx8+evvn/hTDLw3igE+EgZxB8UOXIvEJQUfEYOfv53DEQkgga5BJQvzx84cAj+CDoNh8/eEYJKDuCSEcocnEon+/7xEgFBIIcfB4Mf/IICXI2DgDdBAAn758gCIq5Dv4zBvJuIOIfjEgvP/ARHgwdCB4P3AoTdFAAk4EYk8SQgAFTALaDSQwAGh08//vnDmBABYmEEZYAzA=="))
}
var iconMars = {
text: "MARS",
width : 50, height : 50, bpp : 3,
transparent : 1,
buffer : require("heatshrink").decompress(atob("AH4ATjlwCJ+Dh0wwAQMg0cuPHjFhCZkDps0yVJkmQCBMEjFx42atOmzQmLhMkEYQCCCREQoOGEYmmzB0IEY4CBkARGoJKBEYQCEzgSGkGSpAjDyYCCphuGiFhJQgCD8ASFgRHGAQKbB6BuHJRGeOIsINxEk6dNmARDgMEjQjHAQPnVQojIyZKB6YSDNwK5FAQt54BuDXJIjBEwK5EgxKKXgq5BJRdgXIojJAQJKMcAM0EwM2JUApDoCVFExa7FkGCgAmIkAREEwUEjAmHCIgABhEggQmFpACBCIojBEwRQCzVhwkQU4YADgQmBwQCCI4IFBCAojFAQojGJQQjDAQgRGEZICBEo4gFyUIkilFJQUYEAZrBAQMYNw5KDSQSbCNwwABgOGEwgCBsPACQ5xGwdNnARJcAVh48evvnCJK8Chs+/fv33gCRcB48cuPHCBYA/ADAA=="))
}
var iconSatellite = {
text: "GPS ON",
width : 50, height : 50, bpp : 3,
transparent : 2,
buffer : require("heatshrink").decompress(atob("pMkyQCFpH0BAwCJv/6CJ8l589CJ0kyf//wIDpVEChM8+/fBAdZ8QRIp++///0gIBlMkxI4IuZKB+/SKAPHzpKJ/YkB//pKAP2BYeXhIFDx88+fPvqYBnibEkmUAofv34lC/RQBBYdcmPCXIYjBEwPfvnzJoILBQoUlHAUuJQYmCDodw48cuBKGTA0WEYIEBJQ6YEQwMMuImBJQyYEkmZFAVkyVSJQ6YCyUcmPDjgmBTAJKETAlJiS4ETANPJQpxCJQtxTALgBEwnfvohBI4NZkmWpNlcAgAD/wzBEYaYCy8cJQiYEyIjCTAWS3wlGTAVIEwkerJKFTAkmOIclToK8GAAIPBIgImCufHyxxG59pEIS8DvfypMr968HEwOHEwfx8+cEYkpCIeSoiYByVf/uSkmTEQP7ZIiYDnl5AQNwBYgCGyOn38k2+2pIRKyVeuPPj1x4ccCJVKSgP/5cJA4NSExMps+cSoMMKAIVCCg7SBpd7TANZkmUHBMevPnjlwcwXCCJFEzYDBA4WWKIIRHpEw4+eNwUxEwKYIkVJk1IyIKFHA+DR4VcJQYCBJRBoCkxHBAgNkyyYKkmXEYaYMAQMSEYKYNAQOHEwnSfBYjBAgVaCJdJJSMkTAK8KYQyVKAQ4jBNxiYEcBCYJXIkgA="))
}
var iconCompass = {
width : 50, height : 50, bpp : 3,
transparent : 2,
buffer : require("heatshrink").decompress(atob("pMkyQCDl//AAPSBYwCFv4RCAAOkCJNLCAgACCJm2rNn34FB+g1Jvny5cs2XPn///QRI9uWEYP2rNly5NHNYN82YjB/4mC5YmBOgkl//9y1bsuW/4CB/Nlz//9I4D3/8I4M8EAICB55NCL4g/BIgRKBAQtnL4lf+QdCI4YCD2Y4DSQPZtojHsuerI4Dv/flnzEZB3CHAJuB8ojIAQY4CNwJHI2XHTAY4B/4gJrGBAoSqBpf2EZMQmRxEv/5Nw9YyVCAoO+rf/0v/Nw/PjFB4ZxCn/+y7dBJQyNBkAIDz/6/7dBJQsYsMEhgsE//+7IjFsTYBwAIE/4ABEYs8uPEiFyF4gRBXIImEBAPSpAjDtuX//9+YmERgMcuODBAU9+xKCr68Ev4lBNwm//IJCnhxDDQPx4xuFJQhBDDQXwTwpKBSos8//HjlwYQyVG34aB2zCG//1Nw6SFAQTgD/JuD+wjFrbgCr/yMQI+B/lxEY08UgPpl4jCNwP+I4wCBUgOk3/8DoXxI44CBn/0yREDzx0EAQlndANJv4gJAQf3/VJkq8CJoZuGXIPpkg4BOIZuI5/9CII4BEZAmDNwIRBHAJxDNxH+CII4CSQW+NALgBtomBt5uCHAbjB2ZoCAQPyJQP/NwIRCkm//4gBIgP/SQn/CImSYALjDviSDQAYUDL4ImEEYYRGL4X/76PCI4P/SQYCFl4MBAAgRJEwYRPOgZrHpMgA"))
buffer : require("heatshrink").decompress(atob("pMkyQC/ATGXhIRPyNl0gmPjlwCJ9ly1aCJ1c+fHJR1Hy1ZJR1I+fPnlx6QRLpe+/JKBr5KMuYjBJQMdCJce/fvJQW0CJUlEYQCBSpvvJQbXJjl0NwnzNxGQwEOnHhgF78+WqQyIrFx48cAQXz4ShJgAABh0+8cP//9LJEhg4jDuP3//0LhGQgYlBgeAn///5cIy8MuAmDCIP/9I4HkmCEYMOgHfCQWkCI0cuBuDgF/CIP+CI1Ny1IkeAgHANwIAB/QRFrj7BhkxEwQRC/4RFpbXDgSVBg4RCSorXDI4MJAQMfCIP8cwImDn37fwN58+kwHgLgSVFub7CI4NyBAJKDLgkuEYX78+evKtCLg0jEYRKC58JMoRcFkwjDJQTFDl65EkojEAQMdcwn/+gFC3YjEJQLXEpYRDWwQmEdI6SHAQO0CJUkx4jDF4gCIJQgRMXIjCEARIjCCJ2XEYPKCJqJBJQIROcAUpCJ0kybaDARtdCKAC2kAA="))
}
var iconAlarm = {
text: "TIMER",
width : 50, height : 50, bpp : 3,
transparent : 1,
buffer : require("heatshrink").decompress(atob("kmSpICEp//BAwCJn/+CJ8k//5CKAABCJs8uPH//x48EI5YjCAARNKEYUcv//jgFBExEnEYoAC+QmHIgIgC/gpCuPBCI2fIgU4AQXjA4P8CIuTEYZKBAolwHApXBEAWP//jxwpBAALaFDoYCIiQmDDIP4EAT+CEwnJEwYjLAQLaFEYomDKALmDNwoCIOIZuD8AkFgCYDHAQjMAQTdDNwOAEg0Dx0/cYeREZtxQYOTHgJuHOIvkXJy8DNwIACJQ8Ah4NDAAfxEZARHOIIkHg4jQAQb1CQ4KVJgEOnDIBSoIjNAQPBcAaVJcAKVBcDGOcD7OBMQM48BuH8f//JKCnhKNggRBkmfTQJxBEwhuD/gRCyVHJRlyCIVJXgYmB8ZQBAoIKBXIQmCOIt/NxAUCOIImCIgIpCBAJuDAQZEE/huIAQWTDgImBTYQGC8gRFcYpKFCI8kDwQAFCJBfBEAX/+IjBiQRIEw4jJAQc8v//NYwCIOgJrIJpA1OcwbaFAQWQA="))
}
var iconCharging = {
text: "CHARGE",
width : 50, height : 50, bpp : 3,
transparent : 5,
buffer : require("heatshrink").decompress(atob("23btugAwUBtoICARG0h048eODQYCJ6P/AAUCCJfbo4SDxYRLtEcuPHjlwgoRJ7RnIloUHoYjDAQfAExEAwUIkACEkSAIEYwCBhZKH6EIJI0CJRFHEY0BJRWBSgf//0AJRYSE4BKLj4SE8BKLv4RD/hK/JS2AXY0gXwRKG4cMmACCJQMAg8csEFJQsBAwfasEAm379u0gFbcBfHzgFBz1xMQZKBjY/D0E2+BOChu26yVEEYdww+cgAFCg+cgIfB6RKF4HbgEIkGChEAthfCJQ0eEAIjBBAMxk6GCJQtgtyVBwRKBAQMbHAJKGXIIFCgACBhl54qVG2E+EAJKBJoWAm0WJQ6SCXgdxFgMLJQvYjeAEAUwFIUitEtJQ14NwUHgEwKYZKGwOwNYX7XgWCg3CJQ5rB4MevPnAoPDJRJrCgEG/ECAoNsJRUwoEesIIBiJKI3CVDti/CJRKVDiJHBSo0YsOGjED8AjBcAcIgdhcAXAPIUAcAYIBcA4dBAQUG8BrBgBuCgOwcBEeXIK2BBAIFBgRqBGoYAChq8CcYUE4FbUYOACQsHzgjDgwFBCIImBAQsDtwYD7cAloRI22B86YBw5QBgoRJ7dAgYEDCJaeBJoMcsARMAQNoJIIRE6A"))
}
var iconNoBattery = {
text: "NO BAT",
width : 50, height : 50, bpp : 3,
transparent : 2,
buffer : require("heatshrink").decompress(atob("pMkyQCoycMmHDhgLEqVECg1Bw0YsOGBAdKpMSEwwjCmHCBAYDBHA4jCjFpBAUpkmJJR0lkmRL49Fy1ZsuWBAWkyQRGxcs2XLAQe0ymSNw9t23bAQnSyVICI1IEYoCBqSAIkwjF7dupMiQA5KH/KSIJQ+5SRBKH2fkSRBKH8iSHJRHPSRBKIH4PSCJBKFn1JhYRIJQqSBkdtJRscSQLgBJRliAwONcAJKM9MkyAFBJRm/AwM2AoJKMUgNCFIJKM7A8BOgRKMmVJg8MJRqSBAwMGJRqSBzVpJRu5kmTpMhJRmz8mQ2emJRqABm3cyK/BJRWPSQUauRKMSQVmpFbJRdSpMLOIODX4JKJpVJkYgB+gCBJRQDBEAQCDJREpkmNEAQCDJQ8lkmQEYpKJ0mScAIjEJRGUyVEcAJKNSQLgBJRqSBiVIJRqSBkTgBJRoDBAIJKNSQOJAoJKN0mRAoJKOyQFCSp4CikAA="))
transparent : 1,
buffer : require("heatshrink").decompress(atob("kmSpIC/AWMyoQIFsmECJFJhMmA4QXByVICIwODAQ4RRFIQGD5JVLkIGDzJqMyAGDph8MiRKGyApEAoZKFyYIDQwMkSQNkQZABBhIIOOJRuEL5gRIAUKACVQMhmUSNYNDQYJTBBwYFByGTkOE5FJWYNMknCAQKYCiaSCpmGochDoSYBhMwTAZrChILBhmEzKPBF4ImBTAREBDoMmEwJVDoYjBycJFgWEJQRuLJQ1kmQCCjJlCBYbjCagaDBwyDBmBuBF4TjJAUQKINBChCDQxZBcZIIQF4NIgEAgKSDiQmEVQKMBoARBAAMCSQLLBVoxqKL4gaCChVCNwoRKOIo4CJIgABBoSMHpIRFgDdJOIJUBCAUJRgJuEAQb+DIIgRIAX4C/ASOQA"))
}
Graphics.prototype.setFontAntonioMedium = function(scale) {
// Font to use:
// <link href="https://fonts.googleapis.com/css2?family=Antonio:wght@400;700&display=swap" rel="stylesheet">
Graphics.prototype.setFontAntonioSmall = function(scale) {
// Actual height 18 (17 - 0)
g.setFontCustom(atob("AAAAAAAAAAAAAAAf4Mf/sYAMAAAAAAfgAfAAAAAfgAeAAAAAAiAAj8H/4fyEAv8f/gfiAAgAAAAD54H98eOPHn8Hz8AhwAAAP8Af+AYGAYCAf+AP8MAB8AHwA+AD4AfAAcf4A/8AwMAwMA/8Af4AAAAAwGD8f/8f8MY/cfz4PD8AHMAAAfAAeAAAAAAAAP/+f//YADAAAQABYADf//P/+AAAAAANAAPAAfwAfgAPAANAAAAAAEAAEAA/AA/AAEAAEAAAAAAZAAfAAYAAAAIAAIAAIAAIAAAAAAAAAMAAMAAAAAAAAEAB8Af4H+AfwAcAAAAAP/4f/8YAMf/8f/8H/wAAAAAAEAAMAAf/8f/8f/8AAAAAAAAAHgcfh8cH8YPMf8MPwEAAAAAAOB4eB8YYMY4Mf/8Pn4AAAAAgAHwA/wPwwf/8f/8AAwAAgAAAf54f58ZwMZwMY/8Qf4AAAAAAP/4f/8YYMYYMff8HP4AAAQAAYAAYD8Y/8f/AfgAcAAAAAAAAPv4f/8YYMY8Mf/8Pn4AAAAAAP94f98YGMcMMf/8H/wAAAAAABgwBgwAAAAAABgABg/Bg8AAAAEAAOAAbAA7gAxgBwwASAAbAAbAAbAAbAASAAAAAxwA5gAbAAPAAOAAAAPAAfHcYPcf8Af4AHgAAAAAAAB/gH/wOA4Y/MZ/sbAsbBkb/MZ/sOBsH/AAAAAAMAP8f/4fwwf4wH/8AH8AAMAAAf/8f/8YYMYYMf/8P/4ADgAAAP/4f/8YAMYAMfj8Pj4AAAAAAf/8f/8YAMYAMf/8P/4B/AAAAf/8f/8YMMYMMYIMAAAAAAf/8f/8YYAYYAYYAAAAAAAP/4f/8YAMYIMfP8Pv8AAAAAAf/8f/8AMAAMAf/8f/8f/8AAAAAAf/8f/8AAAAAAAD4AB8AAMf/8f/4f/gAAAAAAf/8f/8A+AD/gfj4eA8QAEAAAf/8f/8AAMAAMAAMAAAf/8f/8f8AB/wAB8AP8P/Af/8f/8AAAAAAf/8f/8HwAA+AAPwf/8f/8AAAAAAP/4f/8YAMYAMf/8P/4AAAAAAf/8f/8YGAYGAf8AP8ABAAAAAf/w//4wAYwAc//+f/yAAAAAAf/8f/8YMAYMAf/8f/8DA8CAAPj4fz8Y4MeeMfP8HD4YAAYAAf/8f/8YAAQAAAAAf/4f/8AAMAAMf/8f/4AAAYAAf4AP/4AP8AP8f/4fwAQAAYAAf8AP/8AD8D/8f8Af8AD/8AD8f/8f8AAAAQAEeB8P/4B/AP/4fA8QAEYAAfAAP4AB/8H/8fwAcAAAAMYD8Y/8f/MfwMcAMAAAf/+f//YADYADAAAAAAfAAf8AB/wAH8AAMQACYADf//f//AAAAA"), 32, atob("BAUHCAcTCAQFBQgGBAYFBggICAgICAgICAgEBQYGBggNCAgICAcHCAkECAgGCwkICAgIBwYICAwHBwYGBgY="), 18+(scale<<8)+(1<<16));
}
@ -65,46 +90,44 @@ function queueDraw() {
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = setTimeout(function() {
drawTimeout = undefined;
draw(true);
draw();
}, 60000 - (Date.now() % 60000));
}
function draw(queue){
function draw(){
// First handle alarm to show this correctly afterwards
handleAlarm();
// Next draw the watch face
g.reset();
g.clearRect(0, 24, g.getWidth(), g.getHeight());
// Draw background image
g.drawImage(backgroundImage, 0, 24);
// Draw raster
// g.drawLine(112, 100, 112, 165);
for(var x=1; x<7; x++){
g.drawLine(110+x*10, 100, 110+x*10, 160);
}
for(var y=0; y<6; y++){
g.drawLine(113, 105+y*10, 175, 105+y*10);
}
// Draw symbol
var bat = E.getBattery();
var timeInMinutes = getCurrentTimeInMinutes();
var iconImg =
alarm >= 0 ? iconAlarm :
isAlarmEnabled() ? iconAlarm :
Bangle.isCharging() ? iconCharging :
bat < 30 ? iconNoBattery :
Bangle.isGPSOn() ? iconGps :
Bangle.isCompassOn() ? iconCompass :
iconPlanet;
g.drawImage(iconImg, 120, 107);
Bangle.isGPSOn() ? iconSatellite :
timeInMinutes % 4 == 0 ? iconSaturn :
timeInMinutes % 4 == 1 ? iconMars :
timeInMinutes % 4 == 2 ? iconMoon :
iconEarth;
g.drawImage(iconImg, 115, 115);
// Alarm within symbol
g.setFontAntonioMedium();
if(alarm > 0){
g.setFontAlign(0,0,0);
g.drawString(alarm, 120+25, 107+25);
g.setFontAlign(-1,-1,0);
g.setFontAlign(0,0,0);
g.setFontAntonioSmall();
g.drawString(iconImg.text, 115+25, 102);
if(isAlarmEnabled() > 0){
g.drawString(getAlarmMinutes(), 115+25, 115+25);
}
// Write time
@ -116,31 +139,29 @@ function draw(queue){
// Write date
g.setFontAlign(-1,-1, 0);
g.setFontAntonioMedium();
g.setFontAntonioSmall();
var dayName = locale.dow(currentDate, true).toUpperCase();
var day = currentDate.getDate();
g.drawString(day, 100, 35);
g.drawString(dayName, 100, 55);
// HRM
g.setFontAlign(-1,-1,0);
g.drawString("HRM:", 28, 102);
g.drawString(hrmValue, 63, 102);
// Draw battery
g.drawString("BAT:", 25, 98);
g.drawString(bat+ "%", 62, 98);
// Draw steps
var steps = getSteps();
g.drawString("STEP:", 28, 122);
g.drawString(steps, 63, 122);
g.drawString("STEP:", 25, 121);
g.drawString(steps, 62, 121);
// Draw battery
g.drawString("BAT:", 28, 142);
g.drawString(bat+ "%", 63, 142);
// Temperature
g.setFontAlign(-1,-1,0);
g.drawString("TEMP:", 25, 144);
g.drawString(Math.floor(E.getTemperature()) + "C", 62, 144);
// Queue draw in one minute
if(queue){
queueDraw();
}
queueDraw();
}
/*
@ -161,49 +182,45 @@ function stepsWidget() {
return undefined;
}
/*
* HRM
*/
Bangle.on('HRM',function(hrm) {
hrmValue = hrm.bpm;
});
/*
* Handle alarm
*/
var alarmTimeout;
function queueAlarm() {
if (alarmTimeout) clearTimeout(alarmTimeout);
alarmTimeout = setTimeout(function() {
alarmTimeout = undefined;
handleAlarm();
}, 60000 - (Date.now() % 60000));
function getCurrentTimeInMinutes(){
return Math.floor(Date.now() / (1000*60));
}
function isAlarmEnabled(){
return settings.alarm > 0;
}
function getAlarmMinutes(){
var currentTime = getCurrentTimeInMinutes();
return settings.alarm - currentTime;
}
function handleAlarm(){
if(!isAlarmEnabled()){
return;
}
// Check each minute
if(alarm > 0){
alarm--;
queueAlarm();
}
if(getAlarmMinutes() > 0){
return;
}
// After n minutes, inform the user
if(alarm == 0){
alarm = -1;
// Alarm
var t = 300;
Bangle.buzz(t, 1)
.then(() => new Promise(resolve => setTimeout(resolve, t)))
.then(() => Bangle.buzz(t, 1))
.then(() => new Promise(resolve => setTimeout(resolve, t)))
.then(() => Bangle.buzz(t, 1))
.then(() => new Promise(resolve => setTimeout(resolve, t)))
.then(() => Bangle.buzz(t, 1));
var t = 300;
Bangle.buzz(t, 1)
.then(() => new Promise(resolve => setTimeout(resolve, t)))
.then(() => Bangle.buzz(t, 1))
.then(() => new Promise(resolve => setTimeout(resolve, t)))
.then(() => Bangle.buzz(t, 1))
.then(() => new Promise(resolve => setTimeout(resolve, t)))
.then(() => Bangle.buzz(t, 1));
}
// Update UI
draw(false);
// Update alarm state to disabled
settings.alarm = -1;
Storage.writeJSON(filename, settings);
}
@ -213,19 +230,27 @@ function handleAlarm(){
Bangle.on('swipe',function(dir) {
// Increase alarm
if(dir == -1){
alarm = alarm < 0 ? 0 : alarm;
alarm += 5;
queueAlarm();
if(isAlarmEnabled()){
settings.alarm += 5;
} else {
settings.alarm = getCurrentTimeInMinutes() + 5;
}
}
// Decrease alarm
if(dir == +1){
alarm -= 5;
alarm = alarm <= 0 ? -1 : alarm;
if(isAlarmEnabled() && (settings.alarm-5 > getCurrentTimeInMinutes())){
settings.alarm -= 5;
} else {
settings.alarm = -1;
}
}
// Update UI
draw(false);
draw();
// Update alarm state
Storage.writeJSON(filename, settings);
});
@ -234,7 +259,7 @@ Bangle.on('swipe',function(dir) {
*/
Bangle.on('lcdPower',on=>{
if (on) {
draw(true); // draw immediately, queue redraw
draw(); // draw immediately, queue redraw
} else { // stop draw timer
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = undefined;
@ -249,7 +274,7 @@ Bangle.loadWidgets();
// Clear the screen once, at startup and draw clock
g.setTheme({bg:"#000",fg:"#fff",dark:true}).clear();
draw(true);
draw();
// After drawing the watch face, we can draw the widgets
Bangle.drawWidgets();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -9,3 +9,4 @@
0.07: Improve handling of non-ASCII characters (fix #469)
0.08: Added Mavigation units and en_NAV
0.09: Added New Zealand en_NZ
0.10: Apply 12hour setting to time

View File

@ -146,7 +146,7 @@ exports = { name : "en_GB", currencySym:"£",
"%-m": "d.getMonth()+1",
"%d": "('0'+d.getDate()).slice(-2)",
"%-d": "d.getDate()",
"%HH": "('0'+d.getHours()).slice(-2)",
"%HH": "('0'+getHours(d)).slice(-2)",
"%MM": "('0'+d.getMinutes()).slice(-2)",
"%SS": "('0'+d.getSeconds()).slice(-2)",
"%A": "day.split(',')[d.getDay()]",
@ -178,6 +178,13 @@ var month = ${js(locale.month + ',' + locale.abmonth)};
function round(n) {
return n < 10 ? Math.round(n * 10) / 10 : Math.round(n);
}
var is12;
function getHours(d) {
var h = d.getHours();
if (is12===undefined) is12 = (require('Storage').readJSON('setting.json',1)||{})["12hour"];
if (!is12) return h;
return (h%12==0) ? 12 : h%12;
}
exports = {
name: ${js(locale.lang)},
currencySym: ${js(locale.currency_symbol)},

View File

@ -0,0 +1,2 @@
0.01: Initial Release

View File

@ -0,0 +1,9 @@
# Mandlebrot Clock
A simple clock themed on the mandlebrot set.
Written by [James Milner](https://www.github.com/jameslmilner)
![](app.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("mEwxH+vdvwMzq8CrGCwVewNRluCxAHBAAOsxAAB1gAD1oBB2fWAAPO1mBGZIvCrECq4bBglYmglBGgIxBFQItDFQQsC2es6/XF4OrwOsqwvIt4vBxFdgder0uwUoLQRXE1oqB1nQ1nW2RbCA4PW6HP52rF5d7KoKNBmcDIYIzBrBaB1vPFAOz2RVB1ml54qB1fQFwQvB5+kwSQJWIQoExAFBRYaBB0pVCQYRiB0wDC1erFoPO5ul02sF5QnBAAYFBwbkF0ul1eIAQOqOwLlBIwL7BGIOkAANvxErF49dF4dYGoJfBLoIwD6AfBEgJbBwIEBqwGBqw4BU4Osvd1uteSBDiEFIKLDdQey6ytBEQNWAQOBwMyKYcrAAILBWIRgIEofQ1mJAoS6B2ez665B5+rLQMrq1WWBAACHwJNBCA5WCbgPQ1pYBFYOl6CMB6vP0prB1l6kguLAAWBJgKPHRIOz03Q6+z2QsBVgOrdgOlvaKBLhhiG6AUGJoJOB6GmMgPPcQLHCdAgtRSYgHFrDKBXYWBLQOk0qlBcgNWBYJdSAAcCC4qOBAILzE62l0mCIYVWvQuVAAMsAokzR4WJ1us2fW6K/BMwMrgErAQIAcq+sGAOtF4Os1vXF4I5B1mlFzSQELwU0xGtAIOzF4LCBBgOrLbYwDwUuwVeYIiRB6ukwLBDF7QwCwVYKgJgBGAOt6PW54vB1i7cq2rVoNYFQJfCMAXW62rM4QWDGoPXMwNWAgIMDAw2B67XDlezwUAgYsCwWJLwK9B1YnBwLSEAwIeCBgXXBoQGDHgMr64vEDIOIwNXSAJfBF4RgB1elfQK+GqweCGIIvBCgJUCF4QHBF4rqBRIS/BxKOC1qPB54wBF4pSDE4IjCcAQ6BGYIPCNYYYCl1SKYI0BMwIvBDoIvBPgR1EDgdWKAINDFwIECFoIABbItRulYMYhfCF4Y8BCoYbBAANWEYJfCZALuCIgi/GveeRoIuBXgOt1uy6HV5+kF4olBAAIeBGIIDCAAILCRQYMCNgWs0uqEQOs2fQ6+y63R0vJ1d7q+IUwgAXNoOl5xeBGAOrdYPW6A5BHQWteAovXwWq569BVoWl0ur0g8BVAMrq2lU4gAVq2m1gvC1gwBSAOrLgSiECgIvZq+CKwPWL4IvBXoPQ0uBXQxiBLzCHCW4ItBxGt2fXMAN71iJGYK8r1jqBF4PXL4QvB62r1a+BF4yXBFytWxGB0us6/XdoWzF4TKBwKPGH4IwULgIoB55eB2YGCXoPQ5xeBq+BvUkOolXGAMBXaOCruCwXQ2es1ovC0vP0ulKoOmwWsSgI2BwV70rKBHQIuORgWkwWl2QvBAAXX1YJBwOrAQOAvYxBHoN65HOBQIIBqyeGFgZEBwJ2BKgIqC1ogC2XW0osB1fQ62k5+qMgJoBC4PQfgLYBEYIABNoNWljjCHgNeBgWr63W2QvBxOJBIWr54uCYgL0BLAIsCBIIKB1T+BVwN8WAJcBNQIABIgQGB1fX2RdBXoOJFQWzSIOz1uzAoIwBFgXX2ZHBOIRDCWAOBRgQtC53P1OB0wlBMgQuBdwQAF1oxBEwI7B1p0CBgIIBAAPP0mBcgNWBYOkBYbfB6wtCxCaFGYQKBAoQvBOQIACHoey2ey6D2D0uC0yIBLIILB0pJBEIU6wU0FQbEBF4hnFA4ZlBNoRhCGAJYBHYSKD1eyEYJfBrxfCAwNeAILVBwZZExIABGATNCGARvBCoIMBFwJzDAIderFYwWJsgyBCoI1BAYIABF4QeBL4IvDOIIvDL4PPBYIuCKQQRBEAWsrE0AocQAQJpBGgRNCIQIECCQQzD6Gr0qMBbwYADJ4ZUBl1YBAVelwpBNIQDBFIImCl2CagIVBAATkC5/WFwhLFFoMtwM0E4MtltevggBgcDwITCrEzxEulz5CDgNkMIer6GyLogsCwWmI4MzrFXGAMEA=="))

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@ -3,3 +3,8 @@
0.03: Fixes for Bangle.js 1
0.04: Add require("messages").clearAll()
0.05: Handling of message actions (ok/clear)
0.06: New messages now go at the start (fix #898)
Answering true/false now exits the messages app if no new messages
Back now marks a message as read
Clicking top-left opens a menu which allows you to delete a message or mark unread
0.07: Added settings menu with option to choose vibrate pattern and frequency (fix #909)

View File

@ -46,7 +46,10 @@ var MESSAGES = require("Storage").readJSON("messages.json",1)||[];
if (!Array.isArray(MESSAGES)) MESSAGES=[];
var onMessagesModified = function(msg) {
// TODO: if new, show this new one
if (msg.new) Bangle.buzz();
if (msg.new) {
if (WIDGETS["messages"]) WIDGETS["messages"].buzz();
else Bangle.buzz();
}
showMessage(msg.id);
};
function saveMessages() {
@ -111,7 +114,7 @@ function showMapMessage(msg) {
msg.new = false;
saveMessages();
layout = undefined;
checkMessages();
checkMessages({clockIfNoMsg:1,clockIfAllRead:1,showMsgIfUnread:1});
});
}
@ -126,7 +129,7 @@ function showMusicMessage(msg) {
msg.new = false;
saveMessages();
layout = undefined;
checkMessages();
checkMessages({clockIfNoMsg:1,clockIfAllRead:1,showMsgIfUnread:1});
}
layout = new Layout({ type:"v", c: [
{type:"h", fillx:1, bgCol:colBg, c: [
@ -148,6 +151,22 @@ function showMusicMessage(msg) {
layout.render();
}
function showMessageSettings(msg) {
E.showMenu({"":{"title":"Message"},
"< Back" : () => showMessage(msg.id),
"Delete" : () => {
MESSAGES = MESSAGES.filter(m=>m.id!=msg.id);
saveMessages();
checkMessages({clockIfNoMsg:0,clockIfAllRead:0,showMsgIfUnread:0});
},
"Mark Unread" : () => {
msg.new = true;
saveMessages();
checkMessages({clockIfNoMsg:0,clockIfAllRead:0,showMsgIfUnread:0});
},
});
}
function showMessage(msgid) {
var msg = MESSAGES.find(m=>m.id==msgid);
if (!msg) return checkMessages(); // go home if no message found
@ -163,30 +182,30 @@ function showMessage(msgid) {
title = g.wrapString(title, w).join("\n");
}
var buttons = [
{type:"btn", src:getBackImage(), cb:()=>checkMessages(true)}, // back
msg.new?{type:"btn", src:atob("HRiBAD///8D///wj///Fj//8bj//x3z//Hvx/8/fx/j+/x+Ad/B4AL8Rh+HxwH+PHwf+cf5/+x/n/PH/P8cf+cx5/84HwAB4fgAD5/AAD/8AAD/wAAD/AAAD8A=="), cb:()=>{
{type:"btn", src:getBackImage(), cb:()=>{
msg.new = false; // read mail
saveMessages();
checkMessages();
}}:{}
checkMessages({clockIfNoMsg:1,clockIfAllRead:0,showMsgIfUnread:1});
}} // back
];
if (msg.positive) {
buttons.push({type:"btn", src:getPosImage(), cb:()=>{
msg.new = false; saveMessages();
Bangle.messageResponse(msg,true);
checkMessages();
checkMessages({clockIfNoMsg:1,clockIfAllRead:1,showMsgIfUnread:1});
}});
}
if (msg.negative) {
buttons.push({type:"btn", src:getNegImage(), cb:()=>{
console.log("Response");
msg.new = false; saveMessages();
Bangle.messageResponse(msg,true);
checkMessages();
Bangle.messageResponse(msg,false);
checkMessages({clockIfNoMsg:1,clockIfAllRead:1,showMsgIfUnread:1});
}});
}
layout = new Layout({ type:"v", c: [
{type:"h", fillx:1, bgCol:colBg, c: [
{ type:"img", src:getMessageImage(msg), pad:2 },
{ type:"btn", src:getMessageImage(msg), cb:()=>showMessageSettings(msg) },
{ type:"v", fillx:1, c: [
{type:"txt", font:fontMedium, label:msg.src||"Message", bgCol:colBg, fillx:1, pad:2 },
title?{type:"txt", font:titleFont, label:title, bgCol:colBg, fillx:1, pad:2 }:{},
@ -199,28 +218,37 @@ function showMessage(msgid) {
layout.render();
}
function checkMessages(forceShowMenu) {
/* options = {
clockIfNoMsg : bool
clockIfAllRead : bool
showMsgIfUnread : bool
}
*/
function checkMessages(options) {
options=options||{};
// If no messages, just show 'no messages' and return
if (!MESSAGES.length) {
if (forceShowMenu) return E.showPrompt("No Messages",{
if (!options.clockIfNoMsg) return E.showPrompt("No Messages",{
title:"Messages",
img:require("heatshrink").decompress(atob("kkk4UBrkc/4AC/tEqtACQkBqtUDg0VqAIGgoZFDYQIIM1sD1QAD4AIBhnqA4WrmAIBhc6BAWs8AIBhXOBAWz0AIC2YIC5wID1gkB1c6BAYFBEQPqBAYXBEQOqBAnDAIQaEnkAngaEEAPDFgo+IKA5iIOhCGIAFb7RqAIGgtUBA0VqobFgNVA")),
buttons : {"Ok":1}
}).then(() => { load() });
load();
return;
return load();
}
// we have >0 messages
var newMessages = MESSAGES.filter(m=>m.new);
// If we have a new message, show it
if (!forceShowMenu) {
var newMessages = MESSAGES.filter(m=>m.new);
if (newMessages.length)
return showMessage(newMessages[0].id);
}
if (options.showMsgIfUnread && newMessages.length)
return showMessage(newMessages[0].id);
// no new messages - go to clock?
if (options.clockIfAllRead && newMessages.length==0)
return load();
// Otherwise show a menu
E.showScroller({
h : 48,
c : Math.min(MESSAGES.length+1,3), // workaround for 2v10.219 firmware (min 3 not needed for 2v11)
c : Math.max(MESSAGES.length+1,3), // workaround for 2v10.219 firmware (min 3 not needed for 2v11)
draw : function(idx, r) {"ram"
var msg = MESSAGES[idx-1];
if (msg && msg.new) g.setBgColor(colBg);
@ -239,7 +267,7 @@ function checkMessages(forceShowMenu) {
x += 50;
}
var m = msg.title+"\n"+msg.body;
if (msg.src) g.setFontAlign(1,-1).setFont("6x8").drawString(msg.src, r.x+r.w-2, r.y+2);
if (msg.src) g.setFontAlign(1,1).setFont("6x8").drawString(msg.src, r.x+r.w-2, r.y+r.h-2);
if (title) g.setFontAlign(-1,-1).setFont(fontBig).drawString(title, x,r.y+2);
if (body) {
g.setFontAlign(-1,-1).setFont("6x8");
@ -261,4 +289,6 @@ function checkMessages(forceShowMenu) {
g.clear();
Bangle.loadWidgets();
Bangle.drawWidgets();
checkMessages(true); // force showing a menu
setTimeout(() => {
checkMessages({clockIfNoMsg:0,clockIfAllRead:0,showMsgIfUnread:1});
},10); // if checkMessages wants to 'load', do that

View File

@ -17,7 +17,10 @@ exports.pushMessage = function(event) {
mIdx=-1;
} else { // add/modify
if (event.t=="add") event.new=true; // new message
if (mIdx<0) mIdx=messages.push(event)-1;
if (mIdx<0) {
mIdx=0;
messages.unshift(event); // add new messages to the beginning
}
else Object.assign(messages[mIdx], event);
}
require("Storage").writeJSON("messages.json",messages);

35
apps/messages/settings.js Normal file
View File

@ -0,0 +1,35 @@
(function(back) {
function settings() {
let settings = require('Storage').readJSON("messages.settings.json", true) || {};
if (settings.vibrate===undefined) settings.vibrate=".";
if (settings.repeat===undefined) settings.repeat=4;
return settings;
}
function updateSetting(setting, value) {
let settings = require('Storage').readJSON("messages.settings.json", true) || {};
settings[setting] = value;
require('Storage').writeJSON("messages.settings.json", settings);
}
var vibPatterns = ["Off", ".", "-", "--", "-.-", "---"];
var currentVib = settings().vibrate;
var mainmenu = {
"" : { "title" : "Messages" },
"< Back" : back,
'Vibrate': {
value: Math.max(0,vibPatterns.indexOf(settings().vibrate)),
min: 0, max: vibPatterns.length,
format: v => vibPatterns[v]||"Off",
onchange: v => {
updateSetting("vibrate", vibPatterns[v]);
}
},
'Repeat': {
value: settings().repeat,
min: 2, max: 10,
format: v => v+"s",
onchange: v => updateSetting("repeat", v)
},
};
E.showMenu(mainmenu);
})

View File

@ -1,3 +1,4 @@
WIDGETS["messages"]={area:"tl",width:0,draw:function() {
if (!this.width) return;
var c = (Date.now()-this.t)/1000;
@ -5,9 +6,11 @@ WIDGETS["messages"]={area:"tl",width:0,draw:function() {
g.clearRect(this.x,this.y,this.x+this.width,this.y+23);
g.setFont("6x8:1x2").setFontAlign(0,0).drawString("MESSAGES", this.x+this.width/2, this.y+12);
//if (c<60) Bangle.setLCDPower(1); // keep LCD on for 1 minute
if (c<120 && (Date.now()-this.l)>4000) {
let settings = require('Storage').readJSON("messages.settings.json", true) || {};
if (settings.repeat===undefined) settings.repeat = 4;
if (c<120 && (Date.now()-this.l)>settings.repeat*1000) {
this.l = Date.now();
Bangle.buzz(); // buzz every 4 seconds
WIDGETS["messages"].buzz(); // buzz every 4 seconds
}
setTimeout(()=>WIDGETS["messages"].draw(), 1000);
},show:function() {
@ -21,4 +24,13 @@ WIDGETS["messages"]={area:"tl",width:0,draw:function() {
delete WIDGETS["messages"].l;
WIDGETS["messages"].width=0;
Bangle.drawWidgets();
},buzz:function() {
let v = (require('Storage').readJSON("messages.settings.json", true) || {}).vibrate || ".";
function b() {
var c = v[0];
v = v.substr(1);
if (c==".") Bangle.buzz().then(()=>setTimeout(b,100));
if (c=="-") Bangle.buzz(500).then(()=>setTimeout(b,100));
}
b();
}};

View File

@ -0,0 +1 @@
0.01: First release

41
apps/mylocation/README.md Normal file
View File

@ -0,0 +1,41 @@
# My Location
*Sets and stores GPS lat and lon of your preferred city*
* Select one of the preset Cities or setup through the GPS
* Other Apps can read this information to do calculations based on location
* When the City shows ??? it means the location has been set through the GPS
## Example Code
const LOCATION_FILE = "mylocation.json";
let location;
// requires the myLocation app
function loadLocation() {
location = require("Storage").readJSON(LOCATION_FILE,1)||{"lat":51.5072,"lon":0.1276,"location":"London"};
}
## Screenshots
### Select one of the Preset Cities
* The presets are London, Newcastle, Edinburgh, Paris, New York, Tokyo
![](screenshot_1.png)
### Or select 'Set By GPS' to start the GPS
![](screenshot_2.png)
### While the GPS is running you will see:
![](screenshot_3.png)
### When a GPS fix is received you will see:
![](screenshot_4.png)
Written by: [Hugh Barney](https://github.com/hughbarney) For support and discussion please post in the [Bangle JS Forum](http://forum.espruino.com/microcosms/1424/)

View File

@ -0,0 +1,75 @@
Bangle.loadWidgets();
Bangle.drawWidgets();
const SETTINGS_FILE = "mylocation.json";
let settings;
// initialize with default settings...
let s = {
'lat': 51.5072,
'lon': 0.1276,
'location': "London"
}
function loadSettings() {
settings = require('Storage').readJSON(SETTINGS_FILE, 1) || s;
}
function save() {
settings = s
require('Storage').write(SETTINGS_FILE, settings)
}
const locations = ["London", "Newcastle", "Edinburgh", "Paris", "New York", "Tokyo","???"];
const lats = [51.5072 ,54.9783 ,55.9533 ,48.8566 ,40.7128 ,35.6762, 0.0];
const lons = [-0.1276 ,-1.6178 ,-3.1883 ,2.3522 , -74.0060 ,139.6503, 0.0];
function setFromGPS() {
Bangle.on('GPS', (gps) => {
//console.log(".");
if (gps.fix === 0) return;
//console.log("fix from GPS");
s = {'lat': gps.lat, 'lon': gps.lon, 'location': '???' }
Bangle.buzz(1500); // buzz on first position
Bangle.setGPSPower(0);
save();
Bangle.setUI("updown", ()=>{ load() });
E.showPrompt("Location has been saved from the GPS fix",{
title:"Location Saved",
buttons : {"OK":1}
}).then(function(v) {
load(); // load default clock
});
});
Bangle.setGPSPower(1);
E.showMessage("Waiting for GPS fix. Place watch in the open. Could take 10 minutes. Long press to abort", "GPS Running");
Bangle.setUI("updown", undefined);
}
function showMainMenu() {
console.log("showMainMenu");
const mainmenu = {
'': { 'title': 'My Location' },
'<Back': ()=>{ load(); },
'City': {
value: 0 | locations.indexOf(s.location),
min: 0, max: 6,
format: v => locations[v],
onchange: v => {
if (v != 6) {
s.location = locations[v];
s.lat = lats[v];
s.lon = lons[v];
save();
}
}
},
'Set From GPS': ()=>{ setFromGPS(); }
}
return E.showMenu(mainmenu);
}
loadSettings();
showMainMenu();

View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("mEw4UA///t/7j/P3/vB4cBqtVoAbHBQIABBQ0FBYdQBYsVBYdUERIkGHIQADHoguEGAwuEGAwKFBZg8DHQw8EBYNf/1Vq3/8oLDIwNf/Wpv//0oLG9Wq3/qBYJUCBYuqBaBqBBYW+BepHEBbybCBYP+BYSnErYLDyoLFAANq/r8Ga5T7MBZZUBAAhSCfhA6DBZhIGBQg8FHQg8GHQgwGFwowFBQwwDFwwLMlS7Bqta1AKEn2q1K1C1WgBYf/1WqBYIDB1QKCgYLC0taBYoXB/QICBY0//7vBAAQ8EEgIABCwwME9QVEA"))

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -7,3 +7,4 @@
0.07: Move to 96px tiles - less files (64 -> 25) and speed up rendering
0.08: Update for drag event refactor
0.09: Use current theme cols when drawing GPS info
0.10: Improve scale factor calculation to fix scaling issues (#984)

View File

@ -63,10 +63,17 @@ TODO:
/* Can see possible tiles on http://leaflet-extras.github.io/leaflet-providers/preview/
However some don't allow cross-origin use */
var TILELAYER = 'https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png'; // simple, high contrast
//var TILELAYER = 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
var PREVIEWTILELAYER = 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
//var TILELAYER = 'http://a.tile.stamen.com/toner/{z}/{x}/{y}.png'; // black and white
var map = L.map('map').locate({setView: true, maxZoom: 16});
var tileLayer = L.tileLayer(TILELAYER, {
// Tiles used for Bangle.js itself
var bangleTileLayer = L.tileLayer(TILELAYER, {
maxZoom: 18,
attribution: 'Map data &copy; <a href="http://openstreetmap.org/copyright">OpenStreetMap</a> contributors</a>'
});
// Tiles used for the may the user sees (faster)
var previewTileLayer = L.tileLayer(PREVIEWTILELAYER, {
maxZoom: 18,
attribution: 'Map data &copy; <a href="http://openstreetmap.org/copyright">OpenStreetMap</a> contributors</a>'
});
@ -83,7 +90,7 @@ TODO:
}
var mapFiles = [];
tileLayer.addTo(map);
previewTileLayer.addTo(map);
function tilesLoaded(ctx, width, height) {
var options = {
@ -122,16 +129,35 @@ TODO:
}
document.getElementById("getmap").addEventListener("click", function() {
var bounds = map.getBounds();
var zoom = map.getZoom();
var centerlatlon = bounds.getCenter();
var center = map.project(centerlatlon, zoom).divideBy(256);
var centerlatlon = map.getBounds().getCenter();
var center = map.project(centerlatlon, zoom).divideBy(OSMTILESIZE);
var ox = Math.round((center.x - Math.floor(center.x)) * OSMTILESIZE);
var oy = Math.round((center.y - Math.floor(center.y)) * OSMTILESIZE);
center = center.floor();
center = center.floor(); // make sure we're in the middle of a tile
// JS version of Bangle.js's projection
function bproject(lat, lon) {
const degToRad = Math.PI / 180; // degree to radian conversion
const latMax = 85.0511287798; // clip latitude to sane values
const R = 6378137; // earth radius in m
if (lat > latMax) lat=latMax;
if (lat < -latMax) lat=-latMax;
var s = Math.sin(lat * degToRad);
return new L.Point(
(R * lon * degToRad),
(R * Math.log((1 + s) / (1 - s)) / 2)
);
}
// Work out scale factors (how much from Bangle.project does one pixel equate to?)
var pc = map.unproject(center.multiplyBy(OSMTILESIZE), zoom);
var pd = map.unproject(center.multiplyBy(OSMTILESIZE).add({x:1,y:0}), zoom);
var bc = bproject(pc.lat, pc.lng)
var bd = bproject(pd.lat, pd.lng)
var scale = bc.distanceTo(bd);
var tileGetters = [];
// Render everything to a canvas - 512 x 512 px
// Render everything to a canvas...
var canvas = document.getElementById("maptiles");
canvas.style.display="";
var ctx = canvas.getContext('2d');
@ -150,7 +176,8 @@ TODO:
resolve();
};
}));
img.src = tileLayer.getTileUrl(coords);
bangleTileLayer._tileZoom = previewTileLayer._tileZoom;
img.src = bangleTileLayer.getTileUrl(coords);
})(i,j);
}
}
@ -163,7 +190,7 @@ TODO:
imgx : canvas.width,
imgy : canvas.height,
tilesize : TILESIZE,
scale : 10000*Math.pow(2,16-zoom), // FIXME - this is probably wrong
scale : scale, // how much of Bangle.project(latlon) does one pixel equate to?
lat : centerlatlon.lat,
lon : centerlatlon.lng
})});

View File

@ -34,8 +34,8 @@ exports.draw = function() {
var cx = g.getWidth()/2;
var cy = g.getHeight()/2;
var p = Bangle.project({lat:m.lat,lon:m.lon});
var ix = (p.x-map.center.x)*4096/map.scale + (map.imgx/2) - cx;
var iy = (map.center.y-p.y)*4096/map.scale + (map.imgy/2) - cy;
var ix = (p.x-map.center.x)/map.scale + (map.imgx/2) - cx;
var iy = (map.center.y-p.y)/map.scale + (map.imgy/2) - cy;
//console.log(ix,iy);
var tx = 0|(ix/map.tilesize);
var ty = 0|(iy/map.tilesize);
@ -57,8 +57,8 @@ exports.latLonToXY = function(lat, lon) {
var cx = g.getWidth()/2;
var cy = g.getHeight()/2;
return {
x : (q.x-p.x)*4096/map.scale + cx,
y : cy - (q.y-p.y)*4096/map.scale
x : (q.x-p.x)/map.scale + cx,
y : cy - (q.y-p.y)/map.scale
};
};
@ -66,6 +66,6 @@ exports.latLonToXY = function(lat, lon) {
exports.scroll = function(x,y) {
var a = Bangle.project({lat:this.lat,lon:this.lon});
var b = Bangle.project({lat:this.lat+1,lon:this.lon+1});
this.lon += x * this.map.scale / ((a.x-b.x) * 4096);
this.lat -= y * this.map.scale / ((a.y-b.y) * 4096);
this.lon += x * this.map.scale / (a.x-b.x);
this.lat -= y * this.map.scale / (a.y-b.y);
};

Some files were not shown because too many files have changed in this diff Show More