Giter VIP home page Giter VIP logo

tail_app's People

Contributors

codel1417 avatar dependabot[bot] avatar github-actions[bot] avatar mastertailer avatar snowowlx avatar weblate avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

tail_app's Issues

Swap out Bluetooth library

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

Add guided tutorial

  • Tutorial for connecting gear
    • Show focus on Scan button
    • Show focus on First gear which appears
  • Show focus on Gear icon after connecting
  • Show focus on sending an action
  • Direct users to Triggers page
    • Show Focus on the Walking trigger
    • Have the user enable the trigger

Secondary on demand tutorials for making a custom move or using the joystick

Pull to scan

Enable pull to refresh on all shell pages to scan for known devices

  • Add pull to refresh logic to shell pages
    • Should be aware if the pare is scrolled to top
  • Add option to settings to always scan

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

Ears need homing

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

Make OTA screens more friendly

  • Combine download & upload buttons (Begin Update)
  • Add Lotties to update screen to be friendlier
  • Handle Success
  • Handle Failures (might already do this?)
  • Add check for battery level

Some edited descriptions for the app..

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.

Set up fastlane

Fastlane simplifies auto uploading of new app versions

  • Add gem file to repo with fastlane added
  • Add a CI job to upload using fastlane when pushed to master (beta) or a release (production)
  • sign apps to be uploaded
  • create fastlane configuration
  • Handle secrets
  • Store secrets locally in a safe and redundant place
  • Create changelog file and link to fastlane config #130
  • Link to store listings for prod and beta tracks #145
  • Document fastlane use and required setup to use.

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.

Add missing EarGear moves

Crumpet has additional moves. Copy them

Waiting on EarGear to be on the unified TailCoNTROL firmware which will include unified move commands

Pause scanning when all known gear is connected

Scanning happens in the background whenever the shell is loaded, There is no reason to scan when all devices are connected

  • Move passive scanning to own stateful widget, placed before shell
  • Use MultiValueListener monitoring connection state of every known gear
    • pass child so Shell does not rebuild on state change
  • Add Continuous/30 Second scan modes

Prerequisite for #79

Add a changelog feature

Include a changelog in the app, and display it if it has been updated.

  • Add a CHANGELOG.md file
  • Use same changelog file for #121

Add Privacy Policy

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

Perhaps a different visual language for this?

Screenshot 2024-03-03 182914

I thought they were buttons and tried to press them. I understand they are just telling me it applies to these devices. Perhaps the outline of the shape isnt necessary - just the device name and a tick?

_Exception: Exception: Disconnected from device

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)

Rename app

tail_app was a placeholder and isn't user friendly.

UninitializedPropertyAccessException: lateinit property serviceBindManager has not been initialized

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)

Set up IOS build environment

  • acquire MacOS device
  • get an apple developer license
  • install xcode
  • configure the environment to compile flutter
  • migrate config to GitHub actions

Rework Sequences to support USERMOVE

Use the built in USERMOVE system for Sequences

  • Add usermove specific edit screen
  • add repeat slider
  • limit to 5 positions/steps
  • Add command generator
  • keep track of which usermove commands are stored in the Gear
  • Automatically send top 4 sequences to gear on connect

Add onboarding UI before showing main UI

  • welcome
  • privacy policy
  • question if the user has gear/ link to store.
  • get required Bluetooth permission with description
  • get optional notification permission for foreground service

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.