opentails / tail_app Goto Github PK
View Code? Open in Web Editor NEW๐ฆ An app to control Tail Company gear
Home Page: https://thetailcompany.com/
License: GNU General Public License v3.0
๐ฆ An app to control Tail Company gear
Home Page: https://thetailcompany.com/
License: GNU General Public License v3.0
Add a toggle to enable/disable firebase notifications
until you go away and then back again for to the page
flutter_reactive_ble is barely supported and buggy on iOS. Switch to flutter_blue_plus
This would also let me reduce the number of streams used, reducing the complexity of managing state for gear.
Need to use central characteristic streams for receiving events
Secondary on demand tutorials for making a custom move or using the joystick
Enable pull to refresh on all shell pages to scan for known devices
Likely depends on #80
Alternative solution, only check for pull to refresh on the gear bar. This significantly reduces complexity and could be done from all directions
Sentry Issue: TAIL-APP-FP
PlatformException(channel-error, Unable to establish connection on channel: "dev.flutter.pigeon.wakelock_plus_platform_interface.WakelockPlusApi.toggle"., null, null)
Lets discuss on Telegram - having the building blocks is good - but a user wont understand that LETWIST 90 followed by LETWIST 100 will result in almost no move at all. Probably invisible to them. Thats why (I think) Crumpet App sends home commands after a pause, after the Move Buttons are pressed
Kitsune Mode
If you connect many instances of the same devices, this mode will add random pauses to their move-start times, giving it a different visual effect.
Keep Screen On
This mode stops the screen from switching off whilst your gear is connected
Automatic Error Reporting
Sends error reports to Sentry
Development Menu
Advanced options for developers.
Fastlane simplifies auto uploading of new app versions
Android secrets can be passed directly from an environment variable.
iOS using the json setup requires a file path to be used.
Version and build number need to be set from the values found in the build jobs. Set them as outputs.
Crumpet has additional moves. Copy them
Waiting on EarGear to be on the unified TailCoNTROL firmware which will include unified move commands
Scanning happens in the background whenever the shell is loaded, There is no reason to scan when all devices are connected
Prerequisite for #79
Include a changelog in the app, and display it if it has been updated.
Add a privacy policy describing how sentry and plausible are used
No PII is stored or collected
Sentry used for error reporting. All PII (IP addresses) are stripped
Plausible only aggregates metrics and cannot be used to identify a specific user
..would be awesome
Add an indicator to the gear card when the battery is low
Update device state on disconnected exception
Sentry Issue: TAIL-APP-3Y
_Exception: Exception: Disconnected from device
File "BluetoothManager.dart", line 152, in KnownDevices.connect.<fn>.<fn>
...
(6 additional frame(s) were not displayed)
tail_app was a placeholder and isn't user friendly.
Sentry Issue: TAIL-APP-7X
RuntimeException: Unable to destroy activity {com.codel1417.tail_app/com.codel1417.tail_app.MainActivity}: kotlin.UninitializedPropertyAccessException: lateinit property serviceBindManager has not been initialized
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:5827)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:5859)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:6142)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:6056)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:77)
...
(12 additional frame(s) were not displayed)
UninitializedPropertyAccessException: lateinit property serviceBindManager has not been initialized
at com.nankai.flutter_nearby_connections.FlutterNearbyConnectionsPlugin.onDetachedFromEngine(FlutterNearbyConnectionsPlugin.kt:139)
at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.remove(FlutterEngineConnectionRegistry.java:272)
at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.remove(FlutterEngineConnectionRegistry.java:280)
at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.removeAll(FlutterEngineConnectionRegistry.java:288)
at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.destroy(FlutterEngineConnectionRegistry.java:123)
...
(22 additional frame(s) were not displayed)
Currently Bluetooth starts immediately and prompts for permission on iOS
This will allow the android language selection menu to automatically be inline with the supported languages
When the gear color is changed, action card color doesn't update until the page is reloaded
Currently Lotties pop in which can look bad
Use the built in USERMOVE system for Sequences
This will allow for organizing logs based on Bluetooth, Triggers, etc.
[ ] Add bool to disable auto connect
[ ] replace disconnect button with connect
[ ] Add check to skip auto connecting
Add value notifier which indicates any gear is connected
The device (Gear) selector widget on the Triggers, Sequences, and Joystick pages should be common.
Walking trigger is the most popular
EarGear sound is the least
https://docs.flutter.dev/ui/layout/scrolling/slivers
Slivers will allow more reactive scrolling, as well as hiding the app/nav bar when scrolling down.
Store the version of the completed onboarding in case we make a change to it and want the user to go through it again, like changing the privacy policy.
Require opt in during Onboarding, then ask for permission
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.