Coder Social home page Coder Social logo

vinszent / gnome-twitch Goto Github PK

View Code? Open in Web Editor NEW
441.0 34.0 41.0 13.5 MB

Enjoy Twitch on your GNU/Linux desktop

Home Page: http://gnome-twitch.vinszent.com

License: Other

CSS 0.46% C 92.37% Objective-C 2.10% Shell 2.31% Makefile 0.07% Meson 2.23% Inno Setup 0.30% Python 0.15%
linux gtk3 twitch gnome

gnome-twitch's People

Contributors

andreasn avatar arnenaessens avatar ckorn avatar codemusings avatar dengelt avatar devsnd avatar eijebong avatar ers35 avatar fosero avatar generator avatar grindhold avatar ibara avatar jaystrictor avatar kordianbruck avatar kostich avatar kriman avatar mattiasb avatar nibbler999 avatar pfent avatar ph5 avatar piotrdrag avatar professorjamesmoriarty avatar radek-sprta avatar tingping avatar valpackett avatar vinszent 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  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  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

gnome-twitch's Issues

Rare Segfault while watching stream (on master)

I have been experiencing some rare segfaults while watching random streams, and I now managed to 'catch' one with a backtrace:

[10:24:31] GLib-GObject - Critical : "g_object_ref: assertion 'G_IS_OBJECT (object)' failed"

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff6f5fc700 (LWP 23928)]
0x00007ffff5b83885 in g_type_check_instance_is_fundamentally_a ()
   from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
(gdb) bt
#0  0x00007ffff5b83885 in g_type_check_instance_is_fundamentally_a ()
   from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#1  0x00007ffff5b63a1e in g_object_ref ()
   from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#2  0x00007ffff55df28f in ?? () from /usr/lib/x86_64-linux-gnu/libsoup-2.4.so.1
#3  0x00007ffff5b6477d in ?? ()
   from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#4  0x00007ffff5b66225 in g_object_new_valist ()
   from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5  0x00007ffff55e0048 in soup_socket_new ()
   from /usr/lib/x86_64-linux-gnu/libsoup-2.4.so.1
#6  0x00007ffff55b8194 in ?? () from /usr/lib/x86_64-linux-gnu/libsoup-2.4.so.1
#7  0x00007ffff55dc1ea in ?? () from /usr/lib/x86_64-linux-gnu/libsoup-2.4.so.1
#8  0x00007ffff55dc81e in ?? () from /usr/lib/x86_64-linux-gnu/libsoup-2.4.so.1
#9  0x0000000000407ba9 in send_message (self=self@entry=0x6e9420, 
    msg=msg@entry=0x7fff9802e0b0) at ../src/gt-twitch.c:154
#10 0x0000000000408c25 in gt_twitch_channel_with_stream_raw_data (
    self=0x6e9420, name=0x8c2a00 "app1ecrisp") at ../src/gt-twitch.c:889
#11 0x0000000000409eff in update_cb (data=0x68c310, udata=<optimized out>)
    at ../src/gt-channel.c:140
#12 0x00007ffff58b12ee in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#13 0x00007ffff58b0955 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0

It seems I'm missing debug symbols for some libraries, and I will install them and see if I can get another backtrace, but one thing I noticed in this backtrace is that in #10 the channel name parameter is "app1ecrisp", but I wan't watching that stream when the segfault happened. I'm not even sure if I watched that stream earlier in that session, but it could be.

Highlighting chat mentions

When the user is mentioned in a chat message (with @name), the message should be highlighted. This would make it easier to spot messages directed to the user, especially in fast moving chats.

Some ideas for highlighting:

  1. The whole message could get a different background color
  2. Only the text "@name" could get a different background color
  3. The whole message could get a different foreground color
  4. Only the text "@name" could get a different foreground color
  5. Some combination of the above points

My personal favorite would be a combination of 1 and 4.

archlinux makepkg fails with new meson_post_install script

Since the new meson_post_install.sh script is there, building with makepkg under archlinux fails.

I think this is due to the absolute pathnames in the script: meson is run as a non-privileged user and is not allowed to write in /usr/....

Running custom install script /tmp/pacaurtmp-jay/gnome-twitch-git/src/gnome-twitch-git/meson_post_install.sh
Failed to create file '/usr/share/glib-2.0/schemas/gschemas.compiled.A3VZ6X': Permission denied
gtk-update-icon-cache: Failed to open file /usr/share/icons/hicolor/.icon-theme.cache : Permission denied
Traceback (most recent call last):
  File "/usr/share/meson/meson_install.py", line 226, in <module>
    do_install(datafilename)
  File "/usr/share/meson/meson_install.py", line 51, in do_install
    run_install_script(d)
  File "/usr/share/meson/meson_install.py", line 143, in run_install_script
    subprocess.check_call(final_command, env=child_env)
  File "/usr/lib/python3.5/subprocess.py", line 584, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/tmp/pacaurtmp-jay/gnome-twitch-git/src/gnome-twitch-git/meson_post_install.sh']' returned non-zero exit status 1
FAILED: '/usr/bin/python3' '/usr/share/meson/meson_install.py' '/tmp/pacaurtmp-jay/gnome-twitch-git/src/gnome-twitch-git/build/meson-private/install.dat'
ninja: build stopped: subcommand failed.
==> ERROR: A failure occurred in package().
    Aborting...
:: gnome-twitch-git cleaning skipped
:: failed to build gnome-twitch-git package(s)

Untranslatable strings in UI

Remember stream quality

Hi, Can you set it to remember the stream quality you selected? Thanks for your awesome program

No package for Fedora 23

In the COPR are only packages for Fedora 22 and Fedora Rawhide (24). This means enabling the repo on Fedora 23 works but it wont find the package there, hence you cant use Gnome Twitch on Fedora 23.

Video quality should be in hamburger icon

The video quality is in "camera" icon, instead, you should have a "hamburger" icon on the right hand-side of the page, and show the heading "Video quality" in the popup, as nautilus 3.18 does.

Remember window height & width

It would be really nice if upon closing gnome-twitch could write the current height and width of the window to dconf and restore the values on startup.
Right now I have to re-size the window every time gnome-twitch is started for it to fit the aspect ratio of the video.

Needs a newer version of Meson?

$ meson . build
The Meson build system
Version: 0.25.0
Source dir: /home/hadess/Projects/jhbuild/gnome-twitch
Build dir: /home/hadess/Projects/jhbuild/gnome-twitch/build
Build type: native build

Meson encountered an error in file meson.build, line 1, column 0:
project() only accepts the keyword argument "subproject_dir"

Improving the search functionality (Fuzzy search)

let's say I'm looking for "The binding of isaac" game so when I click on the Games and click on the search button and type "isaac" it only shows a game called "Isaac the Adventurer". So I have to type "The Binding .." to find that game.

I guess maybe having a fuzzy search functionality would be a plus.

Tested on develop

Cheers!

Add "Mobile" quality

Some people may have bad internet connections, and considering Twitch provides that quality, it shouldn't be hard to add this quality setting.

Gnome Twitch can't be used withouth libva-intel-driver on Fedora 22

When I start up gnome-twitch and when I select a channel, the screen is blank. It seems that it tries to load a i965 module which isn't provided by default.

[marko@skynet gnome-twitch] $ gnome-twitch 
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: va_openDriver() returns -1

That's because libva-intel-driver from the rpmfusion-free repo isn't installed.

Maybe throw a warning and an instruction to install libva-intel-driver from RPMFusion free if there's no module i965_drv_video?

rpm repo

You share 2 packages, one for Ubuntu, one for Arch. Can we have a rpm package for Fedora/OpenSuse ?

Can't compile on Fedora 22

[user@box gnome-twitch] $ mkdir build
[user@box gnome-twitch] $ meson . build
The Meson build system
Version: 0.25.0
Source dir: /home/marko/izvorni/gnome-twitch
Build dir: /home/marko/izvorni/gnome-twitch/build
Build type: native build

Meson encountered an error in file meson.build, line 1, column 0:
project() only accepts the keyword argument "subproject_dir"

Fix need for manual post-update steps

Currently the readme file says that you need to do schema compilation and a few other steps manually after install. Meson has a way to do that automatically. First create a script that runs the commands like this:

#!/bin/sh
glib-compile-schemas /usr/share/glib-2.0/schemas
update-desktop-database -q
gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor

Then register it with meson.add_install_script(). Now Meson will run it automatically on ninja install.

segfault and chat settings not saved

I am using gnome-twitch-git from aur and every time when try to change the stream after watching one, the program closed with segfault. Also when i make changes to chat settings, like position or unmark "dock chat", next time when i open the program, those settings are default.

Hide log in to Twitch

When i'm connected to my account, log in to twitch should be changed to logout or something else ๐Ÿ‘

Settings schema is not installed.

I've compiled the app on Debian Sid. Got the following error:

(gnome-twitch:9130): GLib-GIO-ERROR **: Settings schema 'com.gnome-twitch.app' is not installed

Should a post install step be added that recompiles the glib schema files? I had to do that by hand to get the app running.

Better wayland support

Currently on wayland a second window is spawned that the video is played in while the controls remain with the main window.

The video showed be played in the main window as it does when using the X server.

Enable MPV backend

Hi there,

I've uncommented the relevant lines in the meson.build:

dependency('mpv'),
dependency('epoxy')]
'gt-player-mpv.c',

and the following in gt-win.c:

#include "gt-player-mpv.h"
GT_TYPE_PLAYER_MPV;

It compiles without error but no mpv. Is the mpv backend incomplete or am I missing something to enable this feature?

Thanks in advance.

Thumbnails don't load

Hey @Ippytraxx awesome piece of software!
I installed the deb via http://www.getdeb.net/app/GNOME%20Twitch and it seems that the thumbnails don't load for me

selection_020

Steams work perfect once I've selected one to watch, but navigating around is text only

I'm running Ubuntu 15.04 with Gnome 3.14
Here is the only output when running via terminal

selection_021

If its just me, then you can close and I will try build from source instead!

Improve headerbar functionality and design

The thought behind this suggestion is: How often do you really change the volume by a few % instead of mute/unmute it and how often do you really resize the chat compared to hide/unhide it?
At least I do the later examples way more often than the former.
So my suggestion would be to pack the volume level slider into the cog-popover. At the same time remove the "show chat" checkbox in the popover (btw: whats the reason for the "dock chat" setting not being inside the "edit chat" subsection?). Now add two new toggle-buttons to the headerbar. One to show/hide the chat and one to mute/unmute the sound.
Any thoughts on this? :)

Chat scrolls back down to new messages when the user has scrolled up

Currently, whenever a new message arrives, the chat window automatically scrolls down to the latest message, even when the scrollbar is not at the very bottom. This makes it hard to read older messages or copy links, especially when the chat is moving fast. In most chat applications, when the user scrolls up to read older messages, new messages will not cause the chat window to scroll back down. Instead the scrollbar will remain where it is until the user scrolls to the bottom of the chat window. I believe this should also be the intended behavior for gnome-twitch, too.

Stream cropped + artifacts

Compared to the website the stream in gnome-twitch is cropped a few pixels in the top and at the bottom + there are some funky color artifacts at the bottom :D Happens on all streams I tested not just esl_sc2 ;)

screenshot from 2015-10-09 00-59-28

Black video screen

video doesnt show
i get this on the terminal

libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i915_drv_video.so
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i915_drv_video.so
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_37
libva error: /usr/lib/dri/i965_drv_video.so init failed
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_37
libva error: /usr/lib/dri/i965_drv_video.so init failed
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i915_drv_video.so
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i915_drv_video.so
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_37
libva error: /usr/lib/dri/i965_drv_video.so init failed
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i915_drv_video.so
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i915_drv_video.so
libva info: va_openDriver() returns -1
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_37
libva error: /usr/lib/dri/i965_drv_video.so init failed
libva info: va_openDriver() returns -1

[SOLVED] Video not working with hybird graphics

Hello,

First of all, thanks for this really cool application ๐Ÿ‘

The master branch is working fine with me but today I tried the develop branch and the video isn't working, yet I can hear the sound just fine.

This is the terminal output:

[14:52:42] (null) - Message : '{GtApp} Activate'
libva info: VA-API version 0.38.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_38
libva info: va_openDriver() returns 0

(gnome-twitch:1997): GStreamer-CRITICAL **: gst_buffer_copy_with_flags: assertion 'buffer != NULL' failed

(gnome-twitch:1997): GStreamer-CRITICAL **: gst_buffer_copy_with_flags: assertion 'buffer != NULL' failed
libva info: VA-API version 0.38.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_38
libva info: va_openDriver() returns 0

(gnome-twitch:1997): GStreamer-CRITICAL **: gst_buffer_copy_with_flags: assertion 'buffer != NULL' failed

(gnome-twitch:1997): GStreamer-CRITICAL **: gst_buffer_copy_with_flags: assertion 'buffer != NULL' failed
[14:52:50] Cogl - Warning : 'driver/gl/cogl-framebuffer-gl.c:157: GL error (1280): Invalid enumeration value

I'm running Arch and I have a hybird graphics setup (intel+bumblebee). I tested it on my other laptop which has intel graphics only and it's working fine.

Don't understand star at the top-left

I don't understand what the star at the top-left of the header bar does. Does it list favourites? Shouldn't it be a category alongside Channels / Games?

When I clicked on it, I ended up with an empty view.

Artifacts when showing fullscreen bar

Need to put fullscreen bar in something that has its own window (maybe another eventbox?). Otherwise it tries to draw on the player's window which then gets over written by the player, causing artifacts and pretty much makes the bar unusable.

Hide menubar on fullscreen (or remove it altogether)

When the player is fullscreen, the menu is still visible, while providing no purpose: the only available action is to change the video quality, and that is also available on the "action bar" that pops up when moving the mouse.

Perhaps consider removing the menu bar altogether.

[IDEA] Add Twitch account and new streams notiffications support to the app

Hello friends I have some ideas for the app

1.- add Twitch account support for speaking in the chat
2.- with the twitch support you could add an option to see a list of your followed channels, you can click on one of them to see the channe's profie with a list of the last streams
3.- add notiffications of new live streams with a button to go directly to it

I do not know if this app allready has these features because I tried a .deb of it and I do not know if it was outdated but anyway there are my suggestions ๐Ÿ˜„

EDIT: I saw that it actually has the Twitch account support but when you are loged in the menu entry does not changes, it could change to a see profile option where you can see your Twitch profile

Mouse cursor does not hide in fullscreen mode

In most media players, the cursor hides automatically when it does not move for a few seconds and shows up again upon movement. This would be a neat feature for gnome-twitch too.

Make chat searchable

A searchable chat would be useful for finding older messages or for finding messages a certain user has sent, by searching for his name. The messages or the found text could be highlighted. There could be a search bar located under the chat that is only shown when the user presses Ctrl+F, and hidden when the user presses Ctrl+F again.

gnome-shell freezes after clicking on notifications

When I click on a notification that tells me that one of my 'favorited' streamers has gone online, gnome-shell freezes. The audio of the stream is still running in the background, I can still move the mouse, but the rest is frozen. No segfault happens at neither gnome-shell nor gnome-twitch, but gnome-shell has these 3 error messages:

(gnome-shell:13521): GLib-GIO-CRITICAL **: g_dbus_connection_signal_subscribe: assertion 'object_path == NULL || g_variant_is_object_path (object_path)' failed
(gnome-shell:13521): GLib-GIO-CRITICAL **: g_dbus_connection_signal_subscribe: assertion 'object_path == NULL || g_variant_is_object_path (object_path)' failed
(gnome-shell:13521): GLib-GIO-CRITICAL **: g_dbus_connection_call_internal: assertion 'object_path != NULL && g_variant_is_object_path (object_path)' failed

This also happens when there is no stream running. It could be a bug in gnome-shell, but since this is the only application where it happened to me, I suspect it is in gnome-twitch.

To get the error messages I set up two TTYs with the following environment variables:

gnome_session=$(pgrep -u $USER gnome-session)
export $(sed 's/\o000/\n/g;' < /proc/$gnome_session/environ | grep DISPLAY)
export $(sed 's/\o000/\n/g;' < /proc/$gnome_session/environ | grep XAUTHORITY)
export $(sed 's/\o000/\n/g;' < /proc/$gnome_session/environ | grep DBUS_SESSION_BUS_ADDRESS)

In one of the TTYs I then ran gnome-shell via gdb (gdb --args gnome-shell --replace), and in the other gnome-twitch (gdb gnome-twitch).

Please tell me if I can do anything else to provide more information. I tested this on the develop branch.

Focus search field when revealed

After revealing the search field (clicking the button in the HeaderBar) the search field should be focused so one can immediately star typing.

Missing License

I have seen that the packages at the AUR and at getdeb.net are released under the GPL-3 or later, although that information is missing in this repository.

Can you please add a LICENSE file containing the copyright notice and a GPL3 file that contains the GPL-3 license text like you did in your ZenbuTorrent repository?

Thanks!

GLib-GIO-ERROR

when i run gnome-twitch in the terminal i get this error

(gnome-twitch:4932): GLib-GIO-ERROR **: Settings schema 'com.gnome-twitch.app' is not installed

Trace/breakpoint trap (core dumped)

compile error on Ubuntu 15.10

Hello,

I just downloaded the last develop git branche.
When I try to compile it, I obtain this error message:

$ meson --prefix /usr -Ddo-post-install=true ..
The Meson build system
Version: 0.21.0
Source dir: /home/legluondunet/Applications_persos/Multimedia/gnome-twitch/gnome-twitch-develop
Build dir: /home/legluondunet/Applications_persos/Multimedia/gnome-twitch/gnome-twitch-develop/build
Build type: native build

Meson encountered an error in file meson.build, line 4, column 32:
lexer

Thank you for your help.

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.