To-do

Here's a to-do list in no particular order
- Ask Grok to do a code overview
- Find out why the BLE connection to the APP needs a wallet pre-load.
- Figure out how to re-compile the APP. Grok should help.
- Change the BLE code from using the RF-Star module to using the nRF52840 internal SoftDevice.
- Alter the APP to accept use of this new connection. The GATT and the service UUIDs are going to change. OR figure out how to spoof the old UUIDs?
- Add multi-currency. This will entail a bit of abstraction for the paths and PBKDF2 iterations, all the way up to completely different signing schema like Ethereum EVM chains.
- Clone some blockchain for BitLox use. Vertcoin actually seems a good candidate as the software supposedly can mine on low-end consumer machines. This will make it so can give away some coins with each device so people can play around with them.
- Related: make sure to include testnets for every coin possible.
- Find a way to use a connector between BLE and node RPC ports. The end result should be that one could run their own Bitcoin (or other coin) nodes and use that as the blockchain data source.
- Related: Dockerify the insight-wallet instances so that anyone can spin one up. Obviously this should be public domain with very complete instructions. This would be a compromise between a commercial insight instance and a pure RPC-call data source (as that could be slooooow)
- In the APP, set up a micropayment system (using crypto itself?) for subscribing to BitLox-run insight instances. This would both support the servers (they ain't free) and give people a choice. Previous owners could be grandfathered in.
- Find out what the "standard" is for BLE hardware wallet attachments. Write a translation layer or just move to it.
- New wallet based on newer bitpay code. Will have to graft the hardware BLE code on. But it seems they already have Ledger stubbed out...?
- Related to 12 - find existing wallets that are hardware signer-friendly (or curious) Stack, metamask, this Haust thing etc.
- Code the nRF52840 USB to use HID/CDC. This would enable (possibly) to use the older Chrome wallet (only on Chromebook) OR use WebUSB. Frankly, I'm not sure it's worth the bother as I do not think USB is the growth direction for the device. Also, the most I would do to support it would be some kind of pogo-pins. I really do not want to have to have an actual USB port. It's a vector for physical abuse, and is just not really what people want.
- Now that the hardware seems to be settled (at least the first 5.0 version), we need to whack out a prototype via EasyEDA. Previously I used EAGLE, but after AutoCAD bought them, it went to crap. Fusion360 is a waste of money and overly complicated. The previous boards were laid out in Altium, but I'm just not familiar, and literally nothing is being reused, so why go that way? KiCAD looked cool, but it did not click with me. Plus EasyEDA integrates nicely with JLCPCB.
- Fix the keypad routine to do multistep. This has to be blindingly fast.
- Speed up the unicode character drawing. Right now it's on the edge of acceptable (though not nearly as awful as ePaper redraw speeds). Need to implement 3.3 Read Data Bytes at Higher Speed (Read dot matrix data quickly) from GT20L16P1Y_Datasheet_EN.pdf.
- Implement the more advanced font chip, namely the GT30L24A3W, samples of which have already been obtained. First up implement a breakout board, and if the pins are settled, include it on the prototype board.
- Attempt to recompile the "old old" BitLox APP. There is no reason it should not work.
- Rejigger the screen elements positioning.
- Make the colors selectable via the APP?
- Check if weird custom fonts/characters could be stored in EEPROM. Weird stuff that no-one has font chips for.
- Find out availability/thickness/dims for custom Gorilla GlassĀ®.
- Start working out potential assembly methods. Probable: Sliding whole board+face glass into casing, then end piece levers on with a single screw fastening.
- Waterproofing / oxidizer proofing the board at the fabricator.
- Casing materials? Manufacturing method? CNC or die casting? 3D printing?
- Packaging. Flat-pack is essential. Absolute minimal footprint. Zero included info; maybe a quick intro sheet. NO BATTERIES
- Put AEM code back in.
- Walk through ADVANCED and EXPERT setup scenarios.
- Perhaps also have a QUICK setup mode?
- Bring free-form message signing back. I mean, there is NO REASON you cannot do this with the address/crypto of your choice.
- New and radical website. Maybe make it function just like a device?
- OTA updating. THIS IS THE BIG ONE (next to manufacturability). The device MUST be able to be securely updated from the APP via BLE OTA. Even if it bricks; even if it's been wiped. Plus need a way to do this without wiping the EEPROM. Luckily looks like this is the default behavior.
- Bitmap display from storage
- QSPI eeprom.
HOLY HELL this is a long list.
I'll probably think of another half-dozen before I fall asleep tonight. I guess I should actually rearrange these in a ranked or grouped manner.