Code Monkey home page Code Monkey logo

eight-dollars's Introduction

eight-dollars

eight-dollars can help you tell the difference between actual verified accounts and twitter blue users. Just install the extension and see the difference.

Maintained by Will Seagar, Walter Lim, and Ilia Sidorenko.

Found this useful? Buy us a $8 coffee here.

Some tweets

Installation Instructions

How to install on Chrome/Brave

Download it on the Chrome Web Store

How to install on Firefox

Download it on the Firefox Browser Extensions page

How to install on Edge

Download it on the Microsoft Edge Add-ons page

How to install on Opera

  1. Vist the Chrome Web Store page
  2. Click "Add to Opera"
  3. Click "Install"

How to install on Safari

Coming soon

eight-dollars's People

Contributors

ccuser44 avatar cqoicebordel avatar dim-ask avatar imgbotapp avatar jkirrane avatar kunalsin9h avatar noway avatar rich2k avatar sluzcode avatar waltzaround avatar wdhdev avatar wseagar avatar zikyfranky 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

eight-dollars's Issues

Not seeing extra information in timeline

If I browse to the accounts full profile I can see the new badges, but not in the Twitter timeline. Is this supposed to happen or should you see the "actually verified" or "paid for verification" in the timeline for 'verified' accounts? I tested in both Chrome and Edge and see the same.

[BUG] "Enable Border" option reenables itself

Info:

  • Browser: Firefox 107.0.1
  • Platform: Windows 10
  • Extension Version: 1.5
  • Location: US

What happened
Steps to reproduce the behavior:

  1. Open the extension settings panel
  2. Disable "Enable Text" and "Enable Border"
  3. Save settings and close the settings panel
  4. Reopen the settings panel
  5. See "Enable Border" is reenabled

Expected behavior
The "Enable Border" option should stay disabled within the settings panel (regardless if it has any effect while the "Enable Text" option is disabled).

Additional context
The error only seems to occur whenever the "Enable Text" option is disabled, no other settings seem to have an effect.
The setting behaves as expected (enables and disabled correctly) only when "Enable Text" is enabled.

Feat: Firefox options page

I haven't looked at how to-do a settings page for firefox and what API's we need.

The main difference will be the lack of the "chrome" object in content.js and the fact that firefox need's manifest v2.

If we can share code from the chrome settings popup, great! If not lets just copy paste the chrome page when it's done, we all know the addon is quite fragile and will likely be patched by twitter in the coming days/weeks so no need to over engineer anything.

Turkish language support

It would be nice if it could be added.

Actually verified = Zaten onaylı
Paid for verification = Ödeyerek onaylandı

[BUG] Does not work anymore.

Info (please complete the following information):

  • Browser: Firefox Developer Edition 107.0b9
  • Platform: Windows 11 Pro 64Bit
  • Extension Version: 1.3
  • Location: Austria 🇦🇹 (Not Australia!!!)
  • Twitter Language: German

What happened
Steps to reproduce the behavior:

  1. Go to 'twitter.com'
  2. Scroll down to some user that has blue or is actually verified
  3. See the normal twitter checkmark

Screenshots
If applicable, add screenshots to help explain your problem.
grafik

Expected behavior
It should show a custom badge for blue users and show a text for actually verified usrs

Additional context
I'm logged into multiple accounts(4)
Browser has been fully restarted before writing this.

May be linked to #52 or the new issue the user might create. At the time of writing this there was no other issue that I could've linked.

Feat: Custom Icons

The settings page should allow users to choose a custom icon for either twitter blue or verified users.

Leaving this up for grabs if someone wants to give it a go!

Add clown mode 🤡

Please include a mode which leaves blue check marks for normal, verified users and for paid users replaces the check mark with 🤡

Twitter has broken the extension.

Update seems to have just been pushed to the website.

image

The Trump parody account is paid verified while Alex Segura is actual verified.

Edit: Umm oops... I moved the folder and that's what broke it. OOPS. Closing this,

Chrome Web Store

Issue to track chrome web store submission process.

Current status: Pending

Userscript version?

I know extensions are more popular and mainstream option, but personally I prefer userscripts for site related tweaks.

Tampermonkey is most popular userscript manager, but I use Violentmonkey.

I'm personally fine without settings, if that's issue.

[Feature Request] Icon-Only Mode

Loving this extension, but I think I prefer it with just the images being switched around, would it be possible to have this as an option somehow?

Referring to removing the following:

  • Actually Verified

  • Paid for Verification

Then removing some of the styling in the div containers, I think this looks quite good.
E.g.
Verified:
image

Paid:
image

Love the extension, cheers guys!

[Suggestion] Userscript (Tampermonkey/Violentmonkey) version

Along with the extension versions taking script.js and slapping the userscript header allows it to work with Tampermonkey/Violentmonkey, meaning users of those don't have to install another extension to use this

(example header)

// ==UserScript==
// @name        eight-dollars
// @match       *://*.twitter.com/*
// @grant       none
// @version     1.1.0
// @author      William Seagar & Walter Lim
// @description eight-dollars can help you tell the difference between actual verified accounts and twitter blue users. Just install the extension and see the difference.
// ==/UserScript==

image
image

Could this extension work on embed tweets?

I don't know how hard (or time-worthy since Musk is going to be doing and undoing a lot of features) it would be to implement this extension to embed tweets. So, I'm asking if it's possible to incorporate this in embedded tweets. Thanks.

[BUG] verified badge replaced by original blue badge after page refresh

IMPORTANT PLEASE READ (REMOVE THIS WHEN SUBMITTING A REPORT)

Before reporting a bug please make sure you are using the latest browser extension from the appropriate extension store.

Extensions automatically update but may require a browser restart. Make sure that the issue persists after restarting your browser.

Info (please complete the following information):

  • Browser: Firefox & Edge
  • Platform: Windows 11
  • Extension Version: 1.3
  • Location: France
  • Twitter Language: French (France)

What happened
Steps to reproduce the behavior:

  1. install and enable extension
  2. disconnect Twitter account
  3. display a blue badge account page such as: https://twitter.com/bouyguestelecom
  4. verified badge is correctly displayed:
    image
  5. Refresh page, still correctly displayed
  6. Connect to your twitter account
  7. go to same verified twitter account such as https://twitter.com/bouyguestelecom, verified badge is correctly displayed
  8. Refresh page, then blue badge is displayed again:
    image

Expected behavior
I expect the verified badge should be displayed no matter if I refresh the page or if I connect to multiple account.

Additional context
The problem does not occur if I don't connect to my twitter account

[BUG] Save button disappear

Info:

  • Browser: Firefox 107.0.1
  • Platform: Windows 10
  • Extension: Version1.5
  • Location: India
  • Twitter Language (Include if using a non-English language)

What happened
Steps to reproduce the behavior:

  1. Disable Enable Text ,save Settings and Close the panel
  2. Enable checkbox Enable Text and add value to verified label and blue tick label
  3. Save Button is not showing in bottom

Additional context

  1. I also think that the font size is too large and save button is barely visible in normal cases.

Shows real verification on profile

When you are on your own profile, if you are verified, even with Twitter Blue it shows the regular Actually Verified.

(It shows just Verified for me since I slightly modified my version, but it should be easy to reproduce with the base version)

image

Support for new types of checkmarks

Twitter has been rolling out its new checkmark system with businesses having a golden checkmark and governments having a grey one. Here is a report on the new checkmarks, and here is an example tweet with a golden checkmark.

Could you add support to this new system? There could be some customization, in which the extension has a "classic" mode and all checkmarks appear blue. There could also be added functionality to change the icon of these new checkmarks and add custom labels next to them, similar to how it is done right now with the original vs. Blue checkmark configurations.

I have attached the colored checkmark specification image from the first linked tweet to here as well:
FjcX0sEaAAAo3jM

Source: @wongmjane

[Bug] Showing wrong info

First in my standard notifications tab I see this mixed info, same user and verified because of Twitter blue but on the like notification it shows they are legit.

image

Please document/complete/remove advanced search options

I like the idea of the advanced search options, but I can never actually complete the search, the search never runs, I just see a looping blue "working" bar, It's also not documented, and there appears to be no method to turn it off.

It seems completely unrelated to the purpose of eight dollars, and if so, it should probably be removed and put into its own extension.

Can you at least add a menu for the option to enable/disable it and then some documentation?
image

Finally on the twitter dark ui, the extension is almost impossible to read.

Feat: Options

In the chrome option panel we currently have:

  • The ability to toggle between a comic sans $ or a $ drawn closer to twitters font
  • The ability to enable/disable the "Actually Verified" & "Paid for Verification Text"
  • The ability to change this text to anything you want (should solve localization issues)
  • The ability to remove the pill's border
  • The ability to remove the Twitter blue verification checks entirely

Let's try make this a mega issue to discuss what else we want to add

[BUG] Extension breaks search

Info:

  • Browser: Chrome
  • Platform: Mac
  • Extension Version: 1.5
  • Location: UK

What happened
Steps to reproduce the behavior:

  1. Go to https://twitter.com/explore
  2. Click cursor into search textbox
  3. Search dropdown looks like this:

Screenshot 2022-11-26 at 23 58 48

  1. Type a search term (e.g. something) and press enter, and you get this:

Screenshot 2022-11-26 at 23 59 21

  1. Press enter again and the search actually runs, but the results are this:

Screenshot 2022-11-26 at 23 59 33

Expected behavior

  1. Go to https://twitter.com/explore
  2. Click cursor into search textbox
  3. Search dropdown looks like this:

Screenshot_2022-11-27_at_00_05_38

  1. Press enter only once, and get results like this:

Screenshot 2022-11-27 at 00 06 56

Additional context
Can't think of anything.

Possible bug?

Just noticed this. A screenshot is best way to explain.

This was in a twitter list. a retweet of an account showed as "paid", but the account is actually verified.
Screen Shot 2022-11-10 at 19 09 44
Let me know if you need more info...

Icon only mode + making Blue icon less noticeable

I changed the code of script.js to:

  • Remove the text and border next to the badges
  • Make both badges the same size
  • Reduce the visual importance of Blue badge and make it less noticeable than the Verified badge

Feel free to use this.

image

Made a PR here #16

const BLUE_CHECK_PATTERN =
  'svg path[d^="M22.25 12c0-1.43-.88-2.67-2.19-3.34.46-1.39.2-2.9-.81-3.91s-2.52-1.27-3.91-.81c-.66-1.31-1.91-2.19-3.34-2.19s-2.67.88-3.33 2.19c-1.4-.46-2.91-.2-3.92.81s-1.26 2.52-.8 3.91c-1.31.67-2.2 1.91-2.2 3.34s.89 2.67 2.2 3.34c-.46 1.39-.21 2.9.8 3.91s2.52 1.26 3.91.81c.67 1.31 1.91 2.19 3.34 2.19s2.68-.88 3.34-2.19c1.39.45 2.9.2 3.91-.81s1.27-2.52.81-3.91c1.31-.67 2.19-1.91 2.19-3.34zm-11.71 4.2L6.8 12.46l1.41-1.42 2.26 2.26 4.8-5.23 1.47 1.36-6.2 6.77z"]';

function changeVerified(elm, isSmall) {
  
  const small = `<svg viewBox="0 0 24 24" aria-label="Verified account" role="img" class="r-13v1u17 r-4qtqp9 r-yyyyoo r-1xvli5t r-f9ja8p r-og9te1 r-bnwqim r-1plcrui r-lrvibr"><g><path d="M22.25 12c0-1.43-.88-2.67-2.19-3.34.46-1.39.2-2.9-.81-3.91s-2.52-1.27-3.91-.81c-.66-1.31-1.91-2.19-3.34-2.19s-2.67.88-3.33 2.19c-1.4-.46-2.91-.2-3.92.81s-1.26 2.52-.8 3.91c-1.31.67-2.2 1.91-2.2 3.34s.89 2.67 2.2 3.34c-.46 1.39-.21 2.9.8 3.91s2.52 1.26 3.91.81c.67 1.31 1.91 2.19 3.34 2.19s2.68-.88 3.34-2.19c1.39.45 2.9.2 3.91-.81s1.27-2.52.81-3.91c1.31-.67 2.19-1.91 2.19-3.34zm-11.71 4.2L6.8 12.46l1.41-1.42 2.26 2.26 4.8-5.23 1.47 1.36-6.2 6.76z" style="fill: "#1D9BF0";"></path></g></svg>`
  const big =  `<div style='margin-left: 0.25rem; display: flex; flex-direction: row; align-items: center;'><svg viewBox="0 0 24 24" aria-label="Verified account" role="img" class="r-13v1u17 r-4qtqp9 r-yyyyoo r-1xvli5t r-f9ja8p r-og9te1 r-bnwqim r-1plcrui r-lrvibr"><g><path d="M22.25 12c0-1.43-.88-2.67-2.19-3.34.46-1.39.2-2.9-.81-3.91s-2.52-1.27-3.91-.81c-.66-1.31-1.91-2.19-3.34-2.19s-2.67.88-3.33 2.19c-1.4-.46-2.91-.2-3.92.81s-1.26 2.52-.8 3.91c-1.31.67-2.2 1.91-2.2 3.34s.89 2.67 2.2 3.34c-.46 1.39-.21 2.9.8 3.91s2.52 1.26 3.91.81c.67 1.31 1.91 2.19 3.34 2.19s2.68-.88 3.34-2.19c1.39.45 2.9.2 3.91-.81s1.27-2.52.81-3.91c1.31-.67 2.19-1.91 2.19-3.34zm-11.71 4.2L6.8 12.46l1.41-1.42 2.26 2.26 4.8-5.23 1.47 1.36-6.2 6.76z" style="fill: "#1D9BF0";"></path></g></svg></div>`;
  try {
    if (isSmall) {
      elm.parentElement.innerHTML = small;
    } else {
      elm.parentElement.parentElement.parentElement.innerHTML = big;
    }
  } catch (e) {
    console.log(elm);
    throw e;
  }
}

function changeBlueVerified(elm, isSmall) {
  const small = `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
  <path style="stroke: #AAAABC; stroke-width: 2px; stroke-linejoin: round; fill=none;" d="M22.25 12C22.25 10.57 21.37 9.33 20.06 8.66C20.52 7.27 20.26 5.76 19.25 4.75C18.24 3.74 16.73 3.48 15.34 3.94C14.68 2.63 13.43 1.75 12 1.75C10.57 1.75 9.33 2.63 8.67 3.94C7.27 3.48 5.76 3.74 4.75 4.75C3.74 5.76 3.49 7.27 3.95 8.66C2.64 9.33 1.75 10.57 1.75 12C1.75 13.43 2.64 14.67 3.95 15.34C3.49 16.73 3.74 18.24 4.75 19.25C5.76 20.26 7.27 20.51 8.66 20.06C9.33 21.37 10.57 22.25 12 22.25C13.43 22.25 14.68 21.37 15.34 20.06C16.73 20.51 18.24 20.26 19.25 19.25C20.26 18.24 20.52 16.73 20.06 15.34C21.37 14.67 22.25 13.43 22.25 12Z" />
  <path d="M 15.4893 13.9579 c 0 -1.9858 -2.1218 -2.5502 -3.0391 -2.8123 c -1.7338 -0.4838 -1.8799 -1.1088 -1.8547 -1.4263 c 0.0605 -0.7812 0.9173 -0.9727 1.7136 -0.8014 c 0.625 0.1361 1.2701 0.504 1.6279 0.7862 L 15.071 8.3736 c -0.5594 -0.383 -1.2751 -0.877 -2.3234 -1.0786 V 6.0048 h -1.6582 v 1.2449 C 9.4816 7.3706 8.4131 8.3786 8.4131 9.7646 c 0 1.3507 0.9778 1.9858 1.9555 2.4595 c 0.8165 0.3881 3.0946 0.7963 2.9635 1.8245 c -0.0706 0.5594 -0.6653 0.9727 -1.6481 0.8467 c -0.8568 -0.1058 -1.7741 -0.8266 -1.7741 -0.8266 l -1.255 1.2449 c 0.756 0.6098 1.5574 0.9929 2.4293 1.1693 v 1.2146 h 1.6582 v -1.1542 C 14.325 16.3721 15.4893 15.2935 15.4893 13.9579 z" fill="#AAAABC"/>
  </svg>`;
  const big = `<div style='margin-left: 0.25rem; display: flex; flex-direction: row; align-items: center;'><svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
  <path style="stroke: #AAAABC; stroke-width: 2px; stroke-linejoin: round; fill=none;" d="M22.25 12C22.25 10.57 21.37 9.33 20.06 8.66C20.52 7.27 20.26 5.76 19.25 4.75C18.24 3.74 16.73 3.48 15.34 3.94C14.68 2.63 13.43 1.75 12 1.75C10.57 1.75 9.33 2.63 8.67 3.94C7.27 3.48 5.76 3.74 4.75 4.75C3.74 5.76 3.49 7.27 3.95 8.66C2.64 9.33 1.75 10.57 1.75 12C1.75 13.43 2.64 14.67 3.95 15.34C3.49 16.73 3.74 18.24 4.75 19.25C5.76 20.26 7.27 20.51 8.66 20.06C9.33 21.37 10.57 22.25 12 22.25C13.43 22.25 14.68 21.37 15.34 20.06C16.73 20.51 18.24 20.26 19.25 19.25C20.26 18.24 20.52 16.73 20.06 15.34C21.37 14.67 22.25 13.43 22.25 12Z" />
  <path d="M 15.4893 13.9579 c 0 -1.9858 -2.1218 -2.5502 -3.0391 -2.8123 c -1.7338 -0.4838 -1.8799 -1.1088 -1.8547 -1.4263 c 0.0605 -0.7812 0.9173 -0.9727 1.7136 -0.8014 c 0.625 0.1361 1.2701 0.504 1.6279 0.7862 L 15.071 8.3736 c -0.5594 -0.383 -1.2751 -0.877 -2.3234 -1.0786 V 6.0048 h -1.6582 v 1.2449 C 9.4816 7.3706 8.4131 8.3786 8.4131 9.7646 c 0 1.3507 0.9778 1.9858 1.9555 2.4595 c 0.8165 0.3881 3.0946 0.7963 2.9635 1.8245 c -0.0706 0.5594 -0.6653 0.9727 -1.6481 0.8467 c -0.8568 -0.1058 -1.7741 -0.8266 -1.7741 -0.8266 l -1.255 1.2449 c 0.756 0.6098 1.5574 0.9929 2.4293 1.1693 v 1.2146 h 1.6582 v -1.1542 C 14.325 16.3721 15.4893 15.2935 15.4893 13.9579 z" fill="#AAAABC"/>
  </svg></div>`
  try {
    if (isSmall) {
      elm.parentElement.innerHTML = small;
    } else {
      elm.parentElement.parentElement.parentElement.innerHTML = big;
    }
  } catch (e) {
    console.log(elm);
    throw e;
  }
}

const headerNode =
  "span.css-901oao.css-16my406.r-xoduu5.r-18u37iz.r-1q142lx.r-poiln3.r-bcqeeo.r-qvutc0";
const tweets =
  "div.css-901oao.r-xoduu5.r-18u37iz.r-1q142lx.r-37j5jr.r-16dba41.r-bcqeeo.r-qvutc0";
const profileNode =
  "span.css-901oao.css-16my406.r-xoduu5.r-18u37iz.r-1q142lx.r-poiln3.r-adyw6z.r-135wba7.r-bcqeeo.r-qvutc0";

const search = `form > * > * > * > * > * > * > * > * > * > * > * > * > ${tweets}`;
const chat = `#layers > * > * > * > * > * > * > * > * > * > * > * > * > * > * > * > * > * > * > * > * > * > * > * > * > * > * > * > ${tweets}`;
const youMightLike = `div > aside > div:nth-child(2) > * > * >* > * > * > * > * > a > div > ${tweets}`;

async function main() {
  const observer = new MutationObserver(function (mutations, observer) {
    for (const mutation of mutations) {
      // run query selector on each added node
      const selectors = [search, chat, youMightLike, headerNode, tweets, profileNode];
      for (const selector of selectors) {
        const isSmall = selectors.indexOf(selector) < 3;
        for (const node of mutation.addedNodes) {
          if (node.nodeType === 1) {
            const elms = node.querySelectorAll(selector);
            for (const elm of elms) {
              const svg = node.querySelector(BLUE_CHECK_PATTERN);
              if (svg) {
                const names = Object.getOwnPropertyNames(elm);
                const reactPropsName = names.find((name) =>
                  name.startsWith("__reactProps")
                );
                if (!reactPropsName) {
                  console.log("Couldn't find react props", node);
                  continue;
                }
                const props = elm[reactPropsName];
                const isBlueVerified =
                  props.children.props.children[0][0].props.isBlueVerified;
                const isVerified =
                  props.children.props.children[0][0].props.isVerified;

                if (isVerified) {
                  changeVerified(svg, isSmall);
                } else if (isBlueVerified) {
                  changeBlueVerified(svg, isSmall);
                }
              }
            }
          }
        }
      }
    }
  });

  observer.observe(document, {
    childList: true,
    subtree: true,
  });
}

main();

Add extension to opera store

I guess the extension could be added to the Opera store though I'm not sure if it's worth the hassle.
I also don't know how straight forward adding extensions to the Opera store is but I guess it could be tried?

[BUG] Does not work when in the Notifications Tab

Info

  • Browser: Firefox 107.0 (64-bit)
  • Platform: macOS Ventura 13.0.1
  • Extension Version: 1.3
  • Location: US

What happened
Steps to reproduce the behavior:

  1. Go to Notifications
  2. Scroll down until you see someone with a checkmark
  3. See the error

Screenshots
Screenshot 2022-11-19 at 10 39 38 PM

Screenshot 2022-11-19 at 10 49 18 PM

Expected behavior
I should have seen the money badge instead of the real one

Additional context
My settings:
Screenshot 2022-11-19 at 10 51 50 PM

Stop working when connected to multiple accounts

Tested on Edge and Firefox:
If I connect to a single Twitter account then extension works as expected, i.e. displays paid/verified on blue badge accounts.
When I connect to an additional Twitter account then the extension stops displaying the paid/verified status
Disconnecting from one of the accounts is not enough, need to disconnect all Twitter accounts and connect to only one.

Does not work anymore.

Worked yesterday but today it broke. I'm on Firefox Developer Edition 107.0b9

Could be linked to #52 because I have multiple accounts(but it worked like normal yesterday)

What is the license for this project?

Thanks for this fun extension. I'd love to modify it to display things a bit differently, but I don't want to do so without proper license/permission.

What license are you distributing this open source code under?

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.