Giter Club home page Giter Club logo

hass-gshell-extension's Introduction

๐Ÿ‘‹ Hi there, Iโ€™m @geoph9

  • ๐Ÿ‘€ Iโ€™m interested in NLP, Speech Processing, and local-only smart home systems, among other things.
  • ๐ŸŒฑ Iโ€™m currently learning more about curriculum learning and unsupervised/lightly-supervised speech recognition.
  • I'm always open to collaborate on new topics!

hass-gshell-extension's People

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

Watchers

 avatar

hass-gshell-extension's Issues

Last sensor reading is truncated with ...

Hi,
first of all, thank you very much for this great extension! It is a real joy to control my ha entities over the gnome shell :)
I have encountered one problem: When I want to display a sensor value, it always gets truncated with ... at the end. If I add another one, only the last value is truncated like this.

overflow1
overflow 2

Is anyone experiencing the same? Maybe it is some overflow issue with the top bar? Any advice is appreciated! Thank you!

Icon suggestion

Hello,

Small suggestion for better integration with the gnome bar

ha_white

ha_before
ha_after

Uncleaned Information in Panel

Hi,

i noticed that on screen lock the stats get rendered but the previous not cleared. Not sure but i think it is because you need also to act and remove the panels on destroy manually with something like

this.menu.connect('destroy', this._destroyExtension.bind(this))

Screenshot from 2022-06-13 09-09-51

Adding a scrollbar to the Togglables section

I have a lot of toggle entities in my home assistant and they get cut off at the bottom of my screen so I can't select the ones I want.
Could you add a scrollbar to that section?

Create toggle button to allow invalid certificates.

See #52 .

The idea is to add a toggle button (probably right below the panel icon option in the preferences) that will allow users to accept invalid tls certificates.

#52 contains the new _constructMessage function in utils.js. An addition to that would be that the user should also be warned (e.g. a red text would appear underneath that option in the preferences).

As for the implementation, there should be a global option allow-invalid-certificates in the app's configuration (and also in settings.js). Every time send_request (and _constructMessage) is called, this option will be read, and if true the accept-certificate handler will return true.

Remove duplicate Temperature & Humidity ID from General Settings.

I accidentally clicked [Add] multiplule times after entering my Temperature ID and Humidity ID into Settings > general > Temperature/Humidity options. Now the temp shows up multiple times (in the tray/bar.) How can one remove duplicates? Only button i'm finding is ADD, no modify or remove. Thanks.

[Suggestion] More sensors

I think it would be nice to have ability to add more than temperature/hnmidity sensors to show at tray. Can it be extended add any number of custom sensors?

Extension crash on Gnome startup when HASS is not reacheable

As discussed in #58, On my Debian Bookworm installation (Gnome 44 / GTK4), when I open my session without network, the extension crash and can't be restarted in parameters :

error

With bad network (on mobile data or bad Wifi for example), it worse because it try to reach HASS for every declared entities and each request blocked the startup for some long delay.

I partially fixed the problem by adding a try/catch in send_request() (around session.send_and_read() call) and setting a smaller timeout on session (using session.set_timeout()), but the main problem is these requests are synchronous. I mean the right way to fix this problem is to refactor the code to use Soup.Session.send_and_read_sync() and callbacks instead of the synchronous Soup.Session.send_and_read().

It's a quite long work I mean due to the impact of this change, so I prefer to ask you your idea on this problem before working on a PR.

Build script references a different filename than current releases

Both versions 44 and 45 have a filename like:
https://github.com/geoph9/hass-gshell-extension/releases/download/45/[email protected]
instead of what the build script looks for of [email protected]

wget -q https://github.com/geoph9/hass-gshell-extension/releases/download/"$vers"/[email protected] || check_releases "$vers"

Either the releases should be updated to have the correct filenames or the script should try both I believe

(As a note, I'm trying the build script as the Gnome 45 release still hasn't been updated to https://extensions.gnome.org/extension/4170/home-assistant-extension/ )

Access Token is not saved

I added the URL in the General Settings, click "Add", it's ok.
I add the access token that I generate it from HA, click "Add", a message with "Success!" show up.
If I close and open it again my access token disappear and the connection is not working, of course

Getting "Gio.TlsError: Unacceptable TLS certificate"

I am using my local IP to connect to HA, as far as I am concerned there are no such things as certificates for local IP's, therefore HAE should be able to ignore the certificate.

I am sorry if I misunderstand something here, my knowledge about that stuff is pretty limited.

Bug on master: Cannot check or uncheck togglables or panel sensors

While trying to implement PR #64 (Issue #63) I encountered the issue that no Togglables or Panel Sensors can be checked or unchecked in the settings panel. The tick can be set while the window is open, but the content of the schema keys hass-enabled-sensor-ids and hass-enabled-entities don't change. When closing the settings pages, the ticks are reset like they were before.

Tested on commit hash 6c31b24

This issue does not occur in the Gnome Extension Store version.

Visual indications about entity's state

The entities are currently shown as "Toggle: Light_1".

A neat feature would be to be able to see (and maybe select select) the state of each entity. Either:

  • through text "On: Light_1".
  • through colours "Toggle: Light_1" (background in yellow [or coloured] if on. Grey if it's off)
  • through icons ":bulb: Toggle: Light_1"

Display fiendly names instead of entity ids in menu.

I have only entity IDs in list of togglables and can't figure out if it is possible to get friendly name like "Kitchen light" instead of entity ID (sonoff.switch_1000abcde) in the list of togglable items. If not, is it possible to add such option in future releases? Thanks.

Can't enable a toggleable on Ubuntu 22.04

I tried to setup your extension (from gnome extensions page) on Ubuntu 22.04 (latest) and that worked, but I can't enable a toggleable. Whenever I enable it, the box is checked, but it doesn't appear in the panel menu. Not even after a logout and login.
Whenever I close the preferences menu and repoen it, the toggleable appears deselected again.

gnome-shell logs give me:

Opening Preferences...
	Rebuilding tray...
	Object St.BoxLayout (0x55d04c621fa0), has been already disposed โ€” impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
	== Stack trace for context 0x55d04af4f4b0 ==
	#0   55d05145fb28 i   resource:///org/gnome/shell/ui/popupMenu.js:766 (183d1a915420 @ 22)
	#1   55d05145fa20 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:63 (3d55a8261ba0 @ 73)
	#2   55d05145f998 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:35 (3d55a8261b50 @ 41)
	#3   7ffd0f772a00 b   self-hosted:1178 (dc89fab0a10 @ 454)
	Rebuilding tray...
	== Stack trace for context 0x55d04af4f4b0 ==
	#0   55d05145fd80 i   resource:///org/gnome/shell/ui/popupMenu.js:766 (183d1a915420 @ 22)
	#1   55d05145fc78 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:63 (3d55a8261ba0 @ 73)
	#2   55d05145fbf0 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:35 (3d55a8261b50 @ 41)
	#3   7ffd0f770400 b   self-hosted:1178 (dc89fab0a10 @ 454)
	#4   7ffd0f771db0 b   resource:///org/gnome/gjs/modules/core/overrides/Gio.js:533 (dc89fad32e0 @ 169)
	#5   55d05145fb28 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:250 (3d55a8261f60 @ 544)
	#6   55d05145fa20 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:73 (3d55a8261ba0 @ 175)
	#7   55d05145f998 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:35 (3d55a8261b50 @ 41)
	#8   7ffd0f772a00 b   self-hosted:1178 (dc89fab0a10 @ 454)
	Object St.BoxLayout (0x55d04c621fa0), has been already disposed โ€” impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
	Object St.BoxLayout (0x55d04c621fa0), has been already disposed โ€” impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
	== Stack trace for context 0x55d04af4f4b0 ==
	#0   55d05145fe88 i   resource:///org/gnome/shell/ui/environment.js:83 (dc89facc150 @ 20)
	#1   55d05145fda0 i   resource:///org/gnome/shell/ui/popupMenu.js:706 (183d1a9151f0 @ 65)
	#2   7ffd0f76f960 b   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:92 (3d55a8261ba0 @ 900)
	#3   55d05145fbf0 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:35 (3d55a8261b50 @ 41)
	#4   7ffd0f770400 b   self-hosted:1178 (dc89fab0a10 @ 454)
	#5   7ffd0f771db0 b   resource:///org/gnome/gjs/modules/core/overrides/Gio.js:533 (dc89fad32e0 @ 169)
	#6   55d05145fb28 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:250 (3d55a8261f60 @ 544)
	#7   55d05145fa20 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:73 (3d55a8261ba0 @ 175)
	#8   55d05145f998 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:35 (3d55a8261b50 @ 41)
	#9   7ffd0f772a00 b   self-hosted:1178 (dc89fab0a10 @ 454)
	Object St.BoxLayout (0x55d04c621fa0), has been already disposed โ€” impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
	== Stack trace for context 0x55d04af4f4b0 ==
	#0   55d05145fe88 i   resource:///org/gnome/shell/ui/environment.js:83 (dc89facc150 @ 20)
	#1   55d05145fda0 i   resource:///org/gnome/shell/ui/popupMenu.js:706 (183d1a9151f0 @ 65)
	#2   7ffd0f76f960 b   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:96 (3d55a8261ba0 @ 966)
	#3   55d05145fbf0 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:35 (3d55a8261b50 @ 41)
	#4   7ffd0f770400 b   self-hosted:1178 (dc89fab0a10 @ 454)
	#5   7ffd0f771db0 b   resource:///org/gnome/gjs/modules/core/overrides/Gio.js:533 (dc89fad32e0 @ 169)
	#6   55d05145fb28 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:250 (3d55a8261f60 @ 544)
	#7   55d05145fa20 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:73 (3d55a8261ba0 @ 175)
	#8   55d05145f998 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:35 (3d55a8261b50 @ 41)
	#9   7ffd0f772a00 b   self-hosted:1178 (dc89fab0a10 @ 454)
	== Stack trace for context 0x55d04af4f4b0 ==
	#0   55d05145fe88 i   resource:///org/gnome/shell/ui/environment.js:83 (dc89facc150 @ 20)
	#1   55d05145fda0 i   resource:///org/gnome/shell/ui/popupMenu.js:734 (183d1a9151f0 @ 449)
	#2   7ffd0f76f960 b   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:96 (3d55a8261ba0 @ 966)
	#3   55d05145fbf0 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:35 (3d55a8261b50 @ 41)
	#4   7ffd0f770400 b   self-hosted:1178 (dc89fab0a10 @ 454)
	#5   7ffd0f771db0 b   resource:///org/gnome/gjs/modules/core/overrides/Gio.js:533 (dc89fad32e0 @ 169)
	#6   55d05145fb28 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:250 (3d55a8261f60 @ 544)
	Object St.BoxLayout (0x55d04c621fa0), has been already disposed โ€” impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
	#7   55d05145fa20 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:73 (3d55a8261ba0 @ 175)
	#8   55d05145f998 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:35 (3d55a8261b50 @ 41)
	#9   7ffd0f772a00 b   self-hosted:1178 (dc89fab0a10 @ 454)
	Object St.BoxLayout (0x55d04c621fa0), has been already disposed โ€” impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
	== Stack trace for context 0x55d04af4f4b0 ==
	#0   7ffd0f76ebf0 b   resource:///org/gnome/shell/ui/environment.js:83 (dc89facc150 @ 20)
	#1   55d05145fda0 i   resource:///org/gnome/shell/ui/popupMenu.js:706 (183d1a9151f0 @ 65)
	#2   7ffd0f76f960 b   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:122 (3d55a8261ba0 @ 1340)
	#3   55d05145fbf0 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:35 (3d55a8261b50 @ 41)
	#4   7ffd0f770400 b   self-hosted:1178 (dc89fab0a10 @ 454)
	#5   7ffd0f771db0 b   resource:///org/gnome/gjs/modules/core/overrides/Gio.js:533 (dc89fad32e0 @ 169)
	#6   55d05145fb28 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:250 (3d55a8261f60 @ 544)
	#7   55d05145fa20 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:73 (3d55a8261ba0 @ 175)
	#8   55d05145f998 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:35 (3d55a8261b50 @ 41)
	#9   7ffd0f772a00 b   self-hosted:1178 (dc89fab0a10 @ 454)
	clutter_actor_remove_child: assertion 'child->priv->parent != NULL' failed
	Object St.BoxLayout (0x55d04c621fa0), has been already disposed โ€” impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
	== Stack trace for context 0x55d04af4f4b0 ==
	#0   7ffd0f771270 b   resource:///org/gnome/shell/ui/environment.js:83 (dc89facc150 @ 20)
	#1   55d05145fb48 i   resource:///org/gnome/shell/ui/popupMenu.js:706 (183d1a9151f0 @ 65)
	#2   7ffd0f771f60 b   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:92 (3d55a8261ba0 @ 900)
	#3   55d05145f998 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:35 (3d55a8261b50 @ 41)
	#4   7ffd0f772a00 b   self-hosted:1178 (dc89fab0a10 @ 454)
	Object St.BoxLayout (0x55d04c621fa0), has been already disposed โ€” impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
	== Stack trace for context 0x55d04af4f4b0 ==
	#0   7ffd0f771270 b   resource:///org/gnome/shell/ui/environment.js:83 (dc89facc150 @ 20)
	#1   55d05145fb48 i   resource:///org/gnome/shell/ui/popupMenu.js:706 (183d1a9151f0 @ 65)
	#2   7ffd0f771f60 b   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:96 (3d55a8261ba0 @ 966)
	#3   55d05145f998 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:35 (3d55a8261b50 @ 41)
	#4   7ffd0f772a00 b   self-hosted:1178 (dc89fab0a10 @ 454)
	== Stack trace for context 0x55d04af4f4b0 ==
	#0   7ffd0f771270 b   resource:///org/gnome/shell/ui/environment.js:83 (dc89facc150 @ 20)
	#1   55d05145fb48 i   resource:///org/gnome/shell/ui/popupMenu.js:734 (183d1a9151f0 @ 449)
	#2   7ffd0f771f60 b   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:96 (3d55a8261ba0 @ 966)
	#3   55d05145f998 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:35 (3d55a8261b50 @ 41)
	#4   7ffd0f772a00 b   self-hosted:1178 (dc89fab0a10 @ 454)
	Object St.BoxLayout (0x55d04c621fa0), has been already disposed โ€” impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
	Object St.BoxLayout (0x55d04c621fa0), has been already disposed โ€” impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
	== Stack trace for context 0x55d04af4f4b0 ==
	#0   7ffd0f7716a0 b   resource:///org/gnome/shell/ui/environment.js:83 (dc89facc150 @ 20)
	#1   7ffd0f771e10 b   resource:///org/gnome/shell/ui/popupMenu.js:706 (183d1a9151f0 @ 65)
	#2   7ffd0f771f60 b   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:122 (3d55a8261ba0 @ 1340)
	#3   55d05145f998 i   ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/extension.js:35 (3d55a8261b50 @ 41)
	#4   7ffd0f772a00 b   self-hosted:1178 (dc89fab0a10 @ 454)
	clutter_actor_remove_child: assertion 'child->priv->parent != NULL' failed

--> I've replaced my home directory with ~/

System unresponsive after toggling item

After I click "Toggle XYZ", GNOME is frozen for a short moment (possibly until the request is completed?). See video below (I was constantly moving the mouse)

VID_20210822_175839_LS.mp4

Not able to build using the recommended build method & Installed extension via Gnome Shell Extensions is not functioning

Hi,

I am not able to build the extension using the recommended method.

Here is the log received:

./build.sh: Downloading extension for version 42.4...
./build.sh: Error: You either don't have 'wget' installed or the version 42.4 is invalid.
./build.sh: Check the available versions from the releases page on github:
https://github.com/geoph9/hass-gshell-extension/releases

Trying to install on Ubuntu 22.04 & GNOME Shell 42.4

Gnome Shell Extensions Web Install Issue:
I tried installing via Gnome Shell Extensions & it got installed but not functional & keeps crashing after saving long lived token.

Any help is appreciated.

Cheers

Can't install the extension with build.sh on Ubuntu 20.04

Whenever I execute build.sh, I get:

./build.sh: Downloading extension for version 42.5...
./build.sh: Error: You either don't have 'wget' installed or the version 42.5 is invalid.
./build.sh: Check the available versions from the releases page on github:
    https://github.com/geoph9/hass-gshell-extension/releases

I got wget installed

Error 400 Bad Request on any POST request

Hello

If I try to click on any togglables, I get an error 400 from HA. States are working perfectly, and I get the list of switches and sensors in preferences, so connection with HA is working, the problem is somewhere in the json data.

From the same computer I can change the switches with curl.

I tried to debug it, and found a strange thing with wireshark: if I send the POST request with the extension data it is sent as Line-based text data, while if I send it with curl, it's as a json.

Screenshots from wireshark:

POST from the extension:
kรฉp

POST from curl:
kรฉp

hass-gshell: 14 from gnome extensions
libsoup3: 3.2.2-1
GNOME: 43.2
Kernel: 6.1.4-arch1-1
Home Assistant 2023.1.1

Add input_boolean switch detection

Thanks for this extension. One big improvement would be to add the input_boolean switch type to the VALID_TOGGLABLES detection. This made the extension much more useful to me as I use input_boolean as virtual software switches to run scripts to activate an IR blaster for turning on and off media center, AC and appliances.

Only 1 change needs to be made to support this:

Change line 11 in utils.js from:

const VALID_TOGGLABLES = ['switch.', 'light.', 'fan.'];

to:

const VALID_TOGGLABLES = ['switch.', 'light.', 'fan.', 'input_boolean.'];

HA bans my IP if the keyring is locked

I got a setup with automatic gnome-shell login (keyring is still locked until first usage), Ubuntu 22.04 (latest). After (automatic) login, the extension tries to authenticate with HA, but HA tells me that the extension can't be authenticated because of faulty credentials. As the keyring is still locked, the extension can't access the long-lived token. Unfortunately, the extension seems to retry to login a few times, until HA bans my IP.

Whenever I remove the ban and unlock the keyring first, the extension is successfully authenticated. So, it seems it accesses something the wrong way on the keyring, as it tries to authenticate with some value, even if the keyring is locked. Actually, I expected a dialogue, asking me to unlock the keyring first, before the extensions tries to authenticate with HA.

It took me some time to figure out that my IP was banned from HA.

Reorder items in preferences

i think it would be a really cool idea if you could reorder the items
image
the application on the right is gnome settings (gnome-control-center)

Extension fails to start (Error: message is null)

Using GNOME 43 on Fedora 37.
Installed using the recommended method.
The extension never starts.
In Extension Manager, it says "An error occurred while loading this extension".
The error is "message is null". Also the version number is 0 so the extension manager is flagging the extension to be updated.
Other extensions installed: Blur my shell, clipboard manager and gvfs-nfs.

Searchbar for Entities

I have a huge List of Entities. It would be great, if i can search through that list with a searchbar in the "Togglebles" section.

likethis

More controll over entities

Currently you can only toggle an entities state.

A sub-menu with many / all possible controls over an entity:

  • Toggle: Light_1 โ–บ
  • Toggle: Light_2 โ–ผ
    • slider for intensity
    • colour picker
    • input field
    • selectable text (idk)

๐Ÿง

Also seems to work with gnome-shell version 41

Changing the version number from 40 to 41 in the ~/.local/share/gnome-shell/extensions/hass-gshell@geoph9-on-github/metadata.json file was all that was needed to get this latest version 40 of the extension working on gnome 41.1 and allowing me to toggle on the extension in the extensions menu.
It seems to work fine with this newer version of gnome as well, so maybe it can be made compatible for both.

There is some version checking in build.sh that will currently only install the extension for gnome-shell versions 40.*

Token does not seems to be saved

I have fedora 38 with gnome 44, it seems to me that token is not saved at all, Home assistant tells me unsuccessfull login attempt after i save token, also when i close settings and open it again token field is empty. Where can i get more info for you?

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.