intiface / intiface-desktop Goto Github PK
View Code? Open in Web Editor NEWDEPRECATED - USE INTIFACE CENTRAL - Desktop GUI App for Intiface Service Usage
Home Page: https://intiface.com/central
License: Other
DEPRECATED - USE INTIFACE CENTRAL - Desktop GUI App for Intiface Service Usage
Home Page: https://intiface.com/central
License: Other
Currently the display only shows "Disconnected". The CLI should be sending connection/disconnection updates and client names.
Currently, the engine installer step moves on after downloading the engine, even if it may not be completely installed yet. Have step wait until end of install.
Intiface is still using buttplug icons. Should use Intiface placeholders until actual branding is done.
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.
Haven't gotten electron-update to work correctly once in production. May just fall back to using my own update code, since the engine updater works fine.
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.
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.
Add a basic discovery page with links to Playground, Syncdink, ScriptPlayer, JFS, etc.
Fail if it doesn't, otherwise we'll have more version like v5. :(
If enginepath.txt is missing, or the path in it doesn't exist, or the executable we expect isn't there, don't allow running the server. Possibly also push user into update flow.
Updating is too hard to deal with in a non-modal way, and since it's user triggered, it can be modal.
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.
Application update checks work, and it appears an update is being downloaded, but it's never actually installed. Probably missing a call to QuitAndInstall or something?
The installer retry in GitHubReleaseManager is a mess. Could be cleaner.
Otherwise we're stuck relying on the log (which we may not be able to see in some cases), or the file/console
Need a better way to see application and process logs than the console.
Turning on Websocket SSL flag doesn't cause SSL arguments to be passed to server executable.
When we check for updates at start, there's a rendering delay for the frontend because the backend hasn't brought it up yet. Use a splash screen or something so the user isn't stuck.
Allow buttplug-js to sort of reverse-proxy its server.
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.
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](ParserResult
1 result, Action1 action)\r\n at IntifaceCLI.Program.Main(String[] args)\n" }
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.
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.
Probably easier to put these in a Vuex store than to try and pass them everywhere from the core App.
Throw to sentry if we have unhandled promise rejections or other exceptions.
The cert generation step needs some instructions on when/why it should be used.
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.
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.
Don't allow the user to turn off insecure and secure websockets. Either one or both must be on. Default to insecure.
In order to get windows installers running, node executable running was disabled. Need to readd capabilities for this.
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.
Currently we have some numeric masks, that's it. Should lock down length on strings, fix numeric ranges, etc.
Forgot to update values in the dialog type in the SetUp dialog, so it was just stalling.
Add step to initial setup to allow users to deselect auto-update checking.
We have a huge toolbar up top that we're not doing much with. Would be nice to put an "updates available" icon up there for when CheckUpdatesAtStartup is true.
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.
Simple mode is incredibly broken, and if I'm gonna show this to users they shouldn't be able to get to it.
We don't currently set the HasCertificates flag after cert gen, meaning users have to restart to use SSL.
If there's no network, "check updates" throws exceptions but they're never bubbled up to the frontend.
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.
Allow users to have update checks run on startup if they want.
If a build is happening on master, it should require a match tag.
When selecting SSL/TLS in Server
> Advanced
> Websocket
as only option the server fails to start. The server does seem to start when any of the two other options (or both) are selected. When no options are selected the server does not start.
Starting the server without IPC or websocket selected is invalid. Start Server button should be disabled if neither is selected.
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.
Add ability for users to switch engines if their platform supports multiple implementations. Put warnings around this about switching from the default.
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.
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.