meshtastic-android/TODO.md

134 wiersze
8.0 KiB
Markdown
Czysty Zwykły widok Historia

2020-01-26 23:01:59 +00:00
# High priority
2020-02-10 16:08:23 +00:00
MVP features required for first public alpha
2020-02-01 20:33:53 +00:00
2020-02-14 15:47:20 +00:00
* let user set name and shortname
2020-02-17 02:14:40 +00:00
* take video
* when we connect to radio, distances to nodes in the chat log should automatically redraw
2020-02-17 20:55:48 +00:00
* show pointer arrow on the outside of the user icons, always pointing towoards them
2020-02-14 12:41:20 +00:00
* stop scan when we start the service
* set the radio by using the service
* startforegroundservice only if we have a valid radio
2020-02-14 03:02:40 +00:00
* if no radio is selected, launch app on the radio select screen
* let user send texts
2020-02-14 03:54:05 +00:00
* when we select a new radio, restart the service
2020-02-14 03:02:40 +00:00
* show bt scan progress centered and towards the bottom of the screen
* get rid of green bar at top
* change titlebar based off which screen we are showing
* fix app icon in title bar
2020-02-14 03:54:05 +00:00
* treat macaddrs as the unique id, not the app layer user id
* on onStop somehow stop the BT scan (to prevent burning battery)
2020-02-14 03:02:40 +00:00
* add alphatest screen at boot
* have the foreground service's notification show a summary of network status, add (individually maskable) notifications for received texts or new positions
2020-02-13 17:25:39 +00:00
* test bt boot behavior
* fix BT device scanning - make a setup screen
* when a text arrives, move that node info card to the bottom on the window - put the text to the left of the card. with a small arrow/distance/shortname
* let the user type texts somewhere
2020-02-11 20:06:00 +00:00
* include a background behind our cloud graphics, so redraws work properly
* show direction and distance on the nodeinfo cards
* use this for preferences? https://developer.android.com/guide/topics/ui/settings/
* do setOwner every time we connect to the radio, use our settings, radio should ignore if unchanged
* send location data for devices that don't have a GPS - https://developer.android.com/training/location/change-location-settings
* make nodeinfo card not look like ass
2020-02-05 04:11:05 +00:00
* at connect we might receive messages before finished downloading the nodeinfo. In that case, process those messages later
2020-02-10 16:08:23 +00:00
* connect to bluetooth device automatically using minimum power - start looking at phone boot
* call crashlytics from exceptionReporter!!! currently not logging failures caught there
* test with oldest compatible android in emulator (see below for testing with hardware)
* make playstore entry, first public alpha
2020-02-14 03:02:40 +00:00
* tell Compose geeks
* tell various vendors & post in forums
* add play store link with https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#google-play-url-builder and the play icon
2020-02-10 16:08:23 +00:00
# Signal alpha release
Do this "Signal app compatible" release relatively soon after the alpha release of the android app.
* add large packet reassembly?
* optionally turn off crypto in signal - preferably though see if there is a nice way to be a peer of signal/sms and now mesh.
* change signal package ID - if distributing modified binary
2020-01-27 22:54:35 +00:00
* investigate the Signal SMS message flow path, see if I could just make Mesh a third peer to signal & sms?
2020-01-26 23:01:59 +00:00
* make signal work when there is no internet up
* make Signal rx path work
2020-01-27 22:54:35 +00:00
* send Signal message type. It seems to be? " public static final int WHISPER_TYPE = 2;
public static final int PREKEY_TYPE = 3;
public static final int SENDERKEY_TYPE = 4;
public static final int SENDERKEY_DISTRIBUTION_TYPE = 5;"
2020-02-10 16:08:23 +00:00
2020-01-21 17:37:39 +00:00
# Medium priority
2020-02-10 16:08:23 +00:00
Things for the betaish period.
2020-01-21 17:37:39 +00:00
* show user icons in chat
* keep past messages in db, one db per channel
2020-02-17 17:06:22 +00:00
* spend some quality power consumption tuning with https://developer.android.com/studio/profile/energy-profiler and https://developer.android.com/topic/performance/power/battery-historian
* only publish gps positions once every 5 mins while we are connected to our radio _and_ someone else is in the mesh
* Do PRIORITY_BALANCED_POWER_ACCURACY for our gps updates when no one in the mesh is nearer than 200 meters
* fix slow rendering warnings in play console
2020-02-14 15:47:20 +00:00
* use google signin to get user name
* use Firebase Test Lab
2020-02-14 12:41:20 +00:00
* let user pick/specify a name through ways other than google signin (for the privacy concerned, or devices without Play API)
* make my android app show mesh state
* show qr code for each channel https://medium.com/@aanandshekharroy/generate-barcode-in-android-app-using-zxing-64c076a5d83a
* register app link for our URLs https://developer.android.com/studio/write/app-link-indexing.html
2020-02-10 16:08:23 +00:00
* let user change radio params and share radio join info via QR code or text message (use an encoded app specific URL - to autoprompt for app installation as needed)
* test with an oldish android release using real hardware
* if necessary restart entire BT adapter with this tip from Michael https://stackoverflow.com/questions/35103701/ble-android-onconnectionstatechange-not-being-called
2020-02-04 21:24:04 +00:00
* stop using a foreground service
* change info() log strings to debug()
2020-01-23 14:46:23 +00:00
* use platform theme (dark or light)
2020-01-23 14:34:15 +00:00
* remove mixpanel analytics
2020-01-21 20:07:03 +00:00
* require user auth to pair with the device (i.e. press button on device to allow a new phone to pair with it).
2020-01-27 22:54:35 +00:00
Don't leave device discoverable. Don't let unpaired users do things with device
2020-02-03 02:38:01 +00:00
* if the rxpacket queue on the device overflows (because android hasn't connected in a while) send a special packet to android which means 'X packets have been dropped because you were offline' -drop oldest packets first
2020-01-21 17:37:39 +00:00
# Low priority
2020-02-07 06:58:27 +00:00
** make analytics optional
2020-02-03 03:20:17 +00:00
* also add a receiver that fires after a new update was installed from the play store
2020-01-22 22:27:22 +00:00
# Done
* DONE fix bluetooth update
* DONE refactor sw update code to share with my other bluetooth service
* DONE don't let sw update got to sleep during the update
2020-01-22 22:27:22 +00:00
* assert() is apparently a noop - change to use my version of assert
* DONE add crash reporting
* DONE add analytics (make them optional)
2020-01-22 22:48:06 +00:00
* make frontend using https://developer.android.com/jetpack/compose/tutorial
2020-01-23 18:39:54 +00:00
* change bluetooth mtu length to 512 (default is only 20)
* DONE get signal running under debugger
* Find good Signal hooks
* receive fake packets at power on to built initial state (for debugging, pretend there are a couple of nodes out there)
* learn our node number
* test mesh service from activity
2020-01-26 20:18:49 +00:00
* DONE handle failures in onCharWrite, instead of logAssert - because they can happen if device goes away
* DONE explictly broadcast towards signal https://developer.android.com/guide/components/broadcasts
* make test implementation of android service (doesn't use bluetooth)
2020-01-26 23:01:59 +00:00
* undo base64
* use android service from Signal
* send signal message type over wire
* DONE add broadcasters for use by signal (node changes and packet received)
* DONE have signal declare receivers: https://developer.android.com/guide/components/broadcasts#manifest-declared-receivers
2020-01-27 22:54:35 +00:00
* fix // FIXME hack for now - throw IdNotFoundException(id) in MeshService
2020-02-01 20:33:53 +00:00
* clean up sw update code in device side
* add real messaging code/protobufs
2020-02-03 03:20:17 +00:00
* implement android side of mesh radio bluetooth link
* use the lora net code on my current protoboard
* investigate a 16 bit node number. If possible it would make collisions super rare. Much easier to just pick a nodenum and go.
* remove example code boilerplate from the service
* switch from protobuf-java to protobuf-javalite - much faster and smaller, just no JSON debug printing
2020-02-05 04:11:05 +00:00
* have phone use our local node number as its node number (instead of hardwired)
2020-02-10 16:08:23 +00:00
* if radio disconnects, we need to requeue a new connect attempt in RadioService
* don't do mesh based algoritm for node id assignment (initially) - instead just store in flash - possibly even in the initial alpha release do this hack
* show connection state on gui
* parcels are busted - something wrong with the Parcelize kotlin magic
* add app icon
* when notified phone should automatically download messages
* use https://codelabs.developers.google.com/codelabs/jetpack-compose-basics/#4 to show service state
* all chat in the app defaults to group chat
2020-02-13 17:25:39 +00:00
* start bt receive on boot
2020-02-14 15:47:20 +00:00
* warn user to bt pair
2020-02-17 02:14:40 +00:00
* suppress logging output if running a release build (required for play store)
* provide gps location for devices that don't have it
* prompt user to turnon bluetooth and bind
* show real ID of me when I sent texts
* keep text entry box at bottom of screen
* when I enter texts, send them to the device