Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Metastream as a web app #94

Closed
28 of 31 tasks
samuelmaddock opened this issue Apr 22, 2019 · 2 comments
Closed
28 of 31 tasks

Implement Metastream as a web app #94

samuelmaddock opened this issue Apr 22, 2019 · 2 comments

Comments

@samuelmaddock
Copy link
Owner

samuelmaddock commented Apr 22, 2019

Metastream is in the process of deprecating the Electron desktop app in favor of a web app with a required browser extension. See post on Patreon for details regarding reasons for this change.

In-development preview available at https://app.getmetastream.com/

NVIDIA Share_2019-04-22_00-26-20S625

NVIDIA Share_2019-04-21_23-33-10McKL

Todo

  • Compile Metastream for browsers
  • Host using GitHub pages
  • Publish browser extension on Chrome Web Store
  • Publish browser extension on Firefox Add-on Store
  • Re-implement subset of Electron's <webview> features with web extension messaging
    • This is already mostly functioning, needs some more work around history state management
  • Re-implement user identities with libsodium
  • Implement WebRTC signaling server and client for multiplayer sessions
  • Authenticate peers
  • Host backend services
    • Dockerize signal server
    • LetsEncrypt certs for wss://
    • Setup WebRTC TURN server for relaying failed P2P connections (fixes P2P connectivity issues #74)
  • Add support for site-specific scripts in extension
  • Cache bust service worker offline content
  • Network error handling
    • Implement exponential backoff for host reconnecting to signal server
  • App update button
  • Install to desktop main menu button
  • Update git documentation, merge webapp branch
  • Support pasting session URL into join page
  • Change /lobby/:id routes to /join/:id
  • BUG: Chat box extends past bounds in Firefox
  • Public network testing
  • Change website download buttons to launch web app
  • Publish final update to Electron app with deprecation notice
  • Update browser extension description on stores

Post-launch

  • Show error when session already exists in another tab
  • Bind global media playback hotkeys
  • Request current tab URL in Metastream when clicking extension badge
  • Redesign title bar? 🤔
  • Add manual method of connecting to peer in case signal server is down 🤔

Features gained

Features lost

  • Discord Rich Presence support
    • Includes custom avatars via Discord
  • Distributed signalling solution (swarm-peer-server) for WebRTC connections
  • Direct IP connections
    • Will likely be replaced by a dedicated server solution eventually
  • Automatic fullscreening of videos that don't fill the app's viewport
    • I have some ideas for this, but it won't fully work for videos nested in an <iframe>
@cedws
Copy link
Contributor

cedws commented Apr 22, 2019

I can see this architecture being less flexible, but overall it seems like the right way to go. Massive thanks for your hard work that's going into this. I promise I'll send a few bucks your way at some point.

@LavenderTheGreat
Copy link
Contributor

17/24... We are getting there slowly but surely! Well in fact, it's been going lightning speed since you started! So it's quickly but surely!

@AustinCarr AustinCarr unpinned this issue Aug 1, 2019
@AustinCarr AustinCarr pinned this issue Aug 1, 2019
@samuelmaddock samuelmaddock unpinned this issue Oct 23, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants