Avatar for user141569


Member since Mar 2022 • Last active Jan 2023
  • 5 conversations

Most recent activity

  • in Bangle.js
    Avatar for user141569

    I personally like using the "event" option for one-time reminders, and I delete them after. I'm thinking that adding a delete after expiration option just like the timers have would be a good idea, and I'm willing to attempt to implement it. To avoid duplicating work, is anyone else already doing that?

  • in Bangle.js
    Avatar for user141569

    Got it. That makes perfect sense. I forgot about this post and submitted my PR anyways, but luckily I mostly complied with this. I have no changes to other apps to submit at this time, but I might in the future. I'll keep the one pull request per existing app change "rule" in mind.

    The only thing is I think some of my changelogs are aweful or nonexistent, so I'll have to take a look at that. Depending on the quality of my commit messages, those might end up getting set back to version 0.01. (That should only affect me because I don't think anyone else uses my personal app loader so it will probably only affect me, and I'll know exactly what I'll have to reinstall.)

  • in Bangle.js
    Avatar for user141569

    I have developed a few apps, and I'd like to contribute them back to the official app loader. Should I submit one pull request for each app, or a single pull request with all of them?

    Additionally, some of them are not on their first version in my own repo. Can I leave it like this, or should I reset them back to version 0.1 before sending them in?

  • in Bangle.js
    Avatar for user141569

    I haven't used StorageFiles anywhere in my own code, but maybe an app I installed used them. And yeah, my watch definitely was running 2v12 at some point, so the theory of old corruption being revealed now makes sense too.

    The odd thing is normally the firmware would detect storage corruption when it booted and would automatically reset everything.

    How long would this typically take, and is there a message during boot when this happens? I don't remember there being a message during boot and I didn't leave it on the logo for that long before attempting to reboot. Is it possible that I interrupted the process? Or is it more likely that it just didn't happen?

    Even if I did interrupt it, there was clearly corruption left behind, so the mechanism isn't perfect.

    And what would it be resetting to? Would it be completely blank and booting to the Bangle logo, or would it look like I had just taken it out of the box?

    So hopefully it's very unlikely you'll see this again...

    That's good. I called storage.eraseAll() just in case before connecting to the app loader and reloading the apps. (I used this as an opportunity to update the firmware and apps.) The watch is now back in service.

  • in Bangle.js
    Avatar for user141569

    I believe my watch is running bootloader 2v12 and firmware 2v14.

    Earlier today, my watch froze in the messages app and wouldn't respond to me trying to close it with the touch screen. I held down the button for a few seconds, and a loading box appeared. This loading box was the wrong color (black text on a white background even though I use my watch with a dark theme), and never disappeared. I eventually did a full reboot of the watch, and it stays on the light-themed Banglejs logo forever. If I run load() through the console, the loading box appears and never disappears. I noticed that manually trying to load() a file failed, so I called storage.list(). It appears that almost all of the files were deleted from my watch, with only the following remaining:

    • widlock.wid.js
    • widlock.info
    • wid_a_battery_widget.wid.js
    • wid_a_battery_widget.info
    • calendar.img
    • `ea,p $ (\"
    • !AP

    The Javascript and info files appear to be unharmed, calendar.img and `ea,p $ (" appear to be binary files. I'm not sure what is supposed to be in calendar.img, but I feel like `ea,p $ (" probably isn't supposed to be there because the name looks like a random chunk of minified code code. Interestingly, when I try to read !AP, I get undefined, even though the documentation says that this only happens when the file does not exist, and the file does show up in storage.list(). Am I misunderstanding something, or does this sound like a bug? Normally I'd just blame my own code for this and move on, but I've been running the same code on the watch for almost a month straight and a file showing up in storage.list() but not existing when I try to read it sounds like filesystem corruption to me.

    I am aware that all I should need to do to fix this is go to the app loader and reload my apps. However, before I do that I want to recreate the filesystem just in case it's corrupted. Is there any way to do that? And before I do any of that, is there any information I might be able to dig from this that would be helpful?

  • in Bangle.js
    Avatar for user141569

    In a way that's probably the best thing that can happen - the battery gets run down more quickly, the Bangle gets warmer internally and dries itself out quicker :)

    Is the heat from the CPU and backlight really that significant?

    But it's definitely worth giving it time - even if the Bangle comes back to life it doesn't mean it's 100% dry inside, so long term it's better to give it a good long time to dry out.

    I guess I shall heat lamp it more. It's just hard to be without my watch for that long.

    I'll reply in http://forum.espruino.com/conversations/­378470/#comment16640058 in a second, but if you do end up having to replace the Bangle I'm very happy to offer a discount. I don't think I should lose money replacing a water-damaged Bangle when the docs say no swimming, but I also don't want to profit from your misfortune :)

    Thanks for the offer. That sounds pretty fair to me. I'm going to keep my Bangle for now, but if it dies I'll let you know.

  • in Bangle.js
    Avatar for user141569

    So that's why I sometimes see (function(){ /* stuff */ })(); being done! That's a far better idea than using global variables with naming conventions. I'm going to use function scopes instead. Obviously with nice clean names because I can get away with them now.