Can't build on Linux - unknown platform

I'm trying to build latest Master branch code of Imogen on Manjaro Linux.
This is what I get:
[unfa@unfa-desktop Imogen]$ cmake .
-- The C compiler identification is GNU 8.3.0
-- The CXX compiler identification is GNU 8.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.6.1")
-- Checking for module 'gtk+-3.0'
--   Found gtk+-3.0, version 3.24.8
CMake Warning (dev) at /usr/share/cmake-3.14/Modules/FindOpenGL.cmake:275 (message):
  Policy CMP0072 is not set: FindOpenGL prefers GLVND by default when
  available.  Run "cmake --help-policy CMP0072" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.

  FindOpenGL found both a legacy GL library:

    OPENGL_gl_LIBRARY: /usr/lib/libGL.so

  and GLVND libraries for OpenGL and GLX:

    OPENGL_opengl_LIBRARY: /usr/lib/libOpenGL.so
    OPENGL_glx_LIBRARY: /usr/lib/libGLX.so

  OpenGL_GL_PREFERENCE has not been set to "GLVND" or "LEGACY", so for
  compatibility with CMake 3.10 and below the legacy GL library will be used.
Call Stack (most recent call first):
  CMakeLists.txt:76 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found OpenGL: /usr/lib/libOpenGL.so
-- Console is hidden
-- Configuring done
-- Generating done
-- Build files have been written to: /data/Applications/Imogen
[unfa@unfa-desktop Imogen]$ make
Scanning dependencies of target Imogen
[  2%] Building CXX object CMakeFiles/Imogen.dir/src/Bitmap.cpp.o
In file included from /data/Applications/Imogen/src/Bitmap.cpp:26:
/data/Applications/Imogen/src/Platform.h:92:2: error: #error unknown platform
 #error unknown platform
  ^~~~~
/data/Applications/Imogen/src/Bitmap.cpp:82:5: error: ‘GL_RGB’ was not declared in this scope
     GL_RGB,
     ^~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:82:5: note: suggested alternative: ‘NSVG_RGB’
     GL_RGB,
     ^~~~~~
     NSVG_RGB
/data/Applications/Imogen/src/Bitmap.cpp:83:5: error: ‘GL_RGB’ was not declared in this scope
     GL_RGB,
     ^~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:83:5: note: suggested alternative: ‘NSVG_RGB’
     GL_RGB,
     ^~~~~~
     NSVG_RGB
/data/Applications/Imogen/src/Bitmap.cpp:84:5: error: ‘GL_RGB’ was not declared in this scope
     GL_RGB,
     ^~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:84:5: note: suggested alternative: ‘NSVG_RGB’
     GL_RGB,
     ^~~~~~
     NSVG_RGB
/data/Applications/Imogen/src/Bitmap.cpp:85:5: error: ‘GL_RGB’ was not declared in this scope
     GL_RGB,
     ^~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:85:5: note: suggested alternative: ‘NSVG_RGB’
     GL_RGB,
     ^~~~~~
     NSVG_RGB
/data/Applications/Imogen/src/Bitmap.cpp:86:5: error: ‘GL_RGB’ was not declared in this scope
     GL_RGB,
     ^~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:86:5: note: suggested alternative: ‘NSVG_RGB’
     GL_RGB,
     ^~~~~~
     NSVG_RGB
/data/Applications/Imogen/src/Bitmap.cpp:87:5: error: ‘GL_RGBA’ was not declared in this scope
     GL_RGBA, // RGBE
     ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:87:5: note: suggested alternative: ‘NL_ARGMAX’
     GL_RGBA, // RGBE
     ^~~~~~~
     NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:89:5: error: ‘GL_RGBA’ was not declared in this scope
     GL_RGBA,
     ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:89:5: note: suggested alternative: ‘NL_ARGMAX’
     GL_RGBA,
     ^~~~~~~
     NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:90:5: error: ‘GL_RGBA’ was not declared in this scope
     GL_RGBA,
     ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:90:5: note: suggested alternative: ‘NL_ARGMAX’
     GL_RGBA,
     ^~~~~~~
     NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:91:5: error: ‘GL_RGBA’ was not declared in this scope
     GL_RGBA,
     ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:91:5: note: suggested alternative: ‘NL_ARGMAX’
     GL_RGBA,
     ^~~~~~~
     NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:92:5: error: ‘GL_RGBA’ was not declared in this scope
     GL_RGBA,
     ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:92:5: note: suggested alternative: ‘NL_ARGMAX’
     GL_RGBA,
     ^~~~~~~
     NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:93:5: error: ‘GL_RGBA’ was not declared in this scope
     GL_RGBA,
     ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:93:5: note: suggested alternative: ‘NL_ARGMAX’
     GL_RGBA,
     ^~~~~~~
     NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:95:5: error: ‘GL_RGBA’ was not declared in this scope
     GL_RGBA, // RGBM
     ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:95:5: note: suggested alternative: ‘NL_ARGMAX’
     GL_RGBA, // RGBM
     ^~~~~~~
     NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:98:5: error: ‘GL_RGB’ was not declared in this scope
     GL_RGB,
     ^~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:98:5: note: suggested alternative: ‘NSVG_RGB’
     GL_RGB,
     ^~~~~~
     NSVG_RGB
/data/Applications/Imogen/src/Bitmap.cpp:99:5: error: ‘GL_RGB’ was not declared in this scope
     GL_RGB,
     ^~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:99:5: note: suggested alternative: ‘NSVG_RGB’
     GL_RGB,
     ^~~~~~
     NSVG_RGB
/data/Applications/Imogen/src/Bitmap.cpp:100:5: error: ‘GL_RGB’ was not declared in this scope
     GL_RGB,
     ^~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:100:5: note: suggested alternative: ‘NSVG_RGB’
     GL_RGB,
     ^~~~~~
     NSVG_RGB
/data/Applications/Imogen/src/Bitmap.cpp:101:5: error: ‘GL_RGB’ was not declared in this scope
     GL_RGB,
     ^~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:101:5: note: suggested alternative: ‘NSVG_RGB’
     GL_RGB,
     ^~~~~~
     NSVG_RGB
/data/Applications/Imogen/src/Bitmap.cpp:102:5: error: ‘GL_RGB’ was not declared in this scope
     GL_RGB,
     ^~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:102:5: note: suggested alternative: ‘NSVG_RGB’
     GL_RGB,
     ^~~~~~
     NSVG_RGB
/data/Applications/Imogen/src/Bitmap.cpp:103:5: error: ‘GL_RGBA’ was not declared in this scope
     GL_RGBA, // RGBE
     ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:103:5: note: suggested alternative: ‘NL_ARGMAX’
     GL_RGBA, // RGBE
     ^~~~~~~
     NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:105:5: error: ‘GL_RGBA’ was not declared in this scope
     GL_RGBA,
     ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:105:5: note: suggested alternative: ‘NL_ARGMAX’
     GL_RGBA,
     ^~~~~~~
     NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:106:5: error: ‘GL_RGBA’ was not declared in this scope
     GL_RGBA,
     ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:106:5: note: suggested alternative: ‘NL_ARGMAX’
     GL_RGBA,
     ^~~~~~~
     NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:107:5: error: ‘GL_RGBA’ was not declared in this scope
     GL_RGBA,
     ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:107:5: note: suggested alternative: ‘NL_ARGMAX’
     GL_RGBA,
     ^~~~~~~
     NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:108:5: error: ‘GL_RGBA’ was not declared in this scope
     GL_RGBA,
     ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:108:5: note: suggested alternative: ‘NL_ARGMAX’
     GL_RGBA,
     ^~~~~~~
     NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:109:5: error: ‘GL_RGBA’ was not declared in this scope
     GL_RGBA,
     ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:109:5: note: suggested alternative: ‘NL_ARGMAX’
     GL_RGBA,
     ^~~~~~~
     NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:111:5: error: ‘GL_RGBA’ was not declared in this scope
     GL_RGBA, // RGBM
     ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:111:5: note: suggested alternative: ‘NL_ARGMAX’
     GL_RGBA, // RGBM
     ^~~~~~~
     NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:116:5: error: ‘GL_TEXTURE_CUBE_MAP_POSITIVE_X’ was not declared in this scope
     GL_TEXTURE_CUBE_MAP_POSITIVE_X,
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:117:5: error: ‘GL_TEXTURE_CUBE_MAP_NEGATIVE_X’ was not declared in this scope
     GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:118:5: error: ‘GL_TEXTURE_CUBE_MAP_POSITIVE_Y’ was not declared in this scope
     GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:119:5: error: ‘GL_TEXTURE_CUBE_MAP_NEGATIVE_Y’ was not declared in this scope
     GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:120:5: error: ‘GL_TEXTURE_CUBE_MAP_POSITIVE_Z’ was not declared in this scope
     GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:121:5: error: ‘GL_TEXTURE_CUBE_MAP_NEGATIVE_Z’ was not declared in this scope
     GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp: In function ‘void SaveCapture(const string&, int, int, int, int)’:
/data/Applications/Imogen/src/Bitmap.cpp:132:19: error: ‘GL_VIEWPORT’ was not declared in this scope
     glGetIntegerv(GL_VIEWPORT, viewport);
                   ^~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:132:5: error: ‘glGetIntegerv’ was not declared in this scope
     glGetIntegerv(GL_VIEWPORT, viewport);
     ^~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:132:5: note: suggested alternative: ‘getdate_err’
     glGetIntegerv(GL_VIEWPORT, viewport);
     ^~~~~~~~~~~~~
     getdate_err
/data/Applications/Imogen/src/Bitmap.cpp:136:48: error: ‘GL_RGB’ was not declared in this scope
     glReadPixels(x, viewport[3] - y - h, w, h, GL_RGB, GL_UNSIGNED_BYTE, imgBits);
                                                ^~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:136:48: note: suggested alternative: ‘NSVG_RGB’
     glReadPixels(x, viewport[3] - y - h, w, h, GL_RGB, GL_UNSIGNED_BYTE, imgBits);
                                                ^~~~~~
                                                NSVG_RGB
/data/Applications/Imogen/src/Bitmap.cpp:136:56: error: ‘GL_UNSIGNED_BYTE’ was not declared in this scope
     glReadPixels(x, viewport[3] - y - h, w, h, GL_RGB, GL_UNSIGNED_BYTE, imgBits);
                                                        ^~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:136:5: error: ‘glReadPixels’ was not declared in this scope
     glReadPixels(x, viewport[3] - y - h, w, h, GL_RGB, GL_UNSIGNED_BYTE, imgBits);
     ^~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp: In static member function ‘static unsigned int Image::Upload(Image*, unsigned int, int)’:
/data/Applications/Imogen/src/Bitmap.cpp:260:9: error: ‘glGenTextures’ was not declared in this scope
         glGenTextures(1, &textureId);
         ^~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:262:50: error: ‘GL_TEXTURE_2D’ was not declared in this scope
     unsigned int targetType = (cubeFace == -1) ? GL_TEXTURE_2D : GL_TEXTURE_CUBE_MAP;
                                                  ^~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:262:66: error: ‘GL_TEXTURE_CUBE_MAP’ was not declared in this scope
     unsigned int targetType = (cubeFace == -1) ? GL_TEXTURE_2D : GL_TEXTURE_CUBE_MAP;
                                                                  ^~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:263:5: error: ‘glBindTexture’ was not declared in this scope
     glBindTexture(targetType, textureId);
     ^~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:274:18: error: ‘GL_UNSIGNED_BYTE’ was not declared in this scope
                  GL_UNSIGNED_BYTE,
                  ^~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:267:5: error: ‘glTexImage2D’ was not declared in this scope
     glTexImage2D((cubeFace == -1) ? GL_TEXTURE_2D : glCubeFace[cubeFace],
     ^~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:276:14: error: ‘GL_LINEAR’ was not declared in this scope
     TexParam(GL_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, targetType);
              ^~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:276:14: note: suggested alternative: ‘__LINE__’
     TexParam(GL_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, targetType);
              ^~~~~~~~~
              __LINE__
/data/Applications/Imogen/src/Bitmap.cpp:276:36: error: ‘GL_CLAMP_TO_EDGE’ was not declared in this scope
     TexParam(GL_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, targetType);
                                    ^~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp: In member function ‘void RenderTarget::BindAsTarget() const’:
/data/Applications/Imogen/src/Bitmap.cpp:458:23: error: ‘GL_FRAMEBUFFER’ was not declared in this scope
     glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
                       ^~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:458:5: error: ‘glBindFramebuffer’ was not declared in this scope
     glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
     ^~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:459:5: error: ‘glViewport’ was not declared in this scope
     glViewport(0, 0, mImage->mWidth, mImage->mHeight);
     ^~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp: In member function ‘void RenderTarget::BindAsCubeTarget() const’:
/data/Applications/Imogen/src/Bitmap.cpp:464:19: error: ‘GL_TEXTURE_CUBE_MAP’ was not declared in this scope
     glBindTexture(GL_TEXTURE_CUBE_MAP, mGLTexID);
                   ^~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:464:5: error: ‘glBindTexture’ was not declared in this scope
     glBindTexture(GL_TEXTURE_CUBE_MAP, mGLTexID);
     ^~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:465:23: error: ‘GL_FRAMEBUFFER’ was not declared in this scope
     glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
                       ^~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:465:5: error: ‘glBindFramebuffer’ was not declared in this scope
     glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
     ^~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp: In member function ‘void RenderTarget::BindCubeFace(size_t, int, int)’:
/data/Applications/Imogen/src/Bitmap.cpp:471:9: error: ‘GL_FRAMEBUFFER’ was not declared in this scope
         GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GLenum(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face), mGLTexID, mipmap);
         ^~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:471:25: error: ‘GL_COLOR_ATTACHMENT0’ was not declared in this scope
         GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GLenum(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face), mGLTexID, mipmap);
                         ^~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:471:54: error: ‘GL_TEXTURE_CUBE_MAP_POSITIVE_X’ was not declared in this scope
         GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GLenum(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face), mGLTexID, mipmap);
                                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:471:47: error: ‘GLenum’ was not declared in this scope
         GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GLenum(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face), mGLTexID, mipmap);
                                               ^~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:471:47: note: suggested alternative: ‘enum’
         GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GLenum(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face), mGLTexID, mipmap);
                                               ^~~~~~
                                               enum
/data/Applications/Imogen/src/Bitmap.cpp:470:5: error: ‘glFramebufferTexture2D’ was not declared in this scope
     glFramebufferTexture2D(
     ^~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:472:5: error: ‘glViewport’ was not declared in this scope
     glViewport(0, 0, faceWidth >> mipmap, faceWidth >> mipmap);
     ^~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp: In member function ‘void RenderTarget::Destroy()’:
/data/Applications/Imogen/src/Bitmap.cpp:478:9: error: ‘glDeleteTextures’ was not declared in this scope
         glDeleteTextures(1, &mGLTexID);
         ^~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:480:9: error: ‘glDeleteTextures’ was not declared in this scope
         glDeleteTextures(1, &mGLTexDepth);
         ^~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:483:13: error: ‘glIsFramebuffer’ was not declared in this scope
         if (glIsFramebuffer(mFbo))
             ^~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:485:13: error: ‘glDeleteFramebuffers’ was not declared in this scope
             glDeleteFramebuffers(1, &mFbo);
             ^~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:493:9: error: ‘glDeleteRenderbuffers’ was not declared in this scope
         glDeleteRenderbuffers(1, &mDepthBuffer);
         ^~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp: In member function ‘void RenderTarget::InitBuffer(int, int, bool)’:
/data/Applications/Imogen/src/Bitmap.cpp:530:5: error: ‘glGenFramebuffers’ was not declared in this scope
     glGenFramebuffers(1, &mFbo);
     ^~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:531:23: error: ‘GL_FRAMEBUFFER’ was not declared in this scope
     glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
                       ^~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:531:5: error: ‘glBindFramebuffer’ was not declared in this scope
     glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
     ^~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:534:5: error: ‘glGenTextures’ was not declared in this scope
     glGenTextures(1, &mGLTexID);
     ^~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:535:19: error: ‘GL_TEXTURE_2D’ was not declared in this scope
     glBindTexture(GL_TEXTURE_2D, mGLTexID);
                   ^~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:535:5: error: ‘glBindTexture’ was not declared in this scope
     glBindTexture(GL_TEXTURE_2D, mGLTexID);
     ^~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:536:36: error: ‘GL_RGBA8’ was not declared in this scope
     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
                                    ^~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:536:36: note: suggested alternative: ‘NL_ARGMAX’
     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
                                    ^~~~~~~~
                                    NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:536:64: error: ‘GL_RGBA’ was not declared in this scope
     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
                                                                ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:536:64: note: suggested alternative: ‘NL_ARGMAX’
     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
                                                                ^~~~~~~
                                                                NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:536:73: error: ‘GL_UNSIGNED_BYTE’ was not declared in this scope
     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
                                                                         ^~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:536:5: error: ‘glTexImage2D’ was not declared in this scope
     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
     ^~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:537:14: error: ‘GL_NEAREST’ was not declared in this scope
     TexParam(GL_NEAREST, GL_NEAREST, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_TEXTURE_2D);
              ^~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:537:14: note: suggested alternative: ‘CLONE_PARENT’
     TexParam(GL_NEAREST, GL_NEAREST, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_TEXTURE_2D);
              ^~~~~~~~~~
              CLONE_PARENT
/data/Applications/Imogen/src/Bitmap.cpp:537:38: error: ‘GL_CLAMP_TO_EDGE’ was not declared in this scope
     TexParam(GL_NEAREST, GL_NEAREST, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_TEXTURE_2D);
                                      ^~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:538:44: error: ‘GL_COLOR_ATTACHMENT0’ was not declared in this scope
     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mGLTexID, 0);
                                            ^~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:538:5: error: ‘glFramebufferTexture2D’ was not declared in this scope
     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mGLTexID, 0);
     ^~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:545:40: error: ‘GL_DEPTH_COMPONENT24’ was not declared in this scope
         glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, width, height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
                                        ^~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:545:80: error: ‘GL_DEPTH_COMPONENT’ was not declared in this scope
         glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, width, height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
                                                                                ^~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:545:100: error: ‘GL_FLOAT’ was not declared in this scope
         glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, width, height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
                                                                                ^~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:545:100: note: suggested alternative: ‘MAXFLOAT’
         glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, width, height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
                                                                                ^~~~~~~~
                                                                                MAXFLOAT
/data/Applications/Imogen/src/Bitmap.cpp:547:48: error: ‘GL_DEPTH_ATTACHMENT’ was not declared in this scope
         glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, mGLTexDepth, 0);
                                                ^~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:550:18: error: ‘GLenum’ does not name a type; did you mean ‘enum’?
     static const GLenum drawBuffers[] = {GL_COLOR_ATTACHMENT0};
                  ^~~~~~
                  enum
/data/Applications/Imogen/src/Bitmap.cpp:551:26: error: ‘drawBuffers’ was not declared in this scope
     glDrawBuffers(sizeof(drawBuffers) / sizeof(GLenum), drawBuffers);
                          ^~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:551:26: note: suggested alternative: ‘InitBuffer’
     glDrawBuffers(sizeof(drawBuffers) / sizeof(GLenum), drawBuffers);
                          ^~~~~~~~~~~
                          InitBuffer
/data/Applications/Imogen/src/Bitmap.cpp:551:48: error: ‘GLenum’ was not declared in this scope
     glDrawBuffers(sizeof(drawBuffers) / sizeof(GLenum), drawBuffers);
                                                ^~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:551:48: note: suggested alternative: ‘enum’
     glDrawBuffers(sizeof(drawBuffers) / sizeof(GLenum), drawBuffers);
                                                ^~~~~~
                                                enum
/data/Applications/Imogen/src/Bitmap.cpp:551:5: error: ‘glDrawBuffers’ was not declared in this scope
     glDrawBuffers(sizeof(drawBuffers) / sizeof(GLenum), drawBuffers);
     ^~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:557:5: error: ‘GLint’ was not declared in this scope
     GLint last_viewport[4];
     ^~~~~
/data/Applications/Imogen/src/Bitmap.cpp:557:5: note: suggested alternative: ‘uint’
     GLint last_viewport[4];
     ^~~~~
     uint
/data/Applications/Imogen/src/Bitmap.cpp:558:19: error: ‘GL_VIEWPORT’ was not declared in this scope
     glGetIntegerv(GL_VIEWPORT, last_viewport);
                   ^~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:558:32: error: ‘last_viewport’ was not declared in this scope
     glGetIntegerv(GL_VIEWPORT, last_viewport);
                                ^~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:558:5: error: ‘glGetIntegerv’ was not declared in this scope
     glGetIntegerv(GL_VIEWPORT, last_viewport);
     ^~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:558:5: note: suggested alternative: ‘getdate_err’
     glGetIntegerv(GL_VIEWPORT, last_viewport);
     ^~~~~~~~~~~~~
     getdate_err
/data/Applications/Imogen/src/Bitmap.cpp:560:5: error: ‘glClearColor’ was not declared in this scope
     glClearColor(0, 0, 0, 0);
     ^~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:561:13: error: ‘GL_COLOR_BUFFER_BIT’ was not declared in this scope
     glClear(GL_COLOR_BUFFER_BIT | (depthBuffer ? GL_DEPTH_BUFFER_BIT : 0));
             ^~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:561:50: error: ‘GL_DEPTH_BUFFER_BIT’ was not declared in this scope
     glClear(GL_COLOR_BUFFER_BIT | (depthBuffer ? GL_DEPTH_BUFFER_BIT : 0));
                                                  ^~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:561:5: error: ‘glClear’ was not declared in this scope
     glClear(GL_COLOR_BUFFER_BIT | (depthBuffer ? GL_DEPTH_BUFFER_BIT : 0));
     ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:563:53: error: ‘GLsizei’ was not declared in this scope
     glViewport(last_viewport[0], last_viewport[1], (GLsizei)last_viewport[2], (GLsizei)last_viewport[3]);
                                                     ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:563:53: note: suggested alternative: ‘dysize’
     glViewport(last_viewport[0], last_viewport[1], (GLsizei)last_viewport[2], (GLsizei)last_viewport[3]);
                                                     ^~~~~~~
                                                     dysize
/data/Applications/Imogen/src/Bitmap.cpp:563:5: error: ‘glViewport’ was not declared in this scope
     glViewport(last_viewport[0], last_viewport[1], (GLsizei)last_viewport[2], (GLsizei)last_viewport[3]);
     ^~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp: In member function ‘void RenderTarget::InitCube(int, int)’:
/data/Applications/Imogen/src/Bitmap.cpp:584:5: error: ‘glGenFramebuffers’ was not declared in this scope
     glGenFramebuffers(1, &mFbo);
     ^~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:585:23: error: ‘GL_FRAMEBUFFER’ was not declared in this scope
     glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
                       ^~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:585:5: error: ‘glBindFramebuffer’ was not declared in this scope
     glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
     ^~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:587:5: error: ‘glGenTextures’ was not declared in this scope
     glGenTextures(1, &mGLTexID);
     ^~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:588:19: error: ‘GL_TEXTURE_CUBE_MAP’ was not declared in this scope
     glBindTexture(GL_TEXTURE_CUBE_MAP, mGLTexID);
                   ^~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:588:5: error: ‘glBindTexture’ was not declared in this scope
     glBindTexture(GL_TEXTURE_CUBE_MAP, mGLTexID);
     ^~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:594:26: error: ‘GL_TEXTURE_CUBE_MAP_POSITIVE_X’ was not declared in this scope
             glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i,
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:596:26: error: ‘GL_RGBA’ was not declared in this scope
                          GL_RGBA,
                          ^~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:596:26: note: suggested alternative: ‘NL_ARGMAX’
                          GL_RGBA,
                          ^~~~~~~
                          NL_ARGMAX
/data/Applications/Imogen/src/Bitmap.cpp:601:26: error: ‘GL_UNSIGNED_BYTE’ was not declared in this scope
                          GL_UNSIGNED_BYTE,
                          ^~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:594:13: error: ‘glTexImage2D’ was not declared in this scope
             glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i,
             ^~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:606:14: error: ‘GL_LINEAR_MIPMAP_LINEAR’ was not declared in this scope
     TexParam(GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_TEXTURE_CUBE_MAP);
              ^~~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:606:39: error: ‘GL_LINEAR’ was not declared in this scope
     TexParam(GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_TEXTURE_CUBE_MAP);
                                       ^~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:606:39: note: suggested alternative: ‘__LINE__’
     TexParam(GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_TEXTURE_CUBE_MAP);
                                       ^~~~~~~~~
                                       __LINE__
/data/Applications/Imogen/src/Bitmap.cpp:606:50: error: ‘GL_CLAMP_TO_EDGE’ was not declared in this scope
     TexParam(GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_TEXTURE_CUBE_MAP);
                                                  ^~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:608:44: error: ‘GL_COLOR_ATTACHMENT0’ was not declared in this scope
     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_CUBE_MAP_POSITIVE_X, mGLTexID, 0);
                                            ^~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:608:66: error: ‘GL_TEXTURE_CUBE_MAP_POSITIVE_X’ was not declared in this scope
     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_CUBE_MAP_POSITIVE_X, mGLTexID, 0);
                                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:608:5: error: ‘glFramebufferTexture2D’ was not declared in this scope
     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_CUBE_MAP_POSITIVE_X, mGLTexID, 0);
     ^~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp: In member function ‘void RenderTarget::CheckFBO()’:
/data/Applications/Imogen/src/Bitmap.cpp:615:23: error: ‘GL_FRAMEBUFFER’ was not declared in this scope
     glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
                       ^~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:615:5: error: ‘glBindFramebuffer’ was not declared in this scope
     glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
     ^~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:617:18: error: ‘glCheckFramebufferStatus’ was not declared in this scope
     int status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
                  ^~~~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:620:14: error: ‘GL_FRAMEBUFFER_COMPLETE’ was not declared in this scope
         case GL_FRAMEBUFFER_COMPLETE:
              ^~~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:624:14: error: ‘GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT’ was not declared in this scope
         case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:628:14: error: ‘GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT’ was not declared in this scope
         case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/data/Applications/Imogen/src/Bitmap.cpp:650:14: error: ‘GL_FRAMEBUFFER_UNSUPPORTED’ was not declared in this scope
         case GL_FRAMEBUFFER_UNSUPPORTED:
              ^~~~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/Imogen.dir/build.make:63: CMakeFiles/Imogen.dir/src/Bitmap.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:73: CMakeFiles/Imogen.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

In the src/platform.h file the linux platform is not set at all. Moreover, the ffmpeg, python,... dependencies are in the repo for Windows. For Linux, the best is to use the package system and the cmake file has to be changed to do that.

I see. Is there a way to build anything for Linux so far?

Not easily, I'm afraid. Once the cmake file is tweaked to use python and libtcc is should not be too hard.

I managed to build on Ubuntu and get something running. Get 0.14 branch to test it

In file included from /home/redneck/programs/Imogen/src/Bitmap.cpp:26:
/home/redneck/programs/Imogen/src/Platform.h:101:10: fatal error: SDL.h: No such file or directory
  101 | #include <SDL.h>

Arch Linux
Shouldn't it be #include <SDL2/SDL.h> ?

Do you have SDL2 package installed?

Yes, i have, and i have SDL.h in /usr/include/SDL2

p.s.
https://github.com/CedricGuillemet/Imogen/issues/31#issuecomment-497986243

Should be better now

/home/redneck/programs/Imogen/ext/imgui_impl_sdl.cpp:50:10: fatal error: SDL.h: No such file or directory
   50 | #include <SDL.h>

I pushed some commits so it's be possible to compile Imogen with emscripten by cmake/emcmake. Not running yet due to nodes being translated from C to JS


Bugfixes April 2024

This PR bundles various bugfixes for April 2024.
#449 (38e3c5f): Fix typo in the Parameters.LogPi() function.
#454 (1532dc9): Add io.Writer and io.Reader interfaces to the Parameters struct.
#453 (a1de0c5): Do not overly large Scale values.

#459


AIPluginTool: reduce token usage, fix context window error

Using the AIPluginTool fails when the targeted ChatGPT Plugin server's YAML has more than 5 well-documented endpoints.
This causes the context length to overflow for most LLMs very quickly while using AIPluginTool. (See #2140 ).
This PR introduces 2 changes to AIPluginTool to make it more usable.

Instead of returning the entire YAML file of the plugin, only return the parsed schemas necessary to execute get & post requests against the plugin. I've chosen to represent the schema in a human readable way, (e.g. "/myEndpoint: (post) my description. Request body: message (string required)". However this should probably be configurable by developers going forward.

Instead of using the YAML to construct proper HTTP requests using the requests_* tools, I've changed the tool to accept get and post requests against the endpoints described by the YAML. This reduces the token length needed to communicate with the plugin as well.

Let me know what you think & how I can improve this PR! 🥂

Can I please get some assistance with lint / formatting?

Fixed the formatting issues! @hwchase17 wdyt?

One issue with this particular PR is that if you are including request parameters in post requests (as opposed to in data in the POST request), it doesn't seem to work.
Example of AI Plugin where its failing:
https://gist.github.com/cmoski/d5f9367ebfff5ce79e3e912cfca54829

stale afaict, closing for now but let me know if i'm missing something!


Dashboard loop

Hi,
Was using your script prior this.
Added it to Hacs, restart, populated config and restart again.
I can see that by Nest hub is loading the dashboard, then 5-10 sec after it goes back to the picture frame screen - And then the process is repeated after that.
It seems to be stuck in a loop.
Not sure where the problem is on this one tho.
HA Version:  2023.3.6
HA Dashboard: 1.0.4
Config looks like the image.

Please let me know if this is a problem or if I F'ed something up.

Hey @nagels, could you go inside the home assistant logs -> load full logs and post any relavent logs here?
Also, was this working fine with the script?

The script worked fine for 24 hours - Then it got a bit weird around 6:30 - but that might have been a user error as I changed the time and cant remember if I reconfigured the script.
I set the delay to 60 sec and kept log level at info.
The below is what is see - I can only show the one as the rest of the log is filled with warnings from Xiaomi Map being to large :D
But it will say that HA Dashboard (or media) is NOT playing on xxxxxx - Every 60 sec.

Looking at the log for the device it seems a bit odd tho.

I might try with 90 sec - Just to see if that resolves anything.

So 90 sec seems to work :O

This have been in the log 3 times so far and the dashboard is not reloading every 30 sec on the Nest!
It might be worth changing the default delay to 90 to accommodate for slow connection etc.

That is strange. Your latest comment shows the logs executing the "sleeping time" steps... As it seems to be past 2.00am local time. It should be stopping the dashboards from casting on your devices at this time, but it looks like it can't actually find any active cast sessions.
Perhaps the "state" of the display is different on your device when the dashboard is "active". Which generation of the nest hub are you using? I'm also wandering if there's a language issue here if you are GMT+1 :D
Lets try some testing to find out.. Could you either SSH into HA and execute these commands or use the same system you were previously running the script on? It should have 'catt' installed. If it's not installed:
pip install catt or pip3 install catt
Play some media on the display such as spotify/youtube and then do a:
catt -d "Stuen Display" status
Try and cast the dashboard to the device using the script/this integration/some other method and when it is on the display do the same:
catt -d "Stuen Display" status
Then do a "Hey Google, stop" and do the same:
catt -d "Stuen Display" status
And post back the results of these commands and we'll go from there!

I am running a Net Hub 2'nd gen with software version: 47.9.447810048 and Chromecast firmware: 1.56.324896.
The langue on the display is Danish But it is only used for Dashboard Casting - So we do not use the "Hey Google".
I can try and reset the Hub and install it with English - That should be no problem.
A little side note:
The integration is still active in HACS - It started to Cast the dashboard while I was watching a YouTube for the test below - But this could have been a timing problem as it did not interfere the second time around.
I also though about removing the Google integration, resetting the Hub, removing Dashboard Casting - And then start from a "fresh" with these things - It could be that the Hub is confused somehow after I switched over from the script.
Output of the commands:
Play some media on the display such as spotify/youtube and then do a:

Casted via the "Browse Media" under the device in HA.

Hey Google Stop:

Okay I can see the issue. The current implementation checks for a status of "Dummy" for when the dashboard is casting. Yours is reporting "Home" so it never thinks the dashboard is active. I can make this configurable via the configuration.yaml file.
Give me a couple of hours and I'll push a new version 😊

Sound amazing!
A little extra thing to add.
If I remove the config for Casting Dashboard and run this in HA Manually: catt -d "Stuen Display" cast_site http://<IP_ADDRESS>:8123/frede-mobil/default_view
And then run: catt -d "Stuen Display" status - it returns Volume:50
I am not sure if this is the right thing for it at to return?
As volume 50 is the same as when not casting to it...

Hey @nagels , can you restart Home Assistant and install the new update? (1.0.5) and update your configuration.yaml file to the new format explained here.
You should just change yours to "Home" for the dashboard_state_name.

I may have misread your first reply above. I thought the "Casted via the "Browse Media" under the device in HA." was you casting the dashboard.. is this the case?

Under Google Cast - Choose the device and press "Browse Media", Then choose the dashboard as shown below.

As also mentioned in the earlier reply - When casting with catt -d "Stuen Display" cast_site http://<IP_ADDRESS>:8123/frede-mobil/default_view and checking status it just return "Volume: 50"
So for me right now it looks like the state is actually not returned by Google Cast for some reason.

Do you have ha-catt-fix installed? https://github.com/swiergot/ha-catt-fix
After digging around trying to figure out why all of my dashboard report the state of "Dummy" - it comes from this!
If you do have it installed, open your dashboard -> three dots in the corner -> edit dashboard -> three dots -> manage resources.
You should find the ha-catt-fix in the list as shown below:

Here is where the title is coming from in the ha-catt-fix module:

So this should fix your issues 😄

It's not explained in the readme but follow the usual installation for HACS:
HACS -> Integrations -> Three dots -> Custom Repositories
Repository:
swiergot/ha-catt-fix
Category:
Lovelace
Then follow the rest of the instructions in the README 👍

OMG!
I don't event want to start on how stupid I feel right now:
So I did all the setup, but then I butchered the Trusted networks - Locking everyone else except or the Dashboard out :D
So I reverted to a backup and when looking at the custom repo list in HACS catt-fix was there - I just did not install it again..
I am so sorry for wasting  your time on this - Installing catt-fix again, restarting HA worked like a charm.

Ha, no problem! Is everything working as expected now?
I have now created a new feature that we don't really need 😆 I'm going to change the docs to make this a 'hidden feature' that may be useful in the future if Google changes the way it casts things.
It's partly my fault for not realising sooner, or even looking into why my dashboard was reporting "Dummy" in the first place!

Well, the dashboard have been on the screen now for 7 min with Dummy.

So I would say it works yes :O
It is always good with some practice I guess :D
Not your fault - This is on me not paying enough attention - can't see the trees for the forest:
Thanks for your time, assistance in troubleshooting and for pushing a "fix" so fast :D

Great to hear! I learned something here so all is not lost 👍
Closing this issue now, please reach out again if you have any issues/suggestions.

+1 for also needing to set the cast_delay to 90 seconds.
I had the same issues when testing at 45 seconds, then at 60 seconds


Install process does not check modrewrite

Using composer to create-project install SS IV when mod rewrite is disabled does not produce an error

The install.php does produce an error if you have mod_rewrite disabled; Can you please confirm you've run this and whether it's produced the error you expected?
It's not possible to run this check at composer time, since the apache environment isn't enabled. We'll need to defer this check until browse time.
With mod_rewrite disabled, what is the current experience you've noticed and what would you expect to happen, when you first attempt to view the website in your browser?
Ideally it would redirect the user to installer.php if it exists.

For reference:

Confirmed it.  After the following commands I wrote a .env then when navigating to IV I get a 404.
$ sudo sed -i 's/RewriteEngine/#RewriteEngine/' /etc/apache2/sites-enabled/000-default.conf
$ sudo a2dismod rewrite
Module rewrite disabled.
To activate the new configuration, you need to run:
systemctl restart apache2
$ sudo systemctl restart apache2
$ ./composer.phar -q create-project silverstripe/installer IV
install.php does not come into it

How about something like this?
<IfModule !mod_rewrite.c>
  Error "mod_rewrite is required!"
</IfModule>

I am not qualified to say.  I do not know how rewrites work on different servers.   I have not learned .htaccess magic
That snippet looks like it is for apache.  How would it work for IIS?

We would need a separate rule for web.config

I'm closing this as "not a bug" - as @tractorcow has pointed out, composer is for installing PHP packages/dependencies and cannot make assertions about apache/IIS set-up.


ARTEMIS-406 STOMP acknowledgements should support transactions

Add support for transactional STOMP acks/nacks
Fixed some stomp test issues

@gaohoward you mentioned you were closing this, but still open?

@clebertsuconic sorry I forgot it.


Roll Flutter Engine from bba66b658cee to 2f64c75653ca (1 revision)

https://github.com/flutter/engine/compare/bba66b658cee...2f64c75653ca
2023-05-01<EMAIL_ADDRESS>Bump github/codeql-action from 2.3.1 to 2.3.2 (flutter/engine#41629)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jsimmons@google.com,rmistry<EMAIL_ADDRESS>on the revert to ensure that a human
is aware of the problem.
To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Commit queue failed; closing this roll.


fix: Select first extension walkthrough for first launch if no built-in walkthroughs present.

#207302

LGTM. Thanks!


scripts/test.sh: Fix auto_into_responses feature declaration

https://github.com/juhaku/utoipa/pull/665 renamed the feature, but for some reason the test.sh script contained utoipa/ prefixes for the feature name in some cases, which effectively disabled these tests from even getting compiled.
This PR fixes the feature name in the cargo test invocations and "fixes" the actix tests as best as I was able to. Two tests weren't compiling at all, and another couple of tests were resulting in different output than the test was expecting. This should probably be fixed properly by someone with more knowledge of actix than me, but since it's already broken on master I guess we may as well merge it in this slightly less broken state 😅

#665 renamed the feature, but for some reason the test.sh script contained utoipa/ prefixes for the feature name in some cases, which effectively disabled these tests from even getting compiled.
This PR fixes the feature name in the cargo test invocations and "fixes" the actix tests as best as I was able to. Two tests weren't compiling at all, and another couple of tests were resulting in different output than the test was expecting. This should probably be fixed properly by someone with more knowledge of actix than me, but since it's already broken on master I guess we may as well merge it in this slightly less broken state 😅

Yup, It's quite long ago, since that feature was on the table. :sweat_smile: Thus no wonder if there are some tests that does not work as expected. So I agree we can merge this as is in slightly broken state and whenever the automatic responses will be looked again, it is more likely beneficial start fresh while keeping the original attempt as a reference. Anyhow that is something for some unknown future :smile: I believe that probably no one has ever used that feature.


tutorials/formatting_code.md fails on second step

I followed this link:

In the second step I executed bazel build //tools/formatter and got this error:
$ bazel build //tools/formatter
INFO: Analysed target //tools/formatter:formatter (0 packages loaded, 0 targets configured).
INFO: Found 1 target...
ERROR: /tmp/bazel/e0dde365cd6c83fcc35ecc8d725f7387/external/bazel_tools/tools/jdk/BUILD:197:1: SkylarkAction external/bazel_tools/tools/jdk/platformclasspath.jar failed (Exit 1) java failed: error executing command external/embedded_jdk/bin/java -XX:+IgnoreUnrecognizedVMOptions '--add-exports=jdk.compiler/com.sun.tools.javac.platform=ALL-UNNAMED' -cp ... (remaining 5 argument(s) skipped)

Use --sandbox_debug to see verbose messages from the sandbox
warning: could not find a JDK 8 bootclasspath in external/local_jdk, falling back to --release
Exception in thread "main" java.lang.IllegalArgumentException: external/local_jdk
        at jdk.compiler/com.sun.tools.javac.file.Locations$SystemModulesLocationHandler.update(Unknown Source)
        at jdk.compiler/com.sun.tools.javac.file.Locations$SystemModulesLocationHandler.handleOption(Unknown Source)
        at jdk.compiler/com.sun.tools.javac.file.Locations.handleOption(Unknown Source)
        at jdk.compiler/com.sun.tools.javac.file.BaseFileManager.handleOption(Unknown Source)
        at jdk.compiler/com.sun.tools.javac.file.BaseFileManager$2.handleFileManagerOption(Unknown Source)
        at jdk.compiler/com.sun.tools.javac.main.Option.process(Unknown Source)
        at jdk.compiler/com.sun.tools.javac.main.Option.handleOption(Unknown Source)
        at jdk.compiler/com.sun.tools.javac.file.BaseFileManager.handleOption(Unknown Source)
        at jdk.compiler/com.sun.tools.javac.main.Arguments.doProcessArgs(Unknown Source)
        at jdk.compiler/com.sun.tools.javac.main.Arguments.processArgs(Unknown Source)
        at jdk.compiler/com.sun.tools.javac.main.Arguments.init(Unknown Source)
        at jdk.compiler/com.sun.tools.javac.api.JavacTool.getTask(Unknown Source)
        at DumpPlatformClassPath.dumpJDK9AndNewerBootClassPath(DumpPlatformClassPath.java:141)
        at DumpPlatformClassPath.main(DumpPlatformClassPath.java:76)
Target //tools/formatter:formatter failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 1.405s, Critical Path: 0.63s, Remote (0.00% of the time): [queue: 0.00%, setup: 0.00%, process: 0.00%]
INFO: 3 processes: 3 linux-sandbox.
FAILED: Build did NOT complete successfully

@bttk thank you for finding the issue! would you mind checking whether it works at fix-gcs-tutorial branch?
You'll have to manually run the tutorial though. Here's how you can do it after following the link:
git checkout fix-gcs-tutorial
teachme tutorials/formatting-code.md

Works for me. I have run into some problems with the first step - for these I have added comments to 48d27e78712e9aa36429cb000cbafdd184603440


Parameter tuning with Cross Validation and early stopping

Hello,
I am performing hyperparameter tuning and I want to use early stopping. For this prupose I’ve created a parameter grid and I’m looping over it and using the built-in method xgb.cv
This method accepts early stopping but I’m wondering how it uses it internally. I’m afraid it doesn’t split the data in train, val and test for each of the K-folds as it should be done and instead it only splits it in train and test as it’s usually done for CV.
Thanks in advance

This method accepts early stopping but I’m wondering how it uses it internally.

It updates all folds for each iteration until early stopping criteria are met.  The score is calculated as mean and std.


Automatically re-authorize on any page load

Fixes #70

Coverage decreased (-0.3%) to 85.859% when pulling b9e0708a95787ce80dbb8352d801f3f281eff0ac on re-auth into 441cabd8214f0246a682e3c1a5fadd584eecf302 on master.

Coverage decreased (-0.3%) to 85.859% when pulling b9e0708a95787ce80dbb8352d801f3f281eff0ac on re-auth into 441cabd8214f0246a682e3c1a5fadd584eecf302 on master.


Fenced code blocks don't work as they should

Browser: >=FF 74
Extension version: 0.18.0
Actual Result
/* --- copy-selection-as-markdown debug information --- */
/* --- INPUT ------------------------------------------ */

creating a repository

This is very straightforward.

$ mkdir ~/annex
$ cd ~/annex
$ git init
$ git annex init

/* --- OUTPUT------------------------------------------ */
## [creating a repository](https://git-annex.branchable.com/walkthrough/creating_a_repository/)

This is very straightforward.

~
$ mkdir ~/annex
$ cd ~/annex
$ git init
$ git annex init

~
/* --- URL -------------------------------------------- */
https://git-annex.branchable.com/walkthrough/#index5h2
/* ---------------------------------------------------- */

It seems to be the same for ```.
I also checked the sample input at
http://domchristie.github.io/turndown/
in a different file, which reproduced this issue.
Expected Result
/* --- OUTPUT------------------------------------------ */
## [creating a repository](https://git-annex.branchable.com/walkthrough/creating_a_repository/)

This is very straightforward.

~~~
$ mkdir ~/annex
$ cd ~/annex
$ git init
$ git annex init

~~~

@t-e-r-m, really appreciate your time to report the issue.

I also checked the sample input at
http://domchristie.github.io/turndown/
in a different file, which reproduced this issue.

I cannot reproduce the issue on Turndown itself, but can see with the extension. I'll look into the situation but unfortunately I have not enough bandwidth to fix it in short term. Thank you.

I cannot reproduce the issue on Turndown
I didn't mean to write that, sorry. I meant to write that there's no issues in turndown. Must've fudged something in the edits.
I've edited my post accordingly.

I'll look into the situation but unfortunately I have not enough bandwidth to fix it in short term.
That's fine.

Love the extension, BTW.

I see. Thanks for your clarity!

@t-e-r-m, I gave a quick look and found a root cause of the issue. Will release new version soon. The issue had been there since v0.5.0! Why I can't notice this for over a year??


 Updated package.json of packages to include the new
   codegen scripts
2. Added a new workflow to create and upload the jars from
   the newly added code

Changes required to incorporate 1)
---------------------------------
3. Added replace package to assist the codegen scripts written in package.json

Fixes #393
Pull Request Requirements

[x] Rebased onto upstream/main branch and squashed into single commit to help maintainers review it more efficient and to avoid spaghetti git commit graphs that obfuscate which commit did exactly what change, when and, why.
[x] Have git sign off at the end of commit message to avoid being marked red. You can add -s flag when using git commit command. You may refer to this link for more information.
[x] Follow the Commit Linting specification. You may refer to this link for more information.

Character Limit

[x] Pull Request Title and Commit Subject must not exceed 72 characters (including spaces and special characters).
[x] Commit Message per line must not exceed 80 characters (including spaces and special characters).

A Must Read for Beginners
For rebasing and squashing, here's a must read guide for beginners.

@jagpreetsinghsasan Thank you for this! In general, LGTM.
Any reason why we can't use the kotlin based templates (I can imagine many, but we should documetn the decision and the reasons for it in the commit message)
P.S.: The custom-checks were broken because the package.json files became unsorted, I remedied the situation and did a force push to your branch. Please make sure not to accidentally erase those changes!

Here we are generating the java client code and their corresponding artifacts, so

For the java client code, we can transpile the code from kotlin to java (but then thats more like using a transpiler and not the raw openapi specs directly to generate the java code). Shall I look into generating the java code in this way then, if this reasoning is not right?
The failure in generating jars from generated java code (in certain plugins), also documents that straightaway openapi specs -> java code -> jar doesnt work as intented and if a developer wants to extensively use the straightaway java codegen, then our work done around this (and figuring out what actually is wrong from openapi codegen side will be helpful while investing time and will give a right direction).

Everything seems fine after your force push, compiling correctly, so no issues there.

Here we are generating the java client code and their corresponding artifacts, so
1. For the java client code, we can transpile the code from kotlin to java (but then thats more like using a transpiler and not the raw openapi specs directly to generate the java code). Shall I look into generating the java code in this way then, if this reasoning is not right?

@jagpreetsinghsasan I'd say we transpile from the JSON spec to the target language (of our choice) directly in each case (be that java or kotlin).
Right now you are saying -g java in the package.json scripts and I'm suggesting to keep with the pre-existing convention [1] and say -g kotlin unless there is a good reason to not to do that.
[1] =>

2. The failure in generating jars from generated java code (in certain plugins), also documents that, straightaway `openapi specs` -> `java code` -> `jar` doesnt work as intented and if a developer wants to extensively use the straightaway java codegen, then our work done around this (and figuring out what actually is wrong from openapi codegen side will be helpful while investing time and will give a right direction).

@jagpreetsinghsasan This works for me on the main branch, so maybe these issues are only happening for the java template and not the kotlin one?
yarn install
yarn configure
yarn codegen
cd packages/cactus-cmd-api-server/src/main/kotlin/generated/openapi/kotlin-client

$ gradle build
Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details

BUILD SUCCESSFUL in 21s
3 actionable tasks: 3 executed

$ gradle jar

BUILD SUCCESSFUL in 496ms
3 actionable tasks: 3 up-to-date

$ ls -alt build/libs/kotlin-client-1.0.0.jar
-rw-r--r-- 1 peter peter 74501 Jan 31 17:33 build/libs/kotlin-client-1.0.0.jar

Here we are generating the java client code and their corresponding artifacts, so

For the java client code, we can transpile the code from kotlin to java (but then thats more like using a transpiler and not the raw openapi specs directly to generate the java code). Shall I look into generating the java code in this way then, if this reasoning is not right?

@jagpreetsinghsasan I'd say we transpile from the JSON spec to the target language (of our choice) directly in each case (be that java or kotlin). Right now you are saying -g java in the package.json scripts and I'm suggesting to keep with the pre-existing convention [1] and say -g kotlin unless there is a good reason to not to do that.
[1] =>

@petermetz I would prefer not to generate jars from kotlin (for the java code), because generating the jar artifact is sort of a confirmation that the generated code is correct.
So if I generate the code for java directly from openapi, but then I generate the relevant jar using kotlin (although both the jars from java and kotlin should be the same, but their source code can be different/wrong, given what the transpile logic is specified for it), it would be not appropriate

Here we are generating the java client code and their corresponding artifacts, so

For the java client code, we can transpile the code from kotlin to java (but then thats more like using a transpiler and not the raw openapi specs directly to generate the java code). Shall I look into generating the java code in this way then, if this reasoning is not right?

@jagpreetsinghsasan I'd say we transpile from the JSON spec to the target language (of our choice) directly in each case (be that java or kotlin). Right now you are saying -g java in the package.json scripts and I'm suggesting to keep with the pre-existing convention [1] and say -g kotlin unless there is a good reason to not to do that.
[1] =>

@petermetz I would prefer not to generate jars from kotlin (for the java code), because generating the jar artifact is sort of a confirmation that the generated code is correct. So if I generate the code for java directly from openapi, but then I generate the relevant jar using kotlin (although both the jars from java and kotlin should be the same, but their source code can be different/wrong, given what the transpile logic is specified for it), it would be not appropriate

@jagpreetsingsasan Yeah my point is to do kotlin everywhere. That's why I said -g kotlin above. E.g., don't generate java code, generate kotlin code.

Here we are generating the java client code and their corresponding artifacts, so

For the java client code, we can transpile the code from kotlin to java (but then thats more like using a transpiler and not the raw openapi specs directly to generate the java code). Shall I look into generating the java code in this way then, if this reasoning is not right?

@jagpreetsinghsasan I'd say we transpile from the JSON spec to the target language (of our choice) directly in each case (be that java or kotlin). Right now you are saying -g java in the package.json scripts and I'm suggesting to keep with the pre-existing convention [1] and say -g kotlin unless there is a good reason to not to do that.
[1] =>

@petermetz I would prefer not to generate jars from kotlin (for the java code), because generating the jar artifact is sort of a confirmation that the generated code is correct. So if I generate the code for java directly from openapi, but then I generate the relevant jar using kotlin (although both the jars from java and kotlin should be the same, but their source code can be different/wrong, given what the transpile logic is specified for it), it would be not appropriate

@jagpreetsingsasan Yeah my point is to do kotlin everywhere. That's why I said -g kotlin above. E.g., don't generate java code, generate kotlin code.

We are already generating kotlin code sepearetly with -g kotlin argument in the codegen scripts. So I shall I just remove the java codegen entirely?

Here we are generating the java client code and their corresponding artifacts, so

For the java client code, we can transpile the code from kotlin to java (but then thats more like using a transpiler and not the raw openapi specs directly to generate the java code). Shall I look into generating the java code in this way then, if this reasoning is not right?

@jagpreetsinghsasan I'd say we transpile from the JSON spec to the target language (of our choice) directly in each case (be that java or kotlin). Right now you are saying -g java in the package.json scripts and I'm suggesting to keep with the pre-existing convention [1] and say -g kotlin unless there is a good reason to not to do that.
[1] =>

@petermetz I would prefer not to generate jars from kotlin (for the java code), because generating the jar artifact is sort of a confirmation that the generated code is correct. So if I generate the code for java directly from openapi, but then I generate the relevant jar using kotlin (although both the jars from java and kotlin should be the same, but their source code can be different/wrong, given what the transpile logic is specified for it), it would be not appropriate

@jagpreetsingsasan Yeah my point is to do kotlin everywhere. That's why I said -g kotlin above. E.g., don't generate java code, generate kotlin code.

We are already generating kotlin code sepearetly with -g kotlin argument in the codegen scripts. So I shall I just remove the java codegen entirely?

@jagpreetsinghsasan Yeah that's what I'd do. The kotlin code can be used to produce the JVM .jar files anyway so we don't need the java generated code IMO at all.

Closing this PR. Will create a new one


Shouldn't a Person email be unique ?

Hi,
Due to the async nature of Nexus, I have mistakenly created multiple instance of a Person representing the actual same person. It is due to a bad design on my side but on the other hand I was wondering if it would be doable/beneficial to constraint the unicity of the email address directly in the schema ?
Thanks

Hi everyone,
Here's my two cents: Since we have/had the same provblem, we've introduced the schema:identifier in all our instances (as a hash) which represents a value defining an entity to clearly distinguish different entities (regardless of their generated UUID). The availability and strength of these keys depends on your data. So if for your data an email is distinctive enough (e.g. probability is high enough that if these e-mail addresses are re-used after a person has left the organization and appears in another meaning in your data) you can go with it as a key which is checked for existence before uploading. Since indices in elasticsearch as well as blazegraph are updated asynchronously, it could still happen that two uploads in short time will happen (the check for existence bases on either elasticsearch or blazegraph and could report an instance to be non-existent while the first message of its creation is still in the queue).
If you don't want to introduce complex and (time)expensive synchronization mechanisms (such as client-side locks) you will not be able to evict that threat as far as we can tell and you need to introduce cleanup mechanisms. If you're interested in more detail what we're doing to prevent these things to happen, feel free to ask - so we can give you a short tour.

Thanks to both of you for the answers,
@MFSY Yes, that's what I was afraid of. After all, SHACL was developed for the Web. How could you guaranty unicity at the Web scale ?
@olinux Well, I am not using Pyxus but @genric entity-management library. I am exactly in the case that you described, where indices are not updated yet so instances were created multiple times. I am currently implementing a client side lock that blocks until the indices are updated. I think I have no other choice. You already implemented such thing in Pyxus ? If yes, I'd be interested in having a look.

@MFSY what is the strategy we should adopt for the BBP instance ?
I thought so far the email was the unique identifier. Is that assumption still valid ?

Hi @jdcourcol,
I propose we take this discussion offline. I'll organize a call for that to revisit how identifiers are handled with the latest Nexus development.
But I can say that while emails are used as identifiers on some data, we know this is not a final solution. People can change emails, have multiple emails from different institutions and there is a risk of repurposing already used emails.
As you can see from the question and answers above, it is not trivial to enforce  entity unicity based on email value or any other property value with Nexus v0.
With Nexus V1, we are a in a better position to implement best practicies in term of entity, person identification. For example we started to look at ORCID as person identifier (a person can still have one or many emails). We think it make sense in research context to use Orcid.
Of course the devil is in the details and we need to see coordinate on this.


Fix the issue that resources are not deleted at the tests done

Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

API change check
API changes are not detected in this pull request.


Fix for #594

Huh?  I only see log changes and cargo lock changes, am I missing it?

Sorry for the noise, it's easy to miss:
https://github.com/risc0/risc0/pull/597/files#diff-5a94c91e71f7bd1da002d77be35d38e7382342bfb10f52461ad4d1ebfebd2e12R269


Do not Merge - Support upstream NuttX IRQ API changes

@pavel-kirienko
There were some changes in upstream nuttx. This branch will be needed at the time PX4/Firmawre moves to the new Version of NuttX
FYI: @nuttx

Got it, thanks David.

rebased on today's master 648c471f63b4ed0b397f8ceb8e9d08179d19d5ad

Do we still need this, David?

@pavel-kirienko - yes we do.

@pavel-kirienko - just FYI rebased on current master


Deprecation warning in ambit authentication

Hi, there is a deprecation warning in the authentication module (aa.py, row 5)
FutureWarning: pandas.io.json.json_normalize is deprecated, use pandas.json_normalize instead.
To fix this issue it is sufficient to replace:
from pandas.io.json import json_normalize
with:
from pandas import json_normalize

Hi, same problem here when I try to use the pynanomapper package.
i notices that is has been fixed in c96eccc, two months ago, that's nice to see!
But the pip package is still outdated, the latest version is from May 23, 2022.
Is it possible to update it?

FWIW, we have a lot of changes in the latest version and we'll need some time to properly test them before making a new release on PyPI.


[GOBBLIN-473] Allow user to configure different lookback times for compaction

Dear Gobblin maintainers,
Please accept this PR. I understand that it will not be reviewed until I have checked off all the steps below!
JIRA

[x] My PR addresses the following Gobblin JIRA issues and references them in the PR title. For example, "[GOBBLIN-XXX] My Gobblin PR"

https://issues.apache.org/jira/browse/GOBBLIN-473

Description

[x] Here are some details about my PR, including screenshots (if applicable):

Tests

[x] My PR adds the following unit tests OR does not need testing for this extremely good reason:
Add CompactionTimeVerifierTest

Commits

[x] My commits all reference JIRA issues in their subject lines, and I have squashed multiple commits if they address the same issue. In addition, my commits follow the guidelines from "How to write a good git commit message":

Subject is separated from body by a blank line
Subject is limited to 50 characters
Subject does not end with a period
Subject uses the imperative mood ("add", not "adding")
Body wraps at 72 characters
Body explains "what" and "why", not "how"

@htran1 Please review.


"4 hidden features"

https://www.openstreetmap.org/edit#map=19/23.67430/120.79611
See "4 hidden features" at bottom
Click on it
Nothing happens

It should open the Map Features side panel, where the user months ago disabled some features.

Highlighting over hidden features clearly shows what is hidden:

Yes for me it said "4 landuse features" upon mouseover.
But that's it.
No way to figure out what to do about it.
It assumes that we have recently turned them off, and even remember that it was us that turned them off, and that it was not turned off by the layer by default etc. And know where to go to fix the problem.

Yes, I agree - we're working on improving the layer settings and filtering soon, so when that's done this indicator should open the new filtering screen.


Unit test a Controller: add a test for "controller as" use case

As "controller as" becomes more and more popular, I think this should be a mandatory pattern (I am willing to add a PR for it)

I'd love to see another contributor to this project. I always intended that this would be a community effort.

Awesome. I'll try to free-up some time and join the effort... Seems like a great idea!

Yeah, that's my dilemma lots of great ideas and no time :)

I started working on the controller as implementation. How do you thing it will be best to ad this: As a new pattern under patterns/controller.md? as a new file, something like patterns/controlelrAs.ms?
I tried adding it as a new pattern under controller.md, but I keep getting a strange error:
Found 32 but expected 36 blocks. Not sure what is this - any idea?

Yeah, I think a new file controllerAs.md would be best since the controller is going to have things on this instead of scope the unit tests won't look the same. As for the block count issue, unfortunatly the formatting of the md file has to follow a convention so it can parse it into sections. That check is there to let you know it wasn't able to parse the file.

merged! :)


Enhancement:  provide ability to set global (world) background color of drawing workspace

Most CAD systems have black as the drawing workspace background color to reduce eye strain and physical exhaustion from staring for hours at a rendered model - user should have a choice as to workspace background color.  If it's already a set-able system property somewhere, I can't find it, so it should at least be documented.

Hi @cogito-clarus do you mean something like  this ?
In which case, it is already available in the desktop version, and coming soon to the web based version

Thank you - You brought a smile to my face this morning, that is awesome! That is exactly what I was talking about.  Normally I wouldn't ask, I'd contribute, but JS/ES/TS is not my strong suit in languages.

Themes (light, dark, grass, ocean) are now available in the latest V2 branch.


Log new fields to database, added from #65

Following on from #65, this now saves those new fields to the database.
I wanted to avoid having NULLs anywhere as it makes the data harder to deal with; prefer to have any old unpopulated values as zeroes.
Decided to leave the new columns as NULLable but with a default, since SQLite gives zero shits and doesn't even let you remove the DEFAULT NULL without recreating the table as far as I can see. And we need the DEFAULT NULL so all the previous rows get backfilled with zeroes.

Codecov Report

Merging #82 (ee0828f) into master (45e2575) will increase coverage by 0.23%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #82      +/-   ##
==========================================
+ Coverage   50.48%   50.72%   +0.23%
==========================================
  Files          22       22
  Lines        2062     2072      +10
==========================================
+ Hits         1041     1051      +10
  Misses       1021     1021

Impacted Files
Coverage Δ

src/database.rs
89.94% <100.00%> (+0.63%)
:arrow_up:

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 45e2575...ee0828f. Read the comment docs.


Should be able to clear the current map selection

For example, if I click on the region "Adelaide Hills" and then click on an undefined area like the ocean, we should be back to having no region selection.

Resolved by #64.


Feature #237/use single connection

Closes #237

Codecov Report

Merging #257 into master will increase coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #257      +/-   ##
==========================================
+ Coverage   99.17%   99.17%   +<.01%
==========================================
  Files          13       13
  Lines         848      851       +3
  Branches       88       88
==========================================
+ Hits          841      844       +3
  Misses          7        7

Impacted Files
Coverage Δ

aiocache/decorators.py
100% <100%> (ø)
:arrow_up:

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 d72775f...f1f261d. Read the comment docs.


ci : Migrate PR workflow to Dime defenders

Description
Migrate PR workflow to Dime defenders

/ok-to-test sha=7856545db02395ab66c2f8352eeb03dbd52cba79


Change one instance of "your" to "you're".

Under the section "What will make me most marketable and competitive in a highly competitive employment marketplace?"
"Write and maintain a blog where you share answers to the most complex problems your facing."

@ronrihoo, Can you submit a PR so we can go ahead and merge?

@davidmolina, Definitely, thanks.


DIDAuth page always displays error message

Temp solution was added as part of #1066 and the root cause will be tracked as part of #1067.


Rich Presence shows WebStorm as generic JetBrains IDE

What happened?
With WebStorm version 2024.3, Discord Rich Presence shows the game as JetBrains IDE.

Expected behaviour
No response
What version of the plugin are you using?
1.6.2
What IDE and version are you using?
WebStorm 2024.3 WS-243.21565.180

Seems to be an issue with remote projects, opening a local project works fine.

I don't have a way to test remote environments right now. Could you check what text it gives when you hover over the application icon (or use the {app_name} variable)?

I'm unable to replicate this, could you provide me with details how you open the remote project?


Remove PD section from CSP page

Remove the "Professional Development" section from the CSP course landing page. The section only applies seasonally.
Closes #9098

Timing is everything.


Check current user before login.

How to check current user before login. Simply I want to call my method before login. Suppose I have two different - 2 login form and I am already login from first login form and when I will log in from another login form then it will check user already logged in or not. I want to create a custom method which will call before login.

Please use the mailing list or StackOverflow for questions/help, where a wider community will be able to help you. We reserve the issues tracker for issues only. Thank you!


Ensure that administration loads JavaScript in the same order every time

I'm not sure whether a PR is the right format for this but here we go. I tried asking about this a few weeks ago on the Slack channel but didn't really get any answers or feedback so I'm putting it here.
1. Why is this change necessary?
Suppose you have two plugins which both override the same Component in the administration. For example, the shipping method page sw-settings-shipping-detail which is a rather large Vue Component for a rather barebones part of Shopware = often times shipping related plugins will have no choice but to modify it. They'll add some fields to the page and likely override some functions and call $super on the parent functions.
The issue is that when multiple plugins start overriding the same parts, inheritance starts causing issues and suddenly we end up in a situation where certain parts of some overrides are never called. Part of what makes it frustrating is that  the issue isn't always with the same override, because the administration loads in the plugin JS bundles asynchronously and thus Plugin A might load before Plugin B sometimes, and sometimes Plugin B will load first. This will affect which overrides get called and which do not.
(Part of what makes it annoying is also just limitations in the override system for components AFAIK, but that's a different problem for another day).
Right now there's not really a solution to this problem that I know of, except trying to avoid Component function overrides as much as possible, which your support suggested when I asked them. However, sometimes this still ends up happening on functions like onSave where plugins want to ensure their part of the dataset on the page is saved correctly.
In Magento, for example, this sort of thing also happened all the time with system rewrites. In those situations, there were at least solutions, although they were not pretty. One solution was to make Plugin B's Override extend plugin A's, and ensure that A loaded before B. This requires knowing that the load order is fixed, however.
In Shopware 6, the load order is random. This is because the system injects every plugin's bundle as an async script, which mean they load asynchronously and execute their setup in random order. But we could easily make it a fixed load order by simply using deferred loading instead, which still loads bundles simultaneously, but then executes the scripts in the order they were defined.
This is not really a complete fix to the problem. Shopware doesn't have any way of stating which order you'd like plugins to load in, so the order is fixed, but not necessarily very controllable. This would be a nice first step, however, that would easily allow us to do something in these situations.
If you have any further comments or suggestions to how we can solve these problems please let me know, as we have a few shops with this exact sort of issue.
2. What does this change do, exactly?
This PR would ensure that plugins load their administration JavaScript in the same order every time, by setting defer instead of async on the plugin scripts. Thus, we can still have all plugins downloading their code at the same time, but the execution of them (and thus the order in which they inject themselves into the system) is in a set order on every load.
This would enable solving issues where two plugins override the same backend JS component.
3. Describe each step to reproduce the issue or behaviour.
Create two plugins, A and B, each with a simple administration bundle. Logging to console in each main.js is enough.
 Sometimes you'll see A before B, and sometimes you'll see B before A.
4. Please link to the relevant issues (if any).
5. Checklist
I'll do a changelist entry, etc. if you want to implement this.

[ ] I have written tests and verified that they fail without my change
[ ] I have squashed any insignificant commits
[ ] I have created a changelog file with all necessary information about my changes
[ ] I have written or adjusted the documentation according to my changes
[ ] This change has comments for package types, values, functions, and non-obvious lines of code
[ ] I have read the contribution requirements and fulfil them.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

This behavior is intended.
Plugins should work independent of the loading order. And as a plugin developer you need to make sure that the override behavior doesn't destroy other plugin behaviors.
A fixed loading order would only move the problem a bit away. What happens if the install order changes? Then it can also leads to errors. And if we sort after alphabetical names then everyone tries to get a plugin name with a high value letter to win the overrides. So this causes several other problems too.

Plugins should work independent of the loading order. And as a plugin developer you need to make sure that the override behavior doesn't destroy other plugin behaviors.

That's just not possible in practice from what I can tell. For example in the storefront, if two plugins override the same plugin, one won't work. It's the same thing in the administration. If just existing causes issues for others, how can i know if I'm causing issues? The only solution I've been pointed towards is to not override at all. I can tediously work around that in some cases but not all.
A fixed loading order is moving the goalpost in a way, I agree, for the reasons you mentioned. But it does let me at least fix the practical problem in some way. I'd rather tell someone that certain plugins have to be installed/activated in a certain order, than to tell them that they're just going to have to not use one of them, or pray the load order will be in your favor for the thing you want to do. Ideally I'd like to see a way to control the loading order directly from the backend/code or something similar, but like you said, that's a much more involved system with more things to keep in mind. That said, if such a system was ever implemented, you would probably need something like what this PR suggests anyways.
But if the random load order is really intentional, I hope we at least see some improvements to the override system here - I know other people have expressed problems with this issue as well.

Hey @Josniii ,
sorry for the late response. We would decline this pull request with the reasons that @jleifeld already stated out.
A fixed loading order doesn't help to solve the issue, as then extension a works, but extension b not. In your case, your extension would work, but maybe another not. For this reason, a "random" order makes it sure that developers doesn't develop it in fixed matter.


CDN API

This aims to supersede #719 properly implementing features in less rushed circumstances:

Proper caching rules using the Cache API
Versioned buckets
TTLs for metadata so they update themselves using a stale-while-revalidate approach

We will also have a custom CDN proxy from jsDelivr under the cdn.jsdelivr.net/fontsource/ path which should be another reliable layer of caching file downloads. This should replace the current API download URLs (although we will retain backwards compatibility in the form of a redirect).

Closed in favour of #815.


Add guide for designing icons with Affinity Designer

Package

[ ] lucide
[ ] lucide-angular
[ ] lucide-flutter
[ ] lucide-preact
[ ] lucide-react
[ ] lucide-react-native
[ ] lucide-solid
[ ] lucide-svelte
[ ] lucide-vue
[ ] lucide-vue-next
[ ] Figma plugin
[ ] all JS packages
[X] site

Description
There is no section on how a typical workflow would look like in Affinity Designer. So, I propose to add a guide for this in the docs.
Use cases
I don't use Inkscape, Illustrator or Figma to design icons. My preferred vector editor is Affinity Designer and that's what I would like to use to contribute to Lucide.
Checklist

[X] I have searched the existing issues to make sure this bug has not already been reported.

Created #2262 which implements this request

Closed by #2262


[136] Set DF_1_GLOBAL flag to tell iRODS server to load plugin with RTLD_LOCAL

Addresses #136.
Related: irods/irods#7158
Prerequisite: irods/irods#7159

Still running tests, but they're far enough along that I think it's safe to mark this PR as ready for review

I don't see any reason why it wouldn't

Correct

I don't see any reason why it wouldn't

Let's confirm that one of the tests you added in this PR works for CentOS 7 or Rocky Linux.

One of my tests failed in CentOS 7, as the module I was trying to import wasn't in Python yet. The others pass just fine though. I've removed the test in question.

So everything is now working for Ubuntu and CentOS now?

Correct

#'d


Add Vagrantfile

This installs Ruby 2.3.1 and Go 1.7 from source. Not a great way to do it (e.g. vagrant provision downloads another one of each!) and doesn't change the GOPATH (need to update the bash_profile for that) but it's good enough to save time if I'm developing here again.

If I PR this against the upstream branch, do it better. For now, this is just useful for picking this up again.


[Feature Request][iOS] seek/jump forward-back support on headphones

Hi,
thanks for the lib!
What is the need and use case of this feature?
Double-tripple press on airpods does nothing. It should jump forward/back (if jumping enabled) or skip to next/prev track (if that's enabled)
I saw it's not supported yet:
https://github.com/doublesymmetry/react-native-track-player/issues/107
https://rntp.dev/docs/api/events

@kesha-antonov AirPods don't have a built in action for jumping, only for skip to the previous/next track. This is an AirPods/iOS limitation and not related to RNTP.
There are a couple ways to work around it:
My RemotePrevious and RemoteNext events are simply used for rewind / fast forward, and I have never run into an issue with this.
I believe @mitchdowney has an app setting to allow users to decide whether the action should jump or skip, and that determines what action is called when the RemotePrevious / RemoteNext events fire.
You could also use something like react-native-device-info to detect if headphones are connected, and handle the event differently if they are or aren't connected.

@uzegonemad thanks, I'll try that

You're right,
I don't use RemotePrevious, RemoteNext in my code
I can use them to jump back/forward


when running chatbot.py it returns 'InferencerArguments' object has no attribute 'max_new_tokens'

I would like to try to deploy the Robin 7b model on the local machine. I downloaded the robin-7b_v2 model from hugging face and merged it with LLaMa 7b base model using apply_delta.py. when I run the chatbot.py, it seems to work well, but when I input something, it returns an error  'InferencerArguments' object has no attribute 'max_new_tokens'. Or is there any other method to deploy the robin model on the local machine? Thank you very much.
CUDA_VISIBLE_DEVICES=0 python ./examples/chatbot.py --deepspeed configs/ds_config_chatbot.json --model_name_or_path /home/qishi/Projects/LMFlow/output_dir/robin-7b_v2_merged --prompt_structure "A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human's questions.###Human: {input_text}###Assistant:"       --end_string "#"  --use_ram_optimized_load False
User >>> hello
Bot: ╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /home/Projects/LMFlow/./examples/chatbot.py:155 in                                 │
│                                                                                │
│   152                                                                                │
│   153                                                                                │
│   154 if name == "main":                                                                 │
│ ❱ 155 │   main()                                                                                │
│   156                                                                                │
│                                                                                │
│ /home/Projects/LMFlow/./examples/chatbot.py:129 in main                                         │
│                                                                                │
│   126 │   │   for response, flag_break in inferencer.stream_inference(                           │
│   127 │   │   │   context=context,                                                               │
│   128 │   │   │   model=model,                                                                   │
│ ❱ 129 │   │   │   max_new_tokens=inferencer_args.max_new_tokens,                                 │
│   130 │   │   │   token_per_step=token_per_step,                                                 │
│   131 │   │   │   temperature=inferencer_args.temperature,                                       │
│   132 │   │   │   end_string=end_string,                                                         │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
AttributeError: 'InferencerArguments' object has no attribute 'max_new_tokens'

Thanks for your interest in LMFlow! max_new_tokens is an argument of inferencer, which is defined here. As the default value is provided in its definition, such error should not occur normally. One possible cause of this error is code version. Could you please try update the main branch and see if the error occur again? Thanks!

Hi, if it is not working after updating the code by git pull, please try pip install -e . again.

i have the same error  on running ./scripts/run_chatbot.sh
AttributeError: 'InferencerArguments' object has no attribute 'max_new_tokens'

the command is
./scripts/run_chatbot.sh {output_model_path}

Could you run git pull and try it again?
Thank you

Could you run git pull and try it again?
Thank you

I find it was the docker container problem lol.
Thank you!


bug: missing border character upon open

Did you check docs and existing issues?

[X] I have read all the edgy.nvim docs
[X] I have searched the existing issues of edgy.nvim
[X] I have searched the existing issues of plugins related to this issue

Neovim version (nvim -v)
NVIM v0.9.1 and NVIM v0.10.0-dev-695+g58f948614
Operating system/version
MacOS Ventura 13.4
Describe the bug
The last vertical bar for the border is not initially drawn. Most often, I see an empty space character where the border should be, but it simply depends on the width/height of the terminal and contents of the main buffer. Here are a few examples:
Icon from starter shown when term size is 25x111:

Space char shown when term size is 25x119 chars:

But as soon as you resize the window or open one of the sections, the character is drawn correctly. For example, in the below image, I simply made the terminal wider and then shorter again to the original size:

Note: This is easy to overlook with the standard border color of Tokyonight when a space character takes the place of the border.  But I prefer a slightly brighter border to help distinguish my windows in vim, so I set my Tokyonight border color to the same color as comments. And that's when it stood out like a sore thumb.
Steps To Reproduce

Open a terminal and set its size to 25x111 characters (stty size).
Open neovim with the standard starter screen from LazyVim.
Open neo-tree using <leader>e.
You should see the icon I see in the screen shot.

To fix, simply resize the terminal window or open the neo-tree Buffers section.
I have tested with the latest nightly version from nvim as one of the prior issues stated that an upstream fix was posted, so I was unsure if that might be related, so I tested both 0.9.1 as well as nightly neovim. Problem happens on both.
Expected Behavior
I expect it to draw the full border as in the screenshot above.
Repro
I am struggling to create a simple config (my Lua Nvim skills aren't so great).
I was able to reproduce with a LazyVim starter kit with only the edgy extra enabled.

I noticed that as well. Those characters are not drawn by edgy. That's a Neovim bug

I'm 0 for 2 today 😄


RuntimeError: no running event loop

Hi,
I am trying to run it on a Linux Mint 21.2, running on an old imac, and I get the following error message:
scratch_link -d
Print debug messages
2024-12-23 22:02:53,011 set scan_seconds: 10.0
2024-12-23 22:02:53,011 set scan_retry: 1
2024-12-23 22:02:53,033 Certificate is ready in FireFox NSS DB: /home/admin1/.mozilla/firefox/5srxf0yb.default-release
2024-12-23 22:02:53,058 Certificate is ready in Chrome NSS DB: /home/admin1/.pki/nssdb
Traceback (most recent call last):
  File "/home/admin1/.local/bin/scratch_link", line 8, in <module>
    sys.exit(main())
  File "/home/admin1/.local/lib/python3.10/site-packages/pyscrlink/scratch_link.py", line 576, in main
    start_server = websockets.serve(
  File "/home/admin1/.local/lib/python3.10/site-packages/websockets/asyncio/server.py", line 737, in __init__
    self.server = Server(
  File "/home/admin1/.local/lib/python3.10/site-packages/websockets/asyncio/server.py", line 281, in __init__
    self.loop = asyncio.get_running_loop()
RuntimeError: no running event loop

I have followed the instructions, but I am stuck.
Any help? Kids want to use their legos during Christmas.
Thanks in advance

Hi
Try this fork: pyscrlink which has updated websocket. They should make pull request back here...
In case its helpful here are the steps I did to use it inside python virtual environment: venv
Create:
python3 -m venv pySrcLinkEnv
Source it:
source pySrcLinkEnv/bin/activate
Install suggested package for dependencies (Maybe also works without?)
pip3 install pyscrlink
Set capabilites (as root, and make sure to exit from root console)
# cd to-users-working-dir
source pySrcLinkEnv/bin/activate
bluepy_helper_cap
exit

Remove installed pyscrlink
pip3 uninstall pyscrlink
Install build
pip3 install build
Build the package (at the working folder where release script is located)
./release.sh build
Install it
pip3 install dist/pyscrlink-0.2.8.tar.gz


How to obtain information on multiple evaluation metrics?

Aside from the value passed to eval_metric during fit, I want to find the results of other evaluation metrics as well. When the leaderboard() is called on test data, is there any way these other metrices can also be computed and returned for each model?

Currently, leaderboard only outputs the eval_metric score, but it would be a good feature-add to also output additional metrics if requested.
At present, you can get the pred and pred_proba's from all of the models and calculate the metric scores outside of AutoGluon, and fit_summary() has information on several other metric scores.


Fix pygame initialization

Looks like you're trying to set the pygame timer before initializing pygame itself.
python chip8.py games/Brick.ch8
pygame 2.5.2 (SDL 2.28.2, Python 3.10.8)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
  File "/home/master/dev/Python-CHIP8-Emulator/chip8.py", line 642, in <module>
    chip8 = Emulator()
  File "/home/master/dev/Python-CHIP8-Emulator/chip8.py", line 123, in __init__
    pygame.time.set_timer(pygame.USEREVENT+1, int(1000 / 60))
pygame.error: pygame is not initialized

Ha! I believe this was allowed back in 2019 in an older version of pygame. I haven't looked at this repo since then. Thanks for pointing this out and making the PR.


Relax version requirement for stanfordnlp to include v0.2.0.

After some testing, API-wise the two packages seem to be compatible.
Regarding stanfordnlp outputs, note that in v0.2.0 some POS tag predictions have changed, even in the simple case of the text "Hello world! This is a test." (which is used in the tests). In particular, predictions have flipped in ambiguous cases such "This" and "is" in the second sentence, from DET to PRON and VERB to AUX respectively. I'm not a linguist, but after checking the definitions of the corresponding categories on Wikipedia these predictions seem to be as correct as the previous ones. Hence test are updated to pass in either case.
Feel free to squash the PR!

Also, stanfordnlp doesn't seem to be very explicit about how package and model versions fit or don't fit together. To be on the safe side I tested with both at 0.2.0. Perhaps it'd be worth adding a note to the readme?

Great, thanks so much!

Also, stanfordnlp doesn't seem to be very explicit about how package and model versions fit or don't fit together.

Ah, that's good to know. (It's probably fine to assume that models downloaded with a version are also compatible with it? I don't know what happens if models are incompatible, but as long as StanfordNLP runs and outputs something, this wrapper should be able to convert it.)


Migrate the Opossum reporter to the dependency navigator

Mainly, migrate from accessing the legacy dependency representation to using the dependency navigator, to remove technical debt and to enable and make further simplifications.
See individual commits.

@sschuberth @maxhbr - I've dropped the controversial commit (stop adding rootless packages) from this PR, so that we can proceed. The changes now should be non-function and easy to review.

The changes now should be non-function and easy to review. (Having this in removes a bit of hazzle in me coding workflow).

Ok, let's move ahead then as I don't know when @maxhbr will find the time to review.