Giter VIP home page Giter VIP logo

intiface-desktop's People

Contributors

dependabot[bot] avatar qdot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

intiface-desktop's Issues

Disable Simple Mode for now

Simple mode is incredibly broken, and if I'm gonna show this to users they shouldn't be able to get to it.

Add "ready" message for server process bringup

Right now we rely on the cli server process just sending anything over the line and we call that good. We should have an actual protobuf message sent on connect to verify things are ok. This will also require updates to the CLI programs.

Change out icons

Intiface is still using buttplug icons. Should use Intiface placeholders until actual branding is done.

Allow engine path setting for developers

For those of us that have to actually debug the CLI, it'd be nice to be able to temporarily (per-session) reset the engine path, rather than having to actually change the engine path output file.

Implement message pairing between frontend/backend connectors

The core connector classes need message pairing similar to Buttplug, since we'll want to disable UI on the frontend while backend operations (like file downloads, update checking, process starting, etc) happen. Add ids to the protobuf messages so we can match transactions across frontend and backend.

Websocket Settings menu needs port settings

The menu at Server > Advanced > Websocket has the option for Both / Insecure / Secure as non-mutually exclusive options.
Expectation would be mutually exclusive radio selection or two boxes for y/n secure and y/n insecure.

Add ability to switch engines

Add ability for users to switch engines if their platform supports multiple implementations. Put warnings around this about switching from the default.

Add more error handling for application updates

Application updates now seem to work, but still tend to stall on partial updates, or on SHA mismatches. We should actually catch those errors and redirect the user to download from github.

Clean up error alerts UI

Error alerts are currently in their own block div in the content div. They should be relative positioned to the bottom (overlaying the router content), and the stack should grow upward if possible.

Websocket Settings, strange options

The menu at Server > Advanced > Websocket has the option for Both / Insecure / Secure as non-mutually exclusive options.
Expectation would be mutually exclusive radio selection or two boxes for y/n secure and y/n insecure.

Make download dialog modal and cancellable.

Users shouldn't be able to click out of the download dialog without cancelling it, and cancel should actually stop downloads. May not be able to stop in-process installations though.

Add update UI capabilities

The GithubReleaseManager backend can already query for engine and device file capabilities. We need UI in the front end to show that updates are available, and to trigger updates to run.

Implement Proxy Mode

Allow buttplug-js to sort of reverse-proxy its server.

  • buttplug-js server would connect as a websocket client (but Buttplug Server) to a desktop relay app.
  • Other actual client desktop applications could connect to the desktop relay app.
  • This would allow using the phone as a bluetooth device server via a webpage, while still using desktop apps.

This would only work on android, but means any time buttplug-js updated, we wouldn't have to do an app release, we could just update the relay webpage.

An Example:

A Windows 7 user wants to use their Launch with ScriptPlayer (https://github.com/FredTungsten/ScriptPlayer). However, using the Launch with Bluetooth on a desktop is only supported on Windows 10. The user also has an android phone.

  • They bring up the Buttplug Web Relay application (a native C# application) on their desktop. This application acts as a Websocket server.
  • They then bring up the Buttplug Web Relay Website on their android phone. This website contains the Buttplug-js library, as well as a way to connect via Websocket to the application on the Desktop.
  • They connect the website on the phone to the app on the desktop via an interface on the website, using a special port to signify the connection will act as the server.
  • They then bring up ScriptPlayer, and connect it via either Websocket or IPC (Named Pipe) to the Relay app on the desktop, using a special port to signify the connection will act as a client.
  • Now ScriptPlayer can use the phone as a bluetooth device access point.

Implement minimum engine versions

If we change the engine CLI or message output, we'll need to set the last known good version somewhere in Intiface so we don't have conflicts between the two.

Implement abstract application update class

Electron and Express will update differently and require their own APIs, but it'd be nice to have those updates exposed in similar ways to the IntifaceBackendManager, so we just have download process, update available, etc.

Implement home screen

Add a basic discovery page with links to Playground, Syncdink, ScriptPlayer, JFS, etc.

Add ability to pin engine versions

There's a good chance I'm going to release buggy crap in the future, and the last thing I want to do is block people from masturbating with my software. Add ability to pin engine versions so if a buggy version is released, users can roll back until it's fixed.

Moving from and back to the server tab causes the server to break.

After starting the server, clicking settings, about and back to server. The server shows as disconnected.

In addition, starting it results in the following error.
{ "reason": "Command failed: D:\\Program Files\\IntifaceCLI\\IntifaceCLI.exe --guipipe --websocketserver --insecureport 12345\n\nUnhandled Exception: System.AggregateException: One or more errors occurred. ---> System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted\r\n at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)\r\n at System.Net.Sockets.Socket.Bind(EndPoint localEP)\r\n at vtortola.WebSockets.Transports.Sockets.SocketListener..ctor(SocketTransport transport, EndPoint[] endPointsToListen, ProtocolType protocolType, WebSocketListenerOptions options)\r\n at vtortola.WebSockets.Transports.Tcp.TcpListener..ctor(TcpTransport transport, EndPoint[] endPointsToListen, WebSocketListenerOptions options)\r\n at vtortola.WebSockets.Transports.Tcp.TcpTransport.<ListenAsync>d__49.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at vtortola.WebSockets.WebSocketListener.<StartAsync>d__22.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Buttplug.Server.Connectors.WebsocketServer.ButtplugWebsocketServer.<StartServerAsync>d__13.MoveNext()\r\n --- End of inner exception stack trace ---\r\n at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)\r\n at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)\r\n at IntifaceCLI.ServerCLI.RunServer(Options aOptions)\r\n at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult1 result, Action1 action)\r\n at IntifaceCLI.Program.Main(String[] args)\n" }

Simplemode does not startserver for websockets.

In Simple mode the server will not turn on if 'it will listen' is enabled only for websocket connections. When IPC is enabled it will start. When neither are enabled it will also start.

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.