Implement Metastream as a web app
samuelmaddock opened this issue · 2 comments
samuelmaddock commented
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/
Todo
- Compile Metastream for browsers
- Host using GitHub pages
- Work-in-progress preview available for testing at https://app.getmetastream.com/
- Publish browser extension on Chrome Web Store
- Published as Metastream Remote
- Publish browser extension on Firefox Add-on Store
- Published as Metastream Remote
- 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 #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
- Metastream can be installed as a desktop app by implementing it as a Progressive Web App
- Better browser security (fixes #1)
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>
- I have some ideas for this, but it won't fully work for videos nested in an
cedws commented
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 commented
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!