I know, the name is way too random.
- ๐ Iโm interested in Kotlin & Android
- ๐ฑ Iโm currently learning Rust
- ๐ I use Windows btw
Add my F-Droid repository:
This project forked from vfsfitvnm/vimusic
An Android application for seamless music streaming
Home Page: https://vitune.app
License: GNU General Public License v3.0
I know, the name is way too random.
Add my F-Droid repository:
It should work fine
But the favorite, prev and next button flicker very quickly
No response
V.0.6.2
Android 10
It happens randomly and works normally after sometimes again
At the moment, the search function only filters by song name.
When I search for an artist name, nothing is found.
The search function should filter by song name and at the same time by artist name.
No response
No response
0.5.7
Android 12
No response
After adding any artist as favourite.
Artist is seen under Artist section.
After opening the artist the cover image is updated.
It should be updated automatically without opening.
It is updated after opening the artist page.
`
`
`
`
`
Latest commit
Andorid 8
Device :-Moto G4 +
Android :- Oreo 8
this app isn't able to install via package manager while unforked official app works on my device
while installing package manager shows app not installed :(
I would like to use the app in my language.
If you wish, I would also translate it if you provide me with the file for translation.
A search function in all playlists would be cool. To find the title you are looking for faster in playlists with 500+ songs and not scroll up and down for minutes
Go to player.
Click on bass boost.
After switching to this, the app should work as normal and the feature should be activated.
App crashes and doesn't start again until I deleted all storage data.
No response
No response
0.5.10
Android 13
No response
An ability to downvote songs that you don't like should be available so that the song doesn't play again when in autoplay mode or when you select a radio for similar songs.
Thank you.
Would be cool if you could change the title on the "Now Playing" screen by swiping.
Swipe left on the cover image for the next song, swipe right for the previous song.
On Spotify, similar songs are recommended at the bottom of a created playlist, which can be added to the playlist with a + symbol. I would find such a function mega cool with ViMusic but I don't know if and to what extent something like this would be possible?
Would it be possible to add a download function for songs, playlists and albums.
The app already has a cache function - maybe you can use it for the download function somehow.
This fork of vi music has came to be the one of the most stable branch, wouldn't it be a good idea to give it a custom name and rebranding?!!
this may include
You can achieve those by creating a new discussion about name/icon in GitHub repo
This rebranding will give this repo it's Unique essence and attract a wider userbase who are migrating from official repo
@25huizengek1 I've noticed that the songs in the playlists are limited to 77, as I've imported my liked songs which are over 1k. Is there any way to fix this?
I mean, I have the playlist of yt music in which the playlist has over 1k songs. When I imported it to vi music via opening links, it only got the 77 songs out of 1k+ songs.
This playlist has over a thousand songs
And here is the imported playlist of it to vi music, which only has 77 songs of the playlist.
Originally posted by @tanmaytez in #27 (comment)
As pointed out in #27 (comment), I personally can't reproduce. Thank you @tanmaytez for pointing this out though, as I want to make the app as stable as possible.
Can you please elaborate further on how this works? I personally do not have a share button for 'Liked Music' in the official YouTube Music app.
I got to know this fork, it's really good!โค๏ธ
And I would like to suggest a request to make a widget for this app like yt music turnable or any
Originally posted by @tanmaytez in #26 (comment)
Thank you, @tanmaytez, for this suggestion. Can you please elaborate a bit further about what kind of widget you want and what it should look like?
At the moment new releases are displayed under discover but 99% of these artists or songs are of no interest to me.
Would it be possible to display new releases of singles and albums of the artists you have marked or have in your library to stay up to date?
The search function in the local area is not working properly.
You search for a song or artist but something else is played.
See video.
No response
0.5.9
Android 12
No response
Search for a song from the "song" section
it plays other song
it should play the exact song
when i search for a song it plays other song
No response
latest version
android 11
No response
Queue is cleared and song stops playing
App crashes
FATAL EXCEPTION: main
Process: it.vfsfitvnm.vimusic, PID: 13539
java.lang.NullPointerException: Attempt to read from field 'android.os.Bundle android.app.Notification.extras' on a null object reference in method 'void android.app.Notification.addFieldsFromContext(android.content.pm.ApplicationInfo, android.app.Notification)'
at android.app.Notification.addFieldsFromContext(Notification.java:3429)
at android.app.Notification.addFieldsFromContext(Notification.java:3422)
at android.app.NotificationManager.fixNotification(NotificationManager.java:704)
at android.app.NotificationManager.notifyAsUser(NotificationManager.java:695)
at android.app.NotificationManager.notify(NotificationManager.java:644)
at android.app.NotificationManager.notify(NotificationManager.java:620)
at androidx.activity.d.run(SourceFile:4)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:240)
at android.os.Looper.loop(Looper.java:351)
at android.app.ActivityThread.main(ActivityThread.java:8377)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
0.5.11
ColorOS 13, based on Android 13
No response
Searching a song sometimes
return the amount of views instead of creator name
It should show creator/uploader name
It shows total video views
This is a not expected Result :
Also both of the screenshots are taken from the same version of the app
No response
0.5.11
Oreo (8.1)
No response
Thanks Bro, for the existing Piped integration. Is it possible to extend this, i.e. to create, delete and edit piped playlists with ViMusic?
So, as the title says, when you try to change song order inside a playlist the change doesn't appear to take effect. In fact it automatically reverts to previous state.
You can easily see it on video. I change order but as soon as I click it changes and the song I click is not the one that I listen.
Correct rearrangement of songs.
Already described
No response
Latest
Android 14
App is really good. Definitely an improvement from (discontinued?) Original ViMusic. Minor lags found. Other minor bugs were found too.
Is there any way to turn off the new player and switch back to old one (official fork)
I really didn't liked the position of like and previous buttons in the player
Could you swap the places of those (like and prevoius button) since it's causing the design inconsistency. (or rather add an option to switch to old player in the app itself).
Reference below
Also could you control the button roundness via the thumbnail Roundness option , cause it's causing issues on devices with smaller screen
Thanks I've finally switched to this fork
Add a like icon in the mini player to like music faster directly from the lock screen.
If you listen to music and simply want to quickly add the song to your favorites, for example: Favorites. In this case, it would be a great relief and you wouldn't have to take the detour of unlocking the screen to go to the app.
I would find a listening statistic like Innertune's very interesting to track his listening statistics.
Mostly songs listened to within a week, within a month, within 6 months, within a year.
Most listened artist within a week, within a month, within 6 months, within a year.
Most listened album within a week, within a month, within 6 months, within a year.
Should it be interesting for you and feasible.
You could have a look at it at Innertune.
KLPW and KWGT to detect ViMusic as a music player
The lyrics editor pop-up should appear
The app crashes
No response
FATAL EXCEPTION: main
Process: it.vfsfitvnm.vimusic, PID: 31398
java.lang.ArrayIndexOutOfBoundsException: length=20480; index=-1
at M3.c.x(SourceFile:5)
at E.r.l0(SourceFile:19)
at E.r.g(SourceFile:11)
at a4.h.p(SourceFile:248)
at M.d.p(SourceFile:54)
at F0.c.a(SourceFile:111)
at F0.c.p(SourceFile:40)
at M.d.p(SourceFile:54)
at F4.i.j(SourceFile:193)
at F0.c.a(SourceFile:83)
at F0.c.p(SourceFile:28)
at M.d.p(SourceFile:54)
at F0.o.a(SourceFile:22)
at m.j.a(SourceFile:272)
at m.j.p(SourceFile:269)
at M.d.p(SourceFile:54)
at L4.r.b(SourceFile:152)
at androidx.compose.ui.platform.q0.a(SourceFile:366)
at u.j.a(SourceFile:1232)
at u.j.p(SourceFile:52)
at M.d.p(SourceFile:54)
at L4.r.b(SourceFile:152)
at androidx.compose.ui.platform.X.a(SourceFile:495)
at androidx.compose.ui.platform.u1.a(SourceFile:171)
at androidx.compose.ui.platform.u1.p(SourceFile:28)
at M.d.p(SourceFile:54)
at L4.r.a(SourceFile:220)
at androidx.compose.ui.platform.u1.a(SourceFile:145)
at androidx.compose.ui.platform.u1.p(SourceFile:16)
at M.d.p(SourceFile:54)
at r4.r.i0(SourceFile:15)
at E.r.r(SourceFile:118)
at E.r.k(SourceFile:11)
at E.y.o(SourceFile:34)
at E.J0.a(SourceFile:35)
at E.p.a(SourceFile:5)
at E.p.a(SourceFile:5)
at E.y.p(SourceFile:9)
at E.y.k(SourceFile:3)
at androidx.compose.ui.platform.v1.c(SourceFile:100)
at androidx.compose.ui.platform.AndroidComposeView.setOnViewTreeOwnersAvailable(SourceFile:7)
at androidx.compose.ui.platform.WrappedComposition.k(SourceFile:9)
at androidx.compose.ui.platform.WrappedComposition.e(SourceFile:1)
at androidx.lifecycle.v.a(SourceFile:23)
at androidx.lifecycle.w.a(SourceFile:216)
at androidx.compose.ui.platform.v1.c(SourceFile:68)
at androidx.compose.ui.platform.AndroidComposeView.onAttachedToWindow(SourceFile:109)
at android.view.View.dispatchAttachedToWindow(View.java:21475)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3540)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3547)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3547)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3547)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3547)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2957)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2442)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9399)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1388)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1396)
at android.view.Choreographer.doCallbacks(Choreographer.java:1033)
at android.view.ChoreographerExtImpl.checkScrollOptSceneEnable(ChoreographerExtImpl.java:420)
at android.view.Choreographer.doFrame(Choreographer.java:900)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1371)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:240)
at android.os.Looper.loop(Looper.java:351)
at android.app.ActivityThread.main(ActivityThread.java:8377)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
0.6.0
ColorOS 13, based on Android 13
No response
Hi,
Thanks for adding so many good features and making the app more useable. I have a suggestion:
As it is it takes too many motions to reach the queue so a dedicated button in the collapsed mini player or a motion like holding down on the mini player to go to queue would be appreciated
Expand the My Top 10 to 50 or even 100.
You would have a really great, automatically created playlist with your favorite songs and this also over different periods of time.
No response
No response
0.5.5
Android 12
No response
Scroll quick picks
scrolling should be smooth
scrolling is not smooth
No response
latest version
android 11
No response
Creating smart playlists, i.e. you create a playlist with certain prerequisites and when listening to music, the songs are automatically added to the playlist when the prerequisites are met.
It's a bit difficult to explain, but I saw it on an offline player and thought it was a really cool feature.
If you like the idea you could have a look at it.
Suggested Solution
When searching a song in library the hide song doesn't seem to work properly
This happens in following modes (as far as i know)
this should clear the cache of the song and remove it from listening history
does nothing
No response
0.5.11
Andorid 8.1
No response
A new button to specify a song should be added to the queue 2, 3... songs down the queue of what's currently playing
Ability to remove the entire song queue instead of individual songs. Could be implemented as a button in the bottom bar of the playlist manager
Would it be possible to support piped or invidious accounts and custom instances for library backups and then have your playlists cross-device?
No response
No response
0.5.5
Android 12
No response
No response
No response
V.0.6.2
Android 10
The database I'm trying to import was exported from the classic vimusic app and
I've attached the file as .zip
Moving this bug report to a separate issue @siggi1984
I use kavin.rocks
Unfortunately I have no idea how to create these logs.
At the moment I can't even select an instance. See video.
My device: Samsung Galaxy a21s, Android 12.
Originally posted by @siggi1984 in #2 (comment)
No logs provided (yet). Unfortunately cannot reproduce.
The instance list not working is not a problem on my end: the instance list is currently not reachable (partial downtime).
Side note: video resolving can be inconsistent right now, as ViMusic relies on whatever.social to resolve more possible video/audio streams to make more songs available on ViMusic. Since whatever.social is currently down (status), this can be an inconvenience. If you have listened to a song before, this won't impact you for that particular song, but other songs that you've never listened to may be unavailable now.
Thank you for reporting this @siggi1984
Go to "Discover"
Choose any "Moods and Genres" option
Then Choose any Playlist
It doesn't load properly.
It should be open to play any song.
It doesn't load playlist (some)
No response
0.5.10 latest build(6/12/23)
Android 13
No response
I know there is already a backup function, but an automatic backup function like Blackhole would be very useful or a scheduled, e.g. automatic backup once a day, it would also be cool if you could specify your cloud as the location for the backup file. In case you change your phone or tablet, it gets stolen or breaks, you would always have a backup file that you could restore.
Is this app doesn't support Android 14?
This app repeatedly stopped after opening in Latest Android.
No response
V.0.6.2
Android 10
It's quite minor but I think you might want to fix it
The dialog should open, keyboard should show.
App crashes
No response
FATAL EXCEPTION: main
Process: it.vfsfitvnm.vimusic, PID: 31252
java.lang.ArrayIndexOutOfBoundsException: length=40960; index=-1
at androidx.compose.runtime.SlotTableKt.slotAnchor(SlotTable.kt:3505)
at androidx.compose.runtime.SlotTableKt.access$slotAnchor(SlotTable.kt:1)
at androidx.compose.runtime.SlotReader.getGroupSlotIndex(SlotTable.kt:963)
at androidx.compose.runtime.ComposerImpl.updateValue(Composer.kt:1936)
at androidx.compose.runtime.ComposerImpl.changed(Composer.kt:1795)
at it.vfsfitvnm.vimusic.ui.components.themed.DialogKt$TextFieldDialog$$inlined$DefaultDialog$1.invoke(Dialog.kt:530)
at it.vfsfitvnm.vimusic.ui.components.themed.DialogKt$TextFieldDialog$$inlined$DefaultDialog$1.invoke(Dialog.kt:250)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
at androidx.compose.ui.window.AndroidDialog_androidKt$Dialog$dialog$1$1$1$2.invoke(AndroidDialog.android.kt:177)
at androidx.compose.ui.window.AndroidDialog_androidKt$Dialog$dialog$1$1$1$2.invoke(AndroidDialog.android.kt:176)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
at androidx.compose.ui.window.AndroidDialog_androidKt.DialogLayout(AndroidDialog.android.kt:505)
at androidx.compose.ui.window.AndroidDialog_androidKt.access$DialogLayout(AndroidDialog.android.kt:1)
at androidx.compose.ui.window.AndroidDialog_androidKt$Dialog$dialog$1$1$1.invoke(AndroidDialog.android.kt:174)
at androidx.compose.ui.window.AndroidDialog_androidKt$Dialog$dialog$1$1$1.invoke(AndroidDialog.android.kt:171)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
at androidx.compose.ui.window.DialogLayout.Content(AndroidDialog.android.kt:270)
at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:252)
at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:251)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals(CompositionLocals.kt:186)
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:119)
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:118)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.ProvideAndroidCompositionLocals(AndroidCompositionLocals.android.kt:110)
at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$2.invoke(Wrapper.android.kt:139)
at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$2.invoke(Wrapper.android.kt:138)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:248)
at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:138)
at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:123)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
at androidx.compose.runtime.ActualJvm_jvmKt.invokeComposable(ActualJvm.jvm.kt:90)
at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3302)
at androidx.compose.runtime.ComposerImpl.composeContent$runtime_release(Composer.kt:3235)
at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:723)
at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:1071)
at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:3599)
at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:3599)
at androidx.compose.runtime.CompositionImpl.composeInitial(Composition.kt:631)
at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:617)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:123)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:114)
at androidx.compose.ui.platform.AndroidComposeView.setOnViewTreeOwnersAvailable(AndroidComposeView.android.kt:1289)
at androidx.compose.ui.platform.WrappedComposition.setContent(Wrapper.android.kt:114)
at androidx.compose.ui.platform.WrappedComposition.onStateChanged(Wrapper.android.kt:164)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.kt:314)
at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.kt:192)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:121)
at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:114)
at androidx.compose.ui.platform.AndroidComposeView.onAttachedToWindow(AndroidComposeView.android.kt:1364)
at android.view.View.dispatchAttachedToWindow(View.java:20753)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3490)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3497)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2613)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2126)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8653)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1037)
at android.view.Choreographer.doCallbacks(Choreographer.java:845)
at android.view.Choreographer.doFrame(Choreographer.java:780)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1022)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7839)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
v0.6.0
Android 12 (API 31), also able to repro on Android 13
I know about this crash, which is why I've made this issue myself. It is not caused by a bug in this codebase, but rather a bug in Compose Foundation. Tracking issues for this particular case in here.
There are possible workarounds, so maybe if this turns out not to be fixed by Google then I'll of course try and implement such workaround.
Listen to music
Moderate battery usage
High battery Usage
Here is a quick ChatGpt response.
No response
v0.6.2
Oreo (8.1)
After permanently switching to this repo i've found that the app uses way more battery then it should also it uses a lot of resources as compared to official app.
Yeah there are some features implementations beyond the official app but the battery usage is a lot as compared to other apps.
Probably there's some background process recurring again n again.
The error has been fixed since the last update
.
No response
0.6.0
Android 12
No response
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.