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
master
t0m1o1 2021-12-05 17:11:14 +00:00
parent b51c842297
commit 69a54194a9
301 changed files with 23270 additions and 950 deletions

View File

@ -1,2 +1,4 @@
apps/animclk/V29.LBM.js
apps/banglerun/rollup.config.js
apps/schoolCalendar/fullcalendar/main.js
apps/authentiwatch/qr_packed.js

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)

431
apps.json

File diff suppressed because it is too large Load Diff

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1 +1,5 @@
0.01: New App!
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());

View File

@ -12,7 +12,7 @@
/* TODO: Call handling, fitness */
var HANDLERS = {
// {t:"notify",id:int, src,title,subject,body,sender,tel:string} add
"notify" : function() { event.t="add";require("messages").pushMessage(event); },
"notify" : function() { Object.assign(event,{t:"add",positive:true, negative:true});require("messages").pushMessage(event); },
// {t:"notify~",id:int, title:string} // modified
"notify~" : function() { event.t="modify";require("messages").pushMessage(event); },
// {t:"notify-",id:int} // remove
@ -33,7 +33,16 @@
// {t:"musicinfo", artist,album,track,dur,c(track count),n(track num}
"musicinfo" : function() {
require("messages").pushMessage(Object.assign(event, {t:"modify",id:"music",title:"Music"}));
}
},
// {"t":"call","cmd":"incoming/end","name":"Bob","number":"12421312"})
"call" : function() {
Object.assign(event, {
t:event.cmd=="incoming"?"add":"remove",
id:"call", src:"Phone",
positive:true, negative:true,
title:event.name||"Call", body:"Incoming call\n"+event.number});
require("messages").pushMessage(event);
},
};
var h = HANDLERS[event.t];
if (h) h(); else console.log("GB Unknown",event);
@ -42,6 +51,7 @@
// Battery monitor
function sendBattery() { gbSend({ t: "status", bat: E.getBattery() }); }
NRF.on("connect", () => setTimeout(sendBattery, 2000));
NRF.on("disconnect", () => require("messages").clearAll()); // remove all messages on disconnect
setInterval(sendBattery, 10*60*1000);
// Health tracking
Bangle.on('health', health=>{
@ -50,6 +60,12 @@
// Music control
Bangle.musicControl = cmd => {
// play/pause/next/previous/volumeup/volumedown
gbSend({ t: "music", m:cmd });
}
gbSend({ t: "music", n:cmd });
};
// Message response
Bangle.messageResponse = (msg,response) => {
if (msg.id=="call") return gbSend({ t: "call", n:response?"ACCEPT":"REJECT" });
if (isFinite(msg.id)) return gbSend({ t: "notify", n:response?"OPEN":"DISMISS" });
// error/warn here?
};
})();

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

@ -6,3 +6,4 @@
0.06: Improve accuracy
0.07: Update to use Bangle.setUI instead of setWatch
0.08: Use theme colors, Layout library
0.09: Fix time/date disappearing after fullscreen notification

View File

@ -24,7 +24,7 @@ function renderBar(l) {
return;
}
const width = this.fraction*l.w;
g.fillRect(l.x, l.y, width-1, l.y+l.height-1);
g.fillRect(l.x, l.y, l.x+width-1, l.y+l.height-1);
}
const Layout = require("Layout");
@ -78,7 +78,7 @@ function dateText(date) {
return `${dayName} ${dayMonth}`;
}
draw = function draw() {
draw = function draw(force) {
if (!Bangle.isLCDOn()) {return;} // no drawing, also no new update scheduled
const date = new Date();
layout.time.label = timeText(date);
@ -86,6 +86,10 @@ draw = function draw() {
layout.date.label = dateText(date);
const SECONDS_PER_MINUTE = 60;
layout.bar.fraction = date.getSeconds()/SECONDS_PER_MINUTE;
if (force) {
Bangle.drawWidgets();
layout.forgetLazyState();
}
layout.render();
// schedule update at start of next second
const millis = date.getMilliseconds();
@ -96,7 +100,7 @@ draw = function draw() {
Bangle.setUI("clock");
Bangle.on("lcdPower", function(on) {
if (on) {
draw();
draw(true);
}
});
g.reset().clear();

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@ -1,3 +1,4 @@
0.01: start of development
0.02: first running version for BangleJs2
0.03: corrected icon, added screen shot, extended description
0.04: corrected format of background image (raw binary)

View File

@ -12,7 +12,6 @@
require("Font7x11Numeric7Seg").add(Graphics);
require("Font5x7Numeric7Seg").add(Graphics);
/* constants and definitions */
/* Bangle 2: 176 x 176 */
@ -63,7 +62,7 @@ const V2_BAT_SIZE_Y = 2;
const V2_SCREEN_SIZE_X = 176;
const V2_SCREEN_SIZE_Y = 176;
const V2_BACKGROUND_IMAGE = "Background176_center.png";
const V2_BACKGROUND_IMAGE = "binwatch.bg176.img";
const V2_BG_COLOR = 0;
const V2_FG_COLOR = 1;
@ -91,7 +90,7 @@ const V1_BAT_SIZE_X = 3;
const V1_BAT_SIZE_Y = 5;
const V1_SCREEN_SIZE_X = 240;
const V1_SCREEN_SIZE_Y = 240;
const V1_BACKGROUND_IMAGE = "Background240_center.png";
const V1_BACKGROUND_IMAGE = "binwatch.bg240.img";
const V1_BG_COLOR = 1;
const V1_FG_COLOR = 0;
@ -293,7 +292,7 @@ function setRuntimeValues(resolution) {
bat_size_x = V1_BAT_SIZE_X;
bat_size_y = V1_BAT_SIZE_Y;
setWatch(toggleDateTime, BTN1, { repeat : true, edge: "falling"});
setWatch(toggleDateTime, BTN1, { repeat : true, edge: "falling"});
} else {
x_step = V2_X_STEP;
@ -362,8 +361,7 @@ function draw() {
updateVTime();
g.clear();
g.drawImages([{image:cgimg},
{image:require("Storage").read(backgroundImage)},
// { x:bt_x, y:bt_y, rotate: 0, image:require("Storage").read("bt-icon.png")},
{image:require("Storage").read(backgroundImage)}
]);
drawBT(g, NRF.getSecurityStatus().connected);
// Bangle.drawWidgets();

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -0,0 +1,2 @@
0.01: Submitted to App Loader
0.02: Removed unneded code, added HID controlls thanks to t0m1o1 for his code :p

View File

@ -4,24 +4,96 @@ var fontsizeTime = g.getWidth()>200 ? 4 : 4;
var fontheight = 10*fontsize;
var fontheightTime = 10*fontsizeTime;
var locale = require("locale");
var marginTop = 40;
var marginTop = 25;
var flag = false;
var hrtOn = false;
var hrtStr = "Hrt: ??? bpm";
var storage = require('Storage');
const NONE_MODE = "none";
const ID_MODE = "id";
const VER_MODE = "ver";
const BATT_MODE = "batt";
const MEM_MODE = "mem";
const STEPS_MODE = "step";
const HRT_MODE = "hrt";
const NONE_FN_MODE = "no_fn";
const HRT_FN_MODE = "fn_hrt";
const settings = storage.readJSON('setting.json',1) || { HID: false };
var sendHid, next, prev, toggle, up, down, profile;
var lasty = 0;
var lastx = 0;
if (settings.HID=="kbmedia") {
profile = 'Music';
sendHid = function (code, cb) {
try {
NRF.sendHIDReport([1,code], () => {
NRF.sendHIDReport([1,0], () => {
if (cb) cb();
});
});
} catch(e) {
print(e);
}
};
next = function (cb) { sendHid(0x01, cb); };
prev = function (cb) { sendHid(0x02, cb); };
toggle = function (cb) { sendHid(0x10, cb); };
up = function (cb) {sendHid(0x40, cb); };
down = function (cb) { sendHid(0x80, cb); };
} else {
E.showPrompt("Enable HID?",{title:"HID disabled"}).then(function(enable) {
if (enable) {
settings.HID = "kbmedia";
require("Storage").write('setting.json', settings);
setTimeout(load, 1000, "hidmsicswipe.app.js");
} else setTimeout(load, 1000);
});
}
if (next) {
setWatch(function(e) {
var len = e.time - e.lastTime;
E.showMessage('lock');
setTimeout(drawApp, 1000);
Bangle.setLocked(true);
}, BTN1, { edge:"falling",repeat:true,debounce:50});
Bangle.on('drag', function(e) {
if(!e.b){
console.log(lasty);
console.log(lastx);
if(lasty > 40){
writeLine('Down', 3);
// setTimeout(drawApp, 1000);
// Bluetooth.println(JSON.stringify({t:"music", n:"volumedown"}));
down(() => {});
}
else if(lasty < -40){
writeLine('Up', 3);
// setTimeout(drawApp, 1000);
//Bluetooth.println(JSON.stringify({t:"music", n:"volumeup"}));
up(() => {});
} else if(lastx < -40){
writeLine('Prev', 3);
// setTimeout(drawApp, 1000);
// Bluetooth.println(JSON.stringify({t:"music", n:"previous"}));
prev(() => {});
} else if(lastx > 40){
writeLine('Next', 3);
// setTimeout(drawApp, 1000);
// Bluetooth.println(JSON.stringify({t:"music", n:"next"}));
next(() => {});
} else if(lastx==0 && lasty==0){
writeLine('play/pause', 3);
//setTimeout(drawApp, 1000);
// Bluetooth.println(JSON.stringify({t:"music", n:"play"}));
toggle(() => {});
}
lastx = 0;
lasty = 0;
}
else{
lastx = lastx + e.dx;
lasty = lasty + e.dy;
}
});
}
let infoMode = NONE_MODE;
let functionMode = NONE_FN_MODE;
let textCol = g.theme.dark ? "#0f0" : "#080";
@ -33,13 +105,12 @@ function drawAll(){
function updateRest(now){
writeLine(locale.dow(now),1);
writeLine(locale.date(now,1),2);
drawInfo(5);
}
function updateTime(){
if (!Bangle.isLCDOn()) return;
let now = new Date();
writeLine(locale.time(now,1),0);
writeLine(flag?" ":"_",3);
writeLine(flag?" ":"_ ",3);
flag = !flag;
if(now.getMinutes() == 0)
updateRest(now);
@ -65,142 +136,13 @@ function writeLine(str,line){
var y = marginTop+(line-1)*fontheight+fontheightTime;
g.setFont("6x8",fontsize);
g.setColor(textCol).setFontAlign(-1,-1);
g.clearRect(0,y,((str.length+1)*20),y+fontheight-1);
g.clearRect(0,y,((str.length+10)*40),y+fontheightTime-1);
writeLineStart(line);
g.drawString(str,25,y);
}
}
function drawInfo(line) {
let val;
let str = "";
let col = textCol; // green
//console.log("drawInfo(), infoMode=" + infoMode + " funcMode=" + functionMode);
switch(functionMode) {
case NONE_FN_MODE:
break;
case HRT_FN_MODE:
col = g.theme.dark ? "#0ff": "#088"; // cyan
str = "HRM: " + (hrtOn ? "ON" : "OFF");
drawModeLine(line,str,col);
return;
}
switch(infoMode) {
case NONE_MODE:
col = g.theme.bg;
str = "";
break;
case HRT_MODE:
str = hrtStr;
break;
case STEPS_MODE:
str = "Steps: " + stepsWidget().getSteps();
break;
case ID_MODE:
val = NRF.getAddress().split(":");
str = "Id: " + val[4] + val[5];
break;
case VER_MODE:
str = "Fw: " + process.env.VERSION;
break;
case MEM_MODE:
val = process.memory();
str = "Memory: " + Math.round(val.usage*100/val.total) + "%";
break;
case BATT_MODE:
default:
str = "Battery: " + E.getBattery() + "%";
}
drawModeLine(line,str,col);
}
function drawModeLine(line, str, col) {
g.setColor(col);
var y = marginTop+line*fontheight;
g.fillRect(0, y, 239, y+fontheight-1);
g.setColor(g.theme.bg).setFontAlign(0, 0);
g.drawString(str, g.getWidth()/2, y+fontheight/2);
}
function changeInfoMode() {
switch(functionMode) {
case NONE_FN_MODE:
break;
case HRT_FN_MODE:
hrtOn = !hrtOn;
Bangle.buzz();
Bangle.setHRMPower(hrtOn ? 1 : 0);
if (hrtOn) infoMode = HRT_MODE;
return;
}
switch(infoMode) {
case NONE_MODE:
if (stepsWidget() !== undefined)
infoMode = hrtOn ? HRT_MODE : STEPS_MODE;
else
infoMode = VER_MODE;
break;
case HRT_MODE:
if (stepsWidget() !== undefined)
infoMode = STEPS_MODE;
else
infoMode = VER_MODE;
break;
case STEPS_MODE:
infoMode = ID_MODE;
break;
case ID_MODE:
infoMode = VER_MODE;
break;
case VER_MODE:
infoMode = BATT_MODE;
break;
case BATT_MODE:
infoMode = MEM_MODE;
break;
case MEM_MODE:
default:
infoMode = NONE_MODE;
}
}
function changeFunctionMode() {
//console.log("changeFunctionMode()");
switch(functionMode) {
case NONE_FN_MODE:
functionMode = HRT_FN_MODE;
break;
case HRT_FN_MODE:
default:
functionMode = NONE_FN_MODE;
}
//console.log(functionMode);
}
function stepsWidget() {
if (WIDGETS.activepedom !== undefined) {
return WIDGETS.activepedom;
} else if (WIDGETS.wpedom !== undefined) {
return WIDGETS.wpedom;
}
return undefined;
}
Bangle.on('HRM', function(hrm) {
if(hrm.confidence > 90){
hrtStr = "Hrt: " + hrm.bpm + " bpm";
} else {
hrtStr = "Hrt: ??? bpm";
}
});
g.clear();
Bangle.loadWidgets();
Bangle.drawWidgets();
@ -211,6 +153,5 @@ Bangle.on('lcdPower',function(on) {
var click = setInterval(updateTime, 1000);
// Show launcher when button pressed
Bangle.setUI("clockupdown", btn=>{
if (btn<0) changeInfoMode();
drawAll();
});

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

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();

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

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.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

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();

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -1 +1,2 @@
0.01: New App!
0.02: Upgraded text to images, added welcome screen and subtitles.

View File

@ -4,29 +4,48 @@
*/
// Emojis are integer pairs with the form [ image, Unicode code point ]
// Emoji images are 96px x 96px, 4bpp (https://www.espruino.com/Image+Converter)
// and adapted from Font Awesome 5
const GRIN = "sFgwkBiIATDwoaUFi4ynQZ4uuGDzlTF1wwaFyowYFy4wWiAvZgIutGCgubSKRecMCQudMCBeeMCAufMBxegMBwuhMBheiMBgujMBRekMBQvvF0qQIL0xgIF94unSA4vuR1CQGF94upSAovuR1SQEF94urSAY/PCBivQF5z/DEBQ+DEB5ePCJYOEMBgNNF8MBHpogNHwqBNF/4vsEAovOX7TviBhYgFD5Q/EEJoANEAY/OLxgAQPx5edAH4A/AH4A/AH4A/AEUQF1sBF/4v/F/4vviILJBRQANEZYLJHQIMKFpYABQhIiKC4QaMIhBHLF6AAVEhRQIF8ZuCF5B6GACYjMF9ZrOF8jAiKRgvvSEJROBo5gYEBw+IMCwfPB5BgWDxBPHCCBeVJxBgdJqIvJMCQcTCRAwRFxJ8KChQwODKwVJGBouKbZgXLDBQVLPBoZLDYxDMLxocQACLXOMBwARFxxgfLx5gfFyBgdLyIwcFyaRbFygwZFywwXFzAwVFzQwTFzgwRFzwxOFsIyKDSg";
const MEH = "sFgwkBiIATDwoaUFi4ynQZ4uuGDzlTF1wwaFyowYFy4wWiAvZgIutGCgubSKRecMCQudMCBeeMCAufMBxegMBwuhMBheiMBgujMBRekMBQvvF0qQIL0xgIF94unSA4vuR1CQGF94upSAovuR1SQEF94urSAY/PCBivQF5z/DEBQ+DEB5ePCJYOEMBgNNF8MBHpogNHwqBNF/4vsEAovOX7TviBhYgFD5Q/EEJoANEAY/OLxgAQPx5edAH4A/AH4A/AH4A/AEUQF1sBF/4v/F/4vviIvtiIv/F9qeBACDgNB5ouSECAOLFyaBMKAYvrByQvgSBS/fD4jAfXxwQMADxAQF8iQLADjeGF96QoFwxgnLw4vwSEwuIMEpeJMEouKMEZeLMEYuMMEJeNMEIuOMD5ePMD4uQMDpeRGDguTSLYuUGDIuWGC4uYGCouaGCYucGCIueGJwthGRQaUA";
const FROWN = "sFgwkBiIATDwoaUFi4ynQZ4uuGDzlTF1wwaFyowYFy4wWiAvZgIutGCgubSKRecMCQudMCBeeMCAufMBxegMBwuhMBheiMBgujMBRekMBQvvF0qQIL0xgIF94unSA4vuR1CQGF94upSAovuR1SQEF94urSAY/PCBivQF5z/DEBQ+DEB5ePCJYOEMBgNNF8MBHpogNHwqBNF/4vsEAovOX7TviBhYgFD5Q/EEJoANEAY/OLxgAQPx5edAH4A/AH4A/AH4A/AEUQF1sBF/4v/F/4vUgMRAAQZWFqwxWCgIuZGCYvSFxIcUFzYdTOZyNKSKQdCCJwuNMB5NDLzZOPIKAviCJguPJxpNEF94RLRyBONIKAvHNRQvRCKAMUJpIvOZxx9WAEbSTADReHF+CQmFxBglLxJglFxRgjLxZgjFxhghLxpghFxxgfLx5gfFyBgdLyIwcFyaRbFygwZFywwXFzAwVFzQwTFzgwRFzwxOFsIyKDSg";
const THUMBS_UP = "sFgwkBiIAaiAiBDzYAQKYZQcLyAwsF4qSpcoxgoF4xgnRwwvxSEwvvFw4vwYEwv/F/4AOiAv/R1Av/F/6+PgIv/RzwvjLxQvkFxTujLxYvjFxaOiLxgvvR1wviR3gviR3YviFxg6iF7AwVRxowhFzUAgIvuMCSObF6YucSCJedF6IudSARQIHQheeAAIgKGAYufF+CbMF/4v/WYQv/F/6yPF/6OeF9wgNL/4v/F/4vhEQIv/R/4v/F/7ueF/4v/Xx4v/F/4v/F/4v/F/4v/F7ogOF/6OSEAgHCiAvrAwQHHRz4v/F/4v/F58QF8cBE4wPDGLYvHB5aTaKwQvUMS4vYGCx8QF5AwULwgvWYiZJQIAowXDowvYGJyqRFx4bKDRQA==";
const THUMBS_DOWN = "sFgwkBiIAbiAoGEroAHLZgttMcK9RXEZgmFyZgHDZA/JFyogFDZQwHFqovXLiyQHB5wtaF6gubF/4v/F/4vwgIv/F7wgPF/6QTF/4v/F/4v/F/4v/F/4AdF/4v/YCIv/F/4v9EQIv/R/4v/F/7ueL+gFBiMQF8oiBE4wHHF/6QQF/4v/YigvugInBiAvrM5QvvM4gvqMFgvDMD0BF55gegJPKgIvEMDoeLF4pgdJ5QuGF7gjHABaQbFyRgbFygvZFyqQOEixgYF8RgMgIv/SH5gPYH6QfF8aQvMBgvjMBaQjMBYvkMBQv/SEAv/F/7APF/6QfF/4v/F/0BF8sQF/4vnF0rAJF9yOmSBAunF4xeoSAouqMAYTQA==";
const HEART = "sFgwkBiIA/AH4A/AH4AogAADC1EQC4gaQCo8BIqYwRCyxdJDJoVLMJYuMGBIVNGBQYNDI5FOO5IXODI4WWI6BgGCywYTDIYVVO6gvXSAoYTDIQVTMAgYTDIJFUMAgYUACyOXAC7XWF7YurSAYvuR1iQCF/4v/F54utAH4A/AH4A/AH4A/AGMQF1sBF/4v/F58RF9sRF/4vgYFi+BMFouCF+CQqRwYvwSFQuEMFJeFMFIuGME5eHME4uIMEpeJMEouKMEZeLMEYuMMEJeNMEIuOMD5ePMD4uQMDpeRMDouSMDZeTMDYuUMDJeVMDIuWMC5eXMC4uYMCpeZMCouaMCZebMCYucMCJedF+CQQFzxgPFz5gPF8JgMXr5gPF0RgLL0ZgLF0hgJL0pgJF0xgHL05gHF1BgFL1JgFF1QwDF1gA/AH4A/AH4AJA=";
const TX = "k8XwkBiIAYEYogLHBAUIiBNKGxooKEggvJCYYHDKxAMFAoRrOCRAsHCYqbNHQibLKAauOLBCJHQw6JMQBIJBRJDWJThK5JJJi5KbpaJKFBaKEE5ybGHRhcOACEQA";
// Emojis are pairs with the form [ Image String, Unicode code point ]
// For code points see https://unicode.org/emoji/charts/emoji-list.html
const EMOJIS = [
[ ':)', 0x1f642 ], // Slightly smiling
[ ':|', 0x1f610 ], // Neutral
[ ':(', 0x1f641 ], // Slightly frowning
[ '+1', 0x1f44d ], // Thumbs up
[ '-1', 0x1f44e ], // Thumbs down
[ '<3', 0x02764 ], // Heart
[ GRIN, 0x1f642 ], // Slightly smiling
[ MEH, 0x1f610 ], // Neutral
[ FROWN, 0x1f641 ], // Slightly frowning
[ THUMBS_UP, 0x1f44d ], // Thumbs up
[ THUMBS_DOWN, 0x1f44e ], // Thumbs down
[ HEART, 0x02764 ], // Heart
];
const EMOJI_TRANSMISSION_MILLISECONDS = 5000;
const BLINK_PERIOD_MILLISECONDS = 500;
const TRANSMIT_BUZZ_MILLISECONDS = 200;
const CYCLE_BUZZ_MILLISECONDS = 50;
const WELCOME_MESSAGE = 'Emojuino:\r\n\r\n< Swipe >\r\nto select\r\n\r\nTap\r\nto transmit';
// Non-user-configurable constants
const IMAGE_INDEX = 0;
const CODE_POINT_INDEX = 1;
const EMOJI_PX = 96;
const EMOJI_X = (g.getWidth() - EMOJI_PX) / 2;
const EMOJI_Y = (g.getHeight() - EMOJI_PX) / 2;
const TX_X = 68;
const TX_Y = 12;
const FONT_SIZE = 24;
const BTN_WATCH_OPTIONS = { repeat: true, debounce: 20, edge: "falling" };
const UNICODE_CODE_POINT_ELIDED_UUID = [ 0x49, 0x6f, 0x49, 0x44, 0x55,
0x54, 0x46, 0x2d, 0x33, 0x32 ];
// Global variables
let emojiIndex = 0;
let isToggleOn = false;
@ -72,6 +91,7 @@ function transmitEmoji(image, codePoint, duration) {
require('ble_eddystone_uid').advertise(UNICODE_CODE_POINT_ELIDED_UUID,
instance);
isTransmitting = true;
drawImage(EMOJIS[emojiIndex][IMAGE_INDEX], true);
let displayIntervalId = setInterval(toggleImage, BLINK_PERIOD_MILLISECONDS,
image);
@ -85,14 +105,14 @@ function terminateEmoji(displayIntervalId) {
NRF.setAdvertising({ });
isTransmitting = false;
clearInterval(displayIntervalId);
drawImage(EMOJIS[emojiIndex][IMAGE_INDEX]);
drawImage(EMOJIS[emojiIndex][IMAGE_INDEX], false);
}
// Toggle the display between image/off
function toggleImage(image) {
if(isToggleOn) {
drawImage(EMOJIS[emojiIndex][IMAGE_INDEX]);
drawImage(EMOJIS[emojiIndex][IMAGE_INDEX], true);
}
else {
g.clear();
@ -102,9 +122,15 @@ function toggleImage(image) {
// Draw the given emoji
function drawImage(image) {
function drawImage(image, isTx) {
g.clear();
g.drawString(image, g.getWidth() / 2, g.getHeight() / 2);
g.drawImage(require("heatshrink").decompress(atob(image)), EMOJI_X, EMOJI_Y);
if(isTx) {
g.drawImage(require("heatshrink").decompress(atob(TX)), TX_X, TX_Y);
}
else {
g.drawString("< Swipe >", g.getWidth() / 2, g.getHeight() - FONT_SIZE);
}
g.flip();
}
@ -131,15 +157,15 @@ function handleDrag(event) {
// Special function to handle display switch on
Bangle.on('lcdPower', (on) => {
if(on) {
drawImage(EMOJIS[emojiIndex][IMAGE_INDEX]);
drawImage(EMOJIS[emojiIndex][IMAGE_INDEX], false);
}
});
// On start: display the first emoji and handle drag and touch events
g.clear();
g.setFont('Vector', 80);
g.setFont('Vector', FONT_SIZE);
g.setFontAlign(0, 0);
drawImage(EMOJIS[emojiIndex][IMAGE_INDEX]);
g.drawString(WELCOME_MESSAGE, g.getWidth() / 2, g.getHeight() / 2);
Bangle.on('touch', handleTouch);
Bangle.on('drag', handleDrag);

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

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.

View File

@ -1 +1 @@
require("heatshrink").decompress(atob("mEwghC/AEkIxAABwUiAAwKBC6+AC6ERiIXDGBAXPGA8JzIAByQXKGA4XUA4eDmYAGJwQXVxEizAXPIgIXDwWZC6uIxIwCC6eIGAQX/C9i/FC5mCCw0yC5wAMC/4Xnx//ABf4C/Xzdw8zn4XkL/5f/L+oUDI6YX3AB4XeAH4AdA=="))
require("heatshrink").decompress(atob("mEw4cA///7c0AYMXlm3gf42s1yvb5xT/ABdJkmStu27YCCtMkCKOACJdm7YRCyARQyQRLBwIRDoARTgVLtu3K4tJl4RQkvpCJdbtwRBkm5CKGZCKGTCKGSsgR/R4gRHpIMBCInaCJIIBARAR/CJtPB5FLCI1KEhMSCLN//4AE/QRbI/5H/CI4PCGpwRXp4RIpZFDCIQiJAQIRWAH4AGA"))

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

@ -4,3 +4,4 @@
0.04: Setting to disable touch controls, minor bugfix
0.05: Setting to disable double/triple press control, remove touch controls setting, reduce fadeout flicker
0.06: Bangle.js 2 support
0.07: Fix "previous" button image

View File

@ -303,7 +303,7 @@ function drawControls() {
l.up.col = cc("volumeup" in tCommand);
l.down.col = cc("volumedown" in tCommand);
}
l.prev.icon = (stat==="play") ? "pause" : "prev";
l.prev.icon = (stat==="play") ? "pause" : "previous";
l.prev.col = cc("prev" in tCommand || "pause" in tCommand);
l.next.icon = (stat==="play") ? "next" : "play";
l.next.col = cc("next" in tCommand || "play" in tCommand);

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 = {

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -26,3 +26,5 @@
0.22: Ensure Bangle.setGPSPower uses 'gpsrec' as a tag
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

@ -26,6 +26,7 @@
fixToggle = !fixToggle;
WIDGETS["gpsrec"].draw();
if (hasFix) {
if (fix.time===undefined) fix.time = new Date(); // Bangle.js 2 can provide a fix before time it seems
var period = fix.time.getTime() - lastFixTime;
if (period+500 > settings.period*1000) { // round up
lastFixTime = fix.time.getTime();

Some files were not shown because too many files have changed in this diff Show More