Code Monkey home page Code Monkey logo

zephyr's Introduction

Zephyr

Build Status Build Status

Mirror Android notifications to VR

Get it on Google Play

Latest news

Zephyr v2 is almost here! Beta access is closed as release nears...

Looking for v1?

Don't worry, Zephyr v1 is still available until v2 is released. The desktop client is available under Releases and the Android client is available on the Play Store.

Zephyr v1 source code can be found in the v1 branch.

Contributing

Contributions are gladly accepted! Check out Zephyr's contribution guidelines for more info.

zephyr's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar snyk-bot avatar thomasgaubert 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  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  avatar  avatar  avatar

zephyr's Issues

Linux support

This project almost "just works" on Linux. I've done this:
ChristophHaag@5f6fd48
Adding submodules for the required projects and some other small fixes should be self explanatory.
I threw out the openvr libraries and header, because in my experience, only the actual OpenVR 1.0.6 interface works on Linux.

Some info on how to compile and run this stuff would be good. Like tl;dr:

  • Go to zephyr/desktop/app, run npm install, with having electron installed run electron .
  • Go to overlay/src, run qmake; make, run overlay/bin/win32/zephyr
  • Run the android app and connect to the ip:port the desktop app displays

So, uhm... success I guess:
zephyr2

Only the overlay settings screen is just rendering garbage. Maybe that is because it's not been properly updated for the most recent OpenVR API? After all I had to replace vr::API_OpenGL with vr::TextureType_OpenGL, maybe other stuff needs to be changed too.

VirtualBox results in wrong IP address

Reported here.

Looks like Zephyr gets thrown off by other network devices, such as any virtual device installed by VirtualBox. Right now local IP address is grabbed naively (first non-internal address), but there might be a better way?

Documentation: first pass

Do a first pass on documentation to cover core scenarios, FAQs, downloads, etc.

This also includes getting the project's READMEs into decent shape.

Save synced address

If we get an address from Firebase, save it to local storage for future use.

Notification length limit

Impose notification length limit for both title and text. If either are too long, replace remaining message with an ellipsis.

Unit tests

Relatively low priority, but it'd be nice to have a set of tests which ensure things aren't broken.

Duplicate HMD notifications for unread Android notifications

If there are unread Android notifications, when a new Android notification comes in, all the previous unread notifications show again inside the HMD one-by-one. There should be a mechanism to prevent previous notifications from showing again which each new message.

Create separate Steam build

Investigate (and implement) the ability to have a separate build for Steam distribution. This build might have different links, Steamworks integration, disabled auto-updates (handled by Steam), etc.

Label as Zephyr Beta

Ensure product name is "Zephyr Beta" or "Zephyr β" for the duration of the beta test.

same device, multiple connections

Really needed this, so thanks for that :)

I tested a few times and got 5 device entries in the Desktop App, so receiving the same message 5 times.
After dis- and reconnecting with the mobile app, it seems I always get 2 device entries, so receiving the message 2 times.

At first start, I opened the Desktop App before starting SteamVR, the dashboard app appeared and notification worked when I started it the other way around.

Otherwise, great work!

Cleanup Qt project

The overlay Qt project has gotten messy, so we should clean it up by removing references to OpenVR Notifications, etc.

Improve minimize to tray

Zephyr currently minimizes to the tray when closing the main window. This can get confusing when updating or leaving the window closed for a long time. Additionally, an unhelpful error message appears if two Zephyr instances are running.

Solution:

  • Improve error message if two instances of Zephyr are running (dialog that quits Zephyr upon dismissal)
  • Add separate button to minimize to tray
  • Restore original close button functionality, with a dialog confirming the close

Log updates

Zephyr should track when the application is updated and note as such in the log.

Play Store: finalize store assets

Create updated screenshots, descriptions, etc. for Play Store.

  • Short description
  • Full description
  • Feature image
  • Promo image
  • Screenshots
  • Launcher icon
  • What's new

Steam: finalize store assets

  • Basic info and descriptions
  • Planned release date (#54)
  • System requirements
  • Trailer
  • 5+ screenshots
  • Capsule images
  • Library assets
  • Support info
  • Developer and publisher names
  • VR settings
  • Community capsule
  • Community icon
  • Client icon
  • File quota
  • File limit

Investigate Unity

Look into switching to a Unity based overlay. Presumably this would make development much easier (and able to happen on other operating systems).

Google Hangouts onNotificationPosted firing on swipe notification removal

Because the event is fired on swipe notification removal, this causes a duplicate notification to be sent when the user goes to swipe away a notification on the phone. This seems to be isolated to Google Hangouts notifications as Gmail and Messenger (Google) did not do this. Not sure if it's a big enough deal to fix, but opening up the issue anyways. On debug, I did noticed that the notification that comes from the removal swipe has a notification.flag = 16 instead of the usual 17 that comes from when a Hangout notification appears.

Clean up analytics

Analytics could be cleaned up, so let's do that. For example, create a BaseActivity which contains the Firebase Analytics instance.

Blank notifications in VR

Received reports of notifications showing up as empty in VR even though they display fine in the desktop client.

Update website

The website should be updated as needed in anticipation of v2 and the Steam launch.

New download links, detail v2 changes, etc.

Add ability to disable desktop auto-update

The Steam build will (naturally) be using Steam to distribute updates, so we need to add a way to disable auto-updates. This can be in the form of a command line argument, config file, checking if the executable is within the Steam installation directory, etc.

Update OpenVR

Update OpenVR to latest SDK and verify functionality.

Windows taskbar on side misplaces login window

While the Windows taskbar is on a side instead of the bottom, the login window appears halfway off the screen. It appears normally if I move the taskbar to the bottom of my screen. (Version 1.1.5)

Add ability for overlay to start desktop client

The overlay should be able to start the desktop client if it isn't already running (or if started by OpenVR, see #30). We'll want to have the option to stop the desktop client from launching another overlay and for the desktop client to start out minimized.

Register overlay with OpenVR

Register the overlay with OpenVR so users can have it automatically launch when starting OpenVR.

When being started by OpenVR, the overlay will need to start the desktop client minimized (see #31).

Shut down old release pipeline

With Zephyr's release on Steam, the AppVeyor CI and Heroku update server are no longer required and can be disabled.

The update server should stay up for ~1 month before being disabled to allow final updates (#36) to roll out to users.

Add Origin headers to overlay for CORS support.

It would be useful to add Origin headers to the responses from the RESTful API so that JS clients making requests from external resources can send notifications to the overlay, instead of having the cross-origin requests blocked by the browser:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:3753/. (Reason: CORS header 'Access-Control-Allow-Origin' missing).

I'm not super familiar with Socket.IO, cpp, or JS, but looking at the socketio docs, this looks pretty trivial. I'll take a stab at it once I have a development env set up. Thanks for this useful tool!

Does not work at the moment.

Me and several people have been having trouble with this, connects fine, says test notification has been received and displayed but nothing in the headset.

Include Visual Studio Redistributables

The overlay executable requires VS 2015 Redistributables (x86). Instead of requiring users to install this themselves, include it as part of the desktop client.

Sidenote: Future Steam distribution should take care of this for us, too.

Implement logging

Ensure both desktop and Android clients have sufficient logging that is able to be pulled in the event of crashes, etc.

Announcements

Add ability to create and display announcements within the Android and desktop apps. Each application would check an endpoint for the latest announcements and display if needed. Some things which this endpoint would provide include:

  • ID
  • Title
  • Body
  • Image
  • Link
  • App type
  • App version code
  • Show once
  • Blocking (can the announcement be dismissed?)
  • etc...

Announcements would be used to notify users of breaking changes (for example, if a new API version is rolled out), major product announcements, etc.

Rebrand overlay

The VR overlay still uses "OpenVR Notifications". Rebrand to Zephyr.

Currently blocked due to lack of Windows dev environment.

Add ability to minimize to tray

Options include:

  • Minimize to tray when closing the main window (somewhat similar to macOS)
  • Separate "minimize to tray" option

Add beta disclaimer

Add beta disclaimer and changelog to clients for the duration of the beta.

Add telemetry settings

Add settings to manage anonymous telemetry collection.

Note: Telemetry should not be able to be disabled for beta builds (this should be noted in the disclaimer from #45).

Smart connectivity

Try to be smart about attempting to connect to the server. For example, we shouldn't try connecting on a mobile network and we should exponentially back off if the server is offline.

Ideally this behavior would be toggleable in Settings.

Metrics UUID

Generate an UUID for metrics tracking a new UUID should be generated on a fresh install.

The UUID is anonymous, but allows for metrics events to be strung together for debugging, flow tracking, etc.

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.