c++ completion for member functions not working

nvim ver: NVIM v0.5.0-161-g18096631b

how to reproduce:
mkdir -p /tmp/issue && cd /tmp/issue/
git clone https://github.com/neovim/nvim-lsp/

minimal.init:
set runtimepath^=/tmp/issue/nvim-lsp/
filetype plugin on
call nvim_lsp#setup("ccls", {})
setl omnifunc=lsp#omnifunc

cat > /tmp/issue/foo.cpp
#include <string>

int main()
{
    std::string s = "42";
}

CMakeLists.txt
project (a.out)

cmake_minimum_required(VERSION 3.5)

set (CMAKE_CXX_COMPILER "clang++")
set (CMAKE_BUILD_TYPE Debug)
set (CMAKE_VERBOSE_MAKEFILE ON)
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)

set (CMAKE_CXX_STANDARD 17)
set (CMAKE_CXX_STANDARD_REQUIRED ON)
set (CMAKE_CXX_EXTENSIONS OFF)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wshadow -Wconversion -Wfatal-errors")

add_executable(a.out foo.cpp)

cmake . && make
nvim -u minimal.init foo.cpp
observe that omni-completion for s. returns
Omni completion (^O^N^P) Pattern not found

Did you have compile_commands.json in there as well? Without that it definitely won't work.
It would also be prudent to run vim.lsp.buf_print_debug_info() while you're editing the foo.cpp file and see if that shows that ccls is running.

set (CMAKE_EXPORT_COMPILE_COMMANDS ON)

lua vim.lsp.buf_print_debug_info()
{ {
    _on_attach = <function 1>,
    callbacks = {
      ["textDocument/completion"] = <function 2>,
      ["textDocument/declaration"] = <function 3>,
      ["textDocument/definition"] = <function 4>,
      ["textDocument/hover"] = <function 5>,
      ["textDocument/implementation"] = <function 6>,
      ["textDocument/peekDefinition"] = <function 7>,
      ["textDocument/publishDiagnostics"] = <function 8>,
      ["textDocument/rename"] = <function 9>,
      ["textDocument/signatureHelp"] = <function 10>,
      ["textDocument/typeDefinition"] = <function 11>,
      ["window/logMessage"] = <function 12>,
      ["window/showMessage"] = <function 13>,
      ["workspace/configuration"] = <function 14>
    },
    cancel_request = <function 15>,
    config = {
      [true] = 6,
      callbacks = {
        ["window/logMessage"] = <function 12>,
        ["workspace/configuration"] = <function 14>
      },
      capabilities = {
        offsetEncoding = { "utf-8", "utf-16" },
        textDocument = {
          completion = {
            completionItem = {
              commitCharactersSupport = false,
              deprecatedSupport = false,
              documentationFormat = { "markdown", "plaintext" },
              preselectSupport = false,
              snippetSupport = false
            },
            completionItemKind = {
              valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }
            },
            contextSupport = false,
            dynamicRegistration = false
          },
          documentHighlight = {
            dynamicRegistration = false
          },
          hover = {
            contentFormat = { "markdown", "plaintext" },
            dynamicRegistration = false
          },
          references = {
            dynamicRegistration = false
          },
          signatureHelp = {
            dynamicRegistration = false,
            signatureInformation = {
              documentationFormat = { "markdown", "plaintext" }
            }
          },
          synchronization = {
            didSave = true,
            dynamicRegistration = false,
            willSave = false,
            willSaveWaitUntil = false
          }
        },
        workspace = {
          configuration = true
        }
      },
      cmd = { "ccls" },
      filetypes = { "c", "cpp", "objc", "objcpp" },
      log_level = 2,
      name = "ccls",
      on_attach = <function 16>,
      on_exit = <function 17>,
      on_init = <function 18>,
      root_dir = "/tmp/issue",
      settings = {}
    },
    id = 1,
    initialized = true,
    is_stopped = <function 19>,
    name = "ccls",
    notify = <function 20>,
    offset_encoding = "utf-16",
    request = <function 21>,
    resolved_capabilities = {
      code_action = false,
      document_formatting = true,
      document_highlight = true,
      document_range_formatting = true,
      document_symbol = true,
      find_references = true,
      goto_definition = true,
      hover = true,
      implementation = true,
      signature_help = true,
      signature_help_trigger_characters = <1>{ "(", "," },
      text_document_did_change = 2,
      text_document_open_close = true,
      text_document_save = <2>{
        includeText = false
      },
      text_document_save_include_text = false,
      text_document_will_save = false,
      text_document_will_save_wait_until = false,
      workspace_symbol = true
    },
    rpc = {
      handle = <userdata 1>,
      notify = <function 22>,
      pid = 39816,
      request = <function 23>
    },
    server_capabilities = {
      codeActionProvider = {
        codeActionKinds = { "quickfix" }
      },
      codeLensProvider = {
        resolveProvider = false
      },
      completionProvider = {
        resolveProvider = false,
        triggerCharacters = { ".", ":", ">", "#", "<", '"', "/" }
      },
      definitionProvider = true,
      documentFormattingProvider = true,
      documentHighlightProvider = true,
      documentLinkProvider = {
        resolveProvider = true
      },
      documentOnTypeFormattingProvider = {
        firstTriggerCharacter = "}",
        moreTriggerCharacter = {}
      },
      documentRangeFormattingProvider = true,
      documentSymbolProvider = true,
      executeCommandProvider = {
        commands = { "ccls.xref" }
      },
      foldingRangeProvider = true,
      hoverProvider = true,
      implementationProvider = true,
      referencesProvider = true,
      renameProvider = true,
      signatureHelpProvider = {
        triggerCharacters = <table 1>
      },
      textDocumentSync = {
        change = 2,
        openClose = true,
        save = <table 2>,
        willSave = false,
        willSaveWaitUntil = false
      },
      typeDefinitionProvider = true,
      workspace = {
        workspaceFolders = {
          changeNotifications = true,
         supported = true
        }
      },
      workspaceSymbolProvider = true
    },
    stop = <function 24>
  } }

Last thing I would suggest is to print the path of the log file and change the log level to debug to see what's going on. Specifically, look for the response for textDocument/completion
in your init.vim:
lua vim.lsp.set_log_level("debug")

And to find the log file :lua print(vim.lsp.get_log_path())

[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        '00:10:22 ccls           initialize.cc:271 I initialize in directory /tmp/issue with uri file:///tmp/issue\n00:10:22 ccls           initialize.cc:294 I initializationOptions: {"compilationDatabaseCommand":"","compilationDatabaseDirectory":"","cache":{"directory":".ccls-cache","format":"binary","hierarchicalPath":false,"retainInMemory":2},"capabilities":{"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"}","moreTriggerCharacter":[]},"foldingRangeProvider":true,"workspace":{"workspaceFolders":{"supported":true,"changeNotifications":true}}},"clang":{"excludeArgs":[],"extraArgs":[],"pathMappings":[],"resourceDir":""},"client":{"hierarchicalDocumentSymbolSupport":true,"linkSupport":true,"snippetSupport":true},"codeLens":{"localVariables":true},"completion":{"caseSensitivity":2,"detailedLabel":true,"dropOldRequests":true,"duplicateOptional":true,"filterAndSort":true,"include":{"blacklist":[],"maxPathSize":30,"suffixWhitelist":[".h",".hpp",".hh",".inc"],"whitelist":[]},"maxNum":100},"diagnostics":{"blacklist":[],"onChange":1000,"onOpen":0,"onSave":0,"spellChecking":true,"whitelist":[]},"highlight":{"largeFileSize":2097152,"lsRanges":false,"blacklist":[],"whitelist":[]},"index":{"blacklist":[],"comments":2,"initialNoLinkage":false,"initialBlacklist":[],"initialWhitelist":[],"maxInitializerLines":5,"multiVersion":0,"multiVersionBlacklist":[],"multiVersionWhitelist":[],"name":{"suppressUnwrittenScope":false},"onChange":false,"parametersInDeclarations":true,"threads":0,"trackDependency":2,"whitelist":[]},"request":{"timeout":5000},"session":{"maxNum":10},"workspaceSymbol":{"caseSensitivity":1,"maxNum":1000,"sort":true},"xref":{"maxNum":2000}}\n'
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 ccls           initialize.cc:323 I use -resource-dir=/usr/lib64/clang/7.0.1\n00:10:22 ccls           initialize.cc:356 I workspace folder: /tmp/issue/\n00:10:22 ccls              project.cc:397 I loaded /tmp/issue/compile_commands.json\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 ccls              project.cc:461 I search directory: /include/ <\n00:10:22 ccls              project.cc:461 I search directory: /include/c++/8/x86_64-redhat-linux/ <\n00:10:22 ccls              project.cc:461 I search directory: /include/c++/8/ <\n00:10:22 ccls              project.cc:461 I search directory: /usr/include/ <\n00:10:22 ccls              project.cc:461 I search directory: /include/c++/8/backward/ <\n00:10:22 ccls              project.cc:461 I search directory: /usr/local/include/ <\n00:10:22 ccls              project.cc:461 I search directory: /usr/lib64/clang/7.0.1/include/ <\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 ccls           initialize.cc:381 I start 40 indexers\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 ccls           initialize.cc:389 I dispatch initial index requests\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 ccls             pipeline.cc:478 I loaded project. Refresh semantic highlight for all working file.\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:344 I parse /tmp/issue/foo.cpp\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 preamble     sema_manager.cc:734 I create session for /tmp/issue/foo.cpp\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer1         pipeline.cc:294 I load cache for /tmp/issue/foo.cpp\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/c++/8/string (delta: 0)\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/gnu/stubs.h (delta: 0)\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/c++/8/x86_64-redhat-linux/bits/cpu_defines.h (delta: 0)\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/c++/8/x86_64-redhat-linux/bits/os_defines.h (delta: 0)\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:382 I store index for /tmp/issue/foo.cpp (delta: 0)\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/bits/wordsize.h (delta: 1)\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/c++/8/bits/move.h (delta: 0)\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/c++/8/x86_64-redhat-linux/bits/c++config.h (delta: 0)\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/c++/8/bits/stringfwd.h (delta: 0)\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/c++/8/bits/stl_pair.h (delta: 0)\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/c++/8/bits/memoryfwd.h (delta: 0)\n00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/c++/8/bits/functexcept.h (delta: 0)\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/gnu/stubs-64.h (delta: 0)\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/c++/8/type_traits (delta: 0)\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/c++/8/bits/exception_defines.h (delta: 0)\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/c++/8/bits/cpp_type_traits.h (delta: 0)\n"
[ ERROR ] 2019-11-18T00:10:22Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]   "rpc"   "ccls"  "stderr"        "00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/stdc-predef.h (delta: 0)\n00:10:22 indexer2         pipeline.cc:382 I store index for /usr/include/c++/8/bits/char_traits.h (delta: 0)\n"

Also, try setting :set omnifunc=lsp#complete manually after opening the buffer in neovim. (It doesn't work from init.vim for me, either, but then I'm not really using using LSP for omnicomplete.)

@clason thanks for the suggestion, but it did not make any difference

@ilAYAli I meant that you should do some actions as well like completion and then see the log output including the debug stuff. I'm guessing you didn't set debug level.
Also it looks like you're using clang 7.0.1 which it states in the README is not recommended for this. Use clang 9

clang++ --version
clang version 9.0.0 (http://llvm.org/git/clang.git 2e513c06257d0348300660beabc6782f34579896) (http://llvm.org/git/llvm.git ed992c96ced5801b9df0d43670bf0405404f7ba9)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/petter/local/bin

This is the only textDocument/completion message that is logged after setting lua vim.lsp.set_log_level("debug") and performing omni completion.
grep -i "textdocument/completion" ~/.local/share/nvim/vim-lsp.log
[ INFO ] 2019-11-18T07:20:52Z+0100 ] /home/petter/local/share/nvim/runtime/lua/vim/lsp.lua:714 ]        "exit_handler"  { {    _on_attach = <function 1>,    callbacks = {      ["textDocument/completion"] = <function 2>,      ["textDocument/declaration"] = <function 3>,      ["textDocument/definition"] = <function 4>,      ["textDocument/hover"] = <function 5>,      ["textDocument/implementation"] = <function 6>,      ["textDocument/peekDefinition"] = <function 7>,      ["textDocument/publishDiagnostics"] = <function 8>,      ["textDocument/rename"] = <function 9>,      ["textDocument/signatureHelp"] = <function 10>,      ["textDocument/typeDefinition"] = <function 11>,      ["window/logMessage"] = <function 12>,      ["window/showMessage"] = <function 13>,      ["workspace/configuration"] = <function 14>    },    cancel_request = <function 15>,    config = {      [true] = 6,      callbacks = {        ["window/logMessage"] = <function 12>,        ["workspace/configuration"] = <function 14>      },      capabilities = {        offsetEncoding = { "utf-8", "utf-16" },        textDocument = {          completion = {            completionItem = {              commitCharactersSupport = false,              deprecatedSupport = false,              documentationFormat = { "markdown", "plaintext" },              preselectSupport = false,              snippetSupport = false            },            completionItemKind = {              valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }            },            contextSupport = false,            dynamicRegistration = false          },          documentHighlight = {            dynamicRegistration = false          },          hover = {            contentFormat = { "markdown", "plaintext" },            dynamicRegistration = false          },          references = {            dynamicRegi
stration = false          },          signatureHelp = {            dynamicRegistration = false,            signatureInformation = {              documentationFormat = { "markdown", "plaintext" }            }          },          synchronization = {            didSave = true,            dynamicRegistration = false,            willSave = false,            willSaveWaitUntil = false          }        },        workspace = {          configuration = true        }      },      cmd = { "ccls" },      filetypes = { "c", "cpp", "objc", "objcpp" },      log_level = 2,      name = "ccls",      on_attach = <function 16>,      on_exit = <function 17>,      on_init = <function 18>,      root_dir = "/tmp/issue",      settings = {}    },    id = 1,    initialized = true,    is_stopped = <function 19>,    name = "ccls",    notify = <function 20>,    offset_encoding = "utf-16",    request = <function 21>,    resolved_capabilities = {      code_action = false,      document_formatting = true,      document_highlight = true,      document_range_formatting = true,      document_symbol = true,      find_references = true,      goto_definition = true,      hover = true,      implementation = true,      signature_help = true,      signature_help_trigger_characters = <1>{ "(", "," },      text_document_did_change = 2,      text_document_open_close = true,      text_document_save = <2>{        includeText = false      },      text_document_save_include_text = false,      text_document_will_save = false,      text_document_will_save_wait_until = false,      workspace_symbol = true    },    rpc = {      handle = <userdata 1>,      n
otify = <function 22>,      pid = 17748,      request = <function 23>    },    server_capabilities = {      codeActionProvider = {        codeActionKinds = { "quickfix" }      },      codeLensProvider = {        resolveProvider = false      },      completionProvider = {
       resolveProvider = false,        triggerCharacters = { ".", ":", ">", "#", "<", '"', "/" }      },      definitionProvider = true,      documentFormattingProvider = true,      documentHighlightProvider = true,      documentLinkProvider = {        resolveProvider = t
rue      },      documentOnTypeFormattingProvider = {        firstTriggerCharacter = "}",        moreTriggerCharacter = {}      },      documentRangeFormattingProvider = true,      documentSymbolProvider = true,      executeCommandProvider = {        commands = { "ccls.xref" }      },      foldingRangeProvider = true,      hoverProvider = true,      implementationProvider = true,      referencesProvider = true,      renameProvider = true,      signatureHelpProvider = {        triggerCharacters = <table 1>      },      textDocumentSync = {        change = 2,        openClose = true,        save = <table 2>,        willSave = false,        willSaveWaitUntil = false      },      typeDefinitionProvider = true,      workspace = {        workspaceFolders = {          changeNotifications = true,          supported = true        }      },      workspaceSymbolProvider = true    },    stop = <function 24>  } }

clang version 9.0.0

Sure, but the suspicious thing is this line in your logs:
[ ERROR ] 2019-11-18T00:10:22Z+0100 ]  ... use -resource-dir=/usr/lib64/clang/7.0.1 ...

FWIW, I had similar symptoms in https://github.com/neovim/nvim-lsp/issues/23 which went away after updating to HEAD of nvim and nvim-lsp.
My logs show:
-resource-dir=/usr/lib/llvm-8/bin/../lib/clang/8.0.0

If your logs are still showing clang/7 then something may be wrong.

@justinmk yes, I noticed the clang 7 reference too, but don't know why the incorrect libraries are picked up.
I installed the latest version of nvim-lsp and nvim from master, and can still reproduce.
NVIM v0.5.0-172-g1ff5b60cb
which clang++
~/local/bin/clang++
ls -ald /home/petter/local/lib/clang/9.0.0
drwxrwxr-x 5 petter petter 4.0K Jan 23  2019 /home/petter/local/lib/clang/9.0.0/

I agree that the clang 7 might be problematic (however, I don't know why the above version isn't picked up). Also, as previously mentioned, CoC works on with this setup.

I also reproduced on my Mac, with:
NVIM v0.5.0-172-g1ff5b60cb
clang++ --version
Apple clang version 11.0.0 (clang-1<IP_ADDRESS>)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

[ INFO ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:198 ]	"Starting RPC client"	{  args = {},  cmd = "ccls",  extra = {}}
[ DEBUG ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp.lua:399 ]	"LSP[ccls]"	"initialize_params"	{  capabilities = {    offsetEncoding = { "utf-8", "utf-16" },    textDocument = {      completion = {        completionItem = {          commitCharactersSupport = false,          deprecatedSupport = false,          documentationFormat = { "markdown", "plaintext" },          preselectSupport = false,          snippetSupport = false        },        completionItemKind = {          valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }        },        contextSupport = false,        dynamicRegistration = false      },      documentHighlight = {        dynamicRegistration = false      },      hover = {        contentFormat = { "markdown", "plaintext" },        dynamicRegistration = false      },      references = {        dynamicRegistration = false      },      signatureHelp = {        dynamicRegistration = false,        signatureInformation = {          documentationFormat = { "markdown", "plaintext" }        }      },      synchronization = {        didSave = true,        dynamicRegistration = false,        willSave = false,        willSaveWaitUntil = false      }    },    workspace = {      configuration = true    }  },  processId = 37639,  rootUri = "file:///private/tmp/issue",  trace = "off"}
[ DEBUG ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:265 ]	"rpc.send.payload"	{  id = 1,  jsonrpc = "2.0",  method = "initialize",  params = {    capabilities = {      offsetEncoding = { "utf-8", "utf-16" },      textDocument = {        completion = {          completionItem = {            commitCharactersSupport = false,            deprecatedSupport = false,            documentationFormat = { "markdown", "plaintext" },            preselectSupport = false,            snippetSupport = false          },          completionItemKind = {            valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }          },          contextSupport = false,          dynamicRegistration = false        },        documentHighlight = {          dynamicRegistration = false        },        hover = {          contentFormat = { "markdown", "plaintext" },          dynamicRegistration = false        },        references = {          dynamicRegistration = false        },        signatureHelp = {          dynamicRegistration = false,          signatureInformation = {            documentationFormat = { "markdown", "plaintext" }          }        },        synchronization = {          didSave = true,          dynamicRegistration = false,          willSave = false,          willSaveWaitUntil = false        }      },      workspace = {        configuration = true      }    },    processId = 37639,    rootUri = "file:///private/tmp/issue",    trace = "off"  }}
[ ERROR ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]	"rpc"	"ccls"	"stderr"	"09:06:58                initialize.cc:271 I initialize in directory /private/tmp/issue with uri file:///private/tmp/issue\n"
[ ERROR ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]	"rpc"	"ccls"	"stderr"	'09:06:58                initialize.cc:294 I initializationOptions: {"compilationDatabaseCommand":"","compilationDatabaseDirectory":"","cache":{"directory":".ccls-cache","format":"binary","hierarchicalPath":false,"retainInMemory":2},"capabilities":{"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"}","moreTriggerCharacter":[]},"foldingRangeProvider":true,"workspace":{"workspaceFolders":{"supported":true,"changeNotifications":true}}},"clang":{"excludeArgs":[],"extraArgs":[],"pathMappings":[],"resourceDir":""},"client":{"hierarchicalDocumentSymbolSupport":true,"linkSupport":true,"snippetSupport":true},"codeLens":{"localVariables":true},"completion":{"caseSensitivity":2,"detailedLabel":true,"dropOldRequests":true,"duplicateOptional":true,"filterAndSort":true,"include":{"blacklist":[],"maxPathSize":30,"suffixWhitelist":[".h",".hpp",".hh",".inc"],"whitelist":[]},"maxNum":100},"diagnostics":{"blacklist":[],"onChange":1000,"onOpen":0,"onSave":0,"spellChecking":true,"whitelist":[]},"highlight":{"largeFileSize":2097152,"lsRanges":false,"blacklist":[],"whitelist":[]},"index":{"blacklist":[],"comments":2,"initialBlacklist":[],"initialWhitelist":[],"maxInitializerLines":5,"multiVersion":0,"multiVersionBlacklist":[],"multiVersionWhitelist":[],"name":{"suppressUnwrittenScope":false},"onChange":false,"parametersInDeclarations":true,"threads":0,"trackDependency":2,"whitelist":[]},"request":{"timeout":5000},"session":{"maxNum":10},"workspaceSymbol":{"caseSensitivity":1,"maxNum":1000,"sort":true},"xref":{"maxNum":2000}}\n09:06:58                initialize.cc:323 I use -resource-dir=/Users/petter/local/lib/clang/9.0.0\n09:06:58                initialize.cc:356 I workspace folder: /private/tmp/issue/\n'
[ DEBUG ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:344 ]	"decoded"	{  id = 1,  jsonrpc = "2.0",  result = {    capabilities = {      codeActionProvider = {        codeActionKinds = { "quickfix" }      },      codeLensProvider = {        resolveProvider = false      },      completionProvider = {        resolveProvider = false,        triggerCharacters = { ".", ":", ">", "#", "<", '"', "/" }      },      definitionProvider = true,      documentFormattingProvider = true,      documentHighlightProvider = true,      documentLinkProvider = {        resolveProvider = true      },      documentOnTypeFormattingProvider = {        firstTriggerCharacter = "}",        moreTriggerCharacter = {}      },      documentRangeFormattingProvider = true,      documentSymbolProvider = true,      executeCommandProvider = {        commands = { "ccls.xref" }      },      foldingRangeProvider = true,      hoverProvider = true,      implementationProvider = true,      referencesProvider = true,      renameProvider = true,      signatureHelpProvider = {        triggerCharacters = { "(", "," }      },      textDocumentSync = {        change = 2,        openClose = true,        save = {          includeText = false        },        willSave = false,        willSaveWaitUntil = false      },      typeDefinitionProvider = true,      workspace = {        workspaceFolders = {          changeNotifications = true,          supported = true        }      },      workspaceSymbolProvider = true    }  }}
[ DEBUG ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:276 ]	"rpc.notify"	"initialized"	{}
[ DEBUG ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:265 ]	"rpc.send.payload"	{  jsonrpc = "2.0",  method = "initialized",  params = {}}
[ DEBUG ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp.lua:416 ]	"LSP[ccls]"	"server_capabilities"	{  codeActionProvider = {    codeActionKinds = { "quickfix" }  },  codeLensProvider = {    resolveProvider = false  },  completionProvider = {    resolveProvider = false,    triggerCharacters = { ".", ":", ">", "#", "<", '"', "/" }  },  definitionProvider = true,  documentFormattingProvider = true,  documentHighlightProvider = true,  documentLinkProvider = {    resolveProvider = true  },  documentOnTypeFormattingProvider = {    firstTriggerCharacter = "}",    moreTriggerCharacter = {}  },  documentRangeFormattingProvider = true,  documentSymbolProvider = true,  executeCommandProvider = {    commands = { "ccls.xref" }  },  foldingRangeProvider = true,  hoverProvider = true,  implementationProvider = true,  referencesProvider = true,  renameProvider = true,  signatureHelpProvider = {    triggerCharacters = { "(", "," }  },  textDocumentSync = {    change = 2,    openClose = true,    save = {      includeText = false    },    willSave = false,    willSaveWaitUntil = false  },  typeDefinitionProvider = true,  workspace = {    workspaceFolders = {      changeNotifications = true,      supported = true    }  },  workspaceSymbolProvider = true}
[ INFO ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp.lua:417 ]	"LSP[ccls]"	"initialized"	{  resolved_capabilities = {    code_action = false,    document_formatting = true,    document_highlight = true,    document_range_formatting = true,    document_symbol = true,    find_references = true,    goto_definition = true,    hover = true,    implementation = true,    signature_help = true,    signature_help_trigger_characters = { "(", "," },    text_document_did_change = 2,    text_document_open_close = true,    text_document_save = {      includeText = false    },    text_document_save_include_text = false,    text_document_will_save = false,    text_document_will_save_wait_until = false,    workspace_symbol = true  }}
[ DEBUG ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:276 ]	"rpc.notify"	"textDocument/didOpen"	{  textDocument = {    languageId = "cpp",    text = '#include <string>\n\nint main()\n{\n    std::string s = "42";\n}',    uri = "file:///private/tmp/issue/foo.cpp",    version = 0  }}
[ DEBUG ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:265 ]	"rpc.send.payload"	{  jsonrpc = "2.0",  method = "textDocument/didOpen",  params = {    textDocument = {      languageId = "cpp",      text = '#include <string>\n\nint main()\n{\n    std::string s = "42";\n}',      uri = "file:///private/tmp/issue/foo.cpp",      version = 0    }  }}
[ ERROR ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]	"rpc"	"ccls"	"stderr"	"09:06:58                   project.cc:397 I loaded /private/tmp/issue/compile_commands.json\n09:06:58                initialize.cc:381 I start 12 indexers\n09:06:58                initialize.cc:389 I dispatch initial index requests\n09:06:58                  pipeline.cc:471 I loaded project. Refresh semantic highlight for all working file.\n09:06:58                  pipeline.cc:292 I load cache for /private/tmp/issue/foo.cpp\n"
[ ERROR ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:315 ]	"rpc"	"ccls"	"stderr"	"09:06:58              sema_manager.cc:730 I create session for /private/tmp/issue/foo.cpp\n"
[ DEBUG ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:344 ]	"decoded"	{  jsonrpc = "2.0",  method = "$ccls/publishSkippedRanges",  params = {    skippedRanges = {},    uri = "file:///private/tmp/issue/foo.cpp"  }}
[ DEBUG ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:344 ]	"decoded"	{  jsonrpc = "2.0",  method = "$ccls/publishSemanticHighlight",  params = {    symbols = { {        id = 0,        kind = 12,        lsRanges = {},        parentKind = 0,        ranges = { {            L = 23,            R = 27          } },        storage = 0      }, {        id = 0,        kind = 13,        lsRanges = {},        parentKind = 12,        ranges = { {            L = 48,            R = 49          } },        storage = 0      } },    uri = "file:///private/tmp/issue/foo.cpp"  }}
[ DEBUG ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp.lua:297 ]	"notification"	"$ccls/publishSkippedRanges"	{  skippedRanges = {},  uri = "file:///private/tmp/issue/foo.cpp"}
[ DEBUG ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp.lua:297 ]	"notification"	"$ccls/publishSemanticHighlight"	{  symbols = { {      id = 0,      kind = 12,      lsRanges = {},      parentKind = 0,      ranges = { {          L = 23,          R = 27        } },      storage = 0    }, {      id = 0,      kind = 13,      lsRanges = {},      parentKind = 12,      ranges = { {          L = 48,          R = 49        } },      storage = 0    } },  uri = "file:///private/tmp/issue/foo.cpp"}
[ DEBUG ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:344 ]	"decoded"	{  jsonrpc = "2.0",  method = "textDocument/publishDiagnostics",  params = {    diagnostics = { {        code = 2,        message = "use of undeclared identifier 'std'",        range = {          end = {            character = 7,            line = 4          },          start = {            character = 4,            line = 4          }        },        relatedInformation = {},        severity = 1,        source = "ccls"      }, {        code = 1,        message = "'string' file not found",        range = {          end = {            character = 17,            line = 0          },          start = {            character = 9,            line = 0          }        },        relatedInformation = {},        severity = 1,        source = "ccls"      } },    uri = "file:///private/tmp/issue/foo.cpp"  }}
[ DEBUG ] 2019-11-18T09:06:58Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp.lua:297 ]	"notification"	"textDocument/publishDiagnostics"	{  diagnostics = { {      code = 2,      message = "use of undeclared identifier 'std'",      range = {        end = {          character = 7,          line = 4        },        start = {          character = 4,          line = 4        }      },      relatedInformation = {},      severity = 1,      source = "ccls"    }, {      code = 1,      message = "'string' file not found",      range = {        end = {          character = 17,          line = 0        },        start = {          character = 9,          line = 0        }      },      relatedInformation = {},      severity = 1,      source = "ccls"    } },  uri = "file:///private/tmp/issue/foo.cpp"}
[ DEBUG ] 2019-11-18T09:06:58Z+0100 ] ...cal/share/nvim/runtime/lua/vim/lsp/builtin_callbacks.lua:287 ]	"builtin_callback"	"textDocument/publishDiagnostics"	{  client_id = 1,  params = {    diagnostics = { {        code = 2,        message = "use of undeclared identifier 'std'",        range = {          end = {            character = 7,            line = 4          },          start = {            character = 4,            line = 4          }        },        relatedInformation = {},        severity = 1,        source = "ccls"      }, {        code = 1,        message = "'string' file not found",        range = {          end = {            character = 17,            line = 0          },          start = {            character = 9,            line = 0          }        },        relatedInformation = {},        severity = 1,        source = "ccls"      } },    uri = "file:///private/tmp/issue/foo.cpp"  }}
[ DEBUG ] 2019-11-18T09:07:04Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp.lua:524 ]	"on_lines"	1	4	5	5	6	0	0	0	{ "    " }
[ DEBUG ] 2019-11-18T09:07:04Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp.lua:524 ]	"on_lines"	1	5	5	6	6	5	5	5	{ "    s" }
[ DEBUG ] 2019-11-18T09:07:04Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:276 ]	"rpc.notify"	"textDocument/didChange"	{  contentChanges = { {      text = '#include <string>\n\nint main()\n{\n    std::string s = "42";\n    s\n}'    } },  textDocument = {    uri = "file:///private/tmp/issue/foo.cpp",    version = 5  }}
[ DEBUG ] 2019-11-18T09:07:04Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:265 ]	"rpc.send.payload"	{  jsonrpc = "2.0",  method = "textDocument/didChange",  params = {    contentChanges = { {        text = '#include <string>\n\nint main()\n{\n    std::string s = "42";\n    s\n}'      } },    textDocument = {      uri = "file:///private/tmp/issue/foo.cpp",      version = 5    }  }}
[ DEBUG ] 2019-11-18T09:07:04Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp.lua:524 ]	"on_lines"	1	6	5	6	6	6	6	6	{ "    s." }
[ DEBUG ] 2019-11-18T09:07:04Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:276 ]	"rpc.notify"	"textDocument/didChange"	{  contentChanges = { {      text = '#include <string>\n\nint main()\n{\n    std::string s = "42";\n    s.\n}'    } },  textDocument = {    uri = "file:///private/tmp/issue/foo.cpp",    version = 6  }}
[ DEBUG ] 2019-11-18T09:07:04Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:265 ]	"rpc.send.payload"	{  jsonrpc = "2.0",  method = "textDocument/didChange",  params = {    contentChanges = { {        text = '#include <string>\n\nint main()\n{\n    std::string s = "42";\n    s.\n}'      } },    textDocument = {      uri = "file:///private/tmp/issue/foo.cpp",      version = 6    }  }}
[ DEBUG ] 2019-11-18T09:07:05Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp/rpc.lua:344 ]	"decoded"	{  jsonrpc = "2.0",  method = "textDocument/publishDiagnostics",  params = {    diagnostics = { {        code = 2,        message = "use of undeclared identifier 'std'",        range = {          end = {            character = 7,            line = 4          },          start = {            character = 4,            line = 4          }        },        relatedInformation = {},        severity = 1,        source = "ccls"      }, {        code = 1,        message = "'string' file not found",        range = {          end = {            character = 17,            line = 0          },          start = {            character = 9,            line = 0          }        },        relatedInformation = {},        severity = 1,        source = "ccls"      } },    uri = "file:///private/tmp/issue/foo.cpp"  }}
[ DEBUG ] 2019-11-18T09:07:05Z+0100 ] /Users/petter/local/share/nvim/runtime/lua/vim/lsp.lua:297 ]	"notification"	"textDocument/publishDiagnostics"	{  diagnostics = { {      code = 2,      message = "use of undeclared identifier 'std'",      range = {        end = {          character = 7,          line = 4        },        start = {          character = 4,          line = 4        }      },      relatedInformation = {},      severity = 1,      source = "ccls"    }, {      code = 1,      message = "'string' file not found",      range = {        end = {          character = 17,          line = 0        },        start = {          character = 9,          line = 0        }      },      relatedInformation = {},      severity = 1,      source = "ccls"    } },  uri = "file:///private/tmp/issue/foo.cpp"}
[ DEBUG ] 2019-11-18T09:07:05Z+0100 ] ...cal/share/nvim/runtime/lua/vim/lsp/builtin_callbacks.lua:287 ]	"builtin_callback"	"textDocument/publishDiagnostics"	{  client_id = 1,  params = {    diagnostics = { {        code = 2,        message = "use of undeclared identifier 'std'",        range = {          end = {            character = 7,            line = 4          },          start = {            character = 4,            line = 4          }        },        relatedInformation = {},        severity = 1,        source = "ccls"      }, {        code = 1,        message = "'string' file not found",        range = {          end = {            character = 17,            line = 0          },          start = {            character = 9,            line = 0          }        },        relatedInformation = {},        severity = 1,        source = "ccls"      } },    uri = "file:///private/tmp/issue/foo.cpp"  }}

I even installed- and verified the problem with https://github.com/neovim/neovim/releases/download/nightly/nvim-linux64.tar.gz to verify that it is not related to my build of nvim

This is really as isolated and simple as I can reproduce the issue
runme.sh
#! /bin/bash -x
DIR=/tmp/foo
rm -rf "$DIR"
mkdir "$DIR"

wget -qO- https://github.com/neovim/neovim/releases/download/nightly/nvim-linux64.tar.gz | tar xvz -C "$DIR"
git clone https://github.com/neovim/nvim-lsp ${DIR}/nvim-lsp

cat << EOF > "$DIR"/minimal.init
set runtimepath^=$DIR/nvim-lsp/
filetype plugin on

lua vim.lsp.set_log_level("debug")
call nvim_lsp#setup("ccls", {})
set omnifunc=lsp#omnifunc
EOF

cat << EOF > "$DIR"/compile_commands.json
[
{
  "directory": "/tmp/issue",
  "command": "g++     -Wall -Wextra -Wshadow -Wconversion -Wfatal-errors -g   -std=c++17 -o CMakeFiles/a.out.dir/foo.cpp.o -c /tmp/issue/foo.cpp",
  "file": "/tmp/issue/foo.cpp"
}
]
EOF

cat << EOF > "$DIR"/foo.cpp
#include <string>

int main()
{
    std::string s = "42";
}
EOF

cd "$DIR"
"$DIR"/nvim-linux64/bin/nvim -u "$DIR"/minimal.init foo.cpp -c 'sleep 3 | :call feedkeys("6ggOs\.\<C-x>\<C-o>")'

I debugged this further, and found out that @clason's suggestion did indeed work around the problem,  but it seems that :set omnifunc=lsp#complete has to be set after lsp has been initialized
So, modifying the above command to also delay setting omnifunc "fixes" it.
nvim -u minimal.init foo.cpp -c 'sleep 3 | :set omnifunc=lsp#complete | :call feedkeys("6ggOs\.\<C-x>\<C-o>")'

Ok, that's just normal Vim config stuff (though I agree it's a gotcha). We can put it in the README.md of this repo for now.

@justinmk It certainly wasn't obvious that this was a needed, so documenting it is a good idea.
However, I think that this legitimatizes a fix, as people expect configuration compatibility.

@ilAYAli There's no reason that setting lsp#omnifunc before the buffer should be a problem.
Reading back over the comments, though, I do see a few things that could be the problem:

In your initial comment, your minimal.vim uses setl instead of set, which would be incorrect. It would only set omnifunc for your minimal.vim file while it's being sourced.
Assuming that 1. wasn't the source of the error, then if you do set omnifunc before, it's possible that something else is overriding the setting on buffer open, and that setting it after buffer open merely overrides that.
In the example you just posted, you use autocmd BufReadPost * set omnifunc=lsp#omnifunc when it should be setl.

To be fair, though, I do use an autocmd for my configuration. I actually use the on_attach function available in setup, i.e. clangd.setup { on_attach = function() --[[ configure the buffer here ]] end } which only gets called on new buffers attached by clangd/ccls/the server (and this is documented in the README).
You might find that more ergonomic.

@ilAYAli There's no reason that setting lsp#omnifunc before the buffer should be a problem.

People may have ftplugins or FileType handlers that set it (it's a common snippet recommended in the help IIRC, and people forget about it), then the init.vim global setting gets overridden.

@ilAYAli There's no reason that setting lsp#omnifunc before the buffer should be a problem.
it obviously is, or I wouldn't have made this issue.
@norcalli if you look at the script above,

I use set not setl in minimal.init
I didn't use any plugins except nvim-lsp, I even used set runtimepath^=$DIR/nvim-lsp/ to only have a single dependency.
I did not put much thought or effort into that autocmd, it was just to demonstrate a point.

I am very familiar with (n)vim, and expect issues as an early adopter, but lua configuration of plugins is new to me, and to almost everyone else.
The only description of on_attach I see on https://github.com/neovim/nvim-lsp
is:
 {on_attach}
    `function(client)` will be executed with the current buffer as the
    one the {client} is being attaching to. This is different from
    |vim.lsp.start_client()|'s on_attach parameter, which passes the {bufnr} as
    the second parameter instead. This is useful for running buffer local
    commands.

It is not obvious that this means that my current lsp configuration is insufficient: set omnifunc=lsp#omnifunc.
The other reference I see to on_access is in the lua script for clangd, clangd.lua where the following (I assume) is commented out:
-- on_attach = function(client, bufnr) end;
Regardless, good work on the PR; take this as what I intend it to be, early feedback that will hopefully improve the experience for other people trying this out.

I guess the updated :h lsp-omnifunc is makes this less of an issue:
autocmd Filetype python setl omnifunc=v:lua.vim.lsp.omnifunc

set omnifunc=lsp#complete

This fixed it for me to


CTD-438

https://remoteit.atlassian.net/browse/CTD-438
Update the changelog to reflect 2.4.24 release

Updated changelog for 2.4.24

Please make the following changes to the changelog file:
Change these entries as shown:

CTD-252 Update "postrm" message to be more generic.
CTD-370 Add a more explicit warning when user chooses to remove a service.
CTD-430 Corrected "Succeeded" return code in connectd_task_notify
CTD-434 When removing all services with connectd_installer, check for bulk registered services.

(this is a brief description of the code change, not the original symptom noticed)
Remove:

CTD-431 Make sure upgrade scenarios are handled properly
CTD-424 Update documentation for bulk registration to note removal of connectd_startup_control
CTD-439 Add bulk registration tests to CircleCI for the connectd package build

(these changes did not affect the code in the package)
Change this line:
-- Senthil Namasivayam<EMAIL_ADDRESS>Wed, 02 Feb 2020 05:00:00 -0800
to:
-- Gary Worsham<EMAIL_ADDRESS>Wed, 02 Feb 2020 05:00:00 -0800
(note, per the Debian Policy Manual, the person listed is the "Package Maintainer").


Raise minimum supported Python to 3.7 (at least)

There are a few things I've been working on where I'd really benefit from the minimum version being raised to 3.7 (time_ns, dataclasses, etc.)
Are there any blockers for this?
For the record: I've been running 3.8 just fine locally (although since https://github.com/NeuroTechX/eeg-notebooks/pull/32 is unmerged, that might suggest there are some remaining issues, but we could just go ahead and merge it and wait with 3.9).
For discussion around maximum supported version, see #50

I approve of this. I think 3.7 now fixes a lot of the pywinhook issues that initially promoted choice of 3.6


Immersive 3D Geospatial Data Visualization on Indian Weather

@adarshjamuaar please mention your team members GitHub is to be be featured in contributors list
#213

@all-contributors please add @adarshjamuaar for content, example.

@all-contributors please add @adarshjamuaar for content, example.


$stateProvider.decorator does not work if put in a separate file

The way I organize my project, I have several .config sections, each with its .state definitions.
I created a separate file to host a decorator for all state definitions, but it seems like it is running before all states have been defined, so the decoration does not apply to all states.

https://gist.github.com/eddiemonge/f6a58169c2846731a1eb


[Change Request] Codeunit 90 - Function "OnPostPurchLineOnBeforeInsertReceiptLine" - Add parameters

Describe the request
Hello, please can you add the following parameters as input to the "OnPostPurchLineOnBeforeInsertReceiptLine" function (in codeunit 90)?

WhseRcptHeader : Record "Warehouse Receipt Header"
WhseReceive : boolean
WhseShip : boolean

local procedure OnPostPurchLineOnBeforeInsertReceiptLine(PurchaseHeader: Record "Purchase Header"; var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; PurchRcptHeader: Record "Purch. Rcpt. Header"; RoundingLineInserted: Boolean; CostBaseAmount: Decimal; xPurchaseLine: Record "Purchase Line"; var ReturnShipmentHeader: Record "Return Shipment Header"; var TempTrackingSpecification: Record "Tracking Specification" temporary; var ItemLedgShptEntryNo: Integer; SrcCode: Code[10]; PreviewMode: Boolean);
begin
end;
to :
local procedure OnPostPurchLineOnBeforeInsertReceiptLine(PurchaseHeader: Record "Purchase Header"; var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean; PurchRcptHeader: Record "Purch. Rcpt. Header"; RoundingLineInserted: Boolean; CostBaseAmount: Decimal; xPurchaseLine: Record "Purchase Line"; var ReturnShipmentHeader: Record "Return Shipment Header"; var TempTrackingSpecification: Record "Tracking Specification" temporary; var ItemLedgShptEntryNo: Integer; SrcCode: Code[10]; PreviewMode: Boolean; WhseRcptHeader : Record "Warehouse Receipt Header"; WhseReceive : boolean; WhseShip : boolean);
begin
end;
Additional context
We need to check certain values in the "Warehouse Receipt Header" record before inserting the new recept line record.
Internal work item: AB#548966

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 24747.


Repeating PR #756 for github actions run

Do not review~

Codecov Report

Merging #757 into master will increase coverage by 0.18%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #757      +/-   ##
==========================================
+ Coverage   41.45%   41.64%   +0.18%
==========================================
  Files         131      133       +2
  Lines       10192    10384     +192
==========================================
+ Hits         4225     4324      +99
- Misses       5406     5482      +76
- Partials      561      578      +17

Impacted Files
Coverage Δ

catalog/model.go
61.53% <0.00%> (-16.24%)
:arrow_down:

catalog/cataloger_list_entries.go
85.53% <0.00%> (-1.09%)
:arrow_down:

block/local/adapter.go
5.71% <0.00%> (-0.74%)
:arrow_down:

catalog/ref.go
93.10% <0.00%> (ø)

block/adapter.go
0.00% <0.00%> (ø)

catalog/views.go
100.00% <0.00%> (ø)

block/gs/adapter.go
0.00% <0.00%> (ø)

block/s3/adapter.go
0.00% <0.00%> (ø)

catalog/cataloger_retention.go
73.29% <0.00%> (ø)

inventory/s3/parquet_reader.go

... and 18 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 7f2e0f2...590489e. Read the comment docs.


Cannot find file

Hello, I am getting the following error:
The system cannot find the file specified.

Didn't notice the update 14 hours ago, all is working fine now. I also tried on Windows 10, didn't get a BSOD.


⚠ api.piste.gouv.fr healthcheck has degraded performance

In 7428525, api.piste.gouv.fr healthcheck (https://api.piste.gouv.fr/cassation/judilibre/v1.0/healthcheck) experienced degraded performance:

HTTP code: 200
Response time: 6922 ms

Resolved: api.piste.gouv.fr healthcheck performance has improved in 72c4cab.


Random mac address

Added two methods that allow to get a UUID v1/v2 with a randomised MAC address.
In the existing NewV1() and NewV2() the MAC address is only randomised when the network card is not found.
NewV1RandomMAC()
NewV2RandomMAC()

Coverage increased (+0.4%) to 96.939% when pulling bcea4fa366d9a8a8f5f2a8fde565dec48c3f0473 on intelligentpos:IPL-147/random-mac-address into 5bf94b69c6b68ee1b541973bb8e1144db23a194b on satori:master.

Coverage increased (+0.4%) to 96.939% when pulling e9aca4465a934f6e720b6ef5df385d7b9e73615a on intelligentpos:IPL-147/random-mac-address into 5bf94b69c6b68ee1b541973bb8e1144db23a194b on satori:master.

Coverage increased (+0.4%) to 96.939% when pulling d80f1d25f81260743de514a8626b313b647de51a on intelligentpos:IPL-147/random-mac-address into 5bf94b69c6b68ee1b541973bb8e1144db23a194b on satori:master.

This is great, its especially necessary when in docker containers on separate machines not in some sort of orchestration setup.


Minus symbol displayed before the prefix instead of the number

Current behavior:
Using the text-mask with negative numbers displays the minus "-" before the prefix: -myprefix 100
Correct behavior:
Display minus "-" right before the number: myprefix -100

https://github.com/text-mask/text-mask/pull/207#issuecomment-246127035 :smile:

@KatzeKahn If you want to submit a PR that adds customizable minus sign position then go for it... however, as your the only person to bring this up I don't see it as a high priority (and don't have the time to implement it myself.. unfortunately)


Options documentation

I got a little lost on the options object, wondering whether or not the options object docs ended. Maybe it would be useful to group them together into an encapsulated interface? e.g., using rtype:
interface OptionsObject {
  level = 'log': 'log' | 'console' | 'warn' | 'error' | 'info',
  duration = false: Boolean, // Print the duration of each action?
  timestamp = true: Boolean, // Print the timestamp with each action?
  colors: ColorsObject, // Object with color getters. See the ColorsObject interface.
  logger = window.console: LoggerObject, // Implementation of the `console` API.
  logErrors = true: Boolean, // Should the logger catch, log, and re-throw errors?
  // ...
}

Yeah, at now options documentation is kinda weird. rtype looks good, reminded me Scala models.
I'll rewrite documentation in 2 days, thanks for the idea!


Different color function outputs

Hello and thank you all for this amazing tool.
I was wondering if there's an interest in adding different color function outputs (particularly for HSL, for now). I was thinking of making a PR, but I wasn't certain if that fits within the vision of its maintainers.
In terms of implementation, I was thinking of performing a conversion from RGB, right before printing the output. However, and I'm not familiar with the problems in color conversions, conversions may be lossy (e.g. RGB to HSL). To make things worse, HSL, for example, uses decimals, i.e floating point math, which is

difficult for accuracy
adds complexity to testing

What do you all think? Is it worth pursuing?

To make things worse, HSL, for example, uses decimals, i.e floating point math

Most HSL picker/wheel I see don't allow for decimals because no one really cares about 8.0 vs 8.4. It should be possible to use 32bit integers to convert rgb to HSL with a margin of error of 0.5.


Add. Institution Id as attribute type

As of now we have institute ID only for Nandagudi PHC and we have included that institute Id in CSV file. It is necessary to include the institute ID in order to be used by any PHC.


fix for copy (ctrl+drag on Linux/Windows, option+drag on Mac)

There are two changes:
First, remove the setting of dropEffect in the dragover handler. According to MDN, one should only set dropEffect in this handler to prevent the drag from completing. Since the directive is hard-coded to allow copy & move, we never want to interrupt the drag.
Second, a patch to allow one to check if $event.dataTransfer.dropEffect is "move" or "copy" in the drop handler. Chrome doesn't set dropEffect, so one needs to manually check which modifier key is pressed. The correct key to test for "copy" is Ctrl. Shift is always "move".
Tests OK with Firefox & Chrome on Linux / Windows / Mac. My test Mac is still running Mountain Lion, so I don't have an up-to-date Safari to test with.

Thank you :+1:

no prob, thanks for making this directive available, it's saved me a ton of time!


error: cannot evaluate a function that has an argument without a value ('lib')

I tried to install this package in nixos/nix container, error occurs.
I'm trying to use nixpkgs-update as suggested on https://github.com/NixOS/nixpkgs/pull/302297#issuecomment-2041437193.
bash-5.2# nix-env \
  --option extra-substituters 'https://nix-community.cachix.org/' \
  --option extra-trusted-public-keys 'nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=' \
  -if https://github.com/ryantm/nixpkgs-update/archive/main.tar.gz
warning: name collision in input Nix expressions, skipping '/nix/store/aiv5k9i17b5zxzf78r8prz2mdgy1953m-source/rust/flake.nix'
error: cannot evaluate a function that has an argument without a value ('lib')
       Nix attempted to evaluate a function as a top level expression; in
       this case it must have its arguments supplied either by default
       values, or passed explicitly with '--arg' or '--argstr'. See
       https://nixos.org/manual/nix/stable/language/constructs.html#functions.
       at /nix/store/aiv5k9i17b5zxzf78r8prz2mdgy1953m-source/nixpkgs-update.nix:4:29:
            3| , hspec, hspec-discover, http-client, http-client-tls, http-conduit
            4| , http-types, iso8601-time, lib, lifted-base, mtl
             |                             ^
            5| , neat-interpolation, optparse-applicative, parsec, parsers

I'm not too sure what's going on with nix-env in the container and I also can't get nix shell to work, but nix run works when enabling flakes and nix-command features:
❯ docker run -it nixos/nix
bash-5.2# nix run \
  --extra-experimental-features nix-command \
  --extra-experimental-features flakes \
  --option extra-substituters 'https://nix-community.cachix.org/' \
  --option extra-trusted-public-keys 'nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=' \
  github:ryantm/nixpkgs-update -- --help
do you want to allow configuration setting 'extra-substituters' to be set to 'https://nix-community.cachix.org' (y/N)? y
do you want to permanently mark this value as trusted (y/N)? y
do you want to allow configuration setting 'extra-trusted-public-keys' to be set to 'nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=' (y/N)? y
do you want to permanently mark this value as trusted (y/N)? y
nixpkgs-update

Usage: nixpkgs-update COMMAND

  Update packages in the Nixpkgs repository

Available options:
  -h,--help                Show this help text

Available commands:
  update                   Update one package
  update-batch             Update one package in batch mode.
  delete-done              Deletes branches from PRs that were merged or closed
  version                  Displays version information for nixpkgs-update and
                           dependencies
  update-vulnerability-db  Updates the vulnerability database
  check-vulnerable         checks if something is vulnerable
  check-all-vulnerable     checks all packages to update for vulnerabilities
  source-github            looks for updates on GitHub
  fetch-repology           fetches update from Repology and prints them to
                           stdout


unable to build due to missing random.h file

Trying to set up onion explorer with Ubuntu 20.04
Binaries build from git pull of -b dev
Is this due to using the cmake not being updated with randomX hashing information?
-- Generating done
-- Build files have been written to: /root/explorer-arqma/build
make[1]: Entering directory '/root/explorer-arqma/build'
make[2]: Entering directory '/root/explorer-arqma/build'
make[3]: Entering directory '/root/explorer-arqma/build'
make[3]: Leaving directory '/root/explorer-arqma/build'
make[3]: Entering directory '/root/explorer-arqma/build'
[  4%] Building C object src/CMakeFiles/randomarq_crypto.dir/randomarq_code/rx-slow-hash.c.o
/root/explorer-arqma/src/randomarq_code/rx-slow-hash.c:38:10: fatal error: randomx.h: No such file or directory
   38 | #include "randomx.h"
      |          ^~~~~~~~~~~
compilation terminated.
make[3]: *** [src/CMakeFiles/randomarq_crypto.dir/build.make:63: src/CMakeFiles/randomarq_crypto.dir/randomarq_code/rx-slow-hash.c.o] Error 1
make[3]: Leaving directory '/root/explorer-arqma/build'
make[2]: *** [CMakeFiles/Makefile2:268: src/CMakeFiles/randomarq_crypto.dir/all] Error 2
make[2]: Leaving directory '/root/explorer-arqma/build'
make[1]: *** [Makefile:84: all] Error 2
make[1]: Leaving directory '/root/explorer-arqma/build'
make: *** [Makefile:18: default] Error 2

found the issue for randomx file:
 set(ARQMA_DIR ~/**dev**/arqma)
 set(ARQMA_BRANCH dev)

 message(STATUS ARQMA_DIR ": ${ARQMA_DIR}")

 set(ARQMA_SOURCE_DIR ${ARQMA_DIR}
         CACHE PATH "Path to the root directory for Arqma")

 # set location of arqma build tree
 set(ARQMA_BUILD_DIR ${ARQMA_SOURCE_DIR}/build/**Linux**/${ARQMA_BRANCH}/release

removed the ARQMA_DIR "dev and Linux" and now its missing the ZMQ directory:
[ 63%] Building CXX object src/CMakeFiles/myxrm.dir/MicroCore.cpp.o
In file included from /root/arqma/src/cryptonote_core/blockchain.h:52,
                 from /root/explorer-arqma/src/arqma_headers.h:25,
                 from /root/explorer-arqma/src/MicroCore.h:10,
                 from /root/explorer-arqma/src/MicroCore.cpp:5:
/root/arqma/src/arqma_mq/zmq.hpp:51:10: fatal error: zmq.h: No such file or directory
   51 | #include <zmq.h>
      |          ^~~~~~~
compilation terminated.

so found the dep list does not include needed libzmq3-dev  so installed that apt install libzmq3-dev and now its missing the Arqma wallet directory...
Scanning dependencies of target arqblocks
make[3]: Leaving directory '/root/explorer-arqma/build'
make[3]: Entering directory '/root/explorer-arqma/build'
[ 95%] Building CXX object CMakeFiles/arqblocks.dir/main.cpp.o
make[3]: *** No rule to make target 'Arqma_WALLET_LIBRARY-NOTFOUND', needed by 'arqblocks'.  Stop.

Unsure what is going on here now.

Set proper path to your arqma sources in here
https://github.com/arqma/explorer-arqma/blob/a2feab86e75d67ed1371196a4c2831b82c7ca1a1/CMakeLists.txt#L28
Compile arqma with command:
USE_SINGLE_BUILDDIR=1 make
Do not forget about using specified boost version cmake and gcc mentioned on arqma readme

I did compile with USE_SINGLE_BUILDDIR=1 make from a dev git clone.
let me edit the arq dir as above


JavaScript Navigation updates

The last update I pushed:

Created index.js to handle the navigation's menu button
Updated CSS file for resizing the nav
Minor tweaks to the header section on the index.html file for the nav bar

If those updates seem good then we just have to:

[x] Copy over the updated header code from the index.html to the spotify and ticketmaster HTML files
[ ] Add a script tag linking to the index.js file to the bottom of the body tags on the spotify and ticketmaster HTML files
[ ] I feel like I'm forgetting something but I think that's it !!

I update the html on everything and its working fine so far only issue is on the Ticketmaster page the hamburger menu not showing up smh I mightt have missed linking the index.js


Use a unique version for plugins

:notebook_with_decorative_cover: Description
This changes plugin versions to be set automatically by the VASTRegisterPlugin CMake function. A plugin version consists of three parts:

The CMake project version of the plugin
The Git revision of the last commit that touched the plugin
A dirty suffix for uncommited changes to the plugins

The VAST_REGISTER_PLUGIN macro no longer takes the plugin version in the C++ code, which may require plugins to be updated.
:memo: Checklist

[x] All user-facing changes have changelog entries.
[x] The changes are reflected on docs.tenzir.com/vast, if necessary.
[x] The PR description contains instructions for the reviewer, if necessary.

:dart: Review Instructions
Run locally to test the dirty indicator and that rebuilds pick up changes without reconfiguration.

This doesn't work with the static binary build yet, because .git is not available when building with Nix. Let's talk about this tomorrow.

We discussed this and agreed to do this in a separate PR.
This one still needs to be rebased after #1767 is merged.


Unpin wheel requirement since astunparse does not require at runtime

https://github.com/simonpercivall/astunparse/pull/65
astunparse $ for tag in v1.6.0 v1.6.1 v1.6.2 v1.6.3; do git checkout $tag; echo $tag; grep wheel . -R --exclude-dir=.git; done
Previous HEAD position was d7ba156 Bump version
HEAD is now at df08255 Bump version and add HISTORY entry.
v1.6.0
./setup.cfg:[wheel]
./Makefile:	python setup.py bdist_wheel
./requirements.txt:wheel >= 0.23.0, < 1.0
Previous HEAD position was df08255 Bump version and add HISTORY entry.
HEAD is now at c73b675 Bump version.
v1.6.1
./setup.cfg:[wheel]
./Makefile:	python setup.py bdist_wheel
./requirements.txt:wheel >= 0.23.0, < 1.0
Previous HEAD position was c73b675 Bump version.
HEAD is now at d7ba156 Bump version
v1.6.2
./setup.cfg:[wheel]
./Makefile:	python setup.py bdist_wheel
./requirements.txt:wheel >= 0.23.0, < 1.0
Previous HEAD position was d7ba156 Bump version
HEAD is now at 2acce01 Merge pull request #42 from simonpercivall/merge/python3.8-support
v1.6.3
./setup.cfg:[wheel]
./Makefile:	python setup.py bdist_wheel
./requirements.txt:wheel >= 0.23.0, < 1.0

I'm not even sure why wheel is a requirement in the first place:
~/git/tensorflow [unpin_wheel|✔] $ grep wheel . -R --exclude-dir=.git | grep "import"
~/git/tensorflow [unpin_wheel|✔] $ grep wheel . -R --exclude-dir=.git | grep "from"
./tensorflow/lite/g3doc/guide/python.md:If you'd like to manually install a Python wheel, you can select one from

For other packagers, it also seems to be true that the python package of tensorflow never imports wheel in 2.6.2 as well
(base) ✔ ~/git/tensorflow [v2.6.2|✔]
11:42 $ grep wheel . -R --exclude-dir=.git | grep "import"
(base) ✘-1 ~/git/tensorflow [v2.6.2|✔]
11:42 $ grep wheel . -R --exclude-dir=.git | grep "from"
./tensorflow/lite/micro/examples/hello_world/train/train_hello_world_model.ipynb:            "Requirement already satisfied: wheel~=0.35 in /usr/local/lib/python3.6/dist-packages (from tensorflow==2.4.0rc0) (0.35.1)\n",
./tensorflow/lite/g3doc/guide/python.md:If you'd like to manually install a Python wheel, you can select one from


[HELP] https://wpsetup.keriganc.com/ can't be reached

I'm following the directions to get wire-pod working, but when I go to https://wpsetup.keriganc.com/ in Chrome, I get the message that the site can't be reached.
I'm trying to run wire-pod on Ubuntu/x86. And I have a prod/regular bot.
Also, as a follow-on, I did manage to get a bit farther using https://vector.techshop82.com/html/main.html, but when I reach the part where I enter the wifi, the web page says its downloading, I see vector show the animated wifi display, then the cloud with spinner, then a cloud with a exclamation point (which I assume is bad). Not really sure what's going on at that point.
I should also mention that using the https://vector.techshop82.com/html/main.html, I did manage to get it to the point where I could proceed to the wire-pod step of "Bot Setup". But when I'd enter the wifi said/password, I'd get a message back saying the password was incorrect (which it isn't). And vector just displays an animated wifi signal. Also, it's a 2.4GHz wireless - not even a 5G under the same name. BUT, when I take a look in my router, I see that Vector is actually connected and assigned an IP address. And I can ping it from the server upon which I'm running wire-pod.

Just to add a little more info. Using the "wire pod interface" page from my Ubuntu server, I was able to pair to my Vector again. And it seems to jump immediately to "Starting OTA update...". But, maybe because it's not really altogether ready, I see the Vector display showing a cloud with spinning and periodically, the exclamation point. And in the logs on the server, I see this repeatedly:

wpsetup.keriganc.com should be back up now.


Simultaneous trades + L2 subscription doesn't work on Gemini

Exchange
Gemini
Subscription type
Simultaneous L2 and trades subscription.
Describe the bug
Trades and order book data come from the same subscription on the Gemini API. When you try to subscribe to both using ccxws, it will only work for one and the second one will stop receiving updates.
To Reproduce
Steps to reproduce the behavior:

Create a new Gemini client.
Subscribe to btcusd trades.
Subscribe to btcusd L2 updates.

Expected behavior
Both subscriptions receive updates. Only one of them actually does.

my workaround for this was to just create two separate Gemini clients, one for order book data and another for trades


Include wxWebView in builds

Thanks for the great packages, from a user report https://github.com/elixir-desktop/desktop/issues/27 I learned that the esl-erlang packages do not include wxWebView by default. The erlang build system will enable/disable support based on whether it detects the needed dependency libwxgtk-webview3.0-gtk3-dev on the build system or not.
Would be great if you could add that in your build scripts unless there is a reason for the omission.

Apologies for closing the Issue 29 days ago and then reopen it. I automated some stuff with Terraform and I did not do it on purpose. This repository is currently a work in progress but the erlang bulider will include all extra utillities in the package, including wx.


csiaddons: update csi-addons spec

Updating the csi-addons spec and also switching to the source to get the replication volumeID and fallback to volumeId in the request if the volumeId is missing in the source

@mergifyio rebase

@mergifyio queue


Fix license

via Justin on the Pinot release thread [VOTE] Release Apache Pinot (incubating) 0.3.0 RC2
license need a little work. Please fix before the next release.

I checked:
- incubating in name
- signatures and hashes are fine
- DISCLAIMER exists
- LICENSE is missing a license
- NOTICE is fine
- No unexpected binary files
- all source files have ASF headers

LICENSE file is missing license for:
- jquery.requestAnimationFrame  Copyright (c) 2012 Corey Frang in [1] This is also missing in licenses.
- Sizzle.js in [2] This is also missing in licenses. This is one danger with including minified files.

Thanks,
Justin

1. ./pinot-controller/src/main/resources/webapp/js/lib/foundation/foundation.js
2, ./pinot-controller/src/main/resources/webapp/js/lib/jquery-2.1.3.min.js`

Close as resoled in #5195


WIP: implement velocity transfer through linear combination

This adds a way to smoothly interpolate between two different behaviors.
Some notes:

If we transfer into a spring we don't need to use linear combination, we can input the last instantaneous velocity into the spring formula.

And some open questions:

[ ] Should we make this feature optional? There might be cases where you don't want to do this. Default is disabled in the current implementation.
[ ] Is the approximation of instantaneous velocity good enough for us? For now probably yes? (see also TODO in the code)
[ ] Is there any other case where linear combination might not be good (enough)? If so: what?

Marked as WIP for now because I want to do some work on the abstraction as we can likely share the linear combination and instantaneous velocity calculation between all non-spring easings.

I think that transferring velocity ought to be the default behavior for interruptions and allow opting out either by flag, or by triggering some sort of "stop" motion first.

Re:  Is the approximation of instantaneous velocity good enough for us? For now probably yes? (see also TODO in the code)
I'm gonna let the behaviors decide. Our current behaviors can calculate it accurately (linear, spring). Behaviors are free to use a derivative for more complex functions. We'll likely need an approximation of the velocity when merging multiple frames (value, velocity combinations) for overlapping easings, or going from a spring to an easing.


Enable specification of degree specialization

My degree is in Cognitive Science with a specialization in Anthropogeny.  There is no place to add this specialization.
Suggested Fix:
Introduce a specialization variable; if it is defined, format properly with the specialization text.
I have a fix for this on my machine :)

Fixed in #7


Project Proposal: Core UI improvement

Project proposal for #415
Due date
Review for this proposal should aim to be completed by 28 March 2023.
Notes
I added @zackkrida and @dhruvkb as reviewers. There are a few sections with no information as it might require some technical scope. I would love a special focus on the "Infrastructure" and "Success" sections as the former needs to assess the impact of this work, to then set the success criteria for the latter section.
Since this is my first project proposal document, feel free to suggest any other change.
Checklist

[x] My pull request has a descriptive title (not a vague title like
Update index.md).
[x] My pull request targets the default branch of the repository (main) or
a parent feature branch.
[ ] My commit messages follow [best practices][best_practices].
[ ] My code follows the established code style of the repository.
[N/A] I added or updated tests for the changes I made (if applicable).
[N/A] I added or updated documentation (if applicable).
[N/A] I tried running the project locally and verified that there are no visible
errors.

A question to @WordPress/openverse-frontend. Does this work need technical planning before it can begin?

I love the simplification that this project brings to the UI!
In terms of the implementation plan, @panchovm, having the size/variant (or a note saying that the button is non-standard) for each VButton on the site would be amazing. I am not sure if you would be comfortable doing that as you are not as familiar with the underlying code.
Some edge cases I saw when reviewing the code were:

Text buttons (without border, and an underline on hover) are not present in Figma anymore, and (according to @panchovm 's reply in Figma) are replaced with transparent gray buttons.  One of them is the "Report this image/audio" button on the single result page. The button currently has no horizontal padding to make the text look aligned with the page layout. So, do we keep the no horizontal padding for this button, or do we add the standard padding there?

Note on sizes for any buttons that are not going to be standardized: the search button, play-pause button, the load more button, etc.

I am not sure if you would be comfortable doing that as you are not as familiar with the underlying code.

I feel uncomfortable tackling this task because of the technical knowledge I lack.

To your edge case points @obulat

The button ["Report this image/audio"] currently has no horizontal padding to make the text look aligned with the page layout. So, do we keep the no horizontal padding for this button, or do we add the standard padding there?

We would need to remove the right padding of the section where the button is placed to make it look align with the rest of the content. Similarly as we did with the "Filters" button where only hover and active states show the button's hidden padding. Here is a screenshot of the header's spacing effect.

Note on sizes for any buttons that are not going to be standardized: the search button, play-pause button, the load more button, etc.

Two question come to me based on this point

Is this a list we would need to create in the implementation plan to specify which components are and are not involved in this change?
Do these VButton-based components (the search button, play-pause button, the load more button, etc) duplicate or inherit the VButton specs? Asking this to prevent modifying these VButton-based elements.

@obulat since you have already reviewed this and made multiple contributions, would you be comfortable acting as a reviewer instead of @dhruvkb? The conversation you and @panchovm are currently engaging in seems like the last remaining piece to finalize this proposal.

@obulat since you have already reviewed this and made multiple contributions, would you be comfortable acting as a reviewer instead of @dhruvkb? The conversation you and @panchovm are currently engaging in seems like the last remaining piece to finalize this proposal.

I was going to suggest that as a matter of fact :)

I would love a special focus on the "Infrastructure" and "Success" sections as the former needs to assess the impact of this work, to then set the success criteria for the latter section.

To answer this directly: I don't think this has any infrastructural implications.
For "success" I can't think of anything that is actually useful that we could measure for this. I'd suggest defining the success of this project based on the completed implementation of it, but it's a bit tautological. If you wanted to avoid that, then defining the way in which the search experience is meant to be improved by this would help in scoping a "success". Is this only an aesthetic improvement, or should we also see changes in the usability of the site? If it's the latter, then would we be able to meaningfully measure them?

@panchovm, I've done an audit of the buttons, and have a couple of questions for you in the comments in this spreadsheet: https://docs.google.com/spreadsheets/d/15D4VCNcZeNz9lnZIHYYk8GFx9AdKJ1EwFVix1Jbo3Gw/edit?usp=sharing
Could you take a look at the spreadsheet and confirm that everything is correct?
The main question is whether we should add a filled-transparent variant for the pages menu button in the header (it should be transparent because it shows up on both white and yellow pages).
A couple of buttons can use the regular sizes for height, and override the width to become full-width.

I don't have edit access to the spreadsheet. Maybe that's why I can not see the comments. I sent you a request.

Could you take a look at the spreadsheet and confirm that everything is correct?

I need to dive into the current pages and mockups to make sure everything is fine. Do you think it makes more sense to move this info to the Figma file? In that way, design specs and components would live in one source of truth.

The main question is whether we should add a filled-transparent variant for the pages menu button in the header

The page menu component is fine as it is. And this makes me think of adding an accurate list of the components excluded from this change.

I appreciate you could answer the question below I asked here.

Do these VButton-based components (the search button, play-pause button, the load more button, etc) duplicate or inherit the VButton specs? Asking this to prevent modifying these VButton-based elements.

My point here is that your audit document names some elements as primary, and by consequence a second and third might exist. But the specs I talked with @dhruvkb time ago changes this nomenclature to a per-style utility. That's why the components specs page in Figma shows this.

Note: In the gray box, the first text is the Storybook name whereas the texts below the divider are the new button specs
My concern with this logic is that primary is an arrange of classes with a 48px height, but that value is also in Filters and Switcher components. And that might confuse when other elements share similar characteristics but are placed and used differently as primary concept conveys.

I've updated the spreadsheet link, and replaced primary with pink in the button names there.
Sorry I missed your questions, @panchovm
Two question come to me based on this point

Is this a list we would need to create in the implementation plan to specify which components are and are not involved in this change?

I think we can review each button case by case in the implementation PR, if necessary.

Do these VButton-based components (the search button, play-pause button, the load more button, etc) duplicate or inherit the VButton specs? Asking this to prevent modifying these VButton-based elements.

These components inherit the VButton specs, but can override some properties. For example, we can use 'large' size and 'filled-gray' variant for the Load more button, but add a tailwind class of 'w-full' to it so that the width becomes 100% instead of the 'auto' that a normal VButton has:
VButton variant="filled-gray" size="large" class="w-full">Load more</VButton>.
For the search button, we currently use the plain style with no background and no border, and use the tailwind classes in the "VSearchButton" or "VSearchBar" components to set the colors for resting, hover and focus states.
I opened a draft PR #989 with all the styles from the Figma file to experiment with them. You can see the Storybook with variants and sizes here. It allows you to see several buttons of different styles on one page, and adjust the sizes using the selects below the canvas:

After doing this I realized that we don't have the "pressed" (and pressed-hovered) states in the Figma file.

Note: In the gray box, the first text is the Storybook name whereas the texts below the divider are the new button specs

My concern with this logic is that primary is an arrange of classes with a 48px height, but that value is also in Filters and Switcher components. And that might confuse when other elements share similar characteristics but are placed and used differently as primary concept conveys.

I renamed the items to "filled-pink" and "filled-dark".
Do you think there's still value in having the "Primary" and "Secondary" buttons? I think having the matrix of variants, sizes and 'icon-start'/'icon-end' is easier to manage because you can clearly see what the button is. And with Primary, you have to remember what size and color it is. And I don't think it's used in more that 1-2 places, or is it?


update kubernetes version of rook

What type of PR is this?
/kind bug
What this PR does / why we need it:
update k8s.io/kubernetes version to 1.25.9
Which issue(s) this PR fixes:
Fixes # #465

/lgtm

/cherry-pick release-0.5


Transformation using latest EpiDoc stylesheets causes XSL processor error

We have replaced the XSL scripts used to format the inscriptions with the latest version, as the ones we were using were about 5 or more years old.
When I run the transformation in Oxygen, it works:
Ex: XML file transcribed/MA.Glouc.HCM.L.Tmp97.6.54/ and xsl usep-data/resources/xsl/epidoc-xsl-p5/start-txt.xsl
When you try the same thing on the web, going to https://usepigraphy.brown.edu/projects/usep/inscription/MA.Glouc.HCM.L.Tmp97.6.54/
nothing loads, and if you check the console log, you see that there is an xsl error.
19969A4E1BAF2CE01CE393669CA7071E.cache.html:875 SaxonCE.StandardErrorListener 19:26:15.414
SEVERE: Error at /xsl:stylesheet/xsl:template[4]/xsl:variable[7] in https://usepigraphy.brown.edu/usep_data/resources/xsl/epidoc-xsl-p5/htm-tpl-sqbrackets.xsl
  XPST0017 XPath syntax error near {...entbrackettypes//text()),']...}:
    Function string-join() must have 2 arguments

You can go and look at the file - however, I think that there is no XSL syntax error, but rather that the problem may be with SaxonCE, as this works in Oxygen and also for many other people using these scripts.
In addition, it turns out that SaxonCE hasn't been supported since 2017, and has been superceded by Saxon-JS (which may be faster as well)
We may want to consider upgrading our XSL processor -  I don't know how long it will take, but we are unable to run the lastest Epidoc scripts which generate a greatly improved display.

This has been temporarily addressed as follows:
The problem was that SaxonCE, with its XSL2.0 processor expects the XPath function string-join() to have two arguments, whereas XSL3.0 processor accepts one or two arguments. We have added an empty second argument to the string-join() functions that were failing, and everything is displaying as it should (so far). So, we can continue with SaxonCE for now, but this should be looked at eventually.

fixed by editing Epidoc stylesheets. closing


Drop back a version of hoverIntent due to erorr.

Hey @bakert,
Something went wrong with the build.
TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.
View build log
TravisBuddy Request Identifier: 9904b460-00e3-11ea-8767-d53e6939ac53


Removed -test parameter for soft delete CLI

@MikeWeiner-Microsoft : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Looks good to me. Approved.


Lets add http/3 support

Trying to enable Quic - http/3 draft.

[x] https://github.com/just-js/modules needs the patched openssl from Akamai and Microsoft.

[ ] BroingSSL Would be the correct SSL Lib by Googles Implementation
[ ] The Ring Crypto Package in Rust offers the needed Caps with nicer API

[ ] Overall It Translates to it does not matter if we use the quic implementation from google or cloudflare

[ ]  Pro Google

[ ] is more mature

[x] Pro Cloudflare

[ ] has the quicker iteration speed
[x] nicer API
[x] Would Produce RUST C => V8 Example usefull for all kind of people

Notes

https://nodejs.org/dist/v15.7.0/docs/api/quic.html#quic_example
https://github.com/quictls/openssl - OpenSSL for Quic http3 with tls 1.3
https://github.com/openssl/openssl/pull/8797 - tracking issue that when closed makes the quictls/openssl for obsolet expected in 3 + years as it is not part of openssl 3+ until 4

Updates

https://github.com/cloudflare/quiche/ - Rust Implementation offering C, C++ API (ring crypto rust lib), nginx integration
https://quiche.googlesource.com/quiche/ - C, C++ Google Implementation (BoringSSL) chromium server integration

Current Relevant Resources Readups
Ok good news SSL lib will be BoringSSL and we got a Rust Implementation that follows the standard and is deployed in production at cloudflare
Resources

https://blog.cloudflare.com/enjoy-a-slice-of-quic-and-rust/

hi @frank-dspeed. not sure what you are proposing exactly? a module for http/3 support? that would be nice to have for sure. not so sure if http/2 is worth implementing. also a bit iffy about how much complexity http/3 adds. one of the things that is great about http/1.1 is it is so easy to debug and hack on and you definitely can't say the same for http/3 and QUIC, but that is the way a large part of the industry seems to be moving.
am happy to help out in any way if you want to suggest a plan for putting this together. using a patched openssl library should be pretty straightforward. i have only implemented bare minimum crypto and tls functionality with openssl so far. i also did an mbedtls module that i can resurrect if that would be useful. crypto/security not really my area of expertise so would be good to have someone involved who could advise on best practice etc.

@billywhizz i total understand your point but there are methods to debug that one common way is to store the key in a unencrypted way via the handshake and log it then you can decrypt the traffic as usal with wireshark and so on.
Out of my View Quic is Essential for Security and i want to produce Micro Services with that. A TCP Requests makes About 4 Roundtrips that cost me CPU and RAM before i can choose if the Connection is valid. So http/3 solves that for me and i can reduce DDoS Attacks.
That sayed. Http/3 Includes http/2 but i do not plan to implement it indipendent. I do not plan to offer a JS API for the http/2 part but that can be done by some one else later if he needs that.

sounds good @frank-dspeed. if you want to discuss what's required let me know and i will help out whatever way i can. i'll see if i can get a change out in next week or so which will allow you to build an external module from a non just-js repo. it should be easy enough to set this up manually for now. will post some instructions later today if you haven't figured it out yourself.

are you thinking of implementing the http/2 protocol part in JS or using nghttp2 like node.js does?

@billywhizz i will use and algin with https://github.com/stefanocasazza/ULib

@frank-dspeed have you looked at MSQuic at all? it seems like it might be a good candidate. will do some further research myself. https://techcommunity.microsoft.com/t5/networking-blog/making-msquic-blazing-fast/ba-p/2268963.

also, there are some working low level ffi bindings examples here. they might be useful if you are experimenting.

@billywhizz the ms stuff looks less performant as it uses openssl anyway under the hood https://microsoft.github.io/msquic/
but ya when it is easy integrate able it will do the job the first implementation doesn't need to be the best this is flexible enough to change that at anytime

Seems that HTTP/3 is supported by 97% of the browsers that support HTTP/2.  (Including Safari behind a flag.)
HTTP/2 is a multiplexing-streaming TCP protocol with prioritization & better header compression (never mind server push; few servers do that now anyhow, I could be interested, but that is a JustJS v2 IMHO).
I vote for HTTP/3 to be implemented first, HTTP/2 could be added later.  Or the other way around? 🤷♂
HTTP/1.1 is getting moldy ;)

@tomByrer the problem is there are a lot of implementations around and i am not sure which should finally be supported
also i am not sure if it even should be directly implemented or if it would be better to use something like haproxy => http
it will take time to figure out the right solution. do you got a idea which would be the best option?

got a idea which would be the best option

For HTTP/2 itself, or HTTP/3 vs 2?
I find Wikipedia has a decent listing of libraries for H3.  I would believe those backed by corporations to be the most accurate & bug-free, though you could look at the fastest for inspiration.
https://en.wikipedia.org/wiki/HTTP/3#Libraries
H2 is not so easy to narrow down.  This one is patched by Cloudflare, whom I'm a fanboi of:
https://github.com/hyperium/h2

I personally prefer https://github.com/h2o/h2o/ - it covers all three major HTTP versions and their development cycle is well managed, test-backed, performance-measurements backed (ultra low latency, ~linear multithreaded scaling), etc. It's also plain C, so it works "everywhere".

Anyway, just my two cents: https://github.com/cloudflare/quiche

@Wallacy this is really low level but i think it is really a nice thing to have it as low level alternativ.
But my feeling is that for rapid development maybe something with more features like h2 could be better or even the nginx one we should not under estimate that we can use anything to embedded v8 inside it.
so we can apply both directions to our code we can include inside v8 and call into the the lib but we could also integrate v8 as a lib and call into that.
The hard point is now to decide the right processing mode and even enable diffrent once like Apache WebServer Did it.
mpm-prefork, mpm-event, mpm-worker.

Ok good news SSL lib will be BoringSSL and we got a Rust Implementation that follows the standard and is deployed in production at cloudflare
https://blog.cloudflare.com/enjoy-a-slice-of-quic-and-rust/ will start integration and adoption

Just a general note for no one in particular
https://github.com/litespeedtech/lsquic is actively maintained
https://en.wikipedia.org/wiki/HTTP/3#Implementations has a list of other implementations

I believe the best approach is to look at quic-interop-runner, at https://interop.seemann.io/ , where many http/3 library implementations are tested both on interoperability and performance.
Then you can make a more informed decision, by knowing all the options, their implementations and dependencies, as well as their expected performance.

from what i have looked at (not spent too much time on it), the MSFT Quic implementation seems to be the simplest and has a nice clean C api, which would be better for integrating with JS through bindings or FFI (which is now incredibly fast on JS, particularly V8).
One of the issues i have with most of the current implementations is they all want to take over the network interactions and/or the event loop, meaning we lose control from JS over non-blocking/async calls etc. If there is a set of QUIC/HTTP3 primitives available in library form that have nice clean C api's available and allow you to integrate your own event loop and network interfaces, please let me know.
The alternative of course would be to implement it from ground up in plain C/JS and engineer it specifically to integrate with and perform well embedded in JS, but this would be a pretty big undertaking.

Looking at the detailed implementations list, https://github.com/quicwg/base-drafts/wiki/Implementations , another possible candidate is picoquic

thanks @paulocoghi. yes, picoquic looks nice - i actually had it already starred but had forgotten about it. :sweat_smile:
this kinda relates to another dilemma i have with the Just-JS "approach". while v8 is incredibly fast and has tons of nice features and is incredibly well supported, it is becoming monstrously big as time goes on. i recently went from a version of v8 from may to the latest beta version and my runtime size went from ~23 MB to ~28MB :fearful:. I know QuickJS is an alternative and there are many other JS runtimes tailored for embedded systems, but none of them have JIT so performance on most tasks is orders of magnitude less than V8.
it may be possible to abstract away the interactions with the JS engine underneath and then build for different platforms using different JS engines. One of the nice things about the code i will be releasing is there is minimal C/C++ and most of the C/C++ there is is autogenerated from JS api definitions. You can see an early iteration of it here but it has changed a lot since then. I should be able to get the code out this week and hopefully there are some folks interested in discussing ways forward.

I believe this isn't a big problem, considering the notorious performance benefit.
To this day, nothing can beat v8 and JSC. Even Spidermonkey can't (currently), but there are some experiments trying to create a runtime based on it (spiderfire).

IMHO, the only scenario where the performance would be (maybe) comparable when using lightweight JS implementations like QuickJS, is when all the heavy lifting (like http calls, filesystem, general I/O, etc) is made outside of JS.
This would bring faster startup times compared to JIT runtimes, and (maybe) comparable performance for everything (that matters).

Also, you are a lot better than the executable size generated by Bun:

i was gonna link https://github.com/oven-sh/bun/issues/2541, but looks like you've seen it :)

@leeoniya this is a great observation! Changing the unicode library to a lighter one can help a lot.
@billywhizz , do you think its feasible to replace v8's original unicode library to a lighter one, like icu4x?

IMHO, the only scenario where the performance would be (maybe) comparable when using lightweight JS implementations like QuickJS, is when all the heavy lifting (like http calls, filesystem, general I/O, etc) is made outside of JS.
This would bring faster startup times compared to JIT runtimes, and (maybe) comparable performance for everything (that matters).

@paulocoghi yes, QuickJS can have fast bindings to C/C++ and can be fast if you can avoid writing much if any JS, but that wouldn't really work for what i am aiming for - i want folks writing more JS and only putting the minimum necessary code in C/C++/Rust land. with v8 fastcalls, the overhead into C++ from v8 JS is only ~2 nanoseconds which is negligible if you are doing mostly syscalls.

@leeoniya I can't believe what a small world this is. I used your dump_r package for years until it stopped working. I know this is horribly off-topic so it but please consider updating it based on one of the many forks to make it v8 compatible, don't force me to use Symphony's lesser var_dump 🙏

don't force me to use Symphony's lesser var_dump 🙏

haha, don't force me to touch php again :D. i don't miss that dumpster fire or its lang committee's endless bikeshedding one bit.

I have also done some experiments with bundling the application into a shared library, which can be loaded and run by the main spin runtime. these can be super tiny - a few hundred kilobytes as long as you have the runtime installed wherever you intend to run.

Wow! Just wow! This seems an interesting approach! And I can already imagine Just library becoming standard on major Linux distributions. Using it will be just an "apt-get" away.

@paulocoghi

Wow! Just wow! This seems an interesting approach! And I can already imagine Just/Spindle library becoming standard on major Linux distributions. Using it will be just an "apt-get/dnf install" away.

yeah. one of the things i am looking at as i said is pretty much busybox but in JS. can also do really nice things with bundling like take your app and bundle it straight into an init which will be booted into in a VM. this should save some time off cold starts. i've done tons of mad experiments like this. the endpoint could be a whole linux distro completely written in JS, except for the kernel of course. you can also package your apps as vmlinux and have them run inside their own linux kernel from the shell.
is why i think exposing these lower level apis to JS without having lots of layers of abstraction could be a really nice feature. once you can get at those low level api's all sorts of new things become possible (from JS) and everything becomes a lot simpler and easier to reason about. imo anyway. :sweat_smile:
i also have an x86_64 machine code generator which i used for creating ffi bindings instead of relying on libffi, which imo is kinda clunky. let's make all the things JS and have some fun! :partying_face:
if nothing else, i think it would be a useful thing for experimentation and education. i've been really enjoying hacking on it.