Support multiple object managers?

In my project I have multiple objectmanagers.
This currently leads to errors like:
Internal error: The class 'X' was not found in the chain configured namespaces ...

because its using the wrong objectManager (the one returned in object-manager.php) for some entities.

Probably internally we just return the whole doctrine registry from the php file and use
https://github.com/doctrine/persistence/blob/master/lib/Doctrine/Persistence/ManagerRegistry.php#L87
?

Hi,
those two object managers have different entity metadata loaded? Why? How do you keep track of which one should be used where in your application?
I see two possible options:

Run PHPStan twice with different configurations on different folders. This assumes that there's a clear cut in these two areas in your application - they are in different folders.
Create a third object manager that has all the metadata and pass it to PHPStan. This however can lead to problems since it does not reflect the real state of your application. For example if you mention two different entities in a single DQL that are from different object managers, PHPStan would not find this error.

those two object managers have different entity metadata loaded? Why?

different databases :wink:

How do you keep track of which one should be used where in your application?

doctrine bundle can handle multiple managers and we can differentiate it based on the context in our app
What do you think about my comment to use use the doctrine registry for this in phpstan? is there any drawback? Thats the source of truth that knows which entity is managed by which object manager :blush:

doctrine bundle can handle multiple managers and we can differentiate it based on the context in our app

What's the "context"?
I really don't know how the ManagerRegistry works - and I don't think that all applications using Doctrine use it. It seems too Symfony-specific.

Also, when analysing DQL, it really doesn't go through ClassMetadata, I already need to have an ObjectManager (EntityManager) to run the query on.

What's the "context"?

I meant based on bundles/namespaces in our app.

Also, when analysing DQL, it really doesn't go through ClassMetadata, I already need to have an ObjectManager (EntityManager) to run the query on.

Yeah I guess choosing the "correct" ObjectManager for analyzing DQL could be tricky indeed :confused:
Maybe running different phpstan configurations on different namespaces/folders is an option. Will have a look.

Maybe running different phpstan configurations on different namespaces/folders is an option. Will have a look.

If you differentiate based on that, it sounds usable :)
I'm gonna keep this open since more people might have this problem, so it should be somehow supported.

It seems too Symfony-specific.

Not at all: https://github.com/doctrine/persistence/blob/790cc20de53d0e4c943b36c8513401bfb5f34cf1/lib/Doctrine/Persistence/ManagerRegistry.php#L8.
The concept of having multiple entity managers is not limited to Symfony, nor is it an anti-pattern. People who use multiple object managers can use a registry to fetch a manager by name or to fetch the manager responsible for a given entity/class. In fact, this bundle even supports returning the correct repository type for a given object: https://github.com/phpstan/phpstan-doctrine/pull/46.
The option of having multiple configurations is a workaround, not a solution. For example, in one of our applications we use both MongoDB ODM and ORM. This also means that classes might very well use an EntityManager and a DocumentManager. The extension should support multiple object managers. As is, the feature is incomplete.

My point is that in Doctrine itself, there's only the interface and an abstract class. Not all projects use the ManagerRegistry. BTW: It looks just like a service locator pattern under a different name to me ;)
There's some problems around this if I wanted to add support - I have no way of testing it. And I don't know what are the common patterns:
Is that you inject ManagerRegistry into your class-that-uses-EM (just call it service from now on) like this?
/** @var ManagerRegistry */
private $managerRegistry;

public function __construct(ManagerRegistry $managerRegistry)
{
    $this->managerRegistry = $managerRegistry;
}

And use it later like this:
$this->managerRegistry->getManager('a')->getRepository(FooEntity::class)->...

Or is it rather like this?
/** @var EntityManager */
private $entityManager;

public function __construct(ManagerRegistry $managerRegistry)
{
    $this->managerRegistry = $managerRegistry->getManager('a');
}

Which makes it really difficult when the EM is used later in the class - PHPStan has no idea which one is used because it just sees the property phpDoc. It would have to be annotated like EntityManager<a> which is really ugly.
I can imagine some other combinations too. My point is that it's really difficult to support all of them generally so I must hard-code every pattern like this...

In our app we

get the manager by name from the registry
or directly inject one of the managers by DI configuration into some classes

So without checking the DI config there is no way to always know which manager is used inside some class for phpstan I'm afraid :cry:

We, for example, have separate symfony bundle, which uses different database and has it's own doctrine config. In services.yml we have:

services:
    _defaults:
        ...
        autowire: true
        bind:
            $em<EMAIL_ADDRESS>
So everywhere in this bundle where we have function(EntityManagerInterface $em) we get the correct EntityManger injected.
Also ran into that issue today while updating phpstan-doctrine to get rid of these :)
parameters:
    ignoreErrors:
        - '#Call to an undefined method Doctrine\\ORM\\EntityRepository<[a-zA-Z0-9\\_:]+>::[a-zA-Z0-9_]+\(\)#'
        - '#Method .+? should return [a-zA-Z0-9\\]+ but returns Doctrine\\ORM\\EntityRepository<[a-zA-Z0-9\\_:]+>#'
        - '#Method .+? should return [a-zA-Z0-9\\]+ but returns Doctrine\\Common\\Persistence\\ObjectRepository#'
        - '#Method .+? should return [a-zA-Z0-9\\]+ but returns Doctrine\\Common\\Persistence\\ObjectRepository#'
        - '#Property [a-zA-Z0-9\\]+::\$[a-zA-Z]+Repository \([a-zA-Z0-9\\]+\) does not accept Doctrine\\ORM\\EntityRepository<[a-zA-Z0-9\\]+>#'

Just an idea: accept an array of entity managers and retry with each of them if MappingException: The class 'X' was not found in the chain configured namespaces ... is caught.

@ondrejmirtes of course catching exceptions is a hacky workaround. This should be better:
$entityManager->getConfiguration()->getMetadataDriverImpl()->getAllClassNames();

Which returns an array of FQCN's of entites managed by that particular entity manager. Not sure about the ODM, but there must be something similar. So we'll end up with returning one entity manager, or an array of managers in object-manager.php. It's especially easy in Symfony via ManagerRegistry::getManagers().
What do you think?

Not sure about the ODM, but there must be something similar.

The Symfony Bundle for the MongoDB ODM contains the same manager registry logic as the ORM bundle. They're separate registries but the functionality is exactly the same.

I personally always inject ManagerRegistry, the entity managers can be replaced, e.g. if you have an SQL error and reconnect. It probably makes sense to change the file we use for phpstan to return the manager registry which can then give us the correct entity manager pet entity. I guess for generic dql you can use the default manager and most of the time this will be correct

Just reminding that this is still a huge issue, as having more than one object manager (simply connection) makes impossible to use all the cool related functionality. :)

Anyone is welcome to suggest and/or contribute a solution. I haven’t come up with one yet.

@ondrejmirtes, I suggested one possible solution in the comment above https://github.com/phpstan/phpstan-doctrine/issues/53#issuecomment-464636776, but you didn't answer whether you like it or not and why. The other one is to use ManagerRegistry, which you seem to not like. I'm not sure there is option 3. :)

How would DQL support work with your suggestion?

@ondrejmirtes You'll need to have a list of entities and object managers that manage them, and pick a corresponding object manager before analyzing DQL. But I didn't look at how you have it implemented at the moment. That's more of a question to you: would DQL support work if you'd know which entity is managed by which object manager?

Currently there's no easy way to parse DQL and find which entities are used in it.

@ondrejmirtes First thing is to watch for entity name in from() calls, the second is to get entity name from knowing which repo is for which entity if there's no from() call. Since it's not possible to join across different connections, the same OM can be used for joined entities when analyzing. Or that is exactly what you mean by saying "not easy"?
Just to clarify, I just want the discussion to go on. Not trying to demand anyone to fix anything.

Proper DQL AST is in development for Doctrine ORM 3.0. Authors themselves expressed that the current shape is not easy to parse.

Oops, I thought about query builders for some reason (probably because we don't use DQL).
But anyway, should phpstan-doctrine parse all the DQL or just couple of FROM statement variations: \Fully\Qualyfied\Class\Name and AcmeBundle::EntityName. Maybe just lock the implementation to FQCN, at least it will work then.

Seems like it would be valid for the moment at least to just use the default manager for DQL

No news on this issue? I have an app which uses both the ODM and the ORM, and PHPStan mistakes calls to the ODM to calls to the ORM...

Hi, I have no experience with multiple EMs nor with ODM. I’d need a sample
project with some errors produced so I know if it’s fixable and how to do
it.
On Mon, 1 Jul 2019 at 10:13, Alessandro Lai<EMAIL_ADDRESS>wrote:

No news on this issue? I have an app which uses both the ODM and the ORM,
and PHPStan mistakes calls to the ODM to calls to the ORM...
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/phpstan/phpstan-doctrine/issues/53?email_source=notifications&email_token=AAAZTOGJBKDME2FS727XJP3P5G4BFA5CNFSM4GXIX2F2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODY5LFTA#issuecomment-507163340,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAAZTOAR335U4QZTZXRCBEDP5G4BFANCNFSM4GXIX2FQ
.

--
Ondřej Mirtes

I personally use direct DI and type against EntityManager and DocumentManager, so for me the fix would be a simple "duplication" of the type mapping. But it's obviously not a general solution.

I’m not sure how this is possible:

and PHPStan mistakes calls to the ODM to calls to the ORM...

I’d really need a sample project to be able to verify the solutions...
On Mon, 1 Jul 2019 at 11:58, Alessandro Lai<EMAIL_ADDRESS>wrote:

I personally use direct DI and type against EntityManager and
DocumentManager, so for me the fix would be a simple "duplication" of the
type mapping. But it's obviously not a general solution.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/phpstan/phpstan-doctrine/issues/53?email_source=notifications&email_token=AAAZTOFP4KKA5C6S2CFGRXTP5HIN3A5CNFSM4GXIX2F2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODY5UB6I#issuecomment-507199737,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAAZTOHCCKHTZOMSBNWEAPDP5HIN3ANCNFSM4GXIX2FQ
.

--
Ondřej Mirtes

I’m not sure how this is possible:

That's because I added the snippet of code to get the ORM from the Symfony container, so the extension has only that, and it tries to use it with ODM calls too.
I'll see if I'll have some time to create an example project.

@ondrejmirtes I've prepared a small test project: https://github.com/Jean85/phpstan-doctrine-demo
The docker setup is maybe a bit broken, I'll probably fix it tomorrow, but the PHPStan analysis works fine, in the sense that it reports the same error I get locally.

Hey, we use PHPStan on level 8 with the latest Symfony 5.0 stack and have discovered a new behaviour which appeared along the PHPStan 0.12.9 release :X.
In fact, we already knew that the Doctrine objectManagerLoader was only able to use one entityManager at a time, which is why we provided it with the "default" declared one of Symfony, but we also use a second one called "async" to handle side asynchronous processes executed in our application 8).
The problem here is that using it that way does obviously trigger the following error, despite the face that it is a totally legit use of entityManagers ;) :
 ------ -------------------------------------------------------------------------------------------------------------------------------
  Line   Path/Service/ServiceTest.php
 ------ -------------------------------------------------------------------------------------------------------------------------------
         Internal error: The class 'Path\Entity\Test' was not found in the chain configured namespaces App\Entity, ...
         Run PHPStan with --debug option and post the stack trace to:
         https://github.com/phpstan/phpstan/issues/new

We used to ignore this expected error with the following regex under the ignoreErrors node of the configuration file :         - '#^Internal error: The class .* was not found in the chain configured namespaces .*#' but it doesn't work properly anymore since we get the following error message in return :V :      https://github.com/phpstan/phpstan/issues/new" cannot be ignored, use excludes_analyse instead..
But using the excludes_analyse node of the configuration file doesn't seem to have any impact over this error handling :/.
What could we do next :) ?

@Zarcox Open a new issue and post a stacktrace + code sample that causes this.

@ondrejmirtes Actually, this is totally related to this issue. Your suggestion on using the --debug option in the CLI led me to the correct expected file path to put in the excludes_analyse configuration node.
What happens here is that any class attempting to call my second entityManager will error out because of the following code :
    public function __construct(ManagerRegistry $managerRegistry)
    {
        $this->entityManager = $managerRegistry->getManager('async');
    }

Which is normal since the return $kernel->getContainer()->get('doctrine')->getManager(); part in object-manager.php described in https://github.com/phpstan/phpstan-doctrine#configuration only returns the "default" entityManager of Symfony.

Any news on this one?
@OskarStark and I are running into the same issue in a project with multiple databases and multiple entity managers.

Ha, for what it's worth, @ondrejmirtes' recommendation to use a configuration per entity manager works for me.

@localheinz which recommendation?

@Jean85
https://github.com/phpstan/phpstan-doctrine/issues/53#issuecomment-463359652

I see two possible options:

Run PHPStan twice with different configurations on different folders. This assumes that there's a clear cut in these two areas in your application - they are in different folders.
Create a third object manager that has all the metadata and pass it to PHPStan. This however can lead to problems since it does not reflect the real state of your application. For example if you mention two different entities in a single DQL that are from different object managers, PHPStan would not find this error.

For us, option one works in a particular project.
It's not the best solution, but it works - that's what counts. I can see that there are projects where it will not work, and I'm looking forward to a solution that works with a single configuration, a single run, and multiple entity managers.

It's not fixed yet because I don't see how an ideal solution should work. I'm glad those workarounds work.

Hi, having this problem too.
Couldn't we pass a \Doctrine\Persistence\ManagerRegistry instead? ManagerRegistry defines the getManagerForClass(string $class) method that returns either the manager or null.
I've only looked quickly, but it seems to me that the changes to ObjectMetadataResolver would be minimal.

@Mika56 Feel free to try it and send a PR. We could detect whether objectManagerLoader file returns EntityManager or ManagerRegistry and act on that.

Here's an object-manager.php that does not error (meaning it's probably not perfect) with multiple entity managers.
With this, \PHPStan\Rules\Doctrine\ORM\EntityColumnRule is able to report violations for both my entity managers' entities.
<?php

use Doctrine\Bundle\DoctrineBundle\Registry;
use Doctrine\Persistence\Mapping\ClassMetadataFactory;
use Doctrine\Persistence\ObjectManager;

require __DIR__.'/../config/bootstrap.php';

$kernel = new \App\Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
$kernel->boot();

$doctrine = $kernel->getContainer()->get('doctrine');

$metadataFactory = new class($doctrine) implements ClassMetadataFactory
{
    private Registry $doctrine;

    public function __construct(Registry $doctrine)
    {
        $this->doctrine = $doctrine;
    }

    public function getAllMetadata()
    {
        $all = [];

        foreach ($this->doctrine->getManagers() as $manager) {
            $all = array_merge($all, $manager->getMetadataFactory()->getAllMetadata());
        }

        return $all;
    }

    public function getMetadataFor($className)
    {
        return $this->doctrine->getManagerForClass($className)->getClassMetadata($className);
    }

    public function isTransient($className)
    {
        $isTransient = true;

        foreach ($this->doctrine->getManagers() as $manager) {
            $isTransient = $isTransient && $manager->getMetadataFactory()->isTransient($className);
        }

        return $isTransient;
    }

    public function hasMetadataFor($className)
    {
        $hasMetadata = false;

        foreach ($this->doctrine->getManagers() as $manager) {
            $hasMetadata = $hasMetadata || $manager->getMetadataFactory()->hasMetadataFor($className);
        }

        return $hasMetadata;
    }

    public function setMetadataFor($className, $class)
    {
        throw new \Exception(__FILE__);
    }
};

return new class($doctrine, $metadataFactory) implements ObjectManager
{
    private Registry $doctrine;
    private ClassMetadataFactory $metadataFactory;

    public function __construct(Registry $doctrine, ClassMetadataFactory $metadataFactory)
    {
        $this->doctrine = $doctrine;
        $this->metadataFactory = $metadataFactory;
    }

    public function getRepository($className)
    {
        return $this->doctrine->getRepository($className);
    }

    public function getClassMetadata($className)
    {
        return $this->doctrine->getManagerForClass($className)->getClassMetadata($className);
    }

    public function getMetadataFactory()
    {
        return $this->metadataFactory;
    }

    public function find($className, $id)
    {
        throw new \Exception(__FILE__);
    }

    public function persist($object)
    {
        throw new \Exception(__FILE__);
    }

    public function remove($object)
    {
        throw new \Exception(__FILE__);
    }

    public function merge($object)
    {
        throw new \Exception(__FILE__);
    }

    public function clear($objectName = null)
    {
        throw new \Exception(__FILE__);
    }

    public function detach($object)
    {
        throw new \Exception(__FILE__);
    }

    public function refresh($object)
    {
        throw new \Exception(__FILE__);
    }

    public function flush()
    {
        throw new \Exception(__FILE__);
    }

    public function initializeObject($obj)
    {
        throw new \Exception(__FILE__);
    }

    public function contains($object)
    {
        throw new \Exception(__FILE__);
    }
};

Here's an object-manager.php that does not error (meaning it's probably not perfect) with multiple entity managers.
With this, \PHPStan\Rules\Doctrine\ORM\EntityColumnRule is able to report violations for both my entity managers' entities.
<?php

use Doctrine\Bundle\DoctrineBundle\Registry;
use Doctrine\Persistence\Mapping\ClassMetadataFactory;
use Doctrine\Persistence\ObjectManager;

require __DIR__.'/../config/bootstrap.php';

$kernel = new \App\Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
$kernel->boot();

$doctrine = $kernel->getContainer()->get('doctrine');

$metadataFactory = new class($doctrine) implements ClassMetadataFactory
{
    private Registry $doctrine;

    public function __construct(Registry $doctrine)
    {
        $this->doctrine = $doctrine;
    }

    public function getAllMetadata()
    {
        $all = [];

        foreach ($this->doctrine->getManagers() as $manager) {
            $all = array_merge($all, $manager->getMetadataFactory()->getAllMetadata());
        }

        return $all;
    }

    public function getMetadataFor($className)
    {
        return $this->doctrine->getManagerForClass($className)->getClassMetadata($className);
    }

    public function isTransient($className)
    {
        $isTransient = true;

        foreach ($this->doctrine->getManagers() as $manager) {
            $isTransient = $isTransient && $manager->getMetadataFactory()->isTransient($className);
        }

        return $isTransient;
    }

    public function hasMetadataFor($className)
    {
        $hasMetadata = false;

        foreach ($this->doctrine->getManagers() as $manager) {
            $hasMetadata = $hasMetadata || $manager->getMetadataFactory()->hasMetadataFor($className);
        }

        return $hasMetadata;
    }

    public function setMetadataFor($className, $class)
    {
        throw new \Exception(__FILE__);
    }
};

return new class($doctrine, $metadataFactory) implements ObjectManager
{
    private Registry $doctrine;
    private ClassMetadataFactory $metadataFactory;

    public function __construct(Registry $doctrine, ClassMetadataFactory $metadataFactory)
    {
        $this->doctrine = $doctrine;
        $this->metadataFactory = $metadataFactory;
    }

    public function getRepository($className)
    {
        return $this->doctrine->getRepository($className);
    }

    public function getClassMetadata($className)
    {
        return $this->doctrine->getManagerForClass($className)->getClassMetadata($className);
    }

    public function getMetadataFactory()
    {
        return $this->metadataFactory;
    }

    public function find($className, $id)
    {
        throw new \Exception(__FILE__);
    }

    public function persist($object)
    {
        throw new \Exception(__FILE__);
    }

    public function remove($object)
    {
        throw new \Exception(__FILE__);
    }

    public function merge($object)
    {
        throw new \Exception(__FILE__);
    }

    public function clear($objectName = null)
    {
        throw new \Exception(__FILE__);
    }

    public function detach($object)
    {
        throw new \Exception(__FILE__);
    }

    public function refresh($object)
    {
        throw new \Exception(__FILE__);
    }

    public function flush()
    {
        throw new \Exception(__FILE__);
    }

    public function initializeObject($obj)
    {
        throw new \Exception(__FILE__);
    }

    public function contains($object)
    {
        throw new \Exception(__FILE__);
    }
};

works perfect for me

Most phpstan-doctrine features will work without providing objectManagerLoader in phpstan-doctrine 1.2.0 thanks to: https://github.com/phpstan/phpstan-doctrine/pull/253
It should solve this use-case too.


Allows you to buckle transfer person from bed to bed

About the PR

Adds the ability to buckle someone to a different bed even if they're already strapped to another bed
Why / Balance

Paramedic brings someone in on a roller bed, has to awkwardly drag the person off the bed so they flop over on the floor, then buckle them to the next bed
After this PR they can just drag the person onto the new bed
Technical details

Tries to unbuckle the target if they're already buckled into something. It does kind of look and sound weird because you're unbuckling them and buckling them in the same frame.
Media

https://github.com/user-attachments/assets/2aa59932-3918-4041-bab0-e8ebf4c4fb58
Requirements

[x] I have read and am following the Pull Request and Changelog Guidelines.
[x] I have added media to this PR or it does not require an ingame showcase.

Breaking changes

Changelog

:cl:

tweak: You can now transfer someone from a rollerbed to a bed directly.

does this work with chair to chair and other variations

does this work with chair to chair and other variations

yeah


install requires more flexible

Thank you for the PR.
I left couple comments above. And we will be migrating to TOML configs soon. I don't think parsing and including packages from requirements to setup is a best idea.


FAIL won't start

Logfile says this:

20-09-14 07:36:24 ERROR (SyncWorker_1) [supervisor.docker.addon] Can't build ba9f8461/armv7-addon-tuyagateway:0.3: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:41650->[::1]:53: read: connection refused

For some magical reason this error disappeared today and stuff started working...


Test fav v1

Codecov Report

Merging #90 (8d26759) into main (9fa373c) will increase coverage by 0.94%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main      #90      +/-   ##
==========================================
+ Coverage   56.38%   57.33%   +0.94%
==========================================
  Files         239      239
  Lines        5895     5895
==========================================
+ Hits         3324     3380      +56
+ Misses       2571     2515      -56

Impacted Files
Coverage Δ

...PIv1/Favorite/Requests/GetFavoritesRequestV1.swift
100.00% <0.00%> (+100.00%)
:arrow_up:

...PIv1/Favorite/Requests/PostFavoriteRequestV1.swift
100.00% <0.00%> (+100.00%)
:arrow_up:

...v1/Favorite/Requests/PostUnFavoriteRequestV1.swift
100.00% <0.00%> (+100.00%)
: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 9fa373c...8d26759. Read the comment docs.


luakit: add HTTPS support

Motivation for this change
The current luakit package doesn't include glib-networking as a dependency. Thus when accessing HTTPS sites luakit blocks the site, claiming it's untrusted.
This change adds glib-networking so that luakit supports HTTPS.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[X] NixOS
~[ ] macOS~
[x] other Linux distributions

~[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)~
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[X] Tested execution of all binary files (usually in ./result/bin/)
[X] Determined the impact on package closure size (by running nix path-info -S before and after): previous package 968318936, new package<PHONE_NUMBER>
[X] Assured whether relevant documentation is up to date
[X] Fits CONTRIBUTING.md.

@GrahamcOfBorg build luakit

Stupid question is that in the unstable branch?
I added that but did not help so far:
    (let newpkgs = import (fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz) {};
    in
      newpkgs.luakit
    )

Yes, it is.  I re-tested this simple pair of commands
$ nix build -f https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz luakit
$ ./result/bin/luakit https://nixos.org

Sorry I am stupid I had a instance of luakit open in the background so it only opened a new window not start the new binary :D works now.


how do I replicate rs-pcl.cpp in python?

Before opening a new issue, we wanted to provide you with some useful suggestions (Click "Preview" above for a better view):

Consider checking out SDK examples.
Have you looked in our documentations?
Is you question a frequently asked one?
Try searching our GitHub Issues (open and closed) for a similar issue.

All users are welcomed to report bugs, ask questions, suggest or request enhancements and generally feel free to open new issue, even if they haven't followed any of the suggestions above :)

Required Info

Camera Model
{ R200 / F200 / SR300 / ZR300 / D400 }

Firmware Version
(Open RealSense Viewer --> Click info)

Operating System & Version
{Win (8.1/10) / Linux (Ubuntu 14/16/17) / MacOS

Kernel Version (Linux Only)
(e.g. 4.14.13)

Platform
PC/Raspberry Pi/ NVIDIA Jetson / etc..

SDK Version
{ legacy / 2.. }

Language
{C/C#/labview/nodejs/opencv/pcl/python/unity }

Segment
{Robot/Smartphone/VR/AR/others }

Issue Description
I am trying to replicate rs-pcl.cpp in py realsense. I have python-pcl installed and need to convert rs pointcloud to pcl point cloud. The function to do this in c is
pcl_ptr points_to_pcl(const rs2::points& points)
{
pcl_ptr cloud(new pcl::PointCloudpcl::PointXYZ);
auto sp = points.get_profile().as<rs2::video_stream_profile>();
cloud->width = sp.width();
cloud->height = sp.height();
cloud->is_dense = false;
cloud->points.resize(points.size());
auto ptr = points.get_vertices();
for (auto& p : cloud->points)
{
    p.x = ptr->x;
    p.y = ptr->y;
    p.z = ptr->z;
    ptr++;
}

return cloud;

}
So I try to replicate this in python as follows:
def point_to_pcl(pcl_point,point):
pcl_point=pcl.PointCloud()
#sp=rs.stream_profile.as_video_stream_profile
sp=point.get_profile().as_video_stream_profile()
pcl_point.width = sp.width()
pcl_point.height = sp.height()
pcl_point.is_dense = false
pcl_point.resize(point.size())
ptr = point.get_vertices()
pcl_point.points.size()
for p in range(0, pcl_point.points.size()):
    p.x = ptr.x
    p.y = ptr.y
    p.z = ptr.z
    ptr=ptr+1

However I keep getting: RuntimeError: null pointer passed for argument "frame_ref" at the line " sp=point.get_profile().as_video_stream_profile()". Any help to resolve this is much appreciated!

The user @baptiste-mnh has previously recommended a python binding of the PCL library called python-pcl.
https://github.com/strawlab/python-pcl

I have python-pcl installed bu their point_grabber is not correctly compiled so I cannot use it readily. I need to convert the realsense pointcloud to pcl to be able to use the pcl filters.
I actually managed to pass the null pointer error and now I am getting an attribute error at the line below saying "attribute 'width' of 'pcl._pcl.PointCloud' objects is not writable"
so I wonder if this is even possible

Is it absolutely necessary for you to use PCL to generate a point cloud please, or are you able to consider python-based alternatives?

In order to run python pcl filters, I think I need the point cloud to be a
PCL point cloud. I am not sure if there is a way to construct a point cloud
that is identical to a pcl point cloud. I wasn't able to run pcl functions
on just rs.pointcloud so just assumed I need a pcl point cloud
On Fri, Oct 5, 2018 at 5:28 PM MartyG-RealSense<EMAIL_ADDRESS>wrote:

Is it absolutely necessary for you to use PCL to generate a point cloud
please, or are you able to consider python-based alternatives?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/IntelRealSense/librealsense/issues/2483#issuecomment-427503723,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Ab5v36HTXuU-mNCCcTRjPnfL192FYSYNks5uh87kgaJpZM4XK6Yu
.

--

What I want to do is ground plane segmentation from a point cloud. I know python-pcl has a RANSAC-based algorithm and initially though that to be the right choice. If you know of other platforms out there that work better with realsense please let me know

Dorodnic, RealSense's SDK Manager, is an advocate of a very versatile Python point cloud system called Pyntcloud.
https://github.com/daavoo/pyntcloud

Hello,
pc=rs.pointcloud()
pc.map_to(aligned_depth_frame)
points = pc.calculate(aligned_depth_frame)
pcl_points=pcl.PointCloud()
point_to_pcl(pcl_points,points)
On Sun, Oct 7, 2018 at 3:22 AM Sergey Dorodnicov<EMAIL_ADDRESS>wrote:

Hi @phojjat https://github.com/phojjat
Could you please share more information about how point_to_pcl function
is being invoked?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/IntelRealSense/librealsense/issues/2483#issuecomment-427631930,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Ab5v36KuUMOcnrkEaGacBUnMFgCxxOlFks5uiavRgaJpZM4XK6Yu
.

--

So I installed pyntcloud and ran the tests and everything seemed okay, but now the my pyrealsense2 seems to be broken:
import pyrealsense2
Traceback (most recent call last):
File "", line 1, in
ModuleNotFoundError: No module named 'pyrealsense2'
I tried recloning/reinstalling libreasense, but didn't fix it.
Is there a known problem with pyntcloud and librealsense2 that you can discuss? Otherwise do you know how I can fix this?
Thanks!

[Realsense Customer Engineering Team Comment]
Ticket being closed due to inactivity for 30+ days

Hello, pc=rs.pointcloud() pc.map_to(aligned_depth_frame) points = pc.calculate(aligned_depth_frame) pcl_points=pcl.PointCloud() point_to_pcl(pcl_points,points)

phojjat,
Sorry to revive a long-dead thread, but I've been looking for documentation on that point_to_pcl() function but I can't find it anywhere. In fact, if I put "point_to_pcl" in google (with the quotes), Google returns one result: this thread. Can you provide a bit more information on it, please?
Personally, I am using PCLpy as it seems to be better maintained than python-PCL, but the functionality between the two is very similar.  I can put a pointcloud in the PCLpy visualizer, but am having major issues when I try to texturize the pointcloud with the color from the RGB camera - the only way I found to do it is extremely inefficient and runs at about 1FPS.


feat: ci node9

Codecov Report

Merging #4 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##           master     #4   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           2      2
  Lines          51     51
  Branches        5      5
=====================================
  Hits           51     51

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 fde4ead...44c5739. Read the comment docs.


Deprecated selector in highlight-selected/styles/highlight-selected.less

In highlight-selected/styles/highlight-selected.less:
Starting from Atom v1.13.0, the contents of atom-text-editor elements are no longer encapsulated within a shadow DOM boundary. This means you should stop using :host and ::shadow pseudo-selectors, and prepend all your syntax selectors with syntax--. To prevent breakage with existing style sheets, Atom will automatically upgrade the following selectors:

:host atom-text-editor .highlight.highlight-selected .region, atom-text-editor atom-text-editor .highlight.highlight-selected .region, atom-text-editor::shadow atom-text-editor .highlight.highlight-selected .region => :host atom-text-editor .highlight.highlight-selected .region, atom-text-editor atom-text-editor .highlight.highlight-selected .region, atom-text-editor atom-text-editor .highlight.highlight-selected .region
:host .highlights .highlight-selected .region, atom-text-editor .highlights .highlight-selected .region, atom-text-editor::shadow .highlights .highlight-selected .region => :host .highlights .highlight-selected .region, atom-text-editor .highlights .highlight-selected .region, atom-text-editor .highlights .highlight-selected .region
:host .highlights .highlight-selected .region, atom-text-editor .highlights .highlight-selected .region, atom-text-editor::shadow .highlights .highlight-selected .region => :host .highlights .highlight-selected .region, atom-text-editor .highlights .highlight-selected .region, atom-text-editor .highlights .highlight-selected .region
:host .highlights .highlight-selected.background .region, atom-text-editor .highlights .highlight-selected.background .region, atom-text-editor::shadow .highlights .highlight-selected.background .region => :host .highlights .highlight-selected.background .region, atom-text-editor .highlights .highlight-selected.background .region, atom-text-editor .highlights .highlight-selected.syntax--background .region
:host .highlights .highlight-selected.light-theme .region, atom-text-editor .highlights .highlight-selected.light-theme .region, atom-text-editor::shadow .highlights .highlight-selected.light-theme .region => :host .highlights .highlight-selected.light-theme .region, atom-text-editor .highlights .highlight-selected.light-theme .region, atom-text-editor .highlights .highlight-selected.light-theme .region
:host .highlights .highlight-selected.light-theme.background .region, atom-text-editor .highlights .highlight-selected.light-theme.background .region, atom-text-editor::shadow .highlights .highlight-selected.light-theme.background .region => :host .highlights .highlight-selected.light-theme.background .region, atom-text-editor .highlights .highlight-selected.light-theme.background .region, atom-text-editor .highlights .highlight-selected.light-theme.syntax--background .region

Automatic translation of selectors will be removed in a few release cycles to minimize startup time. Please, make sure to upgrade the above selectors as soon as possible.

Any updates on this issue?

I think #136 will fix this – maybe wait for Atom 1.13 stable? See When should I migrate my package?

1.13 is now the main stable release

I am on stable 1.13.0 (latest MacOS) and can confirm issue still exists.

Also getting deprecation alerts from Atom & I'm on 1.13.0

Still Waiting

Waiting for https://travis-ci.org/richrace/highlight-selected/jobs/191092635 to pass...

Looks like just about all the 3rd party extensions are broken. I have seen several already that are getting the same error...

Could you please share any 3rd party extensions. I'm only aware of minimap-highlight-selected

Mine updated just fine yesterday


fix: correct llama_cpp_python library

There is a small naming problem with llama_cpp library that doesn't allow importing it. It should be named llama_cpp_python, otherwise the following evaluates to False even if the library is available:
>>> from distilabel.utils.imports import _LLAMA_CPP_AVAILABLE
>>> _LLAMA_CPP_AVAILABLE
False

LGTM! Just a nit, I think you're using an email to push the commits that's not identified and your commits are not linked to your account apparently, in case you want to fix it, make sure that your email is within user.email when git config --list (if not just git config --global user.email<EMAIL_ADDRESS>


[Feature] Copy content of QR codes when clicking

Feature description
https://primal.net/e/note1fe3ys26tdg5ffuvkpty4lkpnxjndjq92stk6lffc8jyc6yrxjg0qq2qst8
Describe the solution
The whole QR-Code element should be clickable (maybe add an overlay on hover that says "click to copy").
Describe alternatives
No response
Additional context
No response
Are you working on this?
None

@reneaaron I can work on this issue if some design is made for it.

@Rithvik-padma Sounds great, thanks for your help! 🙌
@stackingsaunter Can you maybe help with that? I was thinking of a very lightweight overlay saying "click to copy" (or maybe just the copy icon with some hover state?)

So I think we should make the whole card clickable, but then I would go back to a button shadow (shadow-sm as far as I remember), to maintain the pattern that buttons have shadows. @reneaaron what do you think?
Hover color is gray 50 in light mode and surface 01 in dark

We can also delete the copy button which becomes redundant with a whole card clickable

@reneaaron Is this issue still available? If so can I contribute this?


Adding Orderer To An Existing Network

What happened?
I am trying to add a new orderer of on existing ordering organization to a channel by following the documentation available at https://hyperledger-fabric.readthedocs.io/en/latest/create_channel/add_orderer.html, we already have a channel deployed using HLF operator.
I the procedure is required to get the last config block  and is suggested to use the peer channel fetch config command.
I would like to know how to do this with the operator.
What did you expect to happen?
To have a kubectl hlf command to get the last configuration block for the channel.
How can we reproduce it (as minimally and precisely as possible)?
This is not an operation issue but a how to question.
Anything else we need to know?
No response
Kubernetes version

# kubectl get nodes -o wide

The procedure I am using is
kubectl exec -it -n regulators -c peer r-timestamp-1peer01-6f9cb874ff-pxcq8 -- peer channel fetch config /tmp/usage_latest.pb -o r-timestamp-1orderer.regulators:7050 --ordererTLSHostnameOverride r-timestamp-1orderer.regulators -c usage --tls --cafile /var/hyperledger/tls/client/cert/cert.pem
kubectl cp -nregulators -c peer  r-timestamp-1peer01-6f9cb874ff-pxcq8:/tmp/usage_latest.pb /tmp/usage_latest.pb
configtxlator proto_decode --input /tmp/usage_latest.pb --type common.Block --output /tmp/usage-add-orderer-01-full.json
jq .data.data[0].payload.data.config /tmp/usage-add-orderer-01-full.json > /tmp/usage-add-orderer-01.json
kubectl hlf ordnode join --block=/hyperledger/channels/usage.block --name=r-timestamp-1orderer-01 --identity=/hyperledger/config/r-timestamp-1/admin-tlsca-certs.yaml --namespace=regulators
cat /tmp/usage-add-orderer-01.json | jq '.channel_group.groups.Orderer.groups."r-timestamp-1msp".values.Endpoints'
cat /tmp/usage-add-orderer-01.json | jq '.channel_group.groups.Orderer.policies.BlockValidation.policy.value.identities'
cat /tmp/usage-add-orderer-01.json | jq '.channel_group.groups.Orderer.policies.BlockValidation.policy.value.rule'
cat /tmp/usage-add-orderer-01.json | jq '.channel_group.groups.Orderer.values.Orderers.value.consenter_mapping'
vi /tmp/usage-add-orderer-01.json
### adjust the file
configtxlator proto_encode --input=/tmp/usage-add-orderer-01.json --type=common.ConfigUpdate --output=/tmp/usage-add-orderer-01.pb

When executing the configtxlator proto_encode command it fails with configtxlator: error: Error decoding: error decoding input: *commonext.ConfigUpdate: unknown field "channel_group" in common.ConfigUpdate error.

I was executing the wrong procedure


zones are always retrieved from the existing shoot if it exists

Description
Changes proposed in this pull request:

zones are always retrieved from the existing shoot if it exists
~DO NOT MERGE! faces an issue with cluster creation (object has been modified)~ <- can't reproduce that anymore.
...

Related issue(s)

Closing in favor of #476 and  https://github.com/m00g3n/cluster-inventory/pull/6


refactor(debug): optimized re-implementation

This PR re-implements the debug package in @prisma/debug in a more modern and smaller version, while retaining 95% functionality (custom formatters and extensions are not implemented). Contributes to better gzip sizes.

@millsp I think that this does not work in this refactor, but definitely used to work
DEBUG=prisma*
It looks like it only matches the * after a : like DEBUG=prisma:*?

I'm getting an  error on react-native because utils doesn't exist (as it is a node module), is there any way to disable this logger?

Got it to work like this, not sure if the best/correct way but don't know how else detect the util module is not present


How does this library compare to react-lazy-load?

The react-lazy-load library seems to have been developed before this one, but has less activity in recent times. The API's are so similar that I find it a bit confusing.
What are the key differences that set these two apart?

OK, thanks for clearing that up!


Extend _config.py to support updating the config

Also, make config file only r/w accessible to user.

@xingwu1 look good to you? Feedback welcom.

@derekbekoe It is exactly what I want. You may wan to add test cases to TestAzConfig.


Allow intermediate caches to store assets by default

Adding 'public' to the Cache-Control header allows intermediate caches
(in particular reverse proxies and caching load-balancers) to store
the assets.

https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=en says:

Most of the time, “public” isn’t necessary, because explicit caching information (like “max-age”) indicates that the response is cacheable anyway.

Are you sure this is a required change?

You're right. I miss read the nginx caching docs. It seems to cache just fine without 'public'. I can live without the change.
On the other hand, I'm not sure it hurts, and I know Catalyst uses it for their statically served content.

Not going to add a change that doesn't have any obvious effect. Sorry 👎


Testing CLA bot - Ignore this PR

Testing CLA bot - Ignore this PR

@christopherclark, It appears that this was just a configuration issue. I had a staging and production app checking this repo. The staging app was failing, but production is finding your signature as expected. The staging data wasn't updated to let you pass, so both environments are doing what they're supposed to


Updated references to WebDriver 2.45

Fixes the conflict with Firefox 36

You can download a new version from nuget now.
https://www.nuget.org/packages/canopy/
Thanks!

I just updated to the latest and it worked perfectly. Thank you.


environment types

addresses https://github.com/sillsdev/serval/issues/178

This change is

Codecov Report
All modified lines are covered by tests :white_check_mark:
:loudspeaker: Thoughts on this report? Let us know!.

I did - it was just that there wasn't as much to pull away - 80% is networking config.

deploy/qa-ext-values.yaml line 9 at r2 (raw file):
Previously, ddaspit (Damien Daspit) wrote…
ASP.NET Core has three deployment environments built-in: Production, Staging, and Development. This looks like it should be Staging.

Ok - then I will make sure that on the Serval Readme that "Staging" does "dummy builds" that don't produce helpful output.

deploy/qa-int-values.yaml line 9 at r2 (raw file):
Previously, ddaspit (Damien Daspit) wrote…
This looks like it should be Staging.

ok

I don't want to have to release a new docker image for Machine just because there is an update to Machine.py - nor would I want the Machine and Machine.py images embedded with deployment parameters, such as the URL that it is deployed at.  Those params belong in the helm charts.    If I want to make a local deployment to minikube, I would want to choose between production, staging and development, potentially using a different ClearML instance and S3 bucket, etc.

deploy/values.yaml line 11 at r3 (raw file):
Previously, ddaspit (Damien Daspit) wrote…
I don't think this is needed anymore.

Done.

Queue and project are dependent on the deployment.  Translation engines - I could go either way, but as of now, these "deployments" should have both Nmt and SmtTransfer engines.  Why not put them in the generic appsettings then?

Ok, I'll remove them.


util/hlc: option to panic on clock jumps

PR: https://github.com/cockroachdb/cockroach/pull/23717
From release notes:

Added a cluster setting for HLC to panic on clock jumps. [#23717][#23717] {% comment %}doc{% endcomment %}

Resolved by https://github.com/cockroachdb/docs/pull/3363.


Add support to store ES admin password to secrets manager in core security services stack

Elasticsearch DA now always creates an admin password. It has the ability to store that in secrets manager now, so to do that, the secrets manager CRN needs to be passed as an input to the Elasticsearch DA.

ignore - ES is not deployed in this stack


not work correctly on VR （use OpenXR + HMD mook)

only the bottom about 1/10 part of screen can seen the oit result
seems like the unity's xr manager has distorted screen so that can't get right link list？

ok i fixed this problem,
the buffer size was too small, just increase it by multiply 4

Nice, I am surprised it works at all in VR. Image effects are usually problematic on VR with Unity.


Error querying fields starting with special characters

Hi, as of Dyanmoid 3.10.0, with the merge of #655, Dynamoid no longer works with fields that start with "special" characters such as underscores in where conditions. It may also be failing with fields that contain special characters such as full stops and dashes anywhere in the field name. These names should be accounted for with the use of expression attribute names.
These queries have long worked with Dynamoid, and still work with 3.9.0, but have stopped working as of 3.10.0.
Error message from aws-sdk-dynamodb:
Invalid KeyConditionExpression: Syntax error; token: "_", near: "AND _sortKey"

Thank you for reporting the issue. Will work on it.
The simplest options seem to be either:

using placeholders for all the attribute names, not only for the reserved words
or additionally use placeholders for names that contain . and - or start with _ or #

I agree, and both approaches have their plusses and minuses. Using expression attribute names for all attributes is probably the safest, but may make queries run a little slower. Checking for reserved names and special characters and using expression attribute names for only those cases may make the query slightly more efficient but adds the overhead of maintaining that list and the possibility of missing some cases.


Removed handling of circular input in SphericalVoronoi

Reference issue
Closes #12003
What does this implement/fix?

This removes handling of circular input. The current mechanism for representing Voronoi regions is incompatible with rank-deficient input points.

@tylerjereddy

I adjusted the release notes slightly to account for this: https://github.com/scipy/scipy/wiki/Release-note-entries-for-SciPy-1.5.0#scipyspatial-improvements


memory leak when downloading data.

Trying to download a kernel's output results in memory leakage.
Can be replicated using this.
!kaggle kernels output mbmmurad/prepare-dataset-for-wav2vec2 -p /content

content is an apache arrowfile(hugging face dataset).

Hi!
My guess is that the output you are downloading is bigger than the space you have available on your machine.
Make sure to have enough disk space.

Hi @Philmod,
No, I can confirm this isn't the case, this can be replicated on colab,just check the ram usage when it runs.
For now i have solved the issue using this but can this be done by default.


Gets locked into whatever version of Go it is compiled with?

I'm not sure if I'm getting this right, but it seems that a gb built with Go 1.4 then can't build stuff after upgrading Go to 1.5 or 1.6. That is:
jb@syno:~/s/g/s/syncthing $ gb build
# github.com/calmh/du
diskusage_posix.go:6: import /usr/local/go/pkg/darwin_amd64/path/filepath.a: object is [darwin amd64 go1.5.2 X:none] expected [darwin amd64 go1.4.2 X:precisestack]
...
FATAL: command "build" failed: exit status 1
[1]
jb@syno:~/s/g/s/syncthing $

I'm not sure why else it would be expecting go1.4.2 archives; I have cleared out pkg and $GOPATH/pkg (that should not be in use anyway). Rebuilding gb solves the problem.
Is this intentional? I have many Go installations that I switch between regularly by pointing /usr/local/go towards for example /usr/local/go1.4.2 or /usr/local/go1.6rc1. Also build servers that guard against regressions by building a project for each supported architecture for each supported Go version (1.3.3, 1.4.3, 1.5.3, go1.6rc1, and so on). Not being able to do this with gb would be annoying. :)

Gb must be built against the version of Go you wish to use. You cannot use
GOROOT tricks to avoid this, but you can use different versions of go to
build different versions of gb.
You should also delete $PROJECT/pkg of you switch between different gb's,
and just different go versions.
On Mon, 1 Feb 2016, 00:36 Jakob Borg<EMAIL_ADDRESS>wrote:

I'm not sure if I'm getting this right, but it seems that a gb built with
Go 1.4 then can't build stuff after upgrading Go to 1.5 or 1.6. That is:
jb@syno:~/s/g/s/syncthing $ gb build
github.com/calmh/du
diskusage_posix.go:6: import /usr/local/go/pkg/darwin_amd64/path/filepath.a: object is [darwin amd64 go1.5.2 X:none] expected [darwin amd64 go1.4.2 X:precisestack]
...
FATAL: command "build" failed: exit status 1
[1]
jb@syno:~/s/g/s/syncthing $
I'm not sure why else it would be expecting go1.4.2 archives; I have
cleared out pkg and $GOPATH/pkg (that should not be in use anyway).
Rebuilding gb solves the problem.
Is this intentional? I have many Go installations that I switch between
regularly by pointing /usr/local/go towards for example /usr/local/go1.4.2
or /usr/local/go1.6rc1. Also build servers that guard against regressions
by building a project for each support architecture for each supported Go
version (1.3.3, 1.4.3, 1.5.3, go1.6rc1, and so on). Not being able to do
this with gb would be annoying. :)
—
Reply to this email directly or view it on GitHub
https://github.com/constabulary/gb/issues/560.

I take it that's intentional, then. :/

Unfortunately there is no way around it. The go tool also has the same
limitation, but it isn't as obvious as people consider the go tool,and the
tool chain it ships with to be the same thing.
On Mon, 1 Feb 2016, 00:52 Jakob Borg<EMAIL_ADDRESS>wrote:

I take it that's intentional, then. :/
—
Reply to this email directly or view it on GitHub
https://github.com/constabulary/gb/issues/560#issuecomment-177505899.

/me briefly considers vendoring gb and building that as step zero of building the project. But no, seems we stay with the default build tools for another iteration. :)


Debugging via VS Code debugger

Hey, @DanWahlin and @johnpapa!
I'm watching your course and really liking it!
My laptop screen ain't that big, and debugging via the browser dev tools is painful.
Is there a way to configure VS Code launch.json to start the webpack server and launch the browser with the debugger attached?
I've been trying to modify the webpack.config.js and  launch.json with different settings, but it's not playing nice.
Thanks, guys.

There should be a way to do that although I haven't personally tried for this particular scenario. I don't normally work with webpack and TypeScript directly (I'm always using TypeScript with with React, Angular, Node, etc.) and I typically use the Chrome or Edge DevTools. My go to for looking up examples is the VS Code recipes repo but they don't have something specific to this scenario:
https://github.com/Microsoft/vscode-recipes
I played around quickly with calling an npm script (which you can do through a "command" in launch.json) but it would take some playing around with to get right it looks like since a build would need to occur to get the bundles on the hard-drive and then the webpack serve would need to run against those bundles.


Create release when git tag

git tag -a v1.0 -m "First release"

I have change this PR to have the same behaviour as on cutcutgo repo. Create a tag latest on each commit on main branch and release it.


Different local BUS addresses

Hi @FredBlo !
You did a wonderful work , thanks .
I have a question , in my Myhome installation I have no.2 F422 and 3 different local bus ( 0 , 1 , 2 ) .
The gateway is on BUS 0
I have tried to send commands on other bus using  OpenWebNet documention  - WHO1 _ page 7
Table WHERE you can see :
A  PL #4# Int →Point to point of local bus
I tried to insert a different address on MH Light ( eg .51#4#02 - Light Bus2_A5_PL1 ) and seem work fine ! 👍
The only problem seem the invalid property on lightid when I deploy it
TURN ON
msg.payload : string[14]
*1*1*51#4#02##
TURN OFF
msg.payload : string[14]
*1*0*51#4#02##
Can you check it ? ( see attached flow )
flows_BUS TEST.zip
Many thanks !

Hi @gsek78 ,
The connector works (for now) only on the private riser (i.e. the bus on which the gateway is directly connected).
The WHERE with #4 is actually common to all devices split on multiple local buses (not only for lights).
I also have a F422 but it is configured in 'physical separation' (meaning I am able to have 2 power supplies but all addresses are shared across the IN & OUT of the F422, acting both as a private riser).
I guess your are working in expansion mode ? (requiring more than 160 addresses, correct ?)
If you configure your flow as you did, I think you will be able to send commands, but not to monitor these lights (when a BUS command is received, the connector will not be triggered).
I could add such parameter but requires many changes to all nodes (& I am not able to test this on my system :-( ).
Are your F422 there to extend to >160 addresses or for other purposes ?

Hi @FredBlo  ,
Thank you for your prompt reply.
Yes , my F422’s works on “Logic expansion” operating mode - configurator MOD = 2  .
In any case my installation is under the hardware limit ( with virtual configurator 175 address , I think )
I think that the electrician who made the installation chose this mode mainly because was easiest to configure ( it’s not necessary to set up the “A”/"PL" numbers on F422 for each bus , just to set the mode and the bus number ) .
Luckily he put different ambients in each bus , the address are consequential with no overlaps , so theoretically I can physically change the cables and reconfigure the F422’s  in  “Physical expansion” operating mode - configurator MOD = 1 .
Yes , you are right ! As I configured it I can send the commands on BUS 2 but I don’t see any feedback from the actuator.  😏
I tried your module because I would like to integrate MyHome to HomeAssitant and seem quite easy to do it passing through Node-RED integration .
I couldn’t find any direct OpenWebNet-HomeAssitant integration to do it but I found a very interesting project that go DIRECTLY on the SCS bus ( https://www.home-assistant.io/integrations/scsgate/ ) , is really interesting for many reasons:

cost ( you don’t need a BTicino Gateway ) but a cheaper hardware
more control ( theoreticcaly using a low-level language direct on the SCS bus you have more possibilities, eg. you can also send a signal status to commands without having a physical actuator changing it’s status light  )
stable communication ( before your project I tried also another nodered project  https://github.com/eziologico/MyHome-Node-Red  and I had problem of missing messages and gateway disconnections )

Unluckily , at the moment, also SCSGate development have a problem with “multiple buses” ( is unsupported )
I spoked and met the developer of the hardware , Guido,  http://guidopic.altervista.org/alter/eibscsgt.html ( sorry for Italian - here TRANSLATED with Google Translate ) he made a wonderful reverse engineering job of SCS protocol and also a good hardware and software work. I am in contact with him and maybe he can improve the “multiple buses” . I am confident, we will see !
Maybe you can also study an integration on Node-RED ...
Meanwhile… did you think you will add the multiple bus frame to your OpenWebNet project ? I can try it for you on my myHome 😉
Let me know if ( and when in case ) you are interested to develop this feature.
At the moment the most plausible option is to reconfigure my installation and go to “Physical expansion” operating mode
Many thanks !

Hi,
I could update the node to include on the node a BUS specification (private riser, BUS 1, BUS 2,...) but I think it will actually not do something really better in comparison to what you achieved now. (it will only remove the error Node-RED detects because it expects 'numbers' in A/PL, but it has no other side-effect)
Based on my understanding of the way logic expansion works, a BUS is capable of sending commands to another BUS but will not receive the response (since BUS is isolated in this mode).
To test if this is correct, you could, with your test flow, collect what's monitored on the bus (i.e. output of 'MH200N Monitor' node) when :

press 'ON' linked to 'Light B0_A1_PL1'
-> Result is *1*1*11## and then *1*1*11## a second time ?
press 'ON' linked to 'Light B2_A5_PL1'
-> do you see *1*1*51#4#02## or *1*1*51## or... one time or more ?

On the other hand, if you do not need >175 addresses (you're right it was not 160 :-) ), I do not really see the added value of isolating your BUSes (but I do not pretend I know all about this). In this mode you cannot have a 'normal' push button (i.e. H/L4652/2) to operate an actuator on another BUS. If your ranges are configured to allowed this, I would advice to work in 'physical expansion' (MOD=1) to have kind of

Private Riser 1.x -> 3.x
BUS 1 4.x -> 7.x
BUS 2 8.x -> 11.x

Let me know :-)

Hi @gsek78,
Have you been able to test and collect the BUS messages ?

Hi @FredBlo ,
sorry for the late answer , I was little but busy ...
I made the test !
Turn ON , light 11 , ( command sent via OpenWebNet , NO Hardware BUTTON  )
"1111##"
Turn OFF , light 11 , ( command sent via OpenWebNet , NO Hardware BUTTON)
"1011##"
Turn ON , light 11 , local hardware button on BUS 0
"11000#111##"
"1111##"
Turn OFF , light 11 , local hardware button on BUS 0
"11000#011##"
"1011##"
Turn ON , light A 5 PL 1 , local hardware button on BUS 2
"1151#4#02##"
Turn OFF , light A 5 PL 1 , local hardware button on BUS 2
"1051#4#02##"
all was readed JUST ONE TIME ( NO more time reading )
5/6/2021, 19:37:10node: BUS Monitormsg.payload : string[9]
"1111##"
5/6/2021, 19:37:13node: BUS Monitormsg.payload : string[9]
"1011##"
5/6/2021, 19:37:17node: BUS Monitormsg.payload : string[14]
"11000#111##"
5/6/2021, 19:37:17node: BUS Monitormsg.payload : string[9]
"1111##"
5/6/2021, 19:37:19node: BUS Monitormsg.payload : string[14]
"11000#011##"
5/6/2021, 19:37:19node: BUS Monitormsg.payload : string[9]
"1011##"
5/6/2021, 19:37:43node: BUS Monitormsg.payload : string[14]
"1151#4#02##"
5/6/2021, 19:37:44node: BUS Monitormsg.payload : string[14]
"1051#4#02##"
Let me know if you want to made other test ;)
thanks !
( I discover that copy and paste here is not working fine ... see attached text to read better the text )
TestCommands.txt

Hi @gsek78 ,
Thanks for tests :-)
Based on your feedback, it seems the commands are passing on to the main riser too, which is kind of good news.
In your previous post, I understood light state did not get updated at node's level. Is this correct ?
i.e. when turning a light ON/OFF using a physical button, do you see a node's status update in the one linked to BUS 2 ?

such as

PS : all 'texts' in GitHub are in 'markdown language'. Since * is a special character used for formatting content, it causes strange results with OpenWebNet commands... :-/ When you have such commands, simply enclose it between `. More info on syntax to be found here. I updated your post so you can see it better :-)

Hi @gsek78 ,
I just published an intermediate v2.2.1 which includes BUS management (for lights, shutters & scenario).
I tested to ensure it does not cause any regression when working on private riser. Can you test it in local bus config mode on your side ?
:-)

Hi @FredBlo  ,
sorry for my long non-attendance period ! I was busy with my family and my work .
Yes ! I will try it on my house and give you a feedback .
Just a small note . I am not sure that " thermo does not have that management level, must reside on private riser "  , I have some HC4692 also on local bus ( BUS 1 and BUS 2 ) . I will check how they work and let you know ;)
Ciao and thanks for your work !

Hi @gsek78 ,
Normally, based on my understanding (of documentation of the OpenWebNet for thermo regulation and F422), these commands  (WHO=4) should be managed by the F422 to travel in the two directions without any processing.
Addresses for thermo regulation are not extendable (>99) the same way it is made for automation, they also don't share the same bus addresses (A/PL).
So it should work...
Anyway, let me know ;-)

HI @FredBlo
You are right !
It's all working fine , also the thermoregulation on diferent buses ;)
In the next days I will try shutters and scenario but I suppose that is all OK  , in case of problem I will write you
Many thanks for your job !

Hi @gsek78 ,
You're welcome !
Thanks for testing & feedback
Enjoy


Cannot configure ssl

Environment

VerneMQ Version: 1.7.0
OS: centos 7.6
vernemq.conf:

listener.ssl.foo = <IP_ADDRESS>:8883
listener.ssl.cafile = /etc/ssl/certs/ca-bundle.crt
listener.ssl.certfile = /etc/letsencrypt/live/mydomain/fullchain.pem
listener.ssl.keyfile = /etc/letsencrypt/live/mydomain/privkey.pem

standalone

Issue
I try to configure vernemq with letsencrypt. After applying the configuration above, I observe that vernemq listens on 8883 however tls is not working:
openssl s_client -showcerts -connect myip:8883
CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 289 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time:<PHONE_NUMBER>
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

What strikes me as odd is that I don't see anything ssl related in the logs (console is set to debug), even if I change the configuration to point to non-existing pem files.
I have checked file permissions.  I am not using client certs.
Using mosquitto_sub just hangs after writing CONNECT.

Hi
Unfortunately Erlang isn't very chatty about what goes on in its TLS stack.
Could you perhaps try like this:
listener.ssl.foo = <IP_ADDRESS>:8883
listener.ssl.foo.cafile = ...
listener.ssl.foo.certfile = ...
listener.ssl.foo.keyfile = ...

so you specify the files on the specific listener?

Hi,
I got it working with letsencrypt: it was a permission issue on a parent dir. With docker, setting these env.vars worked:
        - DOCKER_VERNEMQ_listener.ssl.default = <IP_ADDRESS>:8883
        - DOCKER_VERNEMQ_listener.ssl.cafile = /etc/letsencrypt/live/mydomain/fullchain.pem
        - DOCKER_VERNEMQ_listener.ssl.certfile = /etc/letsencrypt/live/mydomain/cert.pem
        - DOCKER_VERNEMQ_listener.ssl.keyfile = /etc/letsencrypt/live/mydomain/privkey.pem

@tomasol what permission did u gave to the parent dir so that docker could read cert dir.
i am running with non root privilege. i added user to the docker ground also install letencrypt cert in my user account (not in root). still not able to access


fix vector database collection error message

:rocket:
This description was created by Ellipsis for commit ecf9113986772576b188bc919b6a38de8dd97124

Summary:
Updated error message in r2r/providers/vector_dbs/pgvector/pgvector_db.py to correctly reference vecs_collection instead of collection.
Key points:

Updated error message in r2r/providers/vector_dbs/pgvector/pgvector_db.py.
Changed collection to vecs_collection in the error message for missing POSTGRES_VECS_COLLECTION environment variable or vector_database settings in config.json.
Affects the __init__ method of the PGVectorDB class.

Generated with :heart: by ellipsis.dev

Looks good, @mohamed-alired! Looking forward to the tutorial you're putting together.

Created a merge conflict, so moving this to our dev branch


Migrate to c2pa-rs unstable API

Changes in this pull request
Migrates to c2pa-rs unstable API.
Blockers
TODOs are scattered around with various blockers and changes. Here's a list of some of the critical ones:

[x] Need methods to iterate all manifests and all resources in manifest contentauth/c2pa-rs/pull/482
[x] Need method to set builder base path ok-nick/builder_base_path
[x] Need method to normalize identifiers (preferably a struct/enum wrapping them)
[x] Need methods for fetching manifest certificates
[x] Need methods for fetching manifest tree structure

Non-critical Blockers
Check the TODOs for more information.

[ ] Converting structs (Ingredient, Manifest, Reader, etc.) to json shouldn't pretty print (include \n, etc.)

Rust has a format such as {:#?} for explicitly requesting pretty print
The reason this is useful is when we need to convert the json string back to struct and the formatting is interfering

[ ] Constructing builder and ingredients is difficult and often results in repeated serialization and I/O

It's also confusing to have to operate on the ingredient returned by add_ingredient (like for setting base paths)

Additional Features

Added --unknown flag when extracting resources to extract unstandardized labeled data (in addition to standardized labels such as thumbnails)
Added --no-embed flag when signing to not embed a manifest in the asset.
WIP: Add --detailed flag to view tree to view URNs (for possible use with redactions)
WIP: Specify separate sidecar path/dir if you only want a binary manifest as output #134

Checklist

[ ] This PR represents a single feature, fix, or change.
[ ] All applicable changes have been documented.
[ ] Any TO DO items (or similar) have been entered as GitHub issues and the link to that issue has been included in a comment.

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
Attention: Patch coverage is 79.37220% with 46 lines in your changes missing coverage. Please review.

Please upload report for BASE (ok-nick/subcommands@c420d52). Learn more about missing BASE report.

Files
Patch %
Lines

src/commands/extract.rs
71.01%
20 Missing :warning:

src/commands/view.rs
75.32%
19 Missing :warning:

src/commands/sign.rs
90.66%
7 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@                  Coverage Diff                   @@
##             ok-nick/subcommands     #187   +/-   ##
======================================================
  Coverage                       ?   75.64%
======================================================
  Files                          ?        7
  Lines                          ?      969
  Branches                       ?        0
======================================================
  Hits                           ?      733
  Misses                         ?      236
  Partials                       ?        0

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


[Super Editor] Selection property of DocumentComposer become null when clicking on the editor toolbar

I'am using
Flutter Version: 3.7.3
and the latest code of super_editor from the main branch
every time I click on the toolbar to edit the selected text, the selection properties of the given DocumentComposer object becomes null
as you can see in the video:
https://user-images.githubusercontent.com/54541657/222393918-2b0dff84-eef1-4b78-b4b9-bde48de8c09a.mp4
how can I resolve this
please help me
thanku :)

@egnimos it looks like your toolbar is taking focus when you tap the dropdown box. When SuperEditor loses focus, by default, it hides the selection. It then looks like the dropdown is immediately closing, and giving focus back to SuperEditor, which then restores the selection.
The Super Editor example app also has a problem with the drop down list because the drop down list steals focus from SuperEditor without providing any way to prevent that from happening. Unfortunately, if you want to use a dropdown list, you will probably have to build your own drop down list, so that your dropdown list can share focus with SuperEditor.
Please let me know if that's sufficient information to close this ticket.

I'm going to close this ticket for inactivity.


mqttv5 for quic

When will the development of MQTT based on QUIC, supporting version 5, be available? Currently, there are many applications in the field of connected vehicles.

mqtt_cpp has no plan to support quic.
See current mode https://github.com/redboltz/mqtt_cpp#mqtt-clientserver-for-c14-based-on-boostasio
async_mqtt could support QUIC in the future. In order to do that, Boost.Asio based QUIC library is required.
It seems that some of such libraries are developing now, but AFAIK, they are still under construction.


Discussion: Who will design the downloadable file that details data errors/mismatch when attempting to upload data to an existing table? (screen <IP_ADDRESS>)

We decided to start the web app from scratch after the major design/architecture decisions and changes we made. No longer relevant.


Getting "Something went wrong. Please try after some time." error message when trying to create a new category

I have already tried the steps of Enabling Application Insights as well as deploying from scratch but still receiving this error.

any solution yet for this ?


WIP: Office preview

Closes fontist/formulas#78

Excellent work @alexeymorozov -- thanks!

@alexeymorozov you can also have a look at https://github.com/lutaml/expressir/tree/master/.github/workflows for gem auto-release for all platforms.


[repo] docs: Add missing Conversation Update Events

#minor

Just FYI in the future, if it's a minor change like this where it's not necessary to file a new issue, you can put #minor in the PR summary and the style checker will pass that. :)

Got it, thanks!


I miss a 'Kill me' Button...

Hi Aktanusa,
Nice Add-on for CookieClicker, CookieMonster BTW, thanks a lot...
I like your Add-on for the Stats and the Calculations (especially for how many Cookies to keep like the ""Lucky!" Cookies Required (Frenzy) : 52.989 Sext" (even if I think the Calculation might be wrong...), but your Add-on when loaded sucks about 30% of the Resources of the JS Engine on FF or PM (Pale Moon).
And the only way to get rid of it is to save and then reload the Game and start all my other Scripts running on the Game... (1 .js Script and 1 iMacros Script on the CookieClicker Page, + other iMacros Scripts running on other Pages running each in different Browser (=PM) Instances.)
=> So I miss an easy 'Kill me' Button (from the CC 'Menu' Page)...
=> As well as an easy way to land on your GitHub Repository (Forum), instead of having to google "CookieMonster"...
The other .js Script I use (not really public, made by a Friend, I first need to check with him if that Info can be disclosed...) has a RealTime CPS Calculator, and CPS go down instantly from Max 100cps to Max 60cps (hum => 40% JS Engine "Suck" actually) as soon as CookieMonster is loaded...
This Friend of mine has already implemented a few things that are on your Requests List (like Buying the Most Profitable Building) and he found a few flaws in your Code, you might be interested to get in contact if he agrees... (but he doesn't really want to go public...)
(Your 'Next Cookie' and 'Next Reindeer' Time Calculations are always wrong BTW...)
(Using CookieMonster v.0466 (+v.0465) on Pale Moon v.24.6.2 (=FF31), Win7-64. + CookieMonster running from your Server, latest Version I reckon, even if it's difficult to find the Version...)

I think if there are actionable pieces in here they should be split into their own suggestions, or this whole thing should be closed since this is quite old and quite verbose.

I think if there are actionable pieces in here they should be split into their own suggestions, or this whole thing should be closed since this is quite old and quite verbose.
Euh..., yep you're right, and that was actually my "Intention" indeed as well, hum..., 3 years ago already...!?, but I never took the time/courage to open the separate Threads...

Original Thread was about the "'Kill me' Button" (or 'Pause'), that I still miss (sometimes, ah-ah...!), while running now (Septb 2017) CC v2.0042 + running the corresponding Cookie Monster Version from your Server directly.
(With 18,000 Buildings (1350 Cursors - 1088 Chancemakers), 2 10^40 Tredec Cookies (=2 10^82 Cookies) in Bank, 1.3048378574739092e+32 Tredec (=1.3,048,378,574,739,092e+74) per Second.)
Legacy started : 1160 days, 3 hours, 44 minutes, 6 seconds ago, with 23 ascensions
Run started : 159 days, 0 hours, 57 minutes, 25 seconds ago (Running 24/7)
Buildings owned : 18,000
I would say, if you want to keep this current Thread open, only focus on the 'Kill me' Functionality if it will be implemented one day, all other Items could/should become separate Threads, but I've been living already 3 years without the 'Kill me' Button, so I'm not dieing for it, ah-ah...!, and I can understand if you simply want to close the Thread, no problem...
And I still love Cookie Monster, ah-ah...!


Add user agent to all requests with huggingface_hub version (and other)

Fix https://github.com/huggingface/huggingface_hub/issues/1018.
For the user agent, I took the same implementation as before (custom library name/version, python, huggingface_hub, tensorflow, torch, fastai, fastcore). This is only a first version, we can iterate afterwards if we want to update this rule.
I also moved all imports to a _runtime.py utility trying to keep backward compatibility everywhere for non private methods/attributes.
(cc @Kakulukian @Pierrci who where interested in having this)

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


Error with View with dynamic size

Hi,
First of all, thank you for the excellent work!

Xcode: 15.4
iOS: 17.6
CustomAlert: 3.7.2

When I call a CustomAlert dialog and the View has a fixed size, for example, .frame(width: 100, height: 100) no error is triggered.
However, if I use a dynamic size in case the View's height size is unknown, I use something like .frame(width: 100, height: viewHeight).
The viewHeight is updated when the View's content is being rendered, when an .overlay() is applied to the View.
@State var viewHeight: CGFloat: .zero

var body: some View {
    ZStack {
        ZStack {
            // code
        }
        .overlay(
            GeometryReader { proxy in
                Color.clear.onAppear {
                    viewHeight = viewHeight + proxy.size.height
                }
            }
        )
    }
    .frame(width: 100, height: viewHeight)
}

As there are multiple calls to the CustomAlert dialog, it checks the frame size.
In my opinion, the error is due to the fact that the first time it tries to render the height is 0. The second time it renders, the size is known.
And this triggers several errors in a row because the size is not the same as the initial one:
onChange(of: UUID) action tried to update multiple times per frame.
This error does not occur in versions 3.3.0 and earlier, however it's possible to see the View being rendered from top to bottom (and not as a whole).
EDIT:
I tested version 3.1.0, it's the most "recent" version that doesn't give the error and renders the View with dynamic size perfectly.

Hi, thank you for opening an issue.
I have noticed the onChange(of: UUID) action tried to update multiple times per frame. in the log and I think they were caused by WindowKit how it propagates changes to the view in the window. I have pushed an update that should fix that issue.
Could you please try if either updating to WindowKit 2.5.0 or using CustomAlert from the main branch if that possibly fixes your issue(s)?
I'm not 100% sure how the dynamic sized view is used in CustomAlert. Is this dynamic sized view used as the content of the custom alert?
It would help with investigating the issue if you could provide a working example where the issue(s) occur. Thank you very much in advance.

Hi David,
I pulled the latest version from the main branch, and WindowKit version 2.5.0 fix this situation. 🥳
Thank you for the excellent work you are putting in at both libraries, and for giving me such great support on a Sunday. 😎

Hi David,
I pulled the latest version from the main branch, and the WindowKit version 2.5.0 fixes this error. 🥳
Thank you for the excellent work you are putting in at both libraries, and for giving me such great support on a Sunday! 😎


Auto-update public index file when used but only once per day and when connection available

The Problem To Be Solved
When new packs are released, the user need to execute cpackget update-index before these packs become available.
(Optional): Suggest A Solution
The cpackget tool should automatically executed cpackget update-index --sparse to get the list of latest packs.  It should be sufficient to execute this once per day.  There might be an option --no-auto-update to disable that, even when I personally struggle to see a need for that.

Validate nightly build of CMSIS-Toolbox 2024-12-09:
Tempering with the  in index.pidx triggers a download of index.pidx when the date is smaller than today's date.


ansible: raise an AnsibleFailedError even when parsing fails

If _handle_failures fails to parse the yaml in the ansible error log, it
can still give the contents of the failure log to an AnsibleFailedError
in it's unparsed form.
I also changed the log.exception to log.error when an ParserError occurs
as I think it was confusing some having that extra traceback in the log.
Signed-off-by: Andrew Schoen<EMAIL_ADDRESS>

Refer to this link for build results (access rights to CI server needed):
http://jenkins.ceph.com//job/teuthology-pull-requests/1798/
Test PASSed.


lxd: Fix console logging after API change

Signed-off-by: Stéphane Graber<EMAIL_ADDRESS>

jenkins: test this please


170 add cmake install packaging

This will allow other packages using 2decomp to use the find_package(decomp2d) functionality.

I have just modified the README. I have tested the linking as an external library with this version of X3div
https://github.com/rfj82982/x3div/tree/2d-decomp-fft_external_library
I’ll try to do more testing also with GPU before approving.


IOS Text Field with Emojis Input Selection Issues

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce

On IOS device (IOS 17, Iphone 15 Pro simulator), select text with emojis on TextField containing Text widget.

Expected results

User should be able to drag the selections towards both left and right when only select emoji initially.

Actual results

On IOS device, it's not able to drag selections towards left if selected emoji initially.

https://github.com/flutter/flutter/assets/70849672/e0c49793-b348-4614-95c9-6cf00b0e3fd0
Code sample
Code sample
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Text Selection Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Text Selection Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});
  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final TextEditingController _controller =
      TextEditingController(text: 'Hello, world! 😀 Good');

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          backgroundColor: Theme.of(context).colorScheme.inversePrimary,
          title: Text(widget.title),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              TextField(
                controller: _controller,
                decoration: const InputDecoration(
                  labelText: 'Enter some text',
                ),
              ),
            ],
          ),
        ));
  }
}

Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.13.9, on macOS 14.1 23B74 darwin-x64, locale en-GB)
[!] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.
[!] Xcode - develop for iOS and macOS (Xcode 15.0.1)
    ✗ CocoaPods installed but not working.
        You appear to have CocoaPods installed but it is not working.
        This can happen if the version of Ruby that CocoaPods was installed with is different from the one being used to invoke it.
        This can usually be fixed by re-installing CocoaPods.
      To re-install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
[✓] Android Studio (version 2022.3)
[✓] VS Code (version 1.83.1)
[✓] Connected device (2 available)
[✓] Network resources

Reproducible using the code sample provided above.

flutter doctor -v
[!] Flutter (Channel stable, 3.13.9, on macOS 14.0 23A344 darwin-arm64, locale en-GB)
    • Flutter version 3.13.9 on channel stable at /Users/nexus/dev/sdks/flutter
    ! Warning: `flutter` on your path resolves to /Users/nexus/dev/sdks/flutters/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutter. Consider adding /Users/nexus/dev/sdks/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/nexus/dev/sdks/flutters/bin/dart, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutter. Consider adding /Users/nexus/dev/sdks/flutter/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision d211f42860 (13 days ago), 2023-10-25 13:42:25 -0700
    • Engine revision 0545f8705d
    • Dart version 3.1.5
    • DevTools version 2.25.0
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-33, build-tools 33.0.1
    • Java binary at: /Users/nexus/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0)
    • Xcode at /Applications/Xcode-15.0.0-Release.Candidate.app/Contents/Developer
    • Build 15A240d
    • CocoaPods version 1.13.0

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.3)
    • Android Studio at /Users/nexus/Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.3)
    • IntelliJ at /Users/nexus/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 76.0.4
    • Dart plugin version 232.10072.19

[✓] VS Code (version 1.84.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.76.0

[✓] Connected device (5 available)
    • Pixel 7 (mobile)     • 28291FDH2001SA            • android-arm64  • Android 14 (API 34)
    • Nexus (mobile)       • 00008020-001875E83A38002E • ios            • iOS 17.1 21B74
    • Dean’s iPad (mobile) • 00008103-000825C811E3401E • ios            • iOS 17.1 21B74
    • macOS (desktop)      • macos                     • darwin-arm64   • macOS 14.0 23A344 darwin-arm64
    • Chrome (web)         • chrome                    • web-javascript • Google Chrome 119.0.6045.105

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

[✓] Flutter (Channel master, 3.17.0-1.0.pre.59, on macOS 14.0 23A344 darwin-arm64, locale en-GB)
    • Flutter version 3.17.0-1.0.pre.59 on channel master at /Users/nexus/dev/sdks/flutters
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 1402d99476 (5 hours ago), 2023-11-06 23:21:33 -0500
    • Engine revision f9f822359f
    • Dart version 3.3.0 (build 3.3.0-101.0.dev)
    • DevTools version 2.30.0-dev.1

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-33, build-tools 33.0.1
    • Java binary at: /Users/nexus/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0)
    • Xcode at /Applications/Xcode-15.0.0-Release.Candidate.app/Contents/Developer
    • Build 15A240d
    • CocoaPods version 1.13.0

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.3)
    • Android Studio at /Users/nexus/Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.3)
    • IntelliJ at /Users/nexus/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 76.0.4
    • Dart plugin version 232.10072.19

[✓] VS Code (version 1.84.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.76.0

[✓] Connected device (5 available)
    • Pixel 7 (mobile)     • 28291FDH2001SA            • android-arm64  • Android 14 (API 34)
    • Nexus (mobile)       • 00008020-001875E83A38002E • ios            • iOS 17.1 21B74
    • Dean’s iPad (mobile) • 00008103-000825C811E3401E • ios            • iOS 17.1 21B74
    • macOS (desktop)      • macos                     • darwin-arm64   • macOS 14.0 23A344 darwin-arm64
    • Chrome (web)         • chrome                    • web-javascript • Google Chrome 119.0.6045.105

[✓] Network resources
    • All expected network resources are available.

• No issues found!

i've seen several weird behavior in native ios. may worth checking if the same thing happens on native apps.

I took a quick look at this but haven't been able to figure out the root cause yet. When logging the gesture arena through debugPrintGestureArenaDiagnostics = true I see that when trying to drag the start handle, the gesture arena is registering two participants in the arena the start and end handles PanGestureRecognizer, and the end handle is winning by default.
When I explicitly passed MaterialTextSelectionControls to the TextField and dragging the start handle worked in the situation described, so this may be an issue in the implementation of CupertinoTextSelectionControls. When logging the gesture arena in this scenario the start handles PanGestureRecognizer  is participating in the gesture arena (in addition to the start handles TapGestureRecognizer which is expected).


[APP-840] Translate link failing in some cases

Some Android users have been reporting that the translate link fails in some cases. I'm unsure if this is due to the presence of specific characters or if the link is just busted on android, but we should check on both.
APP-840

Hey @maisondasilva 👋 thanks for chiming in.
Do you happen to have one or two examples of posts that fail to translate for you? Would be super helpful 🙏 thanks!

@estrattonbailey for me any post does not work. I will upload a video.
https://bsky.app/profile/bsky.app/post/3k62vnbg6oh23

I am not getting a translate link. Here's a screenshot:

see if you go to settings then language and then select only your language again appears

I see it. Both the language selector and translate link are broken. Selecting English in the selector doesn't hide the Japanese posts in my Following feed and clicking on translate doesn't default to translating from the automatically detected language to English and the left side isn't filled in with the Japanese text.

I see it. Both the language selector and translate link are broken. Selecting English in the selector doesn't hide the Japanese posts in my Following feed and clicking on translate doesn't default to translating from the automatically detected language to English and the left side isn't filled in with the Japanese text. Also, the Translate link should show up even if I choose to view all posts no matter the language.

I have selected in Portuguese and I see content in English, I think that part is not 100%

Thanks for the additional info 👍 opened a PR to address part of this.

I have selected in Portuguese and I see content in English

That's correct, although it might be confusing. In your "Following" feed, these are people you follow, so we don't filter out any posts in other languages. However, if you have a language selected in your "Content Languages", you should see a translate link.
We do filter out posts in other languages in "custom" feeds aka feeds other than your "Following" feed.

That makes sense.

Bringing the convo back here.
As we discovered with @maisondasilva on the PR (many thanks 🙌 ), translation links are still failing if the user has the Google Translate app installed.
This worked previously because we specified a language to translate into via the tl=<lang> query param. While the web interface supports tl=auto, the Android Translate app deeplink does not. It must be a valid language specifier such as en.
So this is maybe a small bug in the Google Translate app that may be fixed upstream eventually. But in the mean time, we have some work on languages coming up where we'd like to set the user's preferred "primary language" separately from "content languages", and that preference could provide a value for the translate link so that it works with the Android app. I'll leave this open until we get that update in in the coming weeks.

@estrattonbailey Thanks for the update, I had sent a message on your Twitter to let you know about it!
If you can implement it as before in the PT-BR language, I would be grateful!
Thanks Maison

Hey @maisondasilva I think this one should be solved in v1.51, have a look at the new "Languages" settings.
Thank you for all your help figuring this one out! 🙏


Can't find msgpack

I'm getting:
github.com/vmihailenco/msgpack/v4: cannot find package "github.com/vmihailenco/msgpack/v4" in any of
There is a v5 tagged.

I've vendor-ed the project, you should be able to build it now.

thank you


Switch to UUIDv7

see https://github.com/xdblab/xdb/pull/30#discussion_r1349539651
. https://buildkite.com/blog/goodbye-integers-hello-uuids
Here is a popular implementation in Go: https://github.com/jetpack-io/typeid

https://github.com/segmentio/ksuid

oh, turns out that https://github.com/segmentio/ksuid is longer than uuid

but it turns out the https://github.com/jetpack-io/typeid is depending on https://github.com/gofrs/uuid for uuid v7 generation, so let's just use https://github.com/gofrs/uuid


remove GCP publishing

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 26.623%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1210

Relevant Lines:
4545

💛  - Coveralls


Fix policy trigger for action execution cancellation

@m4dcoder Good catch - I'm working on some more related changes (https://github.com/StackStorm/st2/compare/retry_policy_improvements).
Feel free to merge this if you want and I can reconcile my changes later.


"Send a mail to all members of my club"

Excel export + manually copying adresses to the BCC field of a mail is a cumbersome user experience. In addition many mail clients and mail transfer agents limit the number of recipients of message to suppress the spread of spam.
Is this feasible in the context of enrollment? Or should this be considered as a separate project which consumes the member information in enrollment?
A major concern is ofcourse the protection of the emailadresses of the members. Sending mail to the people registered in enrollment should be restricted to the managers of their club.

Duplicate of #19


Use a newer version of jscs

Currently it requires<EMAIL_ADDRESS>but we have ^2.1.1 in our package. npm throws peer dependency errors
npm ERR! peerinvalid The package<EMAIL_ADDRESS>does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer<EMAIL_ADDRESS>wants<EMAIL_ADDRESS>
npm ERR! Please include the following file with any support request:
npm ERR!     /Users/mohsen/Projects/swagger-converter/npm-debug.log

Released v2.0.0