Preact and custom elements

Hello,
I have a native custom element, lets call it <custom-video-player>.
It handles its own children. The children can be a <video> or an <image> for example.
Unfortunately preact clobbers the child dom that I create in my createdCallback and the entire component breaks.
Is there an option I can pass in to make preact accept the component as it is and not traverse its children?
I am guessing this is related/identical to #39

This is fixed in version 7. npm I preact@beta.
Also I believe it only affects polyfilled custom Elements.

woho! that works very well for me :+1: thanks

Awesome, I really appreciate you opening this issue since I didn't have time to manually test this fix out myself. I was convinced it would work and I'm happy it does!  Thanks @oskbor!!

Hi @oskbor -- I'm running into a similar issue you described (mine is #344). So my custom elements are rendering as-expected on initial page render, but when navigating to subsequent views (in a SPA etc), they stop updating.
They also maintain their own internal nodes, and after inspecting the nodes it seems like there contents have been wiped out. Seems like Preact is breaking the shadow dom for custom elements.
Wondering if you had to do anything in addition to get this working aside from just bumping preact version? I've tried the latest versions and still running into issues. :(
Any input much apprecaited.

Hi, I didn't need to do anything more, but also I didn't use shadow dom in
my component.
I no longer have access to that code base, so I can't dig into it any more.
Sorry I couldn't be more helpful
On Sat, May 13, 2017, 18:30 Tom<EMAIL_ADDRESS>wrote:

Hi @oskbor https://github.com/oskbor -- I'm running into a similar
issue you described (mine is #344
https://github.com/developit/preact/pull/344). So my custom elements
are rendering as-expected on initial page render, but when navigating to
subsequent views (in a SPA etc), they stop updating.
They also maintain their own internal nodes, and after inspecting the
nodes it seems like there contents have been wiped out. Seems like Preact
is breaking the shadow dom for custom elements.
Wondering if you had to do anything in addition to get this working aside
from just bumping preact version? I've tried the latest versions and still
running into issues. :(
Any input much apprecaited.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/developit/preact/issues/405#issuecomment-301258993,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABPNfX-NZAospyvvnB6UPk8TPuV7k5LLks5r5dq8gaJpZM4KyUv0
.


Add OpenSans bold representation

Used for #1692.

Removing OpenSans_1.png is intentional (it was not used).


Multiple Subject Alternative Names

Hello,
I've used this Amazing tool to create a new certificate for my domain but I've noticed that the certificate does not cover "www" "not www" domains (i.e. www.bb37roma.it and bb37roma.it).
Is it possible to create one single certificate for the same domain but for all sub-domains?
Or at least for www and not-www domains?
Thanks a lot,
Marco

Yes and no. Let's Encrypt does not currently support wildcard domains (e.g. *.example..com), so you have to specify each subdomain that you want to cover. The good news is that you can let the tool generate a certificate with SANs for all bindings of an IIS site (that is option 2 if you generate a new certificate).


plugin-ts-standard-pkg should look for tsc in parents folders node_modules

Lerna project - Error: "tsc" executable not found. Make sure "typescript" is installed as a project dependency.
Code look for tsc only in current node_modules/.bin should also look in ../node_modules and ../../node_modules (and maybe more)
https://github.com/pikapkg/builders/blob/1a8471e330a399032334ba11b4101281ff5079c6/packages/plugin-ts-standard-pkg/src/index.ts#L46

hmm, this issue affects the types plugin as well. Can you share your use case? What is the reason that tsc/typescript isn't a dependency in your package working directory?

Have a monorepo include few packages and as I don't want to manage multiple dependencies versions for each package I install TS (and all other common dependencies) only on the root of the monorepo folder

Any updates on this? I'm trying pika/pack on a lerna repo and I also noticed I have to install typescript as a dependency inside each package.

I have the same problem, for a similar (i.e. lerna-related) reason. Is it possible to use the compiler API directly, instead of invoking the CLI (a bit weird anyway). Then it would share exactly the same lookup mechanism as node.

fixed in #93, thanks everyone!


Problem with building "reg_att_map_generator" extension

I'm running in colab:
%cd /content/RMNet/extensions/reg_att_map_generator
!python setup.py install --user
Help please? what I'm doing wrong?
Env:
GPU runtime
Name: torch Version: 1.8.1+cu101
Cuda compilation tools, release 11.0, V11.0.221
Build cuda_11.0_bu.TC445_37.28845127_0
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
got trace:
/content/RMNet/extensions/reg_att_map_generator
No CUDA runtime is found, using CUDA_HOME='/usr/local/cuda'
running install
running bdist_egg
running egg_info
writing reg_att_map_generator.egg-info/PKG-INFO
writing dependency_links to reg_att_map_generator.egg-info/dependency_links.txt
writing top-level names to reg_att_map_generator.egg-info/top_level.txt
/usr/local/lib/python3.7/dist-packages/torch/utils/cpp_extension.py:369: UserWarning: Attempted to use ninja as the BuildExtension backend but we could not find ninja.. Falling back to using the slow distutils backend.
warnings.warn(msg.format('we could not find ninja.'))
writing manifest file 'reg_att_map_generator.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_ext
building 'reg_att_map_generator' extension
x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fdebug-prefix-map=/build/python3.7-OGiuun/python3.7-3.7.10=. -fstack-protector-strong -Wformat -Werror=format-security -g -fdebug-prefix-map=/build/python3.7-OGiuun/python3.7-3.7.10=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/local/lib/python3.7/dist-packages/torch/include -I/usr/local/lib/python3.7/dist-packages/torch/include/torch/csrc/api/include -I/usr/local/lib/python3.7/dist-packages/torch/include/TH -I/usr/local/lib/python3.7/dist-packages/torch/include/THC -I/usr/local/cuda/include -I/usr/include/python3.7m -c reg_att_map_generator_cuda.cpp -o build/temp.linux-x86_64-3.7/reg_att_map_generator_cuda.o -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE="_gcc" -DPYBIND11_STDLIB="_libstdcpp" -DPYBIND11_BUILD_ABI="_cxxabi1011" -DTORCH_EXTENSION_NAME=reg_att_map_generator -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14
In file included from /usr/local/lib/python3.7/dist-packages/torch/include/ATen/Parallel.h:140:0,
from /usr/local/lib/python3.7/dist-packages/torch/include/torch/csrc/api/include/torch/utils.h:3,
from /usr/local/lib/python3.7/dist-packages/torch/include/torch/csrc/api/include/torch/nn/cloneable.h:5,
from /usr/local/lib/python3.7/dist-packages/torch/include/torch/csrc/api/include/torch/nn.h:3,
from /usr/local/lib/python3.7/dist-packages/torch/include/torch/csrc/api/include/torch/all.h:13,
from /usr/local/lib/python3.7/dist-packages/torch/include/torch/extension.h:4,
from reg_att_map_generator_cuda.cpp:10:
/usr/local/lib/python3.7/dist-packages/torch/include/ATen/ParallelOpenMP.h:83:0: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
#pragma omp parallel for if ((end - begin) >= grain_size)
Traceback (most recent call last):
File "setup.py", line 17, in
cmdclass={'build_ext': BuildExtension})
File "/usr/local/lib/python3.7/dist-packages/setuptools/init.py", line 153, in setup
return distutils.core.setup(**attrs)
File "/usr/lib/python3.7/distutils/core.py", line 148, in setup
dist.run_commands()
File "/usr/lib/python3.7/distutils/dist.py", line 966, in run_commands
self.run_command(cmd)
File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/usr/local/lib/python3.7/dist-packages/setuptools/command/install.py", line 67, in run
self.do_egg_install()
File "/usr/local/lib/python3.7/dist-packages/setuptools/command/install.py", line 109, in do_egg_install
self.run_command('bdist_egg')
File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/usr/local/lib/python3.7/dist-packages/setuptools/command/bdist_egg.py", line 164, in run
cmd = self.call_command('install_lib', warn_dir=0)
File "/usr/local/lib/python3.7/dist-packages/setuptools/command/bdist_egg.py", line 150, in call_command
self.run_command(cmdname)
File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/usr/local/lib/python3.7/dist-packages/setuptools/command/install_lib.py", line 11, in run
self.build()
File "/usr/lib/python3.7/distutils/command/install_lib.py", line 109, in build
self.run_command('build_ext')
File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/usr/local/lib/python3.7/dist-packages/setuptools/command/build_ext.py", line 79, in run
_build_ext.run(self)
File "/usr/local/lib/python3.7/dist-packages/Cython/Distutils/old_build_ext.py", line 186, in run
_build_ext.build_ext.run(self)
File "/usr/lib/python3.7/distutils/command/build_ext.py", line 340, in run
self.build_extensions()
File "/usr/local/lib/python3.7/dist-packages/torch/utils/cpp_extension.py", line 708, in build_extensions
build_ext.build_extensions(self)
File "/usr/local/lib/python3.7/dist-packages/Cython/Distutils/old_build_ext.py", line 195, in build_extensions
_build_ext.build_ext.build_extensions(self)
File "/usr/lib/python3.7/distutils/command/build_ext.py", line 449, in build_extensions
self._build_extensions_serial()
File "/usr/lib/python3.7/distutils/command/build_ext.py", line 474, in _build_extensions_serial
self.build_extension(ext)
File "/usr/local/lib/python3.7/dist-packages/setuptools/command/build_ext.py", line 196, in build_extension
_build_ext.build_extension(self, ext)
File "/usr/lib/python3.7/distutils/command/build_ext.py", line 534, in build_extension
depends=ext.depends)
File "/usr/lib/python3.7/distutils/ccompiler.py", line 574, in compile
self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
File "/usr/local/lib/python3.7/dist-packages/torch/utils/cpp_extension.py", line 456, in unix_wrap_single_compile
cflags = unix_cuda_flags(cflags)
File "/usr/local/lib/python3.7/dist-packages/torch/utils/cpp_extension.py", line 423, in unix_cuda_flags
cflags + _get_cuda_arch_flags(cflags))
File "/usr/local/lib/python3.7/dist-packages/torch/utils/cpp_extension.py", line 1561, in _get_cuda_arch_flags
arch_list[-1] += '+PTX'
IndexError: list index out of range

The error message said
No CUDA runtime is found, using CUDA_HOME='/usr/local/cuda'
Please fix it.


Why no HttpResponseException?

I know it's in the Web API shim, but why is there no equivalent (that I can find) in Core MVC? It was a very useful way of returning 404s from methods that return Task<Spaceship>.
I can patch one in myself easily enough with some middleware, so I wondered if there was a major performance issue or something that led to it being removed.

Just the classic, "we don't want people using exceptions for control flow" paradigm. People did things like use it from within their business logic which is all sorts of wrong. I can't speak to the performance issues because I haven't measured but throwing an exception that is meant to be caught to get some data is worse than just returning that result.

Yep, for exactly the reasons @davidfowl said.

I appreciate the case for the no control flow exceptions, but what's supposed to replace it?
Suppose I have an action on an API
// GET api/things/5
[HttpGet("{id}")]
public async Task<Thing> GetAsync(int id)
{
    Thing thingFromDB = await GetThingFromDBAsync();
    if(thingFromDB == null)
        return null; // This returns HTTP 204

    // Process thingFromDB, blah blah blah
    return thing;
}

Ok, so I'm returning an 204 OK HTTP status, which would be fine if this were a POST and I just need to communicate success with no body.
However, shouldn't this HTTP GET action return a 404 not found? It's not successful.
Now I can switch the return type from the explicit, unit tested Task<Thing> to Task<IActionResult> and then return NotFound(); - but then does that mean we should always use IActionResult? Or should we use a mix of explicit types and IActionResult depending on whether a 404 result is an option?
I've also asked this on Stackoverflow.
It seems the options are:

Have a weird (messy to test) mix of explicit types and IActionResult depending on expected type.
Forget about explicit types, they're not really supported by Core MVC, always use IActionResult.
Write an implementation of HttpResponseException and use it like ArgumentOutOfRangeException.
Write an implementation of HttpNoContentOutputFormatter that returns 404 for GET requests.
Something else I'm missing in how Core MVC is supposed to work?
Or is there a reason why 204 is correct and 404 wrong for a failed GET request?

My suggestion would be to have the action method return IActionResult (or the async variation).
The reason that both IActionResult and object are supported is that they each suit different purposes and different styles. For some of the simplest cases, it's nice to use object, but it isn't powerful at all. For full control, there's IActionResult, which follows the well-known "command pattern."
The IActionResult pattern allows the controller to explicitly state what should happen as a result of the action: some kind of error code, a redirect, a serialized data object, a rendered view, etc.

Cheers for the response, I get that IActionResult is more powerful - this isn't a power action though, it's a trivial HTTP GET - it's extant in even a single line action...
// GET api/things/5
[HttpGet("{id}")]
public Task<Thing> GetAsync(int id) =>
    GetThingFromDBAsync(); // returns 204 success if not found in the DB

If the answer really is to just use IActionResult then the problem is that it isn't possible to create a simple explicitly typed controller - you're always going to need IActionResult on GET actions (see my first bullet in the previous post). It also makes the trivial case above more complicated and the serialisation something that can be hard coded in each action (though there are ways around that).
// GET api/things/5
[HttpGet("{id}")]
public async Task<IActionResult> GetAsync(int id)
{
    var thingFromDB = await GetThingFromDBAsync();
    if (thingFromDB == null)
        return NotFound();

    // Oops, now the choice of serialiser is made by the action, rather than middleware
    return Json(thing);
}

I realise there are lots of ways to add a 404 that add complexity or override ASP Core behaviour, but none of that seems right for something as trivial as that.

Json() is there for legacy reasons. Prefer Ok() or one of the other status-code like methods that take an object.

Yes, good point. That avoids issues with hardcoded serialisers. Doesn't change the main issue of making the trivial case more complicated or leaving you with a mix of return types.

The suggestion to use IActionResult instead of the actual returned model type seems counterproductive, as it undervalues the type information in controller methods.
For example, as TypeScript becomes ever more popular on the service-consumption side, it's a good idea for services to have type descriptions that can be harvested to automatically generate matching type declarations (and indeed this has been true for years with a large selection of other statically-typed client languages.)
I've been looking at a project called http://frhagn.github.io/Typewriter which has some examples for generating client-side proxies for controller classes, so the TS code has a completely type-safe way to make calls, pass data and return it, etc.
Regarding the advice against using exceptions for control flow, I wonder why that is applicable here? When a method returns an error status instead of a valid model, that is an exceptional case, and occurs when the caller passed parameters that make it impossible for the implementer to honour the request. This is literally what exceptions are for. The exception case can happen, but it is not expected to be the usual case. The vast majority of requests will take the mainstream path. The tiny subset that takes the exception path does not seem to be a major priority for optimisations.

@danielearwicker  the suggestion in this case is to use attributes like for example SwaggerResponse attributes to document the return type.
I personally find this to be an extreme overkill and a risk of getting the implementation and attributes out of sync. I am implementing my own HttpResponseException and I refuse to feel guilty about it :)

We can definitely implement our own HttpResponseException, and in lieu of not having one out of the box, I agree with the approach that @Eirenarch took.  However, the decision to remove HttpResponseException on the basis that you didn't want people to misuse it seems short-sighted.

I think this might be fixed by the changes coming in ASP.NET Core 2.1: https://blogs.msdn.microsoft.com/webdev/2018/02/02/asp-net-core-2-1-roadmap/
That adds ActionResult<T>, which lets you return either the explicit type or the NotFound that produces a 404.

https://github.com/aspnet/Mvc/issues/4311#issuecomment-198324107: Just the classic, "we don't want people using exceptions for control flow"

Exceptions are a tool for control flow. Specifically, for clearing them off the actual, most important cause for the method to exist, which BTW, makes the method signature simpler and responsibility quicker to grasp.
Performance of exceptions is not an issue, if someone is not expecting 'invalid traffic en-masse' (then, it's very easy - the feature is optional - you can just not use it).
MFowler. In one article about the tradeoff:

I need to stress here, that I'm not advocating getting rid of exceptions throughout your code base. Exceptions are a very useful technique for handling exceptional behavior and getting it away from the main flow of logic.

Would aspnet support controllers returning tuples? Could be a way to handle this problem - keep return value strictly typed, and augment it with error information if necessary without going back to HttpResponseException, or actually including HttpResponseException into tuple returned by controller.

It is disappointing that davidfowl has such idea. I suppose HttpResponseException has given high level abstraction for application programming, to make Web API look like an API, and wrap the technical details of IActionResult into an exception. Removing this exception from the framework is really counter productive against application programming.

I hope this case could be reopened.

KeithHenry had made a good post at http://stackoverflow.com/questions/41464540/returning-a-404-from-an-explicitly-typed-asp-net-core-api-controller
I guess I may be using it as workaround. Really this solution based on .net core 2.1 still breaks the abstraction of explicit/strongly typed Web API.
I see there may be trade-off between abstraction and runtime performance. However, can .NET core compiler or JIT compiler compile HttpResponseException into ActionResult and respective returns of helper classes?


Can't seem to use the library on mingw?

Using Gradle 4.10 with enableFeaturePreview('GRADLE_METADATA') with id 'kotlin-multiplatform' version '1.3.20'
and this dependency setup
     mingwMain {
            dependencies {
                implementation "org.jetbrains.kotlin:kotlin-stdlib"
                implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-native_debug_mingw_x64:1.1.1"
                implementation "com.soywiz:korio:0.20.0"
                implementation "org.jetbrains.kotlinx:atomicfu-windows64:0.12.2"
            }
        }

Kotlin does for the mingw code does not seem to find korio related things at all? Any pointers?

This is the repo: https://github.com/Syrou/Padame

Korio is now 1.6.4. List of versions here: https://bintray.com/soywiz/soywiz/korio
Starting with 1.6, metadata is not included, but you have to provide each dependency for each target manually:
More info here:
https://korlibs.soywiz.com/faq/
I still have to update the readme to reflect this, but Ill try to update it this weekend.

I added that bintray maven to repositories and bumped the versions + removed metadata from settings.gradle
Now I Get:
* What went wrong:
Could not resolve all files for configuration ':mingwCompileKlibraries'.
> Could not resolve com.soywiz:korio-metadata:1.6.4.
  Required by:
      project :
   > Could not resolve com.soywiz:korio-metadata:1.6.4.
      > Could not parse POM https://bintray.com/soywiz/soywiz/korio/com/soywiz/korio-metadata/1.6.4/korio-metadata-1.6.4.pom
         > The markup in the document preceding the root element must be well-formed.
> Could not resolve com.soywiz:korio-mingwx64:1.6.4.
  Required by:
      project :
   > Could not resolve com.soywiz:korio-mingwx64:1.6.4.
      > Could not parse POM https://bintray.com/soywiz/soywiz/korio/com/soywiz/korio-mingwx64/1.6.4/korio-mingwx64-1.6.4.pom
         > The markup in the document preceding the root element must be well-formed.

This is the right maven repository. The other url is for viewing versions:
https://dl.bintray.com/soywiz/soywiz
For the reference, in my projects i configure the repositories here:
https://github.com/korlibs/korio/blob/master/buildSrc/src/main/kotlin/com/soywiz/korlibs/modules/Repositories.kt

Thanks for pointing out my misstakes :) Can add the library now


emacs hang when open files in docker container's mounted dir

Hi
I used emacs 25.3.1 under Fedora 28 docker container.
My codebase path was mounted in docker container:
docker run --rm -it --net=host -v /home/py:/home/py --name fedora fedora
When opening .ts files, emacs hang.
There was M-x profiler-report output when C-x C-f (counsel-find-file) hang :
Function                                                  CPU samples    %
- command-execute                                               21743  92%
 - call-interactively                                           21743  92%
  - funcall-interactively                                       21743  92%
   - counsel-find-file                                          21556  91%
    - ivy-read                                                  21556  91%
     - apply                                                    21556  91%
      - ivy-historian--nadvice/ivy-read                         21556  91%
       - apply                                                  21556  91%
        - #<compiled 0x1b571d9>                                 21556  91%
         - ivy-call                                             21405  90%
          - counsel-find-file-action                            21405  90%
           - find-file                                          21405  90%
            - find-file-noselect                                21405  90%
             - find-file-noselect-1                             21404  90%
              - after-find-file                                 21404  90%
               - normal-mode                                    21404  90%
                - set-auto-mode                                 21402  90%
                 - set-auto-mode-0                              21402  90%
                  - typescript-mode                             21390  90%
                   - run-mode-hooks                             21081  89%
                    - apply                                     21081  89%
                     - run-hooks                                21081  89%
                      - add-node-modules-path                   20702  87%
                       - expand-file-name                        4824  20%
                        - tramp-completion-file-name-handler     4565  19%
                         - tramp-completion-run-real-handler     4023  17%
                            apply                                3961  16%
                       + file-name-directory                     1707   7%
                       + directory-file-name                     1685   7%
                      + paredit-everywhere-mode                    29   0%
                      + origami-mode                               24   0%
                      + symbol-overlay-mode                         2   0%
                      + rainbow-delimiters-mode                     2   0%
                   + byte-code                                    305   1%
                + fundamental-mode                                  1   0%
             + file-truename                                        1   0%
         + read-from-minibuffer                                   150   0%
         + ivy--reset-state                                         1   0%
   + counsel-M-x                                                  187   0%
+ ...                                                            1863   7%
+ redisplay_internal (C function)                                  24   0%
  global-whitespace-cleanup-mode-check-buffers                      1   0%
+ timer-event-handler                                               1   0%

I have comment add-node-modules-path config for .ts files, emacs not hang.
# git diff
diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el
index f4871aa..e52bbe0 100644
--- a/lisp/init-javascript.el
+++ b/lisp/init-javascript.el
@@ -103,8 +103,8 @@

 ^L
 (when (maybe-require-package 'add-node-modules-path)
-  (after-load 'typescript-mode
-    (add-hook 'typescript-mode-hook 'add-node-modules-path))
+  ;; (after-load 'typescript-mode
+  ;;   (add-hook 'typescript-mode-hook 'add-node-modules-path))
   (after-load 'js2-mode
     (add-hook 'js2-mode-hook 'add-node-modules-path)))

There was more details about this issue in https://github.com/purcell/emacs.d/issues/580

This seems to be related to the windows issue. I will have a look today and see if I can improve the code.

Can you switch off TRAMP as proposed here https://github.com/purcell/emacs.d/issues/580#issuecomment-390142048 and tell me if it changes anything?

I pushed a new version that let's you control the max depth for directory traversal. Can you try the newest version?

@codesuki
After I updated add-node-modules-path package to add-node-modules-path-20180522.1916, this problem seemed being solved. thx. It's much appreciated.


[Feature request]: add support for T8503 Door Lock

Describe the solution you'd like
I tried setting up device but kept getting connected and disconnected from device

Shared access to door lock

2022-09-04 06:34:41.031  INFO  Eufy Security server listening on host <IP_ADDRESS>, port 3000
2022-09-04 06:34:51.588  INFO  Push notification connection successfully established
2022-09-04 06:34:52.882  INFO  Connected to station T8503Q1021450032 on host <IP_ADDRESS> and port 24791
2022-09-04 06:35:26.480  INFO  Disconnected from station T8503Q1021450032
2022-09-04 06:35:42.734  INFO  Connected to station T8503Q1021450032 on host <IP_ADDRESS> and port 11519
2022-09-04 06:36:16.383  INFO  Disconnected from station T8503Q1021450032
2022-09-04 06:36:34.563  INFO  Connected to station T8503Q1021450032 on host <IP_ADDRESS> and port 15622
2022-09-04 06:37:08.263  INFO  Disconnected from station T8503Q1021450032
2022-09-04 06:37:23.678  INFO  Connected to station T8503Q1021450032 on host <IP_ADDRESS> and port 18488
2022-09-04 06:37:57.415  INFO  Disconnected from station T8503Q1021450032
2022-09-04 06:38:12.805  INFO  Connected to station T8503Q1021450032 on host <IP_ADDRESS> and port 28211
2022-09-04 06:38:46.595  INFO  Disconnected from station T8503Q1021450032
2022-09-04 06:39:00.720  INFO  Connected to station T8503Q1021450032 on host <IP_ADDRESS> and port 11377
2022-09-04 06:39:34.420  INFO  Disconnected from station T8503Q1021450032
2022-09-04 06:39:48.270  INFO  Connected to station T8503Q1021450032 on host <IP_ADDRESS> and port 12498

@etorr
Hi,
I can no longer connect to the device via P2P using the Eufy App. Can you please check?
Thank you!

Restarted device, I am able to connect to it with Eufy app

Now it's working again.
Thank you!

@etorr
Could you restart the device one more time and let me know?
Thanks!

Restarted again, Thank You for working on it!

@etorr
Small update:
In the meantime, basic communication with the unit has been implemented. The first commands already work, such as locking and unlocking the device.

@etorr
Communication with the unit is not very stable. At the moment, the device is not accessible again. Please restart the device and share it with me at this email address:

<EMAIL_ADDRESS>
PS: I have deleted the other share.
Thank you!

@etorr
Could you share the device again?

Do you still need access to one? I just got one I'd be happy to share

Just noticed your response now, sorry. Inviting you at the email you listed above.

Just invited you and set a calendar reminder for myself to check daily for replies here

Just invited you and set a calendar reminder for myself to check daily for replies here. Mine is a model T8504 which appears to be the same as T8503 just with an additional fingerprint module. My SN starts with T8503Q

+1 on implementing support for the T8503 door lock. Thank you!

Yes please, would really love to see support for T8503 door lock! I saw in duplicate issue #294 someone said they were able to get it to integrate but that is not the case for me. I am seeing the lock in my devices but a bunch of errors are thrown and nothing seems to work. My node version is v20.10.0 and I tried a few versions of the homebridge-eufy-security plugin but currently on the one that says latest (v2.2.21)

@bropat I can provide access to mine if you need it

Yes please, would really love to see support for T8503 door lock! I saw in duplicate issue #294 someone said they were able to get it to integrate but that is not the case for me. I am seeing the lock in my devices but a bunch of errors are thrown and nothing seems to work. My node version is v20.10.0 and I tried a few versions of the homebridge-eufy-security plugin but currently on the one that says latest (v2.2.21)

The T8503 is detected if you share the lock itself with the eufy account you use for HA integration. In the eufy app, tap on the lock, then Settings>>Share Device. It won't show up otherwise.
In my HA, it intermittently works. I see it as a device all the time and add it to automations, and I can lock and unlock it manually by going into its Device Info and hitting lock/unlock under Diagnostic. It doesn't work in automations for me.

Yes please, would really love to see support for T8503 door lock! I saw in duplicate issue #294 someone said they were able to get it to integrate but that is not the case for me. I am seeing the lock in my devices but a bunch of errors are thrown and nothing seems to work. My node version is v20.10.0 and I tried a few versions of the homebridge-eufy-security plugin but currently on the one that says latest (v2.2.21)

The T8503 is detected if you share the lock itself with the eufy account you use for HA integration. In the eufy app, tap on the lock, then Settings>>Share Device. It won't show up otherwise.
In my HA, it intermittently works. I see it as a device all the time and add it to automations, and I can lock and unlock it manually by going into its Device Info and hitting lock/unlock under Diagnostic. It doesn't work in automations for me.

Yes, I am able to get the lock to show up like I said, but the only device that makes it to the actual Home app on my phone is a security device with settings like 'Home, Away, Night' etc, which not only doesn't apply to this lock but it causes Homebridge to crash and restart if you try to change them. As far as the lock and pinpad device that are detected by the plugin but don't make it to the Home app, it just shows a bunch of errors in the logs about not expecting return values.  I'm not sure if it makes a difference but I'm not using Home Assistant, I'm trying to integrate it with Homebridge. I want to create an automation for when the Locked/Unlocked status changes, which I was kind of able to do in a roundabout way through Alexa, but its not very reliable

Yes please, would really love to see support for T8503 door lock! I saw in duplicate issue #294 someone said they were able to get it to integrate but that is not the case for me. I am seeing the lock in my devices but a bunch of errors are thrown and nothing seems to work. My node version is v20.10.0 and I tried a few versions of the homebridge-eufy-security plugin but currently on the one that says latest (v2.2.21)

The T8503 is detected if you share the lock itself with the eufy account you use for HA integration. In the eufy app, tap on the lock, then Settings>>Share Device. It won't show up otherwise.
In my HA, it intermittently works. I see it as a device all the time and add it to automations, and I can lock and unlock it manually by going into its Device Info and hitting lock/unlock under Diagnostic. It doesn't work in automations for me.

How do you interact with the device in HA, I have the device shared from my Eufy account to a seperate account used in HA. It shows up alongside my other devices but only entities available in Diagnostic are 'Reset Alarm' and 'Trigger Alarm'?

@etorr
Small update:
In the meantime, basic communication with the unit has been implemented. The first commands already work, such as locking and unlocking the device.

How can we access these in HA? I can only see 'Reset Alarm' and 'Trigger Alarm' after re-configuring add on and removing and adding the Eufy integration.

There is still no support for this device. If someone shares the device with me, I can provide support.

There is still no support for this device. If someone shares the device with me, I can provide support.

I can share mine with you. Do I just share it to<EMAIL_ADDRESS>

@bropat I just shared access with mine as well

Not all heroes wear capes......@bropat
Thank you

@bropat Thank you!!!!
Not sure who is in charge of the Homebridge plugin but I added a request to add support there as well as I was able to successfully get the lock working in my local environment with these changes from my fork:
https://github.com/austin-r-brown/plugin/tree/master

Amazing, thank you, @bropat!


docker exec -i hangs after command has exited

There is an apparent regression in the behaviour of Docker 1.6 when using -i with exec:
vagrant@ubuntu-14:~/weave$ docker run -di busybox
1b91aa935eac5471b4030594fb30b86471107a60c705385b3ef7310ec4e3bcf4
vagrant@ubuntu-14:~/weave$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
1b91aa935eac        busybox:latest      "/bin/sh"           2 seconds ago       Up 2 seconds                            condescending_fermat
vagrant@ubuntu-14:~/weave$ docker exec 1b91aa935eac true # this works fine
vagrant@ubuntu-14:~/weave$ echo $?
0
vagrant@ubuntu-14:~/weave$ docker exec -i 1b91aa935eac true # this hangs until you hit ENTER

vagrant@ubuntu-14:~/weave$ echo $?
255

@awh Thanks for report. We found an error and soon it will be fixed.


swagger-ui.min.js and jquery1.8.0.min.js fail to load on AWS Lambda using Sprint Boot 2

Version
2.6.1
Problem
I have deployed spring boot 2 lambda function on AWS using the aws serverless container and added auto swagger generation and swagger ui to the project. Locally, the swagger-ui.html is correctly generated and populated. Remotely, on AWS the content of /v2/api-docs is perfectly fine, but the swagger-ui.html file renders blank (without the content of my API).
I have noticed that there is an HTTP 502 error on serving
api-url/webjars/springfox-swagger-ui/swagger-ui.min.js, the same goes for jquery.
Expected
I would expect the swagger-ui file to render just as it does locally, what could be the cause of this?

Update:
After upgrading to 2.9.1, even more resources are not accessible:

This is my whitelist:
private static final String[] AUTH_WHITELIST = {
        // -- swagger ui
        "/swagger-resources/**",
        "/swagger-ui.html",
        "/v2/api-docs",
        "/webjars/**"
};

Thanks
Thomas

This should be fixed in 3.0.0


Update Docs for 2.5

I've verified that these build with readthedocs - https://pynq-pko-testing.readthedocs.io/en/2.5_docs/index.html

Merging into Rock's documentation PR


hpcprof doesn't handle paths for cubins and [vdso] right if a database is copied

Reproducer:
hpcrun app
cp -r hpctoolkit-app-measurements mymeasurements
hpcprof my measurements

Problems:

hpcprof will access cubin and [vdso] binaries in hpctoolkit-app-measurements. I found this out when someone gave me a copy of their measurements directory
for cubins, hpcprof will try to write a .cubin.relocate file into the original measurements directory
for cubins, hpcprof-mpi may have multiple processes race and collide trying to produce a .cubin.relocate file

.cubin.relocate files are no longer written.
vdso files and cubin files should be recorded in the load map and processed like kernel files.

This repository has moved to GitLab, please continue this issue there.


does not work with nrwl nx

I tried to generate a test in a project that uses nrwl and is not able to find modules
Error: Cannot find module '@scwx/utils-alerts'
Require stack:
-
- /usr/local/lib/node_modules/ngentest/index.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:1080:15)
    at Function.Module._load (internal/modules/cjs/loader.js:923:27)
    at Module.require (internal/modules/cjs/loader.js:1140:19)
    at require (internal/modules/cjs/helpers.js:75:18)
    at Object.<anonymous> (<anonymous>:13:24)
    at Module._compile (internal/modules/cjs/loader.js:1251:30)
    at requireFromString (/usr/local/lib/node_modules/ngentest/node_modules/require-from-string/index.js:28:4)
    at run (/usr/local/lib/node_modules/ngentest/index.js:151:21)
    at Object.<anonymous> (/usr/local/lib/node_modules/ngentest/index.js:220:3)
    at Module._compile (internal/modules/cjs/loader.js:1251:30) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '', '/usr/local/lib/node_modules/ngentest/index.js' ]
}

Hi
This happens when the test generator, which has an isolated environment, tries to compile your code. Which means it can't find your module.
As you seen in README.md, try using replacements.
This does not mean replacing your code. It just temporarily replace the code in memory.
replacements: There are some codes, which causes error without proper environment. You need to replace these codes. You can specify from value with regular expression and to value with string. e.g.

replacements: [
  { from: '^\\S+\\.define\\(.*\\);', to: ''}`
]

For example,
  // faking import for errorenous lib.
  replacements: [
    { from: '@scwx\\/utils-alerts, to: '@angular/core' }


docs: update Ingress controller httpbin tutorial

Signed-off-by: Navendu Pottekkat<EMAIL_ADDRESS>Updates the ingress controller tutorial and makes it more straighforward and provide relevant example usages.

If this looks okay, I will make similar changes to other tutorials.


Fix spelling and grammar errors

Merged in Gerrit

The change in this PR has been merged in Gerrit hip.
The PR can be closed now.
Thanks.

fee13d6a3f2d925464fa22fb45e752cb014f8017 contains the change.


[HUDI-5893] Mark advanced configs

Change Logs
Some of configs should be marked advanced (https://github.com/apache/hudi/pull/7912). This PR mark the configs:

hoodie.archive.automatic
hoodie.archive.async
hoodie.bloom.index.bucketized.checking
hoodie.avro.schema

Impact
makes it easier to use Hudi, especially as a beginner
Risk level (write none, low medium or high below)
none
Documentation Update
This will be used for grouping configs on the website, Documentation Need to make changes to the website to show advanced configs.
Contributor's checklist

[ ] Read through contributor's guide
[ ] Change Logs and Impact were stated clearly
[ ] Adequate tests were added if applicable
[ ] CI passed

@clownxc Thanks for putting this up!  I'll address the comment and land the PR.  I plan to mark more advanced configs following this.

@clownxc Thanks for putting this up! LGTM. I plan to mark more advanced configs following this.

Thank you very much for review. my first contribution to hudi :)


SIMSBIOHUB-354-355: Study area and Sampling sites on observations map

Links to Jira Tickets
SIMSBIOHUB-354
SIMSBIOHUB-355
Description of Changes

Added sampling site locations to the observation map
Added study area locations to the observation map

Testing Notes

Create/ Edit a survey
Add a sampling site
Navigate to survey details page and see features on the map
Toggle layers with map control in the bottom right of the map

Noticed a few things testing this:

A strange UI issue with the controls at the top of the table. The buttons are mismatched sizes and there is a strange bar cutting through the time column if scrolling to the right of the table

When deleting a record the observations count at the top of the table

Ran into an issue deleting records

Import records
Edit any record
Delete the same record
Save changes

Not an error but it is a strange interaction to create a new record and try and delete that record before saving any changes. The UI throws an error but I think it should just remove the record

Tested this on the deployed pod. Seems to work as expected.
Perhaps outside the scope of this ticket, but I think it would be good if there was some way to see a label of which feature is which when clicking on one. It's not really clear which is a study area and which is a sampling site since everything is blue and they can overlap. Similarly, might be nice if you could toggle on/off individual elements rather than all sampling sites and all study areas.

Tested this on the deployed pod. Seems to work as expected. Perhaps outside the scope of this ticket, but I think it would be good if there was some way to see a label of which feature is which when clicking on one. It's not really clear which is a study area and which is a sampling site since everything is blue and they can overlap. Similarly, might be nice if you could toggle on/off individual elements rather than all sampling sites and all study areas.

I think we'll be keeping this pretty simple for now and make this interaction a little more complex as we get a better idea of how users want to interact with the map. I did add an on over for the study areas and sample sites so hopefully it is a little less confusing which is which when toggling. The observations are also now an orange color so they stand out a bit more

I think we'll be keeping this pretty simple for now and make this interaction a little more complex as we get a better idea of how users want to interact with the map. I did add an on over for the study areas and sample sites so hopefully it is a little less confusing which is which when toggling. The observations are also now an orange color so they stand out a bit more

Tested this again locally. I think the onOver and color changes are good, definitely sufficient for now.
One thing I noticed: It seems that when you refresh the page, the sample site can load in after the study area, so the map bounds will not be fit to both shapes.


Community buttons

Communities will often have some custom buttons they'd like to show. For example of the community website, slack/discord, repo ,etc.
We should make it possible for people to add custom community buttons. Perhaps we could make adding more than 3 an Openbook Gold feature.

Maybe we could additional custom buttons only for Okuna Gold and a e.g. default Buttons to the website without special Text (only with translation of the String "Website").
For later: Adding Icons to the Button as a Gold Feature

Good idea @duichwer !


Start Marionette work

Mostly working. A few things left are :

Fix and add tests for Marionette Driver
Fix downloading older versions of marionette driver. The old name was wires, but the new name is geckodriver. In regards to this, we might want to switch marionette -> geckodriver

Tests are updated/added for Marionette Driver. Ready for review.
@dimacus Did you want to take a look ? I did some manual testing and have some automated tests as well. I mimicked what was done for ChromeDriver, and also used some of the upgrade of selenium-grid-extras (without the caching). I created a GitHubDownloader class which could be used for the upgrade/download of SeleniumGridExtras or anything else from the github releases page (like Marionette/GeckoDriver).

:+1: let's do it


Bugfix/budget association issue 21

Pull Request
Are you a current Fivetran customer?

Fivetran employee
What change(s) does this PR introduce?

Added budget_association_status into the stg_microsoft_ads__campaign_daily_report table in order account for campaign budgets that end midday. Including budget_association_status as another grain to test by, will reduce tests failing due to non-uniqueness of rows.

Did you update the CHANGELOG?

[x] Yes

Does this PR introduce a breaking change?

[ ] Yes (please provide breaking change details below.)
[x] No  (please provide an explanation as to how the change is non-breaking below.)

Did you update the dbt_project.yml files with the version upgrade (please leverage standard semantic versioning)? (In both your main project and integration_tests)

[x] Yes

Is this PR in response to a previously created Bug or Feature Request

[x] Yes, Issue/Feature [#21]
[ ] No

How did you test the PR changes?

[x] CircleCi
[x] Local (please provide additional testing details below)

Select which warehouse(s) were used to test the PR

[x] BigQuery
[x] Redshift
[x] Snowflake
[x] Postgres
[x] Databricks
[ ] Other (provide details below)

Provide an emoji that best describes your current mood

:dancer:
Feedback
We are so excited you decided to contribute to the Fivetran community dbt package! We continue to work to improve the packages and would greatly appreciate your feedback on our existing dbt packages or what you'd like to see next.

[ ] Regenerate docs after PR has been approved
[ ] Update changelog link


Think about locked matches

What's the problem about updating a locked match, really?

Think about a bug where an automated way of updating scores forgets to set the winner of a match.
Then the next matches are locked and none of the update score notifications take effect?

Maybe it would be good to be less restrictive...

It's actually good behavior, it wouldn't make any sense to set the scores of a match which still hasn't any determined participant.


Double newlines means parbreak

Debug log ID
E742428P-refs-euc/6.7.159.emile.kiku.fritz.box-6
What happened?
Double newlines should be interpreted as a parbreak

After upgrading today to BetterBibTex 6.7.160 my eta-template was not working like expected anymore.
it.items serialized from JSON were not seperated by parbreaks at the end of the nested output of the template.
The JSON l directly exported via BetterBibTeX json looked OK.
@retorquere Can you remember I had to work around differences between newlines and paragraph breaks to make it working for me in Logseq.
I am not sure if I need to change my template or something is missing in your update.
In any case it should not pass silently.
Example Export
In line 12 the next item starting at - ### The Most Dangerous Writing App is concatenated to the preceeding item without any delimiter.
- ### The Least Dangerous To-Do List
creators:: author: Manuel Ebert
url:: https://theleastdangeroustodolist.com
tags:: #[[Schreiben]], #[[Writing]], #[[Online Tools]], #[[Tools]], #[[Writing Software]], #[[Writing Blog Posts]], #[[Text Creation]], #[[Schreibblockade]], #[[Manu Ebert]], #[[The Most Dangerous Writing App]]
zotero:: [@ebertLeastDangerousToDo2023](zotero://select/groups/5387086/items/E6Q3V4RB)
  - #### abstractNote
    The satisfaction of checking things off your to-do list, without any of the hard work.
  - #### Relations
    - http://zotero.org/groups/3305/items/HPSPXE2V
    - http://zotero.org/groups/5387086/items/IJ6LI577
    - http://zotero.org/groups/5387086/items/IQ438J55
    - http://zotero.org/groups/5387086/items/Y428Z85I- ### The Most Dangerous Writing App
creators:: author: Manuel Ebert
url:: https://maebert.github.io/themostdangerouswritingapp
tags:: #[[Schreiben]], #[[Writing]], #[[Online Tools]], #[[Tools]], #[[Writing Software]], #[[Writing Blog Posts]], #[[Text Creation]], #[[Schreibblockade]], #[[Manu Ebert]], #[[The Most Dangerous Writing App]]
zotero:: [@ebertMostDangerousWriting2022](zotero://select/groups/5387086/items/IQ438J55)
  - #### abstractNote
    Don’t stop typing, or all progress will be lost.
  - #### Relations
    - http://zotero.org/groups/3305/items/K69CGHDJ
    - http://zotero.org/groups/5387086/items/E6Q3V4RB
    - http://zotero.org/groups/5387086/items/IJ6LI577
    - http://zotero.org/groups/5387086/items/Y428Z85I

Thanks for all your efforts.

OK Race Condition with your answer and my final edit above. Need to come back on this tomorrow...

That's fine. Please remember that if I am to debug anything that generates output I will always require a debug log (with -refs- in it). There's no use in me trying to guess what the input was that breaks something when you can just hand me a ready-to-use testcase.

I will mandatory include debug log ID every time in the future I

Opened a new issue and created a related Debug log with ID


feat(cxx_common): properly index generated protos

Generated protos ending in .gen.proto are now properly indexed. Cxx indexer creates vnames
for generated protos that match the vnames created by the proto extractor. Added tests,
updated build rules and created two new entires in vnames.json.

This change allows for generated proto files with the .gen.proto extension to be properly indexed.  There is a followup pull request coming that adds metadata support for generated protos.
If you prefer, I can combine these two changes into one pull request. Just let me know.
Also, I can't get the presubmit checks to pass when pushing to origin.  The bazel tests are failing with "no such package '@debian_java_deps//': ..  Is this expected? I did a git push --no-verify.

/gcbrun

This change allows for generated proto files with the .gen.proto extension to be properly indexed. There is a followup pull request coming that adds metadata support for generated protos.
If you prefer, I can combine these two changes into one pull request. Just let me know.
Also, I can't get the presubmit checks to pass when pushing to origin. The bazel tests are failing with "no such package '@debian_java_deps//': .. Is this expected? I did a git push --no-verify.

No, the tests should pass.  This won't be mergeable if the tests fail in the presubmit.

/gcbrun

/gcbrun

/gcbrun

/gcbrun


dropStateChanged Event

I want to change icon on Click of Drop down
Callback Event shuld be there when box open/close.

#10

Hi @bhumitbelani, my macbook is going recall and turning back in a few days.
So, I will commit your pr and update library as soon as possible Thx :D

Cool
Welcome Dude :)
On Mon, Nov 29, 2021 at 11:06 AM Denny Hong @.***>
wrote:

Hi @bhumitbelani https://github.com/bhumitbelani, my macbook is going
recall and turning back in a few days.
So, I will commit your pr and update library as soon as possible Thx :D
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/whatamelon/flutter_dropdown_below/issues/9#issuecomment-981307095,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASHMCDESHSQ3E5BEBEDLCADUOMGM3ANCNFSM5IYEX5PA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Hi, @bhumitbelani. Now your pr is accepted and the library updated. Sorry for late to update and Thx for contribute this project :D

Awesome, thanks!
On Wed, Dec 8, 2021 at 8:15 AM Denny Hong @.***> wrote:

Hi, @bhumitbelani https://github.com/bhumitbelani. Now your pr is
accepted and the library updated. Sorry for late to update and Thx for
contribute this project :D
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/whatamelon/flutter_dropdown_below/issues/9#issuecomment-988446691,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASHMCDB42KIGTFFUSDTZQKLUP3BFHANCNFSM5IYEX5PA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.


[PeerTube] Uses port 443 (instead of port 80) for Tor .onion PeerTube URLs

Checklist

[X] I'm reporting a bug unrelated to a specific site
[X] I've verified that I'm running yt-dlp version 2<IP_ADDRESS>. (update instructions)
[X] I've checked that all provided URLs are alive and playable in a browser
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Description
When trying to download a video from a PeerTube powered website hosted as a Tor hidden service (.onion), it tries to connect to it using port 443, which leads to failure, because port 80 is expected.
Example URL: http://dollarvifyat7aehsklwzl2vf4rpkn5t4bftecepzfmv4q4fq53rxwyd.onion/w/mirK3SbmFLNNC41tc5sXMf
The relevant part of the verbose log:
[debug] [PeerTube] Extracting URL: peertube:dollarvifyat7aehsklwzl2vf4rpkn5t4bftecepzfmv4q4fq53rxwyd.onion:mirK3SbmFLNNC41tc5sXMf
[PeerTube] mirK3SbmFLNNC41tc5sXMf: Downloading video JSON
[proxychains] Random chain  ...  <IP_ADDRESS>:9050  ...  dollarvifyat7aehsklwzl2vf4rpkn5t4bftecepzfmv4q4fq53rxwyd.onion:443 <--socket error or timeout!
ERROR: [PeerTube] mirK3SbmFLNNC41tc5sXMf: Unable to download webpage: <urlopen error [Errno 111] Connection refused> (caused by URLError(ConnectionRefusedError(111, 'Connection refused')))

The solution would be to detect .onion URLs and connect to them via port 80.
With the equivalent clearnet URL (https://dollarvigilante.tv/w/mirK3SbmFLNNC41tc5sXMf), yt-dlp works as expected.
  OK
Latest version: 2<IP_ADDRESS>, Current version: 2<IP_ADDRESS>
yt-dlp is up to date (2<IP_ADDRESS>)
[debug] [generic] Extracting URL: http://dollarvifyat7aehsklwzl2vf4rpkn5t4bftecepzfmv4q4fq53rxwyd.onion/w/mirK3SbmFLNNC41tc5sXMf
[generic] mirK3SbmFLNNC41tc5sXMf: Requesting header
[proxychains] Random chain  ...  <IP_ADDRESS>:9050  ...  dollarvifyat7aehsklwzl2vf4rpkn5t4bftecepzfmv4q4fq53rxwyd.onion:80  ...  OK
WARNING: [generic] Falling back on generic information extractor.
[generic] mirK3SbmFLNNC41tc5sXMf: Downloading webpage
[proxychains] Random chain  ...  <IP_ADDRESS>:9050  ...  dollarvifyat7aehsklwzl2vf4rpkn5t4bftecepzfmv4q4fq53rxwyd.onion:80  ...  OK
[generic] mirK3SbmFLNNC41tc5sXMf: Extracting information
[debug] Looking for video embeds
[download] Downloading playlist: Off-Grid Water Pumping Solutions - LIVE CONSULTATION [ LISTEN IN ]
[generic] playlist Off-Grid Water Pumping Solutions - LIVE CONSULTATION [ LISTEN IN ]: Downloading 1 videos
[download] Downloading video 1 of 1
[debug] [PeerTube] Extracting URL: peertube:dollarvifyat7aehsklwzl2vf4rpkn5t4bftecepzfmv4q4fq53rxwyd.onion:mirK3SbmFLNNC41tc5sXMf
[PeerTube] mirK3SbmFLNNC41tc5sXMf: Downloading video JSON
[proxychains] Random chain  ...  <IP_ADDRESS>:9050  ...  dollarvifyat7aehsklwzl2vf4rpkn5t4bftecepzfmv4q4fq53rxwyd.onion:443 <--socket error or timeout!
ERROR: [PeerTube] mirK3SbmFLNNC41tc5sXMf: Unable to download webpage: <urlopen error [Errno 111] Connection refused> (caused by URLError(ConnectionRefusedError(111, 'Connection refused')))
  File "/usr/lib/python3.10/site-packages/yt_dlp/extractor/common.py", line 639, in extract
    ie_result = self._real_extract(url)
  File "/usr/lib/python3.10/site-packages/yt_dlp/extractor/peertube.py", line 1205, in _real_extract
    video = self._call_api(
  File "/usr/lib/python3.10/site-packages/yt_dlp/extractor/peertube.py", line 1176, in _call_api
    return self._download_json(
  File "/usr/lib/python3.10/site-packages/yt_dlp/extractor/common.py", line 1027, in _download_json
    res = self._download_json_handle(
  File "/usr/lib/python3.10/site-packages/yt_dlp/extractor/common.py", line 1006, in _download_json_handle
    res = self._download_webpage_handle(
  File "/usr/lib/python3.10/site-packages/yt_dlp/extractor/common.py", line 798, in _download_webpage_handle
    urlh = self._request_webpage(url_or_request, video_id, note, errnote, fatal, data=data, headers=headers, query=query, expected_status=expected_status)
  File "/usr/lib/python3.10/site-packages/yt_dlp/extractor/common.py", line 783, in _request_webpage
    raise ExtractorError(errmsg, cause=err)

  File "/usr/lib/python3.10/urllib/request.py", line 1348, in do_open
    h.request(req.get_method(), req.selector, req.data, headers,
  File "/usr/lib/python3.10/http/client.py", line 1282, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1328, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1277, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1037, in _send_output
    self.send(msg)
  File "/usr/lib/python3.10/http/client.py", line 975, in send
    self.connect()
  File "/usr/lib/python3.10/http/client.py", line 1447, in connect
    super().connect()
  File "/usr/lib/python3.10/http/client.py", line 941, in connect
    self.sock = self._create_connection(
  File "/usr/lib/python3.10/socket.py", line 845, in create_connection
    raise err
  File "/usr/lib/python3.10/socket.py", line 833, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/yt_dlp/extractor/common.py", line 765, in _request_webpage
    return self._downloader.urlopen(url_or_request)
  File "/usr/lib/python3.10/site-packages/yt_dlp/YoutubeDL.py", line 3606, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/lib/python3.10/urllib/request.py", line 519, in open
    response = self._open(req, data)
  File "/usr/lib/python3.10/urllib/request.py", line 536, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
  File "/usr/lib/python3.10/urllib/request.py", line 496, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.10/site-packages/yt_dlp/utils.py", line 1539, in https_open
    return self.do_open(functools.partial(
  File "/usr/lib/python3.10/urllib/request.py", line 1351, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 111] Connection refused>

[download] Finished downloading playlist: Off-Grid Water Pumping Solutions - LIVE CONSULTATION [ LISTEN IN ]

Technically, you can host an onion service on any port you'd like, but yes, for URLs with "http" as opposed to "https" AND no explicit port number specified, port 80 should be the default.

Does it work if you explicitly pass :80 in the URL?


consul-template: 0.27.2 -> 0.28.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/hashicorp/consul-template/releases.
meta.description for consul-template is: "Generic template rendering and notifications with Consul"
meta.homepage for consul-template is: "https://github.com/hashicorp/consul-template/"
meta.changelog for consul-template is: ""
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
Warning: no invocation of /nix/store/6kfwzjqgiv3lj85r08vhd8aiph9q3fkw-consul-template-0.28.0/bin/consul-template had a zero exit code or showed the expected version
0 of 1 passed binary check by having a zero exit code.
0 of 1 passed binary check by having the new version present in output.
found 0.28.0 with grep in /nix/store/6kfwzjqgiv3lj85r08vhd8aiph9q3fkw-consul-template-0.28.0
found 0.28.0 in filename of file in /nix/store/6kfwzjqgiv3lj85r08vhd8aiph9q3fkw-consul-template-0.28.0

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

1 package rebuild(s)

1 x86_64-linux rebuild(s)
1 x86_64-darwin rebuild(s)

First fifty rebuilds by attrpath
consul-template

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/6kfwzjqgiv3lj85r08vhd8aiph9q3fkw-consul-template-0.28.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A consul-template https://github.com/r-ryantm/nixpkgs/archive/14ada3add8cb4410c86ca0068c5f905994a1fd1f.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/6kfwzjqgiv3lj85r08vhd8aiph9q3fkw-consul-template-0.28.0
ls -la /nix/store/6kfwzjqgiv3lj85r08vhd8aiph9q3fkw-consul-template-0.28.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

consul-template

Maintainer pings
cc @cpcloud @pradeepchhetri @kalbasit for testing.

Result of nixpkgs-review pr 162710 run on x86_64-linux 1

1 package built:

consul-template


Provide support of Firefox for Android in KITE

KITE needs to have support of Firefox (Fennec) for Android:
Only custom built firefox debug build can be used since marionette is not enabled for firefox in release builds from mozilla.

It has been done with no changes on the engine


Legends / Labels for Line Charts?

Hello, thanks for the nice work!
What do you think of adding legends/labels to line charts? When you have more than one data series, it can be hard to tell which is which.
To implement the legends, it seems that a new prop need to be added into LineChart. The reason that keys of data would not work is that, users might want to have same legend/label for different data series. A possible way is to have a prop.legends map, with keys corresponding to the ones in data.
What do you think?

Hi @songgao thanks for your comment.  Yes, legends with keys corresponding to the series name in the data prop would be great, thanks!
Please just make sure to avoid React's state when you generate the svg markup.  I'm in the process of creating React-generated chart axes (right now they're generated by d3).  This change will allow me to drop all uses of state in the existing charts, and only use props to propagate any data changes (and thus vastly simplify the React lifecycle for these charts, as well as testing the code).
Specifically, this means you'd need to use only React to produce the legend svg, and avoid any use of d3 for svg generation.
If you could add a test to accompany your PR, it would be much appreciated (let me know if you have any questions about testing framework).
Thanks again, and look forward to your pull request.

Thanks for the detailed response @esbullington . React generated axes sounds awesome! Looking forward to that update :D I'll take a look at the testing framework and include a test.

Hey @songgao are you working on legends?  Otherwise, I'm going to start on them soon.  Thanks again!

Hi @esbullington ! Thanks for getting back to this. I haven't got time to really work on the PR. Sorry about that. Please feel free to start on it and I'll try to do some code review.
Yeah pure React axes seems fairly complicated to me as well. But it seems to be something necessary for react-d3 to gain more popularity. Hopefully I can contribute to this some time in the future :D

Hi @songgao thanks for letting me know.  But please feel free to submit a PR when you have more time, if you would like to.
I'll keep this open until one of us finishes the legends.

This is merged, and will be in our next release. Thanks again for filing the issue, @songgao As you are familiar with dataviz, I'd love to have your continued input.  I'm still thinking about your other issue #14 , which brought up using seriesname mapped to dataseries array vs multidimensional array for data.  The underlying color issue is definitely a bug, but not sure how I want to go about fixing it.

Thanks @esbullington for getting it merged! The legends looks great!


patch: doesInclude improvements

:tada: This PR is included in version 5.3.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


correct issues about symmetric games in psro_v2

Hi, I think there are a few issues in the current psro_v2 with the symmetric game option so I submit a PR. They are:
(1) for get_metagame(). The original one returns self._game_num_players * self._meta_games. This is incorrect because self._meta_games is always a list of N [|S1|, |S2|,...,|SN|] tensors where each tensor contains the payoff values of a player. |Sn| is the number of strategies of player n. self._game_num_players * meta_games will result to N references of the same N tensors which are N^2 tensors.
My guess is that originally it was thought that self._meta_games only contains the tensor of player 0. But I don't see anywhere in psro_v2 handling metagame for symmetric game specifically. And even if it is the case this is still incorrect. Because get_metagame() gives payoff tensors for each player, so get_metagame()[0] and get_metagame()[1] are still different despite that they obey some degree of symmetry.
(2) _initialize_policy. In psro_v2, when symmetric_game=True, self._policies, self._new_policies will represent a single population strategy set when they aren't getting updated. But in _initialize_policy it does not have a special handler for this case and initializes the policy sets as an N-player policy list.
(3) Also in multiple places when it switches between one-population strategy set representation and N-player strategy set representation it does something like self._policies = self._game_num_players * self._policies. This approach assumes it is safe to use N references of the same policy set object for other computational purposes. However this might not be always be safe. For example if we use open_spiel.python.jax.dqn as an oracle, then it will contain player_id information. And self._policies = self._game_num_players * self._policies may contain N DQN all with player_id=0, which could lead to bug. This part needs some ad-hoc treatment, including how you build the oracle object so I put some comments at anywhere it appears.

Thanks!
@PaulFMMuller, can you take a look?


clean code and add sympy to requirements to fix tests

Hi Ian
this PR adds sympy to requirements to fix tests on the CICD

@joamatab can we move sympy to requirements_dev? Or does CICD require it to be in the main requirements?


feat(tutorial): complete step 1 HURSLEY

Closes #
{{short description}}
Changelog
New

{{new thing}}

Changed

{{change thing}}

Removed

{{removed thing}}

Hi! This doesn't look quite right at the moment - there seems to be an extraneous button that I'm not expecting. Can you have another look at the preview in the tutorial page?

No updates for 30 days. Closing.


HTTP Keep alive with range request followed by non range gives wrong response

In my scenario, HTTP range request is followed by HTTP GET request. This causes wrong data to be sent to the browser and video streaming fails. I was able to reproduce consistently while streaming video to a mobile browser.
Below code is used for keep alive scenario
while (!finalAccept.isClosed())
{
session.execute();
Session is re-used but not all states are cleanly re-initialized after keep alive scenario.
I modified to create a new HTTPSession session for each request even in keep-alive scenario and it works fine. Let me know if this is fine or need to take a different patch.
while (!finalAccept.isClosed())
{
HTTPSession session = new HTTPSession(tempFileManager, inputStream, outputStream, finalAccept.getInetAddress());
                                    session.execute();

}
The issue mainly caused by headers, thought haveing a new HTTPSession is cleaner.

I have also faced the same issue while streaming video. After debugging i found the issue and fixed it. The issue comes because the headers variable in the Session class is not being cleared properly. Adding one else clause will fix this issue.

if(null == headers) {
headers = new HashMap<String, String>();
} else{
headers.clear();
}

Hope this will help you to fix the problem and the author will add this fix in the nanohttpd core.

was already included in an other bugfix, please reopen if it does not work as expected


[hotfix][connector-files][connector-hive] Move Hive specific configs out of FileSystemConnectorOptions

What is the purpose of the change
Move Hive specific options out of FileSystemConnectorOptions in HiveOptions. No change to the options themselves, nor their names.
Brief change log

Move Hive specific options out of FileSystemConnectorOptions in HiveOptions

Verifying this change
This change is a trivial rework / code cleanup without any test coverage.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): no
The public API, i.e., is any changed class annotated with @Public(Evolving): yes
The serializers: no
The runtime per-record code paths (performance sensitive): no
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: no
The S3 file system connector: no

Documentation

Does this pull request introduce a new feature? no
If yes, how is the feature documented? not applicable

@flinkbot run azure


IDL parser assumes primary global interface is "Window"

Obviously not a big deal for W3C specifications, but the primary global interface for user agents is defined in the HTML spec with the [PrimaryGlobal] extended attribute. It just "happens" to be named Window.
For instance, given the following IDL:
[PrimaryGlobal]
interface PrimaryWindow {};

interface ExposedOnPrimaryWindow {};

... the IDL parser will report that PrimaryWindow and ExposedOnPrimaryWindow are exposed on Window, instead of PrimaryWindow.
In the code, the goal would be to adjust addToJSContext to use the right name once found. Interestingly, this begs the question as to what to output when the IDL does not contain a [PrimaryGlobal] definition. In theory, the IDL content could be attached to different primary global interfaces, depending on which spec references it.

The IDL parser still uses Window as default because that seems way easier to report meaningful information to people in a Web context, but it should now behave correctly when the IDL content contains a [PrimaryGlobal] extended attribute.
In the future, we might want to add a configuration flag to disable the Window-by-default behavior. That does not seem needed at this point.


Bug on UIKit

Description
I found a bug when using multiple stores inside a UIPageViewController.
I made a demo app to reproduce the bug.
Basically, we have a UIPageViewController that contains 4 stores, each store is updated from a dependency and should display information about the current page's selection.
When a page is selected, we increment a counter, and the background should be green; when the page is pending, the background should be yellow, and the counter should keep going.
https://github.com/pointfreeco/swift-composable-architecture/assets/10015557/ebd55fb9-d2ef-4dc1-a26c-003c00ae4185
In the first part of the video, when the header button is "No ID," you will see that the first page's counter stops after the gesture is canceled.
This is because the task is canceled on the second page but should not be canceled on the first page.
As far as I understand, the issue may come from multiple stores having the same internal IDs.
In the second part of the video, when the header button is "ID," you will see that everything is working as expected.
To workaround the issue, I created a store with IdentifiedArrayOf with a single item, and it seems to fix the bug because now each store has a different ID.
Maybe it would be great to allow "detached" store creation to avoid this kind of issue.

The full app code is available here
import SwiftUI
import ComposableArchitecture
import Combine

@Reducer
struct Feature {
    @ObservableState
    struct State: Equatable {
        let id: Int
        var child: ChildFeature.State?

        var isSelected: Bool = false
        var isPending: Bool = false
    }

    enum Action {
        case task
        case selectionReceived(Int)
        case pendingSelectionReceived(Set<Int>)
        case child(ChildFeature.Action)
    }

    let child: ChildFeature
    @Dependency(\.selectionClient) var selectionClient

    var body: some Reducer<State, Action> {
        Reduce { state, action in
            switch action {
            case .task:
                return .run { send in
                    try await withThrowingTaskGroup(of: Void.self) { group in
                        group.addTask {
                            for await selection in selectionClient.selection.values {
                                await send(.selectionReceived(selection))
                            }
                        }
                        group.addTask {
                            for await selections in selectionClient.pendingSelection.values {
                                await send(.pendingSelectionReceived(selections))
                            }
                        }
                        try await group.waitForAll()
                    }
                }
            case let .selectionReceived(id):
                let stateID = state.id
                state.isSelected = id == stateID
                return updateEffect(state: &state)
            case let .pendingSelectionReceived(ids):
                let stateID = state.id
                state.isPending = ids.contains(stateID)
                return updateEffect(state: &state)
            case .child:
                return .none
            }
        }
        .ifLet(\.child, action: \.child) {
            child
        }
    }

    func updateEffect(state: inout State) -> Effect<Action> {
        let isPending = state.isPending
        let isSelected = state.isSelected
        let shouldSelect = isPending || isSelected
        if shouldSelect != (state.child != nil) {
            state.child = shouldSelect ? .init() : nil
        }
        state.child?.isSelected = isSelected
        state.child?.isPending = isPending
        return .none
    }
}

@Reducer
struct ChildFeature {
    @ObservableState
    struct State: Equatable {
        var seconds: Int = 0
        var isSelected: Bool = false
        var isPending: Bool = false
    }

    enum Action {
        case task
        case timeReceived
    }

    var body: some Reducer<State, Action> {
        Reduce { state, action in
            switch action {
            case .task:
                return .run { send in
                    for await _ in Timer.publish(every: 1, on: .main, in: .common).autoconnect().values {
                        await send(.timeReceived)
                    }
                }
            case .timeReceived:
                state.seconds += 1
                return .none
            }
        }
    }
}

struct ContentView: View {
    let store: StoreOf<Feature>

    var body: some View {
        ZStack {
            if let childStore = store.scope(state: \.child, action: \.child) {
                ChildView(store: childStore)
            }
        }
        .task {
            await store.send(.task).finish()
        }
    }
}

struct ChildView: View {
    let store: StoreOf<ChildFeature>

    var body: some View {
        ZStack {
            if store.isSelected {
                Color.green
            } else if store.isPending {
                Color.yellow
            }
            Text(store.seconds, format: .number)
                .font(.title)
        }
        .task {
            await store.send(.task).finish()
        }
    }
}

struct SelectionClient: DependencyKey {
    let selection: AnyPublisher<Int, Never>
    let select: (Int) -> Void

    let pendingSelection: AnyPublisher<Set<Int>, Never>
    let setPendingSelection: (Set<Int>) -> Void

    static let liveValue: SelectionClient = {
        let subject = CurrentValueSubject<Int, Never>(0)
        let pendingSelectionSubject = CurrentValueSubject<Set<Int>, Never>([])
        return .init(
            selection: subject.eraseToAnyPublisher(),
            select: { subject.value = $0 },
            pendingSelection: pendingSelectionSubject.eraseToAnyPublisher(),
            setPendingSelection: { pendingSelectionSubject.value = $0 }
        )
    }()
}

extension DependencyValues {
    var selectionClient: SelectionClient {
        self[SelectionClient.self]
    }
}

@main
struct TCABugApp: App {
    @State var idSelected = false

    var body: some Scene {
        WindowGroup {
            VStack {
                Button(idSelected ? "ID" : "No ID") {
                    idSelected.toggle()
                }
                HostingView(idView: idSelected)
                    .id(idSelected)
            }
        }
    }
}

struct HostingView: UIViewControllerRepresentable {
    let idView: Bool

    func makeUIViewController(context: Context) -> ViewController {
        .init(idView: idView)
    }

    func updateUIViewController(_ uiViewController: ViewController, context: Context) { }
}

extension HostingView {
    final class ViewController: UIPageViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate {
        private let idView: Bool
        @Dependency(\.selectionClient) private var selectionClient

        private lazy var childControllers: [UIViewController] = [
            childController(id: 0),
            childController(id: 1),
            childController(id: 2),
            childController(id: 3)
        ]

        init(idView: Bool) {
            self.idView = idView
            super.init(transitionStyle: .scroll, navigationOrientation: .vertical)
        }

        required init?(coder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }

        override func viewDidLoad() {
            super.viewDidLoad()
            dataSource = self
            delegate = self
            selectionClient.select(0)
            setViewControllers([childControllers[0]], direction: .forward, animated: false)
        }

        func childController(id: Int) -> UIViewController {
            let view = childView(id: id)
            return UIHostingController(rootView: view)
        }

        @ViewBuilder
        func childView(id: Int) -> some View {
            if idView {
                let store = IDStoreOf<Feature>(initialState: .init(id: id)) {
                    Feature(child: .init())
                }
                IDStoreView(store: store) { store in
                    ContentView(store: store)
                }
            } else {
                ContentView(store: .init(initialState: .init(id: id), reducer: {
                    Feature(child: .init())
                }))
            }
        }

        func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
            guard let index = childControllers.firstIndex(of: viewController), childControllers.indices.contains(index - 1) else { return nil }
            return childControllers[index - 1]
        }

        func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
            guard let index = childControllers.firstIndex(of: viewController), childControllers.indices.contains(index + 1) else { return nil }
            return childControllers[index + 1]
        }

        func pageViewController(_ pageViewController: UIPageViewController, willTransitionTo pendingViewControllers: [UIViewController]) {
            selectionClient.setPendingSelection(Set(pendingViewControllers.compactMap {
                childControllers.firstIndex(of: $0)
            }))
        }

        func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
            if completed, let viewController = pageViewController.viewControllers?.last, let index = childControllers.firstIndex(of: viewController) {
                selectionClient.select(index)
            }
            selectionClient.setPendingSelection([])
        }
    }
}

struct IDStoreView<ChildReducer, ChildView>: View where ChildView: View, ChildReducer: Reducer {
    let store: StoreOf<IDReducer>
    let content: (StoreOf<ChildReducer>) -> ChildView

    init(
        store idStore: IDStoreOf<ChildReducer>,
        content: @escaping (StoreOf<ChildReducer>) -> ChildView
    ) {
        let id = ChildID()
        self.store = .init(
            initialState: .init(idChild: .init(id: id, child: idStore.initialState)),
            reducer: { IDReducer(child: idStore.reducer) }
        )
        self.content = content
    }

    var body: some View {
        ForEach(store.scope(state: \.elements, action: \.elements), id: \.id) { store in
            content(store.scope(state: \.child, action: \.child))
        }
    }
}

struct IDStoreOf<ChildReducer> where ChildReducer: Reducer {
    let initialState: ChildReducer.State
    let reducer: ChildReducer

    init(
        initialState: ChildReducer.State,
        @ReducerBuilder<ChildReducer.State, ChildReducer.Action> reducer: () -> ChildReducer
    ) {
        self.initialState = initialState
        self.reducer = reducer()
    }

    init<BaseReducer>(
        initialState: @autoclosure () -> ChildReducer.State,
        @ReducerBuilder<ChildReducer.State, ChildReducer.Action> reducer: () -> ChildReducer,
        withDependencies prepareDependencies: (inout DependencyValues) -> Void
    ) where ChildReducer == _DependencyKeyWritingReducer<BaseReducer> {
        let (initialState, reducer, dependencies) = withDependencies(prepareDependencies) {
            @Dependency(\.self) var dependencies
            return (initialState(), reducer(), dependencies)
        }
        self.init(
            initialState: initialState,
            reducer: { reducer.dependency(\.self, dependencies) }
        )
    }
}

extension IDStoreView {
    typealias ChildID = UUID

    @Reducer
    struct IDReducer {
        @ObservableState
        struct State {
            var elements: IdentifiedArrayOf<IDChild.State>

            init(idChild: IDChild.State) {
                self.elements = .init(uniqueElements: [idChild])
            }
        }

        enum Action {
            case elements(IdentifiedActionOf<IDChild>)
        }

        let child: ChildReducer

        var body: some Reducer<State, Action> {
            Reduce { state, action in
                switch action {
                case .elements:
                    return .none
                }
            }
            .forEach(\.elements, action: \.elements) {
                IDChild(child: child)
            }
        }
    }
}

extension IDStoreView.IDReducer {
    @Reducer
    struct IDChild {
        @ObservableState
        struct State: Identifiable {
            var id: IDStoreView.ChildID
            var child: ChildReducer.State
        }

        enum Action {
            case child(ChildReducer.Action)
        }

        let child: ChildReducer

        var body: some Reducer<State, Action> {
            Scope(state: \.child, action:  \.child) {
                child
            }
        }
    }
}

Checklist

[X] I have determined whether this bug is also reproducible in a vanilla SwiftUI project.
[X] If possible, I've reproduced the issue using the main branch of this package.
[X] This issue hasn't been addressed in an existing GitHub issue or discussion.

The Composable Architecture version information
1.9.2
Destination operating system
iOS 17
Xcode version information
Xcode 15.3
Swift Compiler version information
swift-driver version: <IP_ADDRESS> Apple Swift version 5.10 (swiftlang-<IP_ADDRESS> clang-15<IP_ADDRESS>)
Target: arm64-apple-macosx14.0

Hi @arnauddorgans, when you say:

As far as I understand, the issue may come from multiple stores having the same internal IDs.

I'm not sure what you mean by "internal ID". What ID are you referring to?

@mbrandonw

I'm not sure what you mean by "internal ID". What ID are you referring to?

Maybe some internal behavior with navigationIDPath I don't know

Hi @arnauddorgans, what led you to believe that this is an issue with the "identity" of the store, or navigationIDPath? A store's identity is based of its referential identity, and shouldn't be related to the navigationIDPath.

@mbrandonw  The fact that using an IdentifiedArrayOf fixes the issue, and by setting a breakpoint on the cancel handler of the task, I can see reference of IDs in the stack trace

The complete code of the app is available under The full app code is available here in my first message

Hi @arnauddorgans, ok I see what is happening in your project now. While you do have multiple separate stores for each page, they are technically sharing the same cancellation ID. This is just how TCA is expected to operate today. Sometime soon there will be the idea of effects being quarantined to each store, but that just isn't how it works today.
However, in my opinion it would be better to have a parent feature that encapsulates all of the pages of the controller and scope child stores from that feature rather than having 4 completely independent stores running your feature.
Here is how you can do that:

Full code:
import SwiftUI
import ComposableArchitecture
import Combine

@Reducer
struct ParentFeature {
  @ObservableState
  struct State {
    var features: IdentifiedArrayOf<Feature.State> = []
  }
  enum Action {
    case features(IdentifiedActionOf<Feature>)
  }
  var body: some ReducerOf<Self> {
    Reduce { state, action in
      switch action {
      case .features:
        return .none
      }
    }
    .forEach(\.features, action: \.features) {
      Feature()
    }
  }
}

@Reducer
struct Feature {
  @ObservableState
  struct State: Equatable, Identifiable {
    let id: Int
    var child: ChildFeature.State?

    var isSelected: Bool = false
    var isPending: Bool = false
  }

  enum Action {
    case task
    case selectionReceived(Int)
    case pendingSelectionReceived(Set<Int>)
    case child(ChildFeature.Action)
  }

  @Dependency(\.selectionClient) var selectionClient

  var body: some Reducer<State, Action> {
    Reduce { state, action in
      switch action {
      case .task:
        return .run { send in
          try await withThrowingTaskGroup(of: Void.self) { group in
            group.addTask {
              for await selection in selectionClient.selection.values {
                await send(.selectionReceived(selection))
              }
            }
            group.addTask {
              for await selections in selectionClient.pendingSelection.values {
                await send(.pendingSelectionReceived(selections))
              }
            }
            try await group.waitForAll()
          }
        }
      case let .selectionReceived(id):
        let stateID = state.id
        state.isSelected = id == stateID
        return updateEffect(state: &state)
      case let .pendingSelectionReceived(ids):
        let stateID = state.id
        state.isPending = ids.contains(stateID)
        return updateEffect(state: &state)
      case .child:
        return .none
      }
    }
    .ifLet(\.child, action: \.child) {
      ChildFeature()
    }
  }

  func updateEffect(state: inout State) -> Effect<Action> {
    let isPending = state.isPending
    let isSelected = state.isSelected
    let shouldSelect = isPending || isSelected
    if shouldSelect != (state.child != nil) {
      state.child = shouldSelect ? .init(id: state.id) : nil
    }
    state.child?.isSelected = isSelected
    state.child?.isPending = isPending
    return .none
  }
}

@Reducer
struct ChildFeature {
  @ObservableState
  struct State: Equatable {
    let id: Int
    var seconds: Int = 0
    var isSelected: Bool = false
    var isPending: Bool = false
  }

  enum Action {
    case task
    case timeReceived
  }

  var body: some Reducer<State, Action> {
    Reduce { state, action in
      switch action {
      case .task:
        return .run { [id = state.id] send in
          await withTaskCancellationHandler(operation: {
            for await _ in Timer.publish(every: 1, on: .main, in: .common).autoconnect().values {
              await send(.timeReceived)
            }
          }, onCancel: {
            if id == 0 {
              print("CANCEL \(id)")
            }
          })
        }
      case .timeReceived:
        state.seconds += 1
        return .none
      }
    }
  }
}

struct ContentView: View {
  let store: StoreOf<Feature>

  var body: some View {
    ZStack {
      if let childStore = store.scope(state: \.child, action: \.child) {
        ChildView(store: childStore)
      }
    }
    .task {
      await store.send(.task).finish()
    }
  }
}

struct ChildView: View {
  let store: StoreOf<ChildFeature>

  var body: some View {
    ZStack {
      if store.isSelected {
        Color.green
      } else if store.isPending {
        Color.yellow
      }
      Text(store.seconds, format: .number)
        .font(.title)
    }
    .task {
      await store.send(.task).finish()
    }
  }
}

struct SelectionClient: DependencyKey {
  let selection: AnyPublisher<Int, Never>
  let select: (Int) -> Void

  let pendingSelection: AnyPublisher<Set<Int>, Never>
  let setPendingSelection: (Set<Int>) -> Void

  static let liveValue: SelectionClient = {
    let subject = CurrentValueSubject<Int, Never>(0)
    let pendingSelectionSubject = CurrentValueSubject<Set<Int>, Never>([])
    return .init(
      selection: subject.eraseToAnyPublisher(),
      select: { subject.value = $0 },
      pendingSelection: pendingSelectionSubject.eraseToAnyPublisher(),
      setPendingSelection: { pendingSelectionSubject.value = $0 }
    )
  }()
}

extension DependencyValues {
  var selectionClient: SelectionClient {
    self[SelectionClient.self]
  }
}

@main
struct TCABugApp: App {
  @State var idSelected = false

  var body: some Scene {
    WindowGroup {
      HostingView()
    }
  }
}

struct HostingView: UIViewControllerRepresentable {
  func makeUIViewController(context: Context) -> ViewController {
    .init()
  }
  func updateUIViewController(_ uiViewController: ViewController, context: Context) { }
}

extension HostingView {
  final class ViewController: UIPageViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate {
    @Dependency(\.selectionClient) private var selectionClient
    let store = Store(
      initialState: ParentFeature.State(
        features: [
          Feature.State(id: 0),
          Feature.State(id: 1),
          Feature.State(id: 2),
          Feature.State(id: 3),
        ]
      )
    ) {
      ParentFeature()
    }

    private var featureControllers: [UIViewController] = []
    init() {
      super.init(transitionStyle: .scroll, navigationOrientation: .vertical)
    }

    required init?(coder: NSCoder) {
      fatalError("init(coder:) has not been implemented")
    }

    override func viewDidLoad() {
      super.viewDidLoad()
      dataSource = self
      delegate = self
      observe { [weak self] in
        guard let self else { return }
        featureControllers = store.features.ids.map { id in
          UIHostingController(
            rootView: ContentView(
              store: self.store.scope(
                state: \.features[id: id]!,
                action: \.features[id: id]
              )
            )
          )
        }
      }
      selectionClient.select(0)
      setViewControllers([featureControllers[0]], direction: .forward, animated: false)
    }

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
      guard let index = featureControllers.firstIndex(of: viewController), featureControllers.indices.contains(index - 1) else { return nil }
      return featureControllers[index - 1]
    }

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
      guard let index = featureControllers.firstIndex(of: viewController), featureControllers.indices.contains(index + 1) else { return nil }
      return featureControllers[index + 1]
    }

    func pageViewController(_ pageViewController: UIPageViewController, willTransitionTo pendingViewControllers: [UIViewController]) {
      selectionClient.setPendingSelection(Set(pendingViewControllers.compactMap {
        featureControllers.firstIndex(of: $0)
      }))
    }

    func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
      if completed, let viewController = pageViewController.viewControllers?.last, let index = featureControllers.firstIndex(of: viewController) {
        selectionClient.select(index)
      }
      selectionClient.setPendingSelection([])
    }
  }
}

Putting in a little bit of upfront work to model the domains correctly comes with a lot of benefits.
Since this isn't an issue with the library I am going to convert it to a discussion and feel free to continue the conversation over there.


[maps] Get latitude and longitude when polyline is tapped

Use case
It would be nice if we can get latitude and longitude when a polyline is tapped.
Proposal
Currently the onTap for a polyline looks like
onTap() {}, can you guys make it like
onTap(LatLng) {}?
Now GoogleMap widget does have onTap(LatLng) but to be able to receive click events on my polyline, I have to use consumeTapEvents: true and this way GoogleMap onTap(...) doesn't work.

Small clarification needed. Would you like the onTap method to return the tapped Polyline object?

@KlausJokinen onTap doesn't need to return anything special, if it wants it can, but the main concern is to provide LatLng

That's very needed. any update on this? or any kind of workaround


Error

Hello my friend . It is giving me an errro .
I am using vue 2 .

Can you have a look ?
Thanks

@murilolivorato Can you show me code you using with vue-ckeditor2

Hi,I have meet the same error,too!I was wonder if I have duplicate template in my code.And also I found your 'src' file had some strange things...I can't see 'CKEDITOR' import from anywhere....for example:
mounted () {
    let config = {
      toolbar: this.toolbar,
      language: this.language,
      height: this.height,
      extraPlugins: this.extraplugins
    }

    CKEDITOR.replace(this.id, config)

    this.instance.on('change', () => {
      let html = this.instance.getData()
      if (html !== this.value) {
        this.$emit('input', html)
      }
    })
  }

And here's my demo code.
<template>

    <ckeditor v-model="test" :height="'300px'" :toolbar="[['Format']]"></ckeditor>

</template>

Thanks a lot...

@LeungKaMing So I'm using webpack templates to test. It's because I include script of ckeditor external, so in ckeditor.vue doesn't import CKEDITOR. You can include script in index.html
<!DOCTYPE html>

    <meta charset="utf-8">
    <title>my-project</title>

And example and test with scripts
<template>

    <ckeditor v-model="content"></ckeditor>

</template>

It's working fine with me. Can you try again with the same code.
Thank you very much. I will write guide to use vue-ckeditor2 when missing ckeditor.js library.

@dangvanthanh i have the same question, missing ckeditor.js library. do i have to include script of ckeditor external ? i have install ckeditor with npm, i don't want to include script of ckeditor external, is there other way to solve it ?


add 404 page to docs

coverage: 88.269%. remained the same when pulling 6a8bf5a41543303e344e0b59a2b246a946e836e2 on docs-404 into 54d4fa22ac1ef03d535a57e5a9c24651f70559fa on main.


removing proposal that never happened

Proposal is so wildly different from implementation, it will likely cause confusion.

Might be this document: https://docs.google.com/document/d/1NvHiTl3zk_x2xxJM_moA6ky7tzGjnaw8aJABoTc4AoI/edit