Giter VIP home page Giter VIP logo

codeium.nvim's People

Contributors

724399396 avatar aliaksandr-trush avatar altermo avatar bowser1704 avatar brunokrugel avatar brunolpsousa avatar chrisgrieser avatar consoleaf avatar dakata1337 avatar dieracdelta avatar dmnkgrc avatar drunk-dream avatar fortenforge avatar jcdickinson avatar jellydn avatar khou22 avatar lll9p avatar luismeyer95 avatar mauriciopoppe avatar milanglacier avatar mochaap avatar mrshmllow avatar nonvme avatar pqn avatar pupbrained avatar willehrendreich avatar ww-daniel-mora avatar xavier-balesi 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

codeium.nvim's Issues

crashing on second instance of nvim

for whatever reason im getting it crashing if i ever open up a second neovim instance.

after turning on trace logging i get this.

[codeium] [DEBUG 18:02:58] ...al/share/nvim-data/lazy/codeium.nvim/lua/codeium/api.lua:209: 46504: I0317 18:02:57.435801 46504 main.go:357] Starting language server manager with pid 46504
[codeium] [DEBUG 18:02:58] ...al/share/nvim-data/lazy/codeium.nvim/lua/codeium/api.lua:209: 46504: F0317 18:02:57.438467 46504 main.go:81] Failed to acquire manager lock file C:/Temp/nvim/codeium/manager/locks/manager.lock: <nil>
[codeium] [ERROR 18:02:58] ...share/nvim-data/lazy/codeium.nvim/lua/codeium/notify.lua:14: codeium server crashed:  {
[codeium]   code = 1
[codeium] }

I don't think this used to happen... and I'm not sure how it gets the lock in the first place or why it would not be able to get one a second time.

Support chat mode

Codeium for vscode support chat mode, can you do it for nvim ? And interaction can be like Bryley/neoai.nvim

completion requests not formatted correctly for some file types

I have been digging like mad on this.

ok, so when you get a full print out of the exact args that are being sent to a curl when a job is started, it isn't consistent for all filetypes. i think this is what is messing up plaintext and fsharp, and possibly others..

example of how lua (which works and doesn't throw any errors) looks
args =
{ "-sSL",
"-D",
"C:\Users\Will.ehrendreich\AppData\Local\Temp\plenary_curl_6c4b488e.headers",
"-X",
"POST",
"-H",
"Content-Type: application/json",
"--data-raw",
'{
"editor_options":
{"insert_spaces": true, "tab_size": 2},
"metadata":
{"extension_name": "vim",
"ide_name": "neovim",
"request_id": 14,
"api_key": "[redacted]",
"extension_version": "1.2.36",
"ide_version": "0.10.0-"},
"document":
{"editor_language": "lua",
"language": 23,
"line_ending": "\r\n",
"cursor_offset": 90,
"text": "-- bootstrap lazy.nvim, LazyVim and your plugins\r\nlocal vim = vim\r\nrequire(\"config.lazy\")l\r\n"}}',
"http://localhost:30383/exa.language_server_pb.LanguageServerService/GetCompletions" },

ok, so this is a screwed up one from fsharp

args = {
"-sSL",
"-D",
"C:\Users\Will.ehrendreich\AppData\Local\Temp\plenary_curl_b55f4f56.headers",
"-X",
"POST",
"-H",
"Content-Type: application/json",
"--data-raw",
"{"editor_options":
{"insert_spaces": true,
"tab_size": 2},
"metadata":
{"extension_name": "vim",
"ide_name": "neovim", "request_id": 42, "api_key": "[redacted]", "extension_version": "1.2.36", "ide_version": "0.10.0-"},
"document": {"editor_language": "fsharp", "language": 59, "line_ending": "\r\n", "cursor_offset": 10574, "text": "[redacted]" }\r\n\r\n"}}",
"http://localhost:30383/exa.language_server_pb.LanguageServerService/GetCompletions"
},

now, how is it that running the same function util.get_editor_options(bufnr) gives the 2 different results? why is the fsharp and plain text one with escaped " chars everywhere? How do we normalize that so it doesn't happen?

[bug] vim.notify call issued an error.

Error executing luv callback:                                                                          
vim/_editor.lua:0: E5560: nvim_echo must not be called in a lua loop callback                          
stack traceback:                                                                                       
        [C]: in function 'nvim_echo'                                                                   
        vim/_editor.lua: in function 'notify'                                                          
        ...ocal/share/nvim/lazy/codeium.nvim/lua/codeium/update.lua:72: in function 'unpack'           
        ...ocal/share/nvim/lazy/codeium.nvim/lua/codeium/update.lua:111: in function '_user_on_exit'   
        .../.local/share/nvim/lazy/plenary.nvim/lua/plenary/job.lua:240: in function '_shutdown'       
        .../.local/share/nvim/lazy/plenary.nvim/lua/plenary/job.lua:46: in function <.../.local/share/n
vim/lazy/plenary.nvim/lua/plenary/job.lua:37>  

https://github.com/jcdickinson/codeium.nvim/blob/a940a99e1e168515edea3964c15a4a350f2414db/lua/codeium/update.lua#L72

NVIM v0.9.0-dev-3318+g9b1112cf4-dirty                                                                  
Build type: Release                                                                                    
LuaJIT 2.1.0-beta3                                                                                     
Compiled by [email protected]                                                                     
                                                   
Features: +acl +iconv +tui

Required options and documentation

Wondering if there are other arguments :Codeium expects? I was expecting to see something like :Codeium Status to confirm everything was ok, but found no documentation.

"error computing score: avgLength is NaN" after update

I'm using the latest commit of codeium.nvim, and completion fails with error:

[DEBUG 三  6/21 18:16:22 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 67887: I0621 18:16:22.310775 67888 proxy.go:94] proxyplease.connect> Proxy successfully established. No authentication was required.
[DEBUG 三  6/21 18:17:04 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 67887: I0621 18:17:04.902683 67888 proxy.go:94] proxyplease.connect> Proxy successfully established. No authentication was required.
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.026581 68220 main.go:385] Starting language server manager with pid 68220
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.027104 68220 main.go:85] Manager acquired its lock file /var/folders/hh/4979hwx95nl_j6tvzyhygpd00000gn/T/nvim.iven/42uUAc/0codeium/manager/locks/manager.lock
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.030491 68220 main.go:207] Waiting for random port file in /var/folders/hh/4979hwx95nl_j6tvzyhygpd00000gn/T/nvim.iven/42uUAc/0codeium/manager/child_random_port_1687342664027214000_3635028212560001566 to be created
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.081799 68221 main.go:379] Starting language server process with pid 68221
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.096262 68221 proxy.go:76] proxyplease.proxy> No proxy provided. Attempting to infer from system.
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: 2023/06/21 18:17:44 [proxy.Provider.readDarwinNetworkSettingProxy]: Automatic proxy is not enabled.
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: 2023/06/21 18:17:44 [proxy.Provider.readDarwinNetworkSettingProxy]: https proxy is not enabled.
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.123102 68221 proxy.go:76] proxyplease.proxy> No proxy could be determined. Assuming a direct connection.
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.123160 68221 client.go:589] [DEBUG] HEAD https://codeium.com
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.323216 68221 api_server_client.go:105] Successfully dialed proxy
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.323394 68221 server.go:275] Successfully created API server client
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.323409 68221 api_server_client.go:105] Successfully dialed proxy
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.323492 68221 server.go:281] Successfully created API streaming client
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.358140 68221 server.go:290] Successfully initialized tokenizer
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.358383 68221 unleash.go:58] Initializing Unleash with production environment
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.378168 68221 server.go:381] Successfully created completion provider
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.378198 68221 server.go:411] Child process attempting to acquire lock file /var/folders/hh/4979hwx95nl_j6tvzyhygpd00000gn/T/nvim.iven/42uUAc/0codeium/manager/locks/child_lock_1687342664027394000_7993368071330523491
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.378412 68221 server.go:421] Child process acquired lock file /var/folders/hh/4979hwx95nl_j6tvzyhygpd00000gn/T/nvim.iven/42uUAc/0codeium/manager/locks/child_lock_1687342664027394000_7993368071330523491
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.378996 68221 server.go:161] Language server will attempt to listen on host 127.0.0.1
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.379235 68221 server.go:197] Language server listening on random port at 59460
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.433543 68220 main.go:243] Language server manager found random server port 59460
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.433615 68220 main.go:244] Language server manager found random lsp port 42101
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.433626 68220 main.go:251] Language server manager attempting to connect to language server at 127.0.0.1:59460
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.447571 68220 main.go:122] Fixing language server port at 59460
[DEBUG 三  6/21 18:17:44 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:44.447593 68220 main.go:297] Language server manager successfully connected to new language server at 127.0.0.1:59460
[DEBUG 三  6/21 18:17:45 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: I0621 18:17:45.321292 68221 unleash.go:72] Successfully initialized unleash
[DEBUG 三  6/21 18:17:47 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: E0621 18:17:47.846436 68221 context_module.go:597] Error on updating context module state: one or more errors while updating context items [error adding ccis for source CODE_CONTEXT_SOURCE_LOCAL_DIRECTORY: absolutePath  and relativePath  do not share a base directory error adding ccis for source CODE_CONTEXT_SOURCE_LAST_ACTIVE_DOC: error getting items for active doc : could not find workspace for : absolutePath  and relativePath  do not share a base directory]
[DEBUG 三  6/21 18:17:47 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:206: 68220: E0621 18:17:47.850197 68221 interceptor.go:31] /exa.language_server_pb.LanguageServerService/GetCompletions: error computing score: avgLength is NaN
[ERROR 三  6/21 18:17:47 2023] /Users/iven/.local/share/nvim/lazy/codeium.nvim/lua/codeium/notify.lua:14: completion request failed:  {
  code = 0,
  out = '{"code":"unknown","message":"error computing score: avgLength is NaN"}',
  response = {
    body = '{"code":"unknown","message":"error computing score: avgLength is NaN"}',
    exit = 0,
    headers = { "Accept-Encoding: gzip", "Content-Type: application/json", "Vary: Origin", "Date: Wed, 21 Jun 2023 10:17:47 GMT", "Content-Length: 70", "", "" },
    status = 500
  },
  status = 500
}

attempt to perform arithmetic on field 'col' (a nil value)

Receiving this error when trying to call auto suggestion popup in nvim.

Error executing vim.schedule lua callback: ...ocal/share/nvim/lazy/codeium.nvim/lua/codeium/source.lua:46: attempt to perform arithmetic on field 'col' (a nil value)
stack traceback:
        ...ocal/share/nvim/lazy/codeium.nvim/lua/codeium/source.lua:46: in function 'codeium_to_cmp'
        ...ocal/share/nvim/lazy/codeium.nvim/lua/codeium/source.lua:136: in function 'handle_completions'
        ...ocal/share/nvim/lazy/codeium.nvim/lua/codeium/source.lua:159: in function 'callback'
        .../.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:261: in function 'complete'
        .../.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:322: in function ''
        vim/_editor.lua: in function <vim/_editor.lua:0>

Duplicate suggestion text in the doc window

While trying out codeium.nvim I've noted the following:

image

The suggested multiline text in the documentation window is duplicated. It has been reproduced in other file types too:

image

Any other completion plugin has not exposed such behavior.

Is this a bug or by design?

Suggestions form Codeium won't show in cmp

My current setup works great on my Mac Mini, but doesn't work on my Windows laptop. :(
I'm using the latest Neovim 0.9.1 with Lazyvim, and this package at ed7bae7 commit.

codeium.lua

{
  "jcdickinson/codeium.nvim",
  dependencies = {
    "nvim-lua/plenary.nvim",
    "hrsh7th/nvim-cmp",
  },
  config = function()
    require("codeium").setup()
  end,
}

nvim-cmp.lua

{
"hrsh7th/nvim-cmp",
  dependencies = { "onsails/lspkind.nvim" },
  opts = {
    sources = require("cmp").config.sources({
      { name = "buffer", max_item_count = 2 },
      { name = "codeium", max_item_count = 2 },
      { name = "cmp_tabnine", max_item_count = 2 },
      { name = "nvim_lsp" },
      { name = "luasnip" },
      { name = "path" },
    }),
    mapping = require("cmp").mapping.preset.insert({
      ["<C-a>"] = require("cmp").mapping.complete(),
    }),
    formatting = {
      format = function(entry, vim_item)
        -- if you have lspkind installed, you can use it like
        -- in the following line:
        vim_item.kind = require("lspkind").symbolic(vim_item.kind, { mode = "symbol_text" })
        vim_item.menu = source_mapping[entry.source.name]

        if entry.source.name == "codeium" then
          local detail = (entry.completion_item.data or {}).detail
          vim_item.kind = " Codeium"
          if detail and detail:find(".*%%.*") then
            vim_item.kind = vim_item.kind .. " " .. detail
          end

          if (entry.completion_item.data or {}).multiline then
            vim_item.kind = vim_item.kind .. " " .. "[ML]"
          end
        end
        local maxwidth = 80
        vim_item.abbr = string.sub(vim_item.abbr, 1, maxwidth)
        return vim_item
      end,
    },
  },
}

Completion requests fail with .go files

I see the following error message repeatedly while editing go files:

[ERROR Tue Jan 31 14:10:40 2023] ...ocal/share/nvim/lazy/codeium.nvim/lua/codeium/notify.lua:14: completion request failed:  {
  code = 0,
  out = '{"code":"invalid_argument","message":"invalid GetCompletionsRequest.EditorOptions: embedded message failed validation | caused by: invalid EditorOptions.TabSize: value must be greater than 0"}',
  response = {
    body = '{"code":"invalid_argument","message":"invalid GetCompletionsRequest.EditorOptions: embedded message failed validation | caused by: invalid EditorOptions.TabSize: value must be greater than 0"}',
    exit = 0,
    headers = { "Accept-Encoding: gzip", "Content-Type: application/json", "Vary: Origin", "Date: Tue, 31 Jan 2023 05:10:40 GMT", "Content-Length: 192", "", ""},
    status = 400
  },
  status = 400
}

Fails both on neovim v0.8.2 and v0.9.0-dev-834+g4c90a84c6, and the plugin is up-to-date.

I tried without this go plugin, but there was no change.

Ignore if no network found

[codeium] [ERROR 15:50:38] ...ocal/share/nvim/lazy/codeium.nvim/lua/codeium/notify.lua:14: completion request failed:  {
[codeium]   code = 0,
[codeium]   out = '{"code":"unavailable","message":"dial tcp: lookup server.codeium.com: no such host"}',
[codeium]   response = {
[codeium]     body = '{"code":"unavailable","message":"dial tcp: lookup server.codeium.com: no such host"}',
[codeium]     exit = 0,
[codeium]     headers = { "Accept-Encoding: gzip", "Content-Type: application/json", "Vary: Origin", "Date: Mon, 20 Mar 2023 10:20:38 GMT", "Content-Length: 84", "", "" },
[codeium]     status = 503
[codeium]   },
[codeium]   status = 503
[codeium] }

Whenever internet connection is lost, messages gets spammed by this. Is it possible to suppress this ? Or is it possible to avoid trying if there is no network?

Unused source in cmp

:lua =require('cmp').status()
Reports codeium as an unused source. I am having trouble figuring out how to move it to a ready source.

# ready source names
- path
- buffer
- luasnip
- TabNine

# unused source names
- codeium

# unknown source names
- copilot
- nvim_lsp
- nvim_lua
- calc
- emoji
- treesitter
- crates
- tmux

Row is nil error

The error happens somewhat sudo-randomly.
How I semi-consistently reproduce the glitch: write aaaa a='a' and wait. After this error, whenever I delete and add back the a inside the quote the error occurs again.
The image below contains an example of when the error can occur.
2023-05-14-081018_1776x999_scrot

Issue with Codeium Auth

Using LazyVim config on a Mac and when keying Codeium Auth, Safari is triggered and there is a key generated but on neovim side I receive the following error

Error 19:54:14 msg_show.lua_error Error executing vim.schedule lua callback: ...e/nvim/lazy/codeium.nvim/lua/codeium/views/auth-menu.lua:5: attempt to call field 'inputsecret' (a nil value)
stack traceback:
...e/nvim/lazy/codeium.nvim/lua/codeium/views/auth-menu.lua:5: in function 'get_key'
...e/nvim/lazy/codeium.nvim/lua/codeium/views/auth-menu.lua:90: in function 'callback'
...e/nvim/lazy/codeium.nvim/lua/codeium/views/auth-menu.lua:122: in function 'on_choice'
...are/nvim/lazy/dressing.nvim/lua/dressing/select/init.lua:78: in function ''
vim/_editor.lua: in function <vim/_editor.lua:0>

I have tried to deactivate dressing.nvim but I get the same problem.

As always I assume an operator error but in this case I am not able to detect/correct what I am doing wrong. Any help would be appreciated

remove nui dependency?

as far as I can tell, nui is only needed for authentication, isn't it? I tried removing it and everything seems to work fine, still.

Given that codeium.nvim is the only plugin on my machine that requires nui, and nui isn't even used anymore, it seemed a bit pointless to still have nui around. And just for the one-time authentication, one shouldn't have to add an extra dependency they potentially never need anymore.

Would it maybe make sense to remove the nui dependency and use vim.notify and vim.ui.input instead?

recent fix borks win32 detection.

@ww-daniel-mora 3a1f45b does not correctly resolve whether or not I'm running on windows. I've always seen the vim.fn.has("win32") in examples, and that works on my machine, so I'm curious what prompted the change to vim.call("exists","win32") == 1 . It comes up false for me.

Completion on a file that has no type gives errors

Whenever I'm in a file with no extension and I type I get this error:

completion request failed
[codeium] [ERROR 21:48:30] ...ocal/share/nvim/lazy/codeium.nvim/lua/codeium/notify.lua:14: completion request failed:  {
[codeium]   code = 0,
[codeium]   out = '{"code":"invalid_argument","message":"invalid GetCompletionsRequest.Document: embedded message failed validation | caused by: invalid Document.EditorLanguage: value length must be at least 1 runes"}',
[codeium]   response = {
[codeium]     body = '{"code":"invalid_argument","message":"invalid GetCompletionsRequest.Document: embedded message failed validation | caused by: invalid Document
.EditorLanguage: value length must be at least 1 runes"}',
[codeium]     exit = 0,
[codeium]     headers = { "Accept-Encoding: gzip", "Content-Type: application/json", "Vary: Origin", "Date: Mon, 30 Jan 2023 20:47:43 GMT", "Content-Length: 198", "
", "" },
[codeium]     status = 400
[codeium]   },
[codeium]   status = 400
[codeium] }

It seems like there's some issues because the name of the language is to short.
Please let me know if you need any more info on this. I don't have time tonight to get a minimal config for this, but I might tomorrow if needed.

[bug]Duplicate completions

I installed it according to the instructions, and there were multiple identical candidates when I completed it

图片

Codeium Auth doesn't work on windows 11 and WSL

i'm having an issue when using this plugin in windows 11, it get an error when trying to :Codeium Auth, then it show an error,
image

im using lazy and NVChad,

then i tried install it with lazy and nvchad in WSL ubuntu, it ran fine but after i paste the key it got an error
image

im using Windows 11 Home Insider Preview Single Language,
im sorry if this issue are duplicate with the one in #59

Can't authenticate codeium on windows

I have put the uuidgen.exe file in my path and can open the codeium authentication page. But when I input the generated token in neovim input box I get this error:
image

This error is very similar to #44 but it occurs during authentication instead of during download. The culprit seems to be the --compressed flag.

I am on commit b1ff0d6 because apparently inputsecret is not supported in neovim and prior to this commit, input was used.

Trigger length is much longer compared to Codeium

In order to trigger codeium.nvim's multiline suggestions, I need to write a lot of characters first. Here's my case, open a cpp file and type:

void sieve(){
}

In the function body, when typing for only (first thing to do to make a sieve):

void sieve(){
    for
}

I would expect codeium.nvim to suggest the rest of the function (like codeium on browser did), but in fact, it just suggested 1-line suggestion. But then I tried typing more characters, e.g for(int :

void sieve(){
    for(int 
}

It starts working properly and suggests multiline suggestions. Is there a way to fix it?

Completion prefix removed

Versions
Codeium: 1.1.32
NeoVIM: v0.8.3
LuaJIT 2.1.0-beta3
nvim-cmp: latest

Description

Trying to navigate suggestion options yields unexpected behavior.

Actual result

When trying to select (not confirm!) the suggestion it truncates the string prefixing the completion.
Demo:
https://asciinema.org/a/DkoW93CTZk2IFYkjAzaAgpmsZ

Expected behavior

Navigating through the suggestions w/o affecting the prefix.

Notes

The same configuration works as expected with other sources (LSP, LuaSnip, ...).

threw error on `:codeium auth`

issue remaned from plenary throw's error on :codeium auth
please look at the info section for better understanding

issue

1 . whenever i open nvim it just show downloading server 99%
surely my net is slow but that is the whole point of using neovim! efficient and low resources RIGHT ?
but , after waiting for like 2 min many times statusline shows codeium.nvim : server updaetd then i restart nvim guess what
again the blissfull screen downloading server - im tried of this
2. server is still not installed! 🤷 idk reallly , after waiting a long time 15 min i did :codeium AUTH
here is the output

vCodeium.nvim: server downloaded
unpacking server
Codeium.nvim: server unpacked
Codeium.nvim: server updated
Error executing Lua callback: ...0/.cache/nvim-data/lazy/plenary.nvim/lua/plenary/job.lua:106: uuidgen: Executable not found
stack traceback:
	...0/.cache/nvim-data/lazy/plenary.nvim/lua/plenary/job.lua:106: in function 'job'
	..._0/.cache/nvim-data/lazy/codeium.nvim/lua/codeium/io.lua:191: in function 'get_command_output'
	..._0/.cache/nvim-data/lazy/codeium.nvim/lua/codeium/io.lua:315: in function 'generate_uuid'
	...0/.cache/nvim-data/lazy/codeium.nvim/lua/codeium/api.lua:76: in function 'authenticate'
	.../.cache/nvim-data/lazy/codeium.nvim/lua/codeium/init.lua:20: in function <.../.cache/nvim-data/lazy/codeium.nvim/lua/codeium/init.lua:17>
stack traceback:
	[C]: in function 'error'
	...0/.cache/nvim-data/lazy/plenary.nvim/lua/plenary/job.lua:106: in function 'job'
	..._0/.cache/nvim-data/lazy/codeium.nvim/lua/codeium/io.lua:191: in function 'get_command_output'
	..._0/.cache/nvim-data/lazy/codeium.nvim/lua/codeium/io.lua:315: in function 'generate_uuid'
	...0/.cache/nvim-data/lazy/codeium.nvim/lua/codeium/api.lua:76: in function 'authenticate'
	im.api.nvim_create_user_command('ConfigReload', ':h k', { desc = 'Reload config' })

i dont understand that 🌟 gibberish 🌟 correctly :(

info

minimal config lazy install

{
    "jcdickinson/codeium.nvim",
    dependencies = {
        "nvim-lua/plenary.nvim",
    },
    config = function()
        require("codeium").setup({
        })
    end
},

OS : WINDOW 11 || yes i hate being Microsoft user but i am stuck |
nvim -v : NVIM v0.10.0-dev & NVIM v0.9.1 both test fails

many suggestions

  1. please update the readme for the following
  • add info about windows at http.nvim as
    Not supported on Windows
  • show default values of option
  1. update the language server

note : i dont like writing basically post that are boring to write , so please consider that im still learning english
there is meant to be many english mistakes please dont mind , also no serious manner , just some chill 👍 thanks

codeium server crashed / unknown flag: --api_server_host

After the last update (8df6b54) I have a perpetual crash of codeium plugin.
The logs are explicit:

[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:199: restarting server after crash
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637: unknown flag: --api_server_host
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637: Usage of /home/xbalesi/.cache/nvim/codeium/bin/1.2.14/language_server_linux_x64:
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637:       --api_server_url string                 API server host (default "http://0.0.0.0:50001")
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637:       --child_lock_file string                Lock file for child process
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637:       --database_dir string                   Directory to store SQLite database
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637:       --detect_proxy                          If true, use proxy detection (default true)
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637:       --enable_lsp                            If true, enable LSP
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637:       --enable_search_api                     Whether to enable search API
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637:       --lsp_port int                          Port for LSP protocol (default 42101)
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637:       --manager_dir string                    Directory for language server manager
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637:       --manager_lock_file string              Lock file for language server manager
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637:       --random_port                           Whether to trial out a random port.
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637:       --random_port_dir string                Directory to store random ports.
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637:       --register_user_url string              URL to register user (default "https://api.codeium.com/register_user/")
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637:       --search_max_workspace_file_count int   The max workspace size that we will index.
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637:       --server_port int                       Port for language server to talk to extension (default 42100)
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637:       --stamp                                 If true, print stamp information and exit
[DEBUG ven. 05 mai 2023 08:26:32] .../site/pack/packer/start/codeium.nvim/lua/codeium/api.lua:206: 25637: unknown flag: --api_server_host
[ERROR ven. 05 mai 2023 08:26:32] ...te/pack/packer/start/codeium.nvim/lua/codeium/notify.lua:14: codeium server crashed:  {
  code = 2
}

Thank you for this plugin that I like

Suppress Codium error

Hi.

I've recently known about this plugin and it seems to match my setup much better than the official one. However, it seems to me the "completion request failed" happens way too often, and when it does, my nvim will be bombarded with all the logs, and I have no way but to press Esc several times to come back to my work.

I'm wondering if there's anyway to prevent this from happening? If the request fails for some reason, the plugin can either retry or just ignore, but not display any error on the UI?

Thank you a lot for a good plugin!

Preview syntax highlighting

Codeium preview popup is missing syntax highlighting. See screenshots comparing to other preview types:

Codeium (No highlighting)

image

Copilot

image

Luasnip

image

My configuration:

    { "zbirenbaum/copilot.lua", config = function() require("copilot").setup { suggestion = { enabled = false }, panel = { enabled = false } } end, },
    {
      "zbirenbaum/copilot-cmp",
      event = "InsertEnter",
      dependencies = { "zbirenbaum/copilot.lua", },
      config = function() require("copilot_cmp").setup { formatters = { insert_text = require("copilot_cmp.format").remove_existing } } end,
    },

    {
        "jcdickinson/codeium.nvim",
        event = "InsertEnter",
        dependencies = { "nvim-lua/plenary.nvim" },
        config = function() require("codeium").setup({}) end
    },

    {
      "hrsh7th/nvim-cmp",
      dependencies = {
        "zbirenbaum/copilot-cmp",
        "jcdickinson/codeium.nvim"
      },
      opts = function(_, opts)
        local cmp = require "cmp"
        opts.sources = cmp.config.sources {
          { name = "copilot", priority = 1000 },
          { name = "codeium", priority = 900 },
          { name = "nvim_lsp", priority = 800 },
          { name = "luasnip", priority = 750 },
          { name = "buffer", priority = 500 },
          { name = "path", priority = 250 },
        }
        return opts
      end,
    },

    {
      "onsails/lspkind.nvim",
      opts = {
        symbol_map = {
          Copilot = "",
          Codeium = "󱃖",
        }
      },
    },

[bug] request error

completion request failed                                                                  
│completion request failed                                                                  
│[codeium] [ERROR 09:17:24] ...ocal/share/nvim/lazy/codeium.nvim/lua/codeium/notify.lua:14: 
│completion request failed:  {                                                              
│[codeium]   code = 0,                                                                      
│[codeium]   out = '{"code":"canceled","message":"Post \\"https://server.codeium.com:443/exa
│.api_server_pb.ApiServerService/GetCompletions\\": context canceled"}',                    
│[codeium]   response = {                                                                   
│[codeium]     body = '{"code":"canceled","message":"Post \\"https://server.codeium.com:443/
│exa.api_server_pb.ApiServerService/GetCompletions\\": context canceled"}',                 
│[codeium]     exit = 0,                                                                    
│[codeium]     headers = { "Accept-Encoding: gzip", "Content-Type: application/json", "Vary:
│ Origin", "Date: Mon, 30 Jan 2023 01:17:23 GMT", "Content-Length: 139", "", "" },          
│[codeium]     status = 408                                                                 
│[codeium]   },                                                                             
│[codeium]   status = 408                                                                   
│[codeium] }   

This error seems like an api call debounce related error.

Accumulating Codeium versions

Not sure whether this is an issue with this plugin or with codeium itself, but I noticed that the codium server binaries of previous versions are all kept, resulting in a bloated directory containing them:
CleanShot 2023-05-15 at 10 23 20@2x

Executable somomtimes not found

For some reason, sometimes, the executable can't be found.
It reports this error:

server updated                                                                                                                                                                                                                                                        
Error executing vim.schedule lua callback: ...im/site/pack/paqs/start/plenary.nvim/lua/plenary/job.lua:106: /home/<username>/.codeium/bin/1.1.24/language_server_windows_x64.exe: Executable not found
stack traceback:
        ...im/site/pack/paqs/start/plenary.nvim/lua/plenary/job.lua:106: in function 'job'
        ...im/site/pack/paqs/start/codeium.nvim/lua/codeium/api.lua:194: in function 'start'
        ...m/site/pack/paqs/start/codeium.nvim/lua/codeium/init.lua:13: in function 'callback'
        ...site/pack/paqs/start/codeium.nvim/lua/codeium/update.lua:67: in function 'callback'
        ...vim/site/pack/paqs/start/codeium.nvim/lua/codeium/io.lua:320: in function 'set_executable'
        ...site/pack/paqs/start/codeium.nvim/lua/codeium/update.lua:61: in function 'chmod'
        ...site/pack/paqs/start/codeium.nvim/lua/codeium/update.lua:80: in function 'fn'
        ...vim/site/pack/paqs/start/codeium.nvim/lua/codeium/io.lua:26: in function 'cb'
        vim/_editor.lua:248: in function <vim/_editor.lua:247>
stack traceback:
        [C]: in function 'error'
        ...im/site/pack/paqs/start/plenary.nvim/lua/plenary/job.lua:106: in function 'job'
        ...im/site/pack/paqs/start/codeium.nvim/lua/codeium/api.lua:194: in function 'start'
        ...m/site/pack/paqs/start/codeium.nvim/lua/codeium/init.lua:13: in function 'callback'
        ...site/pack/paqs/start/codeium.nvim/lua/codeium/update.lua:67: in function 'callback'
        ...vim/site/pack/paqs/start/codeium.nvim/lua/codeium/io.lua:320: in function 'set_executable'
        ...site/pack/paqs/start/codeium.nvim/lua/codeium/update.lua:61: in function 'chmod'
        ...site/pack/paqs/start/codeium.nvim/lua/codeium/update.lua:80: in function 'fn'
        ...vim/site/pack/paqs/start/codeium.nvim/lua/codeium/io.lua:26: in function 'cb'
        vim/_editor.lua:248: in function <vim/_editor.lua:247>

I'm running on Linux, so I don't know why it even bothers checking for the windows executable? Anyway, the executable is accessable in the directory so honestly don't know why it sometimes can't find it.

Feature request: enable/disable filetypes via config

@jcdickinson First, thanks so much for producing this great plugin.

It would be great to have more fine-grained control over the kinds of files which should have Codeium completions either enabled or disabled. For example, it would be a good reassurance privacy-wise if .env or other filetypes which customarily contain secrets or configuration could be ignored by Codeium.

Thanks again for putting your time and effort into this project.

feat: adding plugin toggle functionality via keymap

Hey there, I'm interested in contributing to the development of the codeium plugin by adding toggle functionality via a keymap.

My plan is to use a global variable codium_enabled and modify the setup() function in init.lua to return if the codium_enabled global variable is set to false.

When the global variable is toggled to true, I would run vim.api.nvim_command('packadd codeium') or something similar to toggle a function to reload the plugin.

I'm hoping to get some guidance on how and if you would like that feature implemented.

Thanks for your help

Failed when using as a cmp sources

Below error happened when I enable codeium as a cmp source. I think it might related to the callbacks from codeium server not fitting cmp's format. This makes it unusable as a cmp source.

My codeium setup: require("codeium").setup({})
OS: Ubuntu 22.04 with all the required tools installed.

圖片

On Windows Terminal the detection of the OS is not "Windows" it is "Windows_NT"

Hello, in your code you use vim.loop.os_uname().sysname to determine which OS is used but I tested this method on my own instance and this method returned 'Windows_NT' and not "Windows" so all your conditions for uuid, gzip, uname and others don't work correctly for Windows users.

image

image

I hope I've helped you and I apologize for the extra work.

Error when Authenticate use Display URL

nvim version

NVIM v0.8.3
Build type: Release
LuaJIT 2.1.0-beta3
编译者 builduser

Features: +acl +iconv +tui
See ":help feature-compile"

     系统 vimrc 文件: "$VIM/sysinit.vim"
         $VIM 预设值: "/usr/share/nvim"

Run :checkhealth for more info

info

Authenticate Type
1: Open Default Browser
2: Copy URL to Clipboard
3: Display URL
4: I already have a key
Type number and <Enter> or click with the mouse (q or empty cancels): 3Error executing Lua callback: ...e/nvim/lazy/codeium.nvim/lua/codeium/views/auth-menu.lua:75: invalid key: title
stack traceback:
        [C]: in function 'nvim_open_win'
        ...e/nvim/lazy/codeium.nvim/lua/codeium/views/auth-menu.lua:75: in function 'open_buffer'
        ...e/nvim/lazy/codeium.nvim/lua/codeium/views/auth-menu.lua:106: in function 'callback'
        ...e/nvim/lazy/codeium.nvim/lua/codeium/views/auth-menu.lua:122: in function 'on_choice'
        /usr/share/nvim/runtime/lua/vim/ui.lua:54: in function 'select'
        ...e/nvim/lazy/codeium.nvim/lua/codeium/views/auth-menu.lua:80: in function <...e/nvim/lazy/codeium.nvim/lua/cod
eium/views/auth-menu.lua:79>
        .../.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:125: in function 'prompt'
        .../.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:129: in function 'authenticate'
        ....local/share/nvim/lazy/codeium.nvim/lua/codeium/init.lua:20: in function <....local/share/nvim/lazy/codeium.n
vim/lua/codeium/init.lua:17>

Usage with nix

Cool project! Is there an example usage of setting this up with nix I can base my config on? (maybe a personal flake or something)

Codeium throws errors on large files

Hi, I am playing around with this plugin and found an issue: I have treesitter configured to disable text highlight in big files (in those cases it is too slow and makes the editor hang for a couple of seconds after each key stroke, falling back to the regex parser solves this issue) and it seems that doing this makes your plugin break with the following error

Error detected while processing TextChangedI Autocommands for "*":
Error executing lua callback: .../.local/share/nvim/lazy/plenary.nvim/lua/plenary/job.lua:405: Failed to spawn process: {
  _additional_on_exit_callbacks = {},
  _shutdown_check = <userdata 1>,
  _stderr_results = {},
  _stdout_results = {},
  _user_on_exit = <function 1>,
  args = { "-sSL", "-D", "/tmp/plenary_curl_2fe047dc.headers", "--compressed", "-X", "POST", "-H", "Content-Type: application/json", "--data-raw", "{\"editor_options\": {\"insert_spaces\": true, \"tab_size\": 2}, \"metadata\": {\"extension_name\": \"vim\", \"ide_name\": \"neovim\", \"request_id\": 3, \"api_key\": \"API_KEY_HERE\", \"extension_version\": \"1.1.32\", \"ide_version\": \"0.8.3\"}, \"document\": {\"editor_language\": \"sql\", \"language\": 41, \"line_ending\": \"\\n\", \"cursor_offset\": 1043599, \"text\": \"ENTIRE_FILE_HERE\"}

(api key and text have been cropped out just to be safe)

If I enable treesitter highlight again the error disappear but then the editor became unusable, it would be great to fix this issue.

Let me know if you need something else to help debug this issue :).

vim.fn.json_encode fails on <89>

At first I thought it was related to #20, but it doesn't seem like it.

Basically, in my command history I have the following (taken from main.shada file):

  @ Description_  Value
  - history type  CMD
  - contents      "set lines=100<89>"

When I am in the command window q:, editing something that will trigger completion will make codeium fail with the following:

Error detected while processing TextChangedI Autocommands for "*":
Error executing lua callback: Vim:E474: String "<89>
stack traceback:
	[C]: in function 'json_encode'
	...g/.local/share/nvim/lazy/codeium.nvim/lua/codeium/io.lua:409: in function 'post'
	.../.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:146: in function 'request'
	.../.local/share/nvim/lazy/codeium.nvim/lua/codeium/api.lua:287: in function 'request_completion'
	...ocal/share/nvim/lazy/codeium.nvim/lua/codeium/source.lua:103: in function 'complete'
	...jemag/.local/share/nvim/lazy/nvim-cmp/lua/cmp/source.lua:325: in function 'complete'
	...e/jemag/.local/share/nvim/lazy/nvim-cmp/lua/cmp/core.lua:289: in function 'complete'
	...e/jemag/.local/share/nvim/lazy/nvim-cmp/lua/cmp/core.lua:169: in function 'callback'
	...e/jemag/.local/share/nvim/lazy/nvim-cmp/lua/cmp/core.lua:219: in function 'autoindent'
	...e/jemag/.local/share/nvim/lazy/nvim-cmp/lua/cmp/core.lua:161: in function 'on_change'
	...e/jemag/.local/share/nvim/lazy/nvim-cmp/lua/cmp/init.lua:313: in function 'callback'
	...local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/autocmd.lua:49: in function 'emit'
	...local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/autocmd.lua:23: in function <...local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/autocmd.lua:22>

What seems to happen is that the param.body contains my history, which in turn contains this <89> char which will then fail the vim.fn.json_encode from : https://github.com/jcdickinson/codeium.nvim/blob/55fa67bd316e2a4d312b11d68a2c34f898925a7f/lua/codeium/io.lua#L403-L408

Not sure what is the best approach, but I am guessing that params.body probably needs to be sanitized before being passed to vim.fn.json_encode to prevent this kind of errors.

codeium.nvim cannot read config.json

I'm getting the following errors from the log:

[ERROR Sun Jan 29 22:43:16 2023] ...m/site/pack/packer/start/codeium.nvim/lua/codeium/io.lua:94: could not open  /Users/scott/.cache/nvim/codeium/config.json :  EACCES: permission denied: /Users/scott/.cache/nvim/codeium/config.json
[ERROR Sun Jan 29 22:43:26 2023] ...m/site/pack/packer/start/codeium.nvim/lua/codeium/io.lua:94: could not open  /Users/scott/.cache/nvim/codeium/config.json :  EACCES: permission denied: /Users/scott/.cache/nvim/codeium/config.json
[ERROR Sun Jan 29 22:45:14 2023] ...m/site/pack/packer/start/codeium.nvim/lua/codeium/io.lua:137: could not open  /Users/scott/.cache/nvim/codeium/config.json :  EACCES: permission denied: /Users/scott/.cache/nvim/codeium/config.json
[ERROR Sun Jan 29 22:45:33 2023] ...m/site/pack/packer/start/codeium.nvim/lua/codeium/io.lua:94: could not open  /Users/scott/.cache/nvim/codeium/config.json :  EACCES: permission denied: /Users/scott/.cache/nvim/codeium/config.json
[ERROR Sun Jan 29 22:47:10 2023] ...m/site/pack/packer/start/codeium.nvim/lua/codeium/io.lua:94: could not open  /Users/scott/.cache/nvim/codeium/config.json :  EACCES: permission denied: /Users/scott/.cache/nvim/codeium/config.json

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.