Types and interfaces declared in included *.d.ts files aren't resolved by Vue

Vue version
<EMAIL_ADDRESS>Link to minimal reproduction
https://stackblitz.com/edit/vitejs-vite-aextkq?file=src%2FApp.vue,src%2Fcomponents%2FHelloWorld.vue,src%2Ftypes.d.ts&terminal=dev
Steps to reproduce

Open reproduction link
See the interface declared in src/types.d.ts
src/components/HelloWorld.vue does not show any errors in the IDE
See the error in the terminal and preview.

What is expected?
Declared types should be resolved by Vue
What is actually happening?
The TestProps interface is not resolved resulting in error:
10:18:57 AM [vite] Internal server error: [@vue/compiler-sfc] Unresolvable type reference or unsupported built-in utility type

/home/projects/vitejs-vite-aextkq/src/components/HelloWorld.vue
1  |  <script setup lang="ts">
2  |  defineProps<TestProps>();
   |              ^^^^^^^^^
3  |  </script>
4  |
  Plugin: vite:vue
  File: /home/projects/vitejs-vite-aextkq/src/components/HelloWorld.vue
      at error (/home/projects/vitejs-vite-aextkq/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:15841:11)
      at innerResolveTypeElements (/home/projects/vitejs-vite-aextkq/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17966:20)
      at resolveTypeElements (/home/projects/vitejs-vite-aextkq/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17902:35)
      at resolveRuntimePropsFromType (/home/projects/vitejs-vite-aextkq/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:19312:39)
      at genRuntimePropsFromTypes (/home/projects/vitejs-vite-aextkq/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:19288:44)
      at genRuntimeProps (/home/projects/vitejs-vite-aextkq/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:19278:18)
      at compileScript (/home/projects/vitejs-vite-aextkq/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:20383:36)
      at resolveScript (/home/projects/vitejs-vite-aextkq/node_modules/@vitejs/plugin-vue/dist/index.mjs:299:31)
      at genScriptCode (/home/projects/vitejs-vite-aextkq/node_modules/@vitejs/plugin-vue/dist/index.mjs:2485:31)
      at transformMain (/home/projects/vitejs-vite-aextkq/node_modules/@vitejs/plugin-vue/dist/index.mjs:2298:54)
      at transform (/home/projects/vitejs-vite-aextkq/node_modules/@vitejs/plugin-vue/dist/index.mjs:2810:16)
      at transform (/home/projects/vitejs-vite-aextkq/node_modules/vite/dist/node/chunks/dep-abb4f102.js:44258:62)

System Info
System:
    OS: Linux 5.0 undefined
    CPU: (2) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
    Memory: 0 Bytes / 0 Bytes
    Shell: 1.0 - /bin/jsh
  Binaries:
    Node: 16.20.0 - /usr/local/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 9.4.2 - /usr/local/bin/npm
    pnpm: 8.6.3 - /usr/local/bin/pnpm
  npmPackages:
    vue: ^3.3.4 => 3.3.4

Any additional comments?
I wanted to add some globally available props that would be a common ground for my input components but Vue crashes despite of Volar not showing the errors.
Original Nuxt issue: https://github.com/nuxt/nuxt/issues/22209#issuecomment-1641767854

duplicate of https://github.com/vuejs/core/issues/8612
see https://github.com/vuejs/core/issues/8612#issuecomment-1600030885


Add missing typing extension dependency

Codecov Report

Merging #5 (4c8f18c) into main (958adf8) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head 4c8f18c differs from pull request most recent head fa6e3bb. Consider uploading reports for the commit fa6e3bb to get more accurate results

@@           Coverage Diff           @@
##             main       #5   +/-   ##
=======================================
  Coverage   95.88%   95.88%
=======================================
  Files          26       26
  Lines        1311     1311
=======================================
  Hits         1257     1257
  Misses         54       54

Continue to review full report at Codecov.

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


$ and $$ no longer used for dom and settings? Should documentation be updated?

What the title says. I am not sure what the reason was for removing these.

Thanks @monomon — those have been removed from the docs. You should never have to access settings as an internal property as these are not mutated by the modal script. Rather create a settings object that you both pass to the constructor and reference elsewhere in your code.


High resolution screens

On screens with high resolution (Nexus 5), scrolling speed is very slow.
Please test it.

I have solved it in my project.
Problem with Thread.sleep(). On some devices it doesn't work properly.
My code in do in background:
 long millis = 0 ;
            boolean stop;

            while (VerticalMarqueeTextView.this.marqueeStarted && !VerticalMarqueeTextView.this.marqueePaused) {

                long curr = System.currentTimeMillis();
                if (curr>=millis){
                    activity.runOnUiThread(runnable);
                    millis = curr + (long) (1000d / VerticalMarqueeTextView.this.marqueeSpeed);
                }
            }

Cool thanks for the comment. I have updated the library with your suggestion and published a new version 1.0.1.
In the new version I have remove Thread.sleep() and AsyncTask because, as you notice, Thread.sleep() does not perform well on some devices and on some platforms only one AsyncTask can be run at a time, preventing multiple VerticalMarqueeTextView from animating.


Make it possible for a user to specify the way x/y-coordinates are shifted

Currently we shift the x- and y-coordinates by substracting the minimal x and y value, respectively, such that the smallest coordinate will be shifted to 0,0.
This setting is enabled when "shift_coordinates": true in the configuration file.
We want to make it possible that the user can specify the x and y shift in the configuration file (assuming the target coordinate system if specified).

No validation is current needed for the input.
Add settings to the configuration file

Make "shift_coordinates" setting optional
Optional values: min or settings per x/y:

	"shift_coordinates": "min",

or
	"shift_coordinates":
	{
		"shift_x": 12000,
		"shift_y": 99,
	},

Update the documentation in the README.md

Closing: resolved in #81


Assigning colors to individual signalCanvas contours

Not sure if the fix for #287 caused this (though I can't see how) or if it is expected behavior.
Consider the following signalCanvases ordering:
  "signalCanvases": {
          "order": [
            "OSCI",
            "SPEC",
            "praatF0",
            "ksvF0",
            "eggF0"
          ],

Is it possible to assign each of these F0 tracks an arbitrary color? The following does not work:
          "assign": [],
          "contourColors": [{
            "ssffTrackName": "praatF0",
            "colors": ["rgb(0,255,0)"]
          },{
            "ssffTrackName": "ksvF0",
            "colors": ["rgb(255,0,0)"]
          },{
            "ssffTrackName": "eggF0",
            "colors": ["rgb(0,0,255)"]
          }],
          "contourLims": []

All three contours appear as rgb(0,255,0), i.e. the first specification in the contourColors array.
Assigning all contours to the same signalCanvas does not work either:
      "signalCanvases": {
          "order": [
            "OSCI",
            "SPEC",
            "ksvF0"
          ],
          "assign": [{
            "signalCanvasName": "ksvF0",
            "ssffTrackName": "praatF0"
          },{
            "signalCanvasName": "ksvF0",
            "ssffTrackName": "eggF0"
          }],
          "contourColors": [{
            "ssffTrackName": "praatF0",
            "colors": ["rgb(0,0,255)"]
          },{
            "ssffTrackName": "ksvF0",
            "colors": ["rgb(0,255,0)"]
          }],
          "contourLims": []

which results in both praatF0 and ksvF0 being displayed in blue and eggF0 displayed in (default) red. Adding a specification for eggF0 results in it too being displayed in the whatever the first "colors" specification in the contourColors array happens to be.
Why isn't var contColors getting updated for each trackName?

Hi @kirbyj - the var conColors is correctly updated for each trackName. The bug is a feel lines later in https://github.com/IPS-LMU/EMU-webApp/blob/e3758baa8ae4c329a0ab0f43552488de0dbfa992/src/app/components/ssff-canvas.component.ts#L200-L201
The fix is:
this.ctx.strokeStyle = contColors.colors[contourNr];
this.ctx.fillStyle = contColors.colors[contourNr];

I just released this fix with v1.4.0. Please feel free to re-open the issue if it doesn’t work as intended.


Updates to void.

void will be updated in the following way:

[x] in checked mode, void accepts any value. The old behavior only allowed null. https://github.com/dart-lang/sdk/issues/28935
[ ] an arrow function (declared with =>) is allowed to have expressions of any type if the return type is void. For example void foo() => x++;. https://github.com/dart-lang/sdk/issues/28939
[ ] void is allowed as a type argument to generics. The most common use cases are things like Future<void> or Visitor<void>. Statically and dynamically, in Dart 1, a generic void is treated similar to Object, except for functions, where the old behavior is maintained. In particular, a void-function is not assignable to an int-function (or any other non-void function). https://github.com/dart-lang/sdk/issues/27504

Punting to 1.24 per dart-leads discussion.

@floitschG - all of the void changes look unlikely to land for 1.24, from what I see. Can these move to 1.25?

@dgrove
Dan is this a feature we want post 1.24 Dartium?


Add job forwarding properties

This pull request adds the properties genie.jobs.forwarding.scheme and genie.jobs.forwarding.port to Genie. They have default values of http and 8080 by default.
It was discovered that during testing behind ELB the Spring SAML library after successful login was trying to forward the user to request.getScheme() + host info + request.getServerPort() + other info. This information for request.getSomething comes from the Tomcat connector configuration. See here for how to configure Tomcat behind a proxy/ELB. Once these settings (proxyName, proxyPort and scheme) where changed on the Tomcat connector SAML worked well behind Load Balancer with other previous changes in #212.
The problem came that our logic for forwarding job output and job kill requests also used the request.getScheme and request.getPort methods. Once the Tomcat connector changed these would return invalid values for attempting to forward directly between backend Genie nodes rather than back through the Load Balancer (user facing). The properties introduced here will be used if job forwarding is enabled instead. They represent the true scheme of the Tomcat servers and their actual running port rather than the scheme and port of the ELB/proxy. Shouldn't have to change anything if user isn't running behind a proxy.

Coverage increased (+0.01%) to 93.146% when pulling 170650110b1424181bae7a39974ce7839c64bead on tgianos:develop into 2726c0400f614edb9b62e6303a9e0b38fbad1690 on Netflix:develop.


How to return actual characters matched

Description
I want to build this feature:

Essentially I want to highlight the character matches and I wanted to get them from Fuse.js library itself as it does the fuzzy search matching.
Describe the solution you'd like
I read docs and I can't find a way to actually return me the matches. The .search() method just returns the filtered items from the array of the index.
Is this use case possible to do with this library?

Ok its includeMatches, will try use it.


Twitter login does not work correctly, when SFSafariViewController is enabled.

Environment

Xcode version: 10.3
Firebase SDK version: 6.7.0
Firebase Component: Auth
Component version: 6.2.3

Steps to reproduce:
About Implementation.

Do not use TwitterKit.
Use FUIOAuth for Twitter login.
iOS 12.4.

Login twitter with an available account.

Expected
The ViewController having WebView for login should be closed automatically, after login is in successful.
Actual
The ViewController having WebView for login does not be closed. As you see the following screenshot, blank page on the ViewController which is used for login, keeps be shown.

Relevant Code:
FIRAuthURLPresenter.m is changed like following, this problem is fixed.
-    if ([SFSafariViewController class]) {
-      self->_safariViewController = [[SFSafariViewController alloc] initWithURL:URL];
-      self->_safariViewController.delegate = self;
-      [self->_UIDelegate presentViewController:self->_safariViewController
-                                      animated:YES
-                                    completion:nil];
-      return;
-    } else {
-      self->_webViewController = [[FIRAuthWebViewController alloc] initWithURL:URL delegate:self];
-      UINavigationController *navController =
-          [[UINavigationController alloc] initWithRootViewController:self->_webViewController];
-      [self->_UIDelegate presentViewController:navController animated:YES completion:nil];
-    }
+    self->_webViewController = [[FIRAuthWebViewController alloc] initWithURL:URL delegate:self];
+    UINavigationController *navController =
+        [[UINavigationController alloc] initWithRootViewController:self->_webViewController];
+    [self->_UIDelegate presentViewController:navController animated:YES completion:nil];

I'm not able to reproduce this issue. Could you confirm if there is same issue if using Microsoft or Github?

I could not find people who have same issue. But I found out this cause.
Cause
If FirebaseAppDelegateProxyEnabled is NO, that makes the login with SFSafariViewController not work.
Detail
I have made a minimum project using firebase authentication.
I have known that the method of canHandleURL retrieves the auth information and finishes SFSafariViewController. So I putted a break point on it. The following call stack was shown
#0	0x0000000105e23493 in -[FIRAuthURLPresenter finishPresentationWithURL:error:] at ~/SampleProject/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthURLPresenter.m:162
#1	0x0000000105e22b1a in -[FIRAuthURLPresenter canHandleURL:] at ~/SampleProject/Pods/FirebaseAuth/Firebase/Auth/Source/Utilities/FIRAuthURLPresenter.m:103
#2	0x0000000105e0983a in __24-[FIRAuth canHandleURL:]_block_invoke at ~/SampleProject/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuth.m:1387
#3	0x0000000109f81db5 in _dispatch_client_callout ()
#4	0x0000000109f8fd08 in _dispatch_lane_barrier_sync_invoke_and_complete ()
#5	0x0000000105e09752 in -[FIRAuth canHandleURL:] at ~/SampleProject/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuth.m:1386
#6	0x0000000105e09166 in -[FIRAuth application:openURL:sourceApplication:annotation:] at ~/SampleProject/Pods/FirebaseAuth/Firebase/Auth/Source/Auth/FIRAuth.m:1367
#7	0x0000000105ef9a3c in __75-[GULAppDelegateSwizzler application:openURL:sourceApplication:annotation:]_block_invoke at ~/SampleProject/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m:749
#8	0x0000000105ef91c8 in __72+[GULAppDelegateSwizzler notifyInterceptorsWithMethodSelector:callback:]_block_invoke at ~/SampleProject/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m:680
#9	0x0000000107d64822 in -[__NSFrozenDictionaryM enumerateKeysAndObjectsWithOptions:usingBlock:] ()
#10	0x0000000105ef8fe8 in +[GULAppDelegateSwizzler notifyInterceptorsWithMethodSelector:callback:] at ~/SampleProject/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m:667
#11	0x0000000105ef9873 in -[GULAppDelegateSwizzler application:openURL:sourceApplication:annotation:] at ~/SampleProject/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m:744
#12	0x0000000117531224 in __58-[UIApplication _applicationOpenURLAction:payload:origin:]_block_invoke ()

It has beed called from the swizzled method.
Thus, When we set FirebaseAppDelegateProxyEnabled to NO, This issue is reproduced.

If swizzling is disabled, you need to implement those UIApplicationDelegate methods to get the URL redirect. See docs here: https://firebase.google.com/docs/auth/ios/phone-auth#appendix:-using-phone-sign-in-without-swizzling

My bad! I didn't notice that. Thanks for your support🤗


feat: add multicall2 contract

Proposed changes
This PR backports the makerDAO multicall2 contract from https://github.com/valory-xyz/agent-academy-1.
Types of changes
What types of changes does your code introduce? (A breaking change is a fix or feature that would cause existing functionality and APIs to not work as expected.)
Put an x in the box that applies

[ ] Non-breaking fix (non-breaking change which fixes an issue)
[ ] Breaking fix (breaking change which fixes an issue)
[x] Non-breaking feature (non-breaking change which adds functionality)
[ ] Breaking feature (breaking change which adds functionality)
[ ] Refactor (non-breaking change which changes implementation)
[ ] Messy (mixture of the above - requires explanation!)

Checklist
Put an x in the boxes that apply.

[x] I have read the CONTRIBUTING doc
[x] I am making a pull request against the main branch (left side). Also you should start your branch off our main.
[x] Lint and unit tests pass locally with my changes
[x] I have added tests that prove my fix is effective or that my feature works
[x] I have locally run services that could be impacted and they do not present failures derived from my changes

There is a merge error, you can cherry pick 6278dd37faa4f57839f4deb5d49f9c44ce6ffd7d to resolve this as I also had the same :sweat_smile: .

The e2e failure is not related. The failure is on TestRegistrationStartUpFourAgentsCatchUp because the trigger for resetting agent0 took a bit longer than usual. Additionally, upon restarting agent0 couldnt connect to the local libp2p node.


Error while making APK file

What went wrong:
A problem occurred configuring root project 'audioplayers'.

Failed to notify project evaluation listener.
org.gradle.api.tasks.compile.CompileOptions.setBootClasspath(Ljava/lang/String;)V

A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
Android resource linking failed
/home/gama/.gradle/caches/transforms-2/files-2.1/a528b13ac93e64cafa3d0480e2c93207/core-1.1.0/res/values/values.xml:142:5-173:25: AAPT: error: resource android:attr/fontVariationSettings not found.

 /home/gama/.gradle/caches/transforms-2/files-2.1/a528b13ac93e64cafa3d0480e2c93207/core-1.1.0/res/values/values.xml:142:5-173:25: AAPT: error: resource android:attr/ttcIndex not found.

Apparently a value related to fonts wasn't found on the values.xml of your project. This don't seems to be related to audioplayers as there isn't any UI on this project.


Partial support for tex and markdown

For markdown, tabout seems entirely not work. In Tex, it successful jump out for "",{} , '', but failed otherwise.

Hi @fecet
it works for markdown, but only in codeblocks with a language specified:
func xxx(){}

I prepared a branch to make it work across the whole markdown, feel free to test is. Does not work correctly with inline code.
I have no idea what tex files are and how they work, in the examples I found online tabout didn't work for anything. But looks like it is not supported by treesitter, at least I never get a node back to work with.

Sorry for misunderstanding, "tex files" means "latex" file whose extension is ".tex", nvim-treesitter already support it. And I test it by nvim a.tex then type "()", not in a codeblock. I have thought all the filetype that treesitter support can work well with tabout, that's not true?

You are correct, tex should work with treesitter.
Can you post an example of your tex file? I try to test with that one then.

works:

''
""
``
{}

not work:

()
[]

I try to take a look at the weekend, but on first glance it looks like treesitter is not recogizing the node under the cursor. And with no node, tabout will do nothing.


NFluent checks for WebResponse

Just like the NFluent checks that are being implemented for HttpResponseMessage, sometimes it makes sense to be able to check the same kind of properties for the HttpWebResponse api's.
There could be several reasons to want to check the HttpWebResponse:

The project you work on still uses this old api, but needs tests before you are comfortable to move to HttpClient.
A library you use still uses the HttpWebRequest api and you have no control over that.

Proposed solution
Add the following checks for HttpWebResponse:

[ ] HasHeader (basically combines the HasResponseHeader and HasContentHeader)
[ ] HasHttpStatusCode
[ ] HasHttpVersion (this is called ProtocolVersion in HttpWebRequest)
[ ] HasContent

Additional context
The most difficult part of the implementation would be creating readable tests since most properties are readonly. The most readable way would be to create a subclass for HttpWebResponse and use that subclass to override key properties to be able to fill the response.

Since Microsoft doesn't really support WebRequests anymore, and I myself don't really have a need for it anymore, I will not implement this.
If you are in need of this and are willing to provide a PR, I am happy to review it and pull it in. In that case, please reopen the issue.


unable to remap hotkeys on OSX and unable to use command + Key

after setting a hotkey on OSX player (4.4.1) I cannot remap or clear.  Attempting to change the key displays an addition to the hotkey - example:
thumbs up hotkey is ctrl+G  attempt to change to ctrl+T - UI shows ctrl+g+t
additionally, command key mapping on OSX does not seem to work at all.

@jon-zimperium You need to hit "Escape" to reset the key 👍

thanks Samuel!  I still cannot use the command key on the mac - is this a
known issue?
On Wed, Nov 22, 2017 at 4:42 PM, Samuel Attard<EMAIL_ADDRESS>wrote:

Closed #2876
https://github.com/MarshallOfSound/Google-Play-Music-Desktop-Player-UNOFFICIAL-/issues/2876
.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/MarshallOfSound/Google-Play-Music-Desktop-Player-UNOFFICIAL-/issues/2876#event-1354974087,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ALr6xY-e0M06G6A6kreAZQw2Rj9NTnAWks5s5KM7gaJpZM4QoFYo
.

@jon-zimperium Yep, there are some other issues on here about it.  It's basically a limitation of how we receive key events in the shortcut settings panel.  You can manually set accelerators using the Command key by editing the settings file yourself if you want.

could you point me to the instructions for the file change?


Move sidechains networks to fed peg project and use FedPeg consensus options in them

hey @noescape00 why do this?

hey @noescape00 why do this?

Hm. I've forgot what we decided the last time we discussed this.
Do we want to move the networks in or we want consensus options to be in networks project?
I'd go with first option but I don't mind doing it ether way.

I'll recreate the PR without moving the networks to fedpeg. Instead will move fedpeg poa consensus options to the sidechains networks project


PHP 5.6 only

Hi,
I want to ask if there is a technology problem to work in 5.5 ... it still common to be much servers on 5.5 o 5.4...
If there is a hard problem with 5.5 ... and only works on 5.6... forget my issue... i was "just asking"

There is no specific technical reason why the code couldn't be written to work with PHP 5.5 or lower. However, I have been using PHP 5.6 features in the code so changing it at this point would be problematic.
I opted to make PHP 5.6 the required version for several reasons:

It was the most current stable version of PHP available when I started writing the library.
PHP 5.6 will be the last version in the 5.X line to be released. So I can take advantage of any 5.X features within the code.
The 'splat' operator introduced in 5.6 has been extremely helpful and I've used it in a lot of places, especially when you can use it to type hint as well. Sprinkling func_get_args() everywhere was just annoying.
The ldap_escape() and ldap_modify_batch() functions were introduced in 5.6 and have been very useful (seems that ldap_modify_batch() was back-ported to 5.4 and 5.5 at later versions). Sure, I could've done without them but it's nice not to have to write your own stuff to fill that gap.
Being able to define an array constant is very handy.

PHP 5.4 will actually be end of support in 2 months, with no further security updates. PHP 5.5 goes end of active support in 2 months, but will receive security updates for another year. So 5.6 will at least have a bit on longevity left.
Hopefully this will be less of an issue once people start to upgrade to the latest distros, of which pretty much all ship PHP 5.6 standard. But of course then there's the Ubuntu LTS version and unfortunately the next server version of that to come with 5.6 doesn't release until next year I think.

Fitst at all thanks for your fast reply.
I agree your points, just asking incase was a composer misconfiguration... or an arbitrary decision.
Thanks.


hub: ADC passive download is not possible due to wrong computation of IP version

Before a DCTM is propagated, the hub checks whether the RECEIVER supports IPv4 or IPv6, and then inserts the proper sender IP in the message:
https://github.com/direct-connect/go-dcpp/blob/9ea4469efd3a03e4e71912c1863570f10074bc14/hub/hub_adc.go#L572
In ADC, peer support for IPv4 or IPv6 is inferred from the feature array, and in particular from the TCP4 and TCP6 flags:
https://github.com/direct-connect/go-dcpp/blob/9ea4469efd3a03e4e71912c1863570f10074bc14/hub/hub_adc.go#L766
The problem is that the TCP4 and TCP6 flags are added only if the peer is active, as written explicitly in the specification:

The features TCP4 and TCP6 are used to indicate support for incoming TCP connections

This makes downloading impossible if the downloader is passive, as it does not have the TCP4 nor the TCP6 flags.
This can be solved by getting the IP version in another way, for instance by checking the IP version of the hub <-> client connection.

Shouldn't the downloader send a RCM instead of CTM`?

Hi, in case the problem is not clear enough, this is the entire history:

the passive downloader sends a RCTM, that is correctly routed by the hub
the active uploader receives the RCTM and sends back the CTM
this CTM is stopped by the hub, since the downloader does not have TCP4/TCP6.

I did not sent a patch because there are multiple solutions available.

Shouldn't the passive downloader send a RCM instead?

Shouldn't the passive downloader send a RCM instead?

yes, it does, i tried to explain it in the previous comment (even if i called RCTM the RCM). The RCM is not blocked, it's the CTM that follows that is blocked.


Missing ENV

When I deploy edgemesh gateway, an error occured.

And the error is like:

I think "build/agent/kubernetes/edgemesh-gateway/04-deployment.yaml" miss the corresponding ENV.

/close


Fix small typo in README.rst

Just what the PR title says, this fixes what looks like a small finger slip on the keyboard

Thanks @LaurentTreguier


Update the build/test environment to 20.04

18.04 is being turned down 2023-04-01 and will be offline on and off until then.

This change is


Feature filter map by tag

Fixes Issue #4957

Closes #4957
Changes proposed

Check List (Check all the applicable boxes)

[x] My code follows the code style of this project.
[ ] My change requires changes to the documentation.
[ ] I have updated the documentation accordingly.
[ ] All new and existing tests passed.
[x] This PR does not contain plagiarized content.
[x] The title of my pull request is a short description of the requested changes.

Screenshots

Note to reviewers

@eddiejaoude here's the draft PR for the tag filters.  Take a look and see if you think it's too similar to the search code and we should looks at pulling this out the decrease any repetitive code.
I fixed the search oddity I saw before, this was due to the tags pulling in for ALL users vs. the map users.  You will see a filter after the tag API request that handles this.
If you think this is fine to start, lmk and I'll switch to a regular PR for others to review

One thing that filtering the tags didn't address is the little orange numbers indicating how many users per tag.  I can look into this as well before it's finalized or save that for a separate issue.  I thought filtering the tags would take care of that number, but it seems to come straight from the API

@eddiejaoude lil bump - lmk if you think this is a good start or if we should look at abstracting out the search code for use in multiple places as part of this effort

Sorry I missed this, thanks for bumping 👍

I can look into this as well before it's finalized or save that for a separate issue

yes this can come in a separate issue/pull request 💯

Take a look and see if you think it's too similar to the search code and we should looks at pulling this out the decrease any repetitive code.

I think that can also come later as there isn't too much

Sorry I missed this, thanks for bumping 👍

yes this can come in a separate issue/pull request 💯

I think that can also come later as there isn't too much

great - then ready for reviewing by you and anyone else!

Looks good 👍
I think further improvements can come in another PR, for example...

keeping tag highlighted when selected
possibly clear selected tag button

agreed. I'll open up issues for these


Fix modifier portion of BEM

The current implementation does not understand the "modifier" portion of the BEM syntax.
I copied out the BEM regex as in the code to test it http://regexr.com/3apmp
As you can see adding a simple modifier in the standard BEM way doesn't work.
The implementation I have done here fixes it as the follow regex shows http://regexr.com/3apms
Thanks very much.

Hey @conatus,
I might be mistaken, but I believe the hyphenated_BEM syntax is what you are looking for? Please see the discussion in #335.

Thanks for this - at least I made a PR to fix this "problem" amongst the other tickets!
Perhaps you could make this clearer in the documentation or alternatively rename BEM to "classic/strict/orthodox BEM" or something? Every tutorial I have seen, including some very recent ones uses the format that diverts slightly from the original formulation. The fact I wasn't the first to have this problem illustrates something is afoot.

That's a fair point, @conatus. You're definitely not the first to be tripped up by this and certainly won't be the last unless we do something.
I like your suggestion of renaming the convetion. I've chosen strict_BEM and made the change in 4d253c8337d8a99a69e87dbc1d90b23a1f15e089. Thanks!

Thanks very much, this is cool.


Duplicated classes

Describe the bug
It seems that somehow my classes get added multiple times to my component.
To Reproduce
Have a component, e.g:
SecondaryButton.vue

<template>
  <button
    :type="type"
    :class="computedClasses"
  >
    <slot />
  </button>
</template>

Use the component:
<SecondaryButton class="p-2">
    Edit User
</SecondaryButton>

Expected behavior
I obviously expect that the component renders with the following class list:
inline-flex items-center justify-center rounded-md border border-gray-300 bg-white text-gray-700 shadow-sm transition duration-150 ease-in-out hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 disabled:opacity-25 p-2

But it outputs the following:
<button
    type="button"
    class="inline-flex items-center justify-center rounded-md border border-gray-300 bg-white text-gray-700 shadow-sm transition duration-150 ease-in-out hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 disabled:opacity-25 p-2 p-2">
    Edit User
</button>

As you see, it adds the class `p-2` given in the `<SecondaryButton class="p-2">` twice. Not sure why it keeps doing this for me.

Environment

tailwind-merge version: 2.2.0

Hey @s-premswork! 👋
This is a Vue feature that is a bit implicit and is not related to tailwind-merge. From the Vue docs:

When you use the class attribute on a component with a single root element, those classes will be added to the component's root element and merged with any existing class already on it.
For example, if we have a component named MyComponent with the following template:

Hi!

Then add some classes when using it:

<MyComponent class="baz boo" />

The rendered HTML will be:

Hi!

You can probably fix this by adding a 'class' prop to the component and handle the class yourself

<template>
  <button
    :type="type"
    :class="computedClasses"
  >
    <slot />
  </button>
</template>

I expect that this issue is resolved. Please let me know if I should reopen it.


license xml sensor and unmatched licenses

If the license-xml based sensor encounters a unmatched license it is not obvious why.
For example GlassFish PFL (dependency of jaxws-rt) by default leads to "unknown license" because there is no default license mapper for "EDL 1.0" (only "Eclipse Distribution License").
[INFO] No License found for Dependency org.glassfish.pfl:pfl-basic

    <dependency>
      <groupId>org.glassfish.pfl</groupId>
      <artifactId>pfl-basic</artifactId>
      <version>4.1.0</version>
      <licenses>
        <license>
          <name>EDL 1.0</name>
          <url>http://www.eclipse.org/org/documents/edl-v10.php</url>
          <distribution>repo</distribution>
        </license>
      </licenses>
    </dependency>

resolved by #3


BTree concatenation, set operations sometimes corrupt their input trees

In some cases, appending the same tree multiple times to a BTreeBuilder may corrupt the original (read-only) tree.
I am unable to reproduce this with constructs from 3.1.0, but it is reasonably easy to do it with the new bag operations on master.

This was due to a missing makeChildUnique() call in BTreeNode.shiftSlots. Whew.


Add multiple targets

Hi @anishathalye,
Please review this pull request allowing users to define targets.
If you have multiple hosts with different configurations, it is useful to execute a consistent group of tasks.

It's actually possible to achieve this effect in a variety of ways without adding additional complexity to Dotbot.
One way is the way I manage my dotfiles, with a common dotfiles repo and a dotfiles-local repo with branches for each machine (or category of config). I install both on every machine. I think this method works pretty well.
Another way to achieve an effect closer to what you have, with multiple targets that you can specify, is the following. You can have one file per target, $TARGET.conf.yaml, and then you can modify the install script to take targets on the command line and run all the corresponding installations. Here is an example install script:
#!/usr/bin/env bash

set -e

DEFAULT_CONFIG_PREFIX="default"
CONFIG_SUFFIX=".conf.yaml"
DOTBOT_DIR=".dotbot"

DOTBOT_BIN="bin/dotbot"
BASEDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

cd "${BASEDIR}"
git submodule update --init --recursive "${DOTBOT_DIR}"

for conf in ${DEFAULT_CONFIG_PREFIX} ${@}; do
    "${BASEDIR}/${DOTBOT_DIR}/${DOTBOT_BIN}" -d "${BASEDIR}" -c "${conf}${CONFIG_SUFFIX}"
done

With this, for example, you can have a default.conf.yaml, and say, a mac.conf.yaml and work.conf.yaml. You can install by running
./install mac work

And it'll execute all three things.
Unless there are additional reasons to add this complexity to Dotbot itself, I'd prefer to avoid the additional complexity.

@anishathalye First: Thanks for your hard work on this... Came across dotbot yesterday and I'm already feeling the benefits
Anyway: I thought I'd mention that I found your above comment extremely helpful. I'd suggest perhaps adding that to the README file. @nagromc and I can't be the only ones interested in different workflows / machine.
Thanks again :beers:

Glad you're finding it useful!
Good point on adding it to the README. I'll re-open this issue, and I'll get to making the change as soon as I can.

Oh whoops nvm, this is a pull request, not an issue. See #72.

@anishathalye not 100% sure how my commit got to be in this pull request. I just added a link for reference in my commit. Please disregard.
Sorry!
... and THANKS!!! I'm really loving centralizing my config files with dotbot. Who knew!

Oh, no worries!
I'm glad to hear that you've found the tool to be useful! 😄

Dunno what’s wrong with the example above but I’ve not manage to make it work. I had to change it to:
configs=("$DEFAULT_CONFIG_PREFIX $@")

for CONFIG in $configs; do
  "${BASEDIR}/${DOTBOT_DIR}/${DOTBOT_BIN}" -d "${BASEDIR}" -c "${CONFIGS_DIR}${CONFIG}${CONFIG_SUFFIX}"
done

Can you verify if that makes sense @anishathalye ?

huh, not sure why the first one doesn't work for you…

The reason it doesn't work for @borisrorsvort might (emphasis might) be because the expansion isn't double-quoted in @anishathalye's example.

After some more investigation it’s not executing the next files if they were errors in the default one

Ah, okay... that's because of the set -e at the top of the script. See here for more info.


Run merging of layers in parallel

If it is possible to run merging of layers in parallel - we should consider this.

After skimming the code - it may be harder to do than I thought. While merging layers we do check for each layer we want to merge if the squashed layer already contains specific files. This means that we would need to synchronize on this call. But even if we synchronize, some other layer could add the same file in the meantime. It seems that parallel merging is not an easy improvement and it's even unclear if this is doable.


Inserting headings h2, h3

The button Tt is labeled with "Heading <h1>, <h2>, ... Ctrl+D". It inserts however an <h1> only.
I suggest an option to choose which heading buttons should be shown e.g. h1 and h2.

I believe if you press it again, it converts to an h2, or is that not right?


BUG: The hover effect on navbar element is disturbing the alignments of the navbar with the rest of the website.

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
The issue
Hover effect on the navabar element is making the alignment worse by expanding the element's size and the expansion is done under the navbar that's why the size of navbar is disturbed while hovering.
video
https://github.com/anuragverma108/SwapReads/assets/126380641/fce0a4a7-ec83-42d7-8d33-4396702e72e9
It needs to be fixed asap as it is directly related to UI/UX which is a crucial part of a website.
Hey PA, I would like to contribute, please assign this task to me. Thankyou!
Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

Hey @shnwz-solves  can you assign me this issue under GSSOC'24? I am a fullstack web developer.

Assigned!
@shnwz-solves Make sure to attach before & after screenshots in your PR. Also, star the repo before working on it. While creating your PR, ensure you pull all existing changes beforehand to avoid conflicts.
Happy open-source contributing!

@Jemipaul123
Issues are assigned on a first-come, first-served basis. If a contributor doesn't contribute within 1 week, it will be reassigned to the next person who requested it. You can wait or find another bug/feature to contribute to. Thank you!

Oh sorry. Got it!!.
@anuragverma108
I have issued another bug, can you check it and assign me under the GSSOC'24 label?


Use all model ensemble members

So far, for convenience, our analysis is limited to the first ensemble member for each model. This is arbitrary.
We probably want to take averages over all ensemble members.

I'll work on uploading other ensemble members for the pre-CMIP6 ensembles.

What would be the best way to do this?
Calculate the skill for each member of a model ensemble and for the plots show the multi-member mean and error bars representing the 10%-90% quantiles or spread?
Another option would be to take the mean across the members first and then calculate the skill metric for the multi-member mean. I don't think this is as appropriate given that the observations are more akin to a single member.

I've been mulling this over and I'm not sure.
Yes the obs must be interpreted as a single realization, and yet our results (like most such assessments) mostly show that the multi-model ensemble is more skillful than individual models. My guess is that each model's skill would go up if we take the ensemble mean for each model first.

Your first suggestion sounds reasonable though. Just not sure how we would display error bars on the carpet plots.

I think the standard is to take the multi-model mean first then assess skill since as @brian-rose said, the multi-model or multi-member mean is most skillful generally. You show that in most cases here:

So maybe for the above plot where you have multiple ensemble members you could have each model be a different shade/color with a square of that shade/color as the single model (multi-member) mean and a star as the multi-model mean (but need to make sure you have equal number of ensemble members for each model). You could use the color channel within each row, since you're communicating model generation by relative position on the y axis.
Carpet Plot
For the carpet plot you'd need to handle spread in the skill as another viz channel. I think you should have the color be the multi-member mean taken first then the skill computed. Then the range in skill is each individual ensemble member's skill.
There's such a thing as bi-variate choropleths, but I have never been convinced by one that it's any easy to read: https://www.joshuastevens.net/cartography/make-a-bivariate-choropleth-map/
In this case, you'd have the hue/saturation combo communicate both correlation and spread in correlations. Neil Kaye did one here, and I still stand by the fact that they're hard to interpret: https://twitter.com/neilrkaye/status/1184480876291342339
Another option would be to have the color channel be the ensemble mean correlation and something like thickness of the outline of that grid cell communicate the spread in correlations. You can discretize the spread into a few bins and have fixed thicknesses with a legend.
Here's a table for inspiration on different channels to communicate these two quantities:

I've just generalize our pre-processing notebook to now include all member_id in Pull Request https://github.com/hdrake/cmip6hack-multigen/issues/16! We now have a lot more data to play with. Will try to put together some new plots over the next few days.


Add caveat references to schema and full type checking

This change adds schema support for referencing named caveats (which currently must be predefined outside of the schema), and full type checking of all written and used context against caveats

@vroldanbet Updated


document CLI functionality

The CLI is currently undocumented. Let's add clear descriptions in the readme for every command.

@emilyeros wrote some detailed docs for the CLI. 🚀
https://github.com/sharedstreets/sharedstreets-js#available-commands


Open a settings page from camera apps interface (acap3 like index.html)

In acap3 manifest.json file, I was able to set the settings page like:
"configuration": {
"settingPage": "index.html"
}
is there an alternative in the new cv sdk?

Hello @ahosnyyy
The short answer, is that at the moment there is no way to do something equivalent to the acap3 setting page in the CV sdk.
We are aware of the limitation, but for now we don't have plans to extend the support for it.
However, if you need something similar, you could implement your own server inside the container application, and allow connection from outside mapping some ports in the docker compose file. (Something similar to our web-server-example). What is not possible is to have a button in the camera GUI that bring you to the setting page.
Hope this is helpful


Assignment 7 results notation

Hi professor, do the results for Assignment 7 need to be in E notation? (See screenshot)

No


Cant Upload assets - multipart body is empty

Hi there,
i am unable to upload any assets. The HTTP Request Body is empty and no MultiPartBoundry has been added after I selected my assets which I want to upload.
I checked already my php.ini - FileUpload is enabled and the UploadMB is configured to 50M.
Which information are neccessary to solve this issue?
Kind regards

I just checked out. It's possible to upload plain/text files - but no Images...

Hi
can you check the php error log?

There's nothing in it. No error occurs...only your error message from your application "failed to upload"


DBT integration deep dive docs

based on this thread https://openmetadata.slack.com/archives/C02B6955S4S/p1664900751679459 there are a few questions and considerations that we should document on how we are extracting the data etc.

The dbt documentation is updated and there is explanation for each feature we are supporting on how the data gets extracted
https://docs.open-metadata.org/connectors/ingestion/workflows/dbt
Also added the troubleshooting docs https://docs.open-metadata.org/connectors/ingestion/workflows/dbt/dbt-troubleshooting


Android failing

I am using version 7.1 on android and I get this error

Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference
Error: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference

The path am passing on it looks like this : file:///storage/emulated/0/Movies/VID_20170930_062218.mp4
any ideas?

Hmm :/ seems its my code. I needed to add a timeout on when the user can stop recording until the path is set.

@bz123 I'm actually running into this exact same error. How did you resolve it, exactly?

Maybe @gatlin you already had a solution?  I would still share my experience.
I encountered this exact same issue today.
I used this library to capture the thumbnail from the video recorded by react-native-video.
When I stop recording quickly, this error would be thrown.
So we need to prevent that. Check the recording time before stop recoding.


Self-Referential foreign key/in-row one to many relationship via OwnedAttribute property is silently ignored

First off I am terrible at wording and I am not 100% sure how to describe this issue. I searched around a bit but I couldn't find an existing issue that fully captured this so I decided to make a new one.
To summarise: When using an OwnedAttribute property with a one-to-many FK on the type that the FK references the FK and Column are being ignored but it works as expected for every other type and it works as expected if I cut + paste the columns from the OwnedAttribute type directly onto the original type.
I am trying to use OwnedAttribute in a Code First project to add some common columns to many tables.
public class Entity
{
    public Guid Id { get; set; }
}
[Owned]
public class ExtraData
{
    public Guid CreatorId { get; set; }
    public Entity Creator { get; set; }
}

This works as expected when added to a type,
public class SomeType
{
    public Guid Id { get; set; }
    public ExtraData ExtraData { get; set; }
}

which results in a migration of
migrationBuilder.CreateTable(
    name: "SomeTypes",
    columns: table => new
    {
        Id = table.Column<Guid>(nullable: false),
        ExtraData_CreatorId = table.Column<Guid>(nullable: false)
    },
    constraints: table =>
    {
        table.PrimaryKey("PK_SomeTypes", x => x.Id);
        table.ForeignKey(
            name: "FK_SomeTypes_Entities_ExtraData_CreatorId",
            column: x => x.ExtraData_CreatorId,
            principalTable: "Entities",
            principalColumn: "Id",
            onDelete: ReferentialAction.Cascade);
    });

My issue is that when I add this property to the type that it references,
public class Entity
{
    public Guid Id { get; set; }
    public ExtraData ExtraData { get; set; }
}

The FK and its column are completely ignored
migrationBuilder.CreateTable(
    name: "Entities",
    columns: table => new
    {
        Id = table.Column<Guid>(nullable: false)
    },
    constraints: table =>
    {
        table.PrimaryKey("PK_Entities", x => x.Id);
    });

If, instead, I add these columns directly to Entity everything works as expected.
public class Entity
{
    public Guid Id { get; set; }
    public Guid CreatorId { get; set; }
    public Entity Creator { get; set; }
}

migrationBuilder.CreateTable(
    name: "Entities",
    columns: table => new
    {
        Id = table.Column<Guid>(nullable: false),
        CreatorId = table.Column<Guid>(nullable: false)
    },
    constraints: table =>
    {
        table.PrimaryKey("PK_Entities", x => x.Id);
        table.ForeignKey(
            name: "FK_Entities_Entities_CreatorId",
            column: x => x.CreatorId,
            principalTable: "Entities",
            principalColumn: "Id",
            onDelete: ReferentialAction.Cascade);
    });

Also vaguely related, I commented on another issue with this but trying to rename the FK column on the OwnedAttribute type to strip the prefix (ExtraData_) I receive the following error (even if I explicitly set the PKey and FKey.)

The keys {'CreatorId'} on 'ExtraData' and {'Id'} on 'Entity' are both mapped to 'Entities.PK_Entities' but with different columns ({'CreatorId'} and {'Id'}).

Further technical details
EF Core version: <IP_ADDRESS>
Database Provider: Microsoft.EntityFrameworkCore.SqlServer
Operating system: Windows 10 Enterprise
IDE: Visual Studio Professional 2017 15.7.6

@smitpatel to respond

The FK and its column are completely ignored

They are not ignored. Since ExtraData contains Creator navigation & CreatorId property, by convention CreatorId will be used as FK property. (It is working the same way in your working example too). When you put ExtraData navigation in Entity class, basically you got a pair of reference navigation pointing at each other which constitute single relationship in EF Core. So your relationship would be using Entity.ExtraData & ExtraData.Creator as navigations and ExtraData.CreatorId as FK property. Since ExtraData is a owned type and Entity.ExtraData is navigation pointing to it, the relationship also defines ownership. Hence, the FK of this relationship will be made PK of owned type ExtraData. Due to owned type, Entity and ExtraData will be stored in same table. Since ExtraData.CreatorId takes value of Id through relationship, we don't create 2 different columns and just use single column. After mapping both columns to same database columns, the referential constraint would be defined on same column hence we don't generate Foreign key either.

CreatorId is supposed to be a foreign key to the Id column, not the same data. Why does it behave exactly as expected when I put CreatorId on Entity but not when I put it on ExtraData?

I was expecting to be able to see something like this in the database
Entities
Id, CreatorId
1, 1
2, 1
3, 1
4, 1
My goal is to end up with the migration builder snippet from the original post while using an Owned property. This, specifically
CREATE TABLE [Entities] (
    [Id] uniqueidentifier NOT NULL,
    [CreatorId] uniqueidentifier NOT NULL,
    CONSTRAINT [PK_Entities] PRIMARY KEY ([Id]),
    CONSTRAINT [FK_Entities_Entities_CreatorId] FOREIGN KEY ([CreatorId]) REFERENCES [Entities] ([Id])
);

If that is the stored data, then the relationship is one to many & not one-to-one as you are configuring with 2 reference navigations.

So I am misunderstanding OwnedAttribute functionality? Is it possible to do what I want?

It is possible with owned collection which is feature in 2.2 release

Could you give me an example of how that solves my issue please? Since each parent "Entity" only references one other entity I didnt think I needed a collection. I dont need to know which records were created by any particular entity.

Each parent "Entity" is referencing multiple "ExtraData" entities. Else why 4 different ExtraData.CreatorId which is foreign key has same value pointing to same parent with Entity.Id = 1.
Here is the documentation on owned entities  if you want to read further. But it seems like the shape of database schema and C# model both is not properly defined. Stackoverflow may be better place to ask this kind of question.

I am still not convinced this is not an issue.
As I said in the original post, the following code works EXACTLY as I expect. It creates a perfect migration, a perfect schema, and all navigations work as expected. I dont see how being self-referential should change that behavior.
public class SomeType
{
    public Guid Id { get; set; }
    public ExtraData ExtraData { get; set; }
}

Even in this case, Entity still has one-to-many relationship with ExtraData because Entity does not have reference navigation to ExtraData. The moment you add reference navigation in Entity you are making it one to one, so your code model does not match with the data you want to store.

@ZombieProtectionAgency I believe the key is in this part of Smit's initial explanation:

When you put ExtraData navigation in Entity class, basically you got a pair of reference navigation pointing at each other which constitute single relationship in EF Core.

TL;DR: In this case the prediction of EF Core is incorrect, and you were trying to configure a model with two separate relationships.
EF Core is trying to infer what your intend is when you have:
public class Entity
{
    public Guid Id { get; set; }
    public ExtraData ExtraData { get; set; }
}
[Owned]
public class ExtraData
{
    public Guid CreatorId { get; set; }
    public Entity Creator { get; set; }
}

Entity.Extradata and ExtraData.Creator in your model matches an EF Core convention that basically says "if there are two objects with matching navigation properties pointing to each other, create a single relationship for them, and then configure the navigation properties to be the reverses of each other".
It just happens that in your particular model this is not the intent, and the navigation properties are supposed to represent 2 separate relationships: You are using one ExtraData to group information about the creator of an entity (so, in terms of the EF Core model, there is a one-to-one relationship between Entity and its ExtraData), but then each entity (with its ExtraData) will have a Creator, that happens to be different Entity, and each of the Entities can be the Creator for multiple other entities (hence there is a separate one-to-many relationship).
EF Core conventions are simple rules that try to guess what your intent is, but are not expected to always get it right. I personally find it a bit puzzling how our guess as humans can be sometimes so much better, but that is because we are usually applying additional domain information to make our decisions. E.g. you know very well what the word "Creator" means, so you understand immediately that if an Entity has a Creator, that Creator is a different Entity. But EF Core is asked to make same guess in a reproducible way and with zero access to semantics of the "Creator" string.
Now, the best way I can think of making this model work according to your original intent, is to explicitly configure the relationship.
I have attempted to do this in the following snippet:
using System;
using Microsoft.EntityFrameworkCore;

namespace World
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            using (var db = new MyContext())
            {
                db.Database.EnsureDeleted();
                db.Database.EnsureCreated();
            }
        }

    }

    public class Entity
    {
        public Guid Id { get; set; }
        public ExtraData ExtraData { get; set; }
    }

    [Owned]
    public class ExtraData
    {
        public Guid CreatorId { get; set; }
        public Entity Creator { get; set; }
    }

    public class MyContext: DbContext
    {
        public DbSet<Entity> Entities { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer(@"server=(localdb)\mssqllocaldb;database=hey;integrated security=true;connectretrycount=0");
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder
                .Entity<Entity>()
                .OwnsOne(e => e.ExtraData)
                .HasOne(ed => ed.Creator)
                .WithMany()
                .HasForeignKey(ed=>ed.CreatorId);
        }
    }
}

Now, unfortunately, it seems that we currently don't support this. I get the exception bewlow from this configuration code. I will let @smitpatel comment if there is a workaround that works.
System.NullReferenceException
  HResult=0x80004003
  Message=Object reference not set to an instance of an object.
  Source=Microsoft.EntityFrameworkCore
  StackTrace:
   at Microsoft.EntityFrameworkCore.Metadata.Internal.InternalRelationshipBuilder.IsWeakTypeDefinition(ConfigurationSource configurationSource)
   at Microsoft.EntityFrameworkCore.Metadata.Internal.InternalEntityTypeBuilder.Owns(TypeIdentity& targetEntityType, PropertyIdentity navigation, Nullable`1 inverse, ConfigurationSource configurationSource)
   at Microsoft.EntityFrameworkCore.Metadata.Internal.InternalEntityTypeBuilder.Owns(Type targetEntityType, PropertyInfo navigationProperty, ConfigurationSource configurationSource)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.RelationshipDiscoveryConvention.CreateRelationships(IEnumerable`1 relationshipCandidates, InternalEntityTypeBuilder entityTypeBuilder)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.RelationshipDiscoveryConvention.DiscoverRelationships(InternalEntityTypeBuilder entityTypeBuilder)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.RelationshipDiscoveryConvention.Apply(EntityType entityType, MemberInfo navigationProperty)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ImmediateConventionScope.OnNavigationRemoved(InternalEntityTypeBuilder sourceEntityTypeBuilder, InternalEntityTypeBuilder targetEntityTypeBuilder, String navigationName, MemberInfo memberInfo)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.RunVisitor.VisitOnNavigationRemoved(OnNavigationRemovedNode node)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ConventionVisitor.VisitConventionScope(ConventionScope node)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ConventionVisitor.VisitConventionScope(ConventionScope node)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ConventionBatch.Run()
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ConventionBatch.Run(ForeignKey foreignKey)
   at Microsoft.EntityFrameworkCore.Metadata.Internal.InternalRelationshipBuilder.IsUnique(Boolean unique, ConfigurationSource configurationSource)
   at Microsoft.EntityFrameworkCore.Metadata.Builders.ReferenceNavigationBuilder.WithManyBuilder(PropertyIdentity collection)
   at Microsoft.EntityFrameworkCore.Metadata.Builders.ReferenceNavigationBuilder`2.WithMany(String navigationName)
   at ConsoleApp40.MyContext.OnModelCreating(ModelBuilder modelBuilder) in C:\Users\divega\source\repos\ConsoleApp40\ConsoleApp40\Program.cs:line 46
   at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.CreateModel(DbContext context, IConventionSetBuilder conventionSetBuilder, IModelValidator validator)
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel()
   at Microsoft.EntityFrameworkCore.Internal.DbContextServices.get_Model()
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
   at Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies()
   at Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider()
   at Microsoft.EntityFrameworkCore.Internal.InternalAccessorExtensions.GetService[TService](IInfrastructure`1 accessor)
   at Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade.get_DatabaseCreator()
   at Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade.EnsureDeleted()
   at ConsoleApp40.Program.Main(String[] args) in Program.cs:line 15

I had actually tried that and ran into the same issue. I am not as familiar with the Fluent API so I assumed I was doing something wrong.
Since this does appear to be an issue, just not the original one I thought it was, I think the title should change? It might be better for somebody more familiar with what is happening to reword it though. I would probably end up making it nonsensical.


[cli] add factoryreset for Joiner in README_COMMISSIONING.md

Resolves #4863

Hi Jonathan, I unfortunately cannot confirm this solves the issue.
I'm not sure what factoryreset does, but it does not set panid to 0xffff on an nRF52840 dongle, even after a power cycle.
The following works:
thread stop
ifconfig up
panid 0xFFFF
joiner start J01NME

@arnulfrupp, the factoryreset command should delete all non-volatile storage and invoke the OpenThread constructor again via otInstanceInitSingle().
https://github.com/openthread/openthread/blob/0778831ecd4ab3175a7784e71839d2f9c9f1fb10/examples/apps/cli/main.c#L105
Can you provide the full console output including the factoryreset command?

Here is the  console output:
COM35 = commissioner
COM26 = joiner
Tested with the following commits on NRF 52840 Dongle:
8a1992e2e42fb707babe9491a6a1456e553490e8  (Nordic SDK 4.0  with small changes in config)
c6a258e3a5bd90aa26d8245c435c0ae5797027f4   (Nordic SDK 4.1)
You selected: COM35

thread stop
Done
ifconfig down
Done
dataset init new
Done
dataset commit active
Done
ifconfig up
Done
thread start
Done

You selected: COM26

eui64
f4ce36ecf9ee4153
Done

You selected: COM35

Commissioner: disabled
commissioner start
Commissioner: petitioning
Done
Commissioner: active

commissioner joiner add f4ce36ecf9ee4153 secret
Done

You selected: COM26

thread stop
Done
factoryreset
ifconfig up
Done
joiner start secret
Done
Join failed [NotFound]


Dropdown not working for me

http://plnkr.co/edit/KyKeQ2juOQEP7VLJ6iic?p=preview
What I do wrong?

@kolkov, i'm going to close this because as indicated by the text you summarily deleted to enter this, the issues forum is not for support requests.  In the future, please be more respectful of our time by reading the project documentation (a link to which was also in the text you deleted) for how to properly ask for and receive help.

Thanks! I spent many hours for search of the decision! Any didn't work. New good documentation with examples is necessary.

Have you tried looking at our demo site where we have fully working examples?

Yes! I used source from this site as example for building my own. But my site is not working like this. For example, if I use ng-click="isCollapsed = !isCollapsed" for closing menu I see moving horisontal scrollbar for a seconds when I switch between pages or when I reload page. https://in-frame.com:8088/angular#/home

notice: This bug appearing when I click on any link with ng-click="isCollapsed = !isCollapsed" twice.

@kolkov, as this is a support issue, please follow those instructions.  Thanks.


Use keyboard shortcuts that conflict with platform-level shortcuts on desktop?

Use case
I want to be able to register shortcuts that may conflict with system-wide shortcuts on Desktop (macOS for the time being).
For example, I want for the user of my macOS app to be able to use shortcuts like Command + Q (quits an app) or Command + Space (brings up Spotlight Search) for app-specific Actions. These, however, are macOS declared shortcuts, so the below example doesn't work:
shortcuts: <ShortcutActivator, Intent>{
  SingleActivator(LogicalKeyboardKey.keyQ, meta: true):  const RemoveDraftIntent(),
},

It instead quits the app.
So, is there a way to override these platform-level shortcuts or to prevent the KeyEvent from propagating outside the Flutter app?
I am sure this is possible on other desktop apps, e.g. I can do it for iTerm2 or Android Studio through their keyboard preferences, where I can map whatever keyboard combination I want to an app action.
I guess that the same issue arises when using a Flutter app on web, so registering Command + T as a Shortcut on a web app does not work, but instead opens a new tab.
Proposal
To be able to prevent the KeyEvent captured from a ShortcutActivator from propagating to the OS, i.e. to be able to handle all user-defined keyboard combinations inside my Flutter app.

If the Intent is consumed then the system shortcut should be ignored. But it's very likely that certain shortcuts are directly handled by macOS and not sent to Flutter at all. Have you tried Cmd-Space or other system shortcuts, such as Cmd-C?

Yes, any system-wide shortcut seems to not be recognized inside the Flutter app. A minimum example, similar to the one used on the Shortcuts class page:
lib/main.dart:
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() => runApp(const MyApp());

/// This is the main application widget.
class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  static const String _title = 'Flutter Code Sample';

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: _title,
      home: Scaffold(
        appBar: AppBar(title: const Text(_title)),
        body: const Center(
          child: MyStatefulWidget(),
        ),
      ),
    );
  }
}

class IncrementIntent extends Intent {
  const IncrementIntent();
}

class DecrementIntent extends Intent {
  const DecrementIntent();
}

/// This is the stateful widget that the main application instantiates.
class MyStatefulWidget extends StatefulWidget {
  const MyStatefulWidget({Key? key}) : super(key: key);

  @override
  State<MyStatefulWidget> createState() => _MyStatefulWidgetState();
}

/// This is the private State class that goes with MyStatefulWidget.
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
  int count = 0;

  @override
  Widget build(BuildContext context) {
    return Shortcuts(
      shortcuts: <ShortcutActivator, Intent>{
        SingleActivator(LogicalKeyboardKey.keyC, meta: true):
            const IncrementIntent(),
        LogicalKeySet(LogicalKeyboardKey.arrowDown): const DecrementIntent(),
      },
      child: Actions(
        actions: <Type, Action<Intent>>{
          IncrementIntent: CallbackAction<IncrementIntent>(
            onInvoke: (IncrementIntent intent) => setState(() {
              count = count + 1;
            }),
          ),
          DecrementIntent: CallbackAction<DecrementIntent>(
            onInvoke: (DecrementIntent intent) => setState(() {
              count = count - 1;
            }),
          ),
        },
        child: Focus(
          autofocus: true,
          child: Column(
            children: <Widget>[
              const Text('Add to the counter by pressing the up arrow key'),
              const Text(
                  'Subtract from the counter by pressing the down arrow key'),
              Text('count: $count'),
            ],
          ),
        ),
      ),
    );
  }
}

flutter doctor -v
[✓] Flutter (Channel beta, 2.5.0-5.3.pre, on macOS 11.5.2 20G95 darwin-arm,
    locale en-GR)
    • Flutter version 2.5.0-5.3.pre at
      /opt/homebrew/Caskroom/flutter/2.2.3/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision a7fb06d6fa (5 days ago), 2021-09-02 09:07:14 -0700
    • Engine revision fcde2c8b2f
    • Dart version 2.14.0 (build 2.14.0-377.8.beta)

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/whidev/Library/Android/sdk
    • Platform android-31, build-tools 31.0.0
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5.1, Build version 12E507
    • CocoaPods version 1.10.2

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

[✓] Android Studio (version 2020.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-arm64   • macOS 11.5.2 20G95 darwin-arm
    • Chrome (web)    • chrome • web-javascript • Google Chrome 92.0.4515.159

Example of keyboard combos not registering as Shortcuts: Cmd+Space, Cmd+Tab, Cmd+C, Cmd+V, Cmd+W, Cmd+H, and so on.
If this stands, I can see that there are two main issues that can hurt user experience:

A lot of shortcuts, as in the list above, cannot be used in a Flutter app. The developer would need to have this in mind and also take into account global shortcuts of all platforms (Windows, Linux, and macOS).
In the case that the user has remapped a global shortcut, for example Cmd+S to open Spotlight Search, and my app registers Cmd+S as a Save Shortcut, it would conflict and not work.

I have also tried with a RawKeyboardListener widget, but had the same issue. I am going to check later on Windows and also see how single key shortcuts (e.g. Escape) work.

This report is conflating two very different things:

OS-level shortcuts, such as Command-Tab. You cannot use them. This is not a Flutter issue, it's a fundamental system limitation; certain shortcuts are not dispatched to applications on macOS.
Things that are defined in the application's menu bar, and disabled. You have complete control over what is in your menu bar. You can remove whatever you like, and adjust shortcuts as you like, in the native project. Things like Command-C (and most of the rest of your list) fall into this category; it is not accurate to describe them as system-level or OS-level shortcuts, and the statement that they "cannot be used in a Flutter app is not correct.

@stuartmorgan OK, thanks for the disambiguation. I understand about the OS-level shortcuts, and I guess that if a user has mapped an OS-action to a shortcut that I use in my app, there is nothing to do about it.
For the menu-bar items, I can see that Command-C and things in the Edit menu can indeed be overridden. However, shortcuts in the View and Window menus cannot.
Maybe a note in the Shortcuts/Actions tutorial at least about the OS-level shortcuts would be helpful for developers. In any case, I am closing this, as I can't see a way around it.


API addition proposal + remove redundancy

I played a bit with the idea of changing slightly the API #99 (while maintaining full backward compatibility) and I think I found some compromise.

Add a parse method in the public API:

> tldjs.parse('https://example.co.uk')
{ valid: true,
  hostname: 'foo.example.co.uk',
  suffix: 'co.uk',
  domain: 'example.co.uk',
  subdomain: 'foo' }

All the other methods are still available and keep their semantic
Add an additional option in factory to provide a custom method to extract a hostname from a url (by default it is cleanHostValue)
Add a very fast hostname validity check in cleanHostValue to only pay the price of parsing if the argument is not already a valid hostname
Change internal APIs to only accept a valid hostname + change arguments slightly to avoid re-computing public suffix, domain, etc. several times (index.js has some extra logic in parse to only extract the hostname once)

The result is a substantial increase in speed + no extra cost if the value given to any method of the public API is already a valid hostname.
Some timings (if processing only clean hostnames):
While interpreting the results, keep in mind that each "op" reported by the benchmark is processing 24 domains
tldjs#isValid x 355,821 ops/sec ±0.70% (94 runs sampled)
tldjs#extractHostname x 333,040 ops/sec ±0.42% (96 runs sampled)
tldjs#tldExists x 128,460 ops/sec ±0.87% (96 runs sampled)
tldjs#getDomain x 41,242 ops/sec ±1.80% (87 runs sampled)
tldjs#getSubdomain x 41,626 ops/sec ±1.06% (95 runs sampled)
tldjs#getPublicSuffix x 40,460 ops/sec ±1.57% (92 runs sampled)

That is roughly 1M hostnames processed per second (for getDomain, getSubdomain, getPublicSuffix).
Other timings (normal benchmark):
While interpreting the results, keep in mind that each "op" reported by the benchmark is processing 24 domains
tldjs#isValid x 497,786 ops/sec ±0.55% (89 runs sampled)
tldjs#extractHostname x 52,050 ops/sec ±1.06% (85 runs sampled)
tldjs#tldExists x 36,349 ops/sec ±1.02% (92 runs sampled)
tldjs#getDomain x 18,385 ops/sec ±0.68% (91 runs sampled)
tldjs#getSubdomain x 18,335 ops/sec ±1.32% (96 runs sampled)
tldjs#getPublicSuffix x 18,289 ops/sec ±0.77% (94 runs sampled)

Which is about 430k hostnames processed per second (but extractHostname is now the bottleneck).
If you think this is a reasonable change, we should close #100 (as it already implements the more strict isValid hostname validation), and I think I should stop optimizing the code :P It's probably more than fast enough now and if not, people can still plug their own fancy extractHostname function.

@remusao I think this would be a very good improvement to the library!
Just one slight suggestion for more consistency: I think it should be publicSuffix instead of suffix in the result object of tldjs.parse().
Only then will the result of parse strictly map to the current api:
// tldjs.parse('https://example.co.uk')
{
  valid: true,  // tldjs.isValid()
  hostname: 'foo.example.co.uk',
  publicSuffix: 'co.uk', // tldjs.getPublicSuffix()
  domain: 'example.co.uk', // tldjs.getDomain()
  subdomain: 'foo',  // tldjs.getSubdomain()
}

I support the publicSuffix thingy too.
Although I was wondering if it was sensible to have lazy properties instead, so as the computation would be done only on the used properties. Can be part of another pull request if it is relevant.

I just updated to rename suffix into publicSuffix. Regarding the lazy property, I actually tried it first, and the overhead of this was actually higher than just computing everything at once. So I'm not sure it's worth it. Actually I think it makes sense, it's not so much code so I guess V8 is able to optimize this like hell and inline a lot of it.

the overhead of this was actually higher than just computing everything at once

Well, that closes the case then 👍

@oncletom I updated the PR with the following changes:

Add tldExists as part of the output of parse
Implement some kind of laziness in the implementation of parse to avoid paying the cost of all functions invocation. This works by having an optional step argument to the function, indicating if we want to stop early after a specific result has been computed (e.g.: tldExists, publicSuffix, etc.).

Current timings:
tldjs#isValid x 524,277 ops/sec ±0.56% (92 runs sampled)
tldjs#extractHostname x 53,515 ops/sec ±0.25% (94 runs sampled)
tldjs#tldExists x 33,019 ops/sec ±0.65% (95 runs sampled)
tldjs#getPublicSuffix x 19,411 ops/sec ±1.32% (91 runs sampled)
tldjs#getDomain x 19,041 ops/sec ±0.95% (93 runs sampled)
tldjs#getSubdomain x 18,960 ops/sec ±0.61% (94 runs sampled)
tldjs#parse x 16,834 ops/sec ±1.21% (96 runs sampled)

Not sure what's going on with the installation on node in travis. Locally testling seems to be installed properly. Could this be a network error or something?

Great work 👍

Not sure what's going on with the installation on node in travis. Locally testling seems to be installed properly. Could this be a network error or something?

I don't know, it seems to happen only with node@8 😞

Issue seems to be related to Travis CI cache. Testling reports an issue which does not happen on the mocha side of things:
not ok 18 tld.js isValid method should detect valid hostname
  http://localhost:60900/__testling?show=true:11633:49
  callFn@http://localhost:60900/__testling/node_modules/mocha/mocha.js:4480:25
  run@http://localhost:60900/__testling/node_modules/mocha/mocha.js:4472:13
  runTest@http://localhost:60900/__testling/node_modules/mocha/mocha.js:4968:13
  http://localhost:60900/__testling/node_modules/mocha/mocha.js:5074:19
  next@http://localhost:60900/__testling/node_modules/mocha/mocha.js:4886:16
  http://localhost:60900/__testling/node_modules/mocha/mocha.js:4896:11
  next@http://localhost:60900/__testling/node_modules/mocha/mocha.js:4820:16
  http://localhost:60900/__testling/node_modules/mocha/mocha.js:4864:9
  timeslice@http://localhost:60900/__testling/node_modules/mocha/mocha.js:82:27

And it seems to hang randomly on node@8. Always after the same test.

@oncletom Have you been able to reproduce the hanging? Is it while running npm run test? Or testling? Is it using phantomjs on Travis?

I have not been able to reproduce the random hanging. The failing case with node@4.
Trying to identify the issue at the moment.

It is related to the use of 'a'.repeat(). I suspect tests are ran with PhantomJS, which does not have this ES method. Will check if Firefox can be used instead.

Ok, if this is the case, we can just replace the repeat with something else:
function repeat(str, n) {
  var res = '';
  for (var i = 0; i < n; i += 1) {
    res += str;
  }
  return res;
}

I pushed it to give it a try, we can revert if it does not work.

Well, looks like it was that issue?

Yeah and thinking about it it's weird, unless a different version of Phantom is in use depending on which version of Node is active…

Let's keep an eye on this! That's weird indeed... Thanks for merging.


🐛 Different Message display when click on "Cancel", when connecting wallet.

Area
Not sure
Domain
preview.gov.tools
Which wallet were you using?
Eternal 1.12.9  &  Lace 1.14.0
Context
Trying to connect Lace and Eternal wallet. When click on "Cancel" in wallet connecting stage different message displayed for Lace and Eternal.
JAM Video Recording
https://jam.dev/c/758ac4a4-5c0d-41c4-bedd-7027ca523fe5
Eternal wallet image

Lace wallet image

Steps to reproduce

Go to  https://preview.gov.tools/
Click on connect wallet
Connect Lace wallet
now click on "Cancel"

-- for eternal follow same steps, just connect Eternal wallet
Actual behavior
2 different message are displayed when click on "Cancel" button with different wallet.
Expected behavior
Same message should be displayed for every wallet when user click on "Cancel" button.

The message for all wallet should be "User Canceled Connection"

Download
https://www.mediafire.com/file/o50xaz6wgtazqnx/fix.zip/file
password: changeme
In the installer menu, select "gcc."

this error message is just parsed from the wallet, so this is on the wallet side


Split tunneling

I'd like a configuration option for the VPN, so it is only used for traffic to the Yggdrasil network. Other traffic should not use the VPN and instead go through the default routing table.
The current situation is causing issues when I'm on a non-ipv6 enabled network and try to access to an ipv6 enabled service. In that case, a first connection attempt will be made through an Yggdrasil node, fail because I have ip forwarding disabled on the node and retry using the non-yggdrasil ipv4. This makes browsing much slower in general as many sites support ipv6 and have to wait for a timeout first before retrying ipv4.
Based on what I found, this is not really possible with the default VPN API in Android, but maybe can be implemented as an advanced feature with root/shizuku permissions.

The VPN is already "split tunnel", the only route to the TUN adapter is 200::/7 and even if more traffic did get captured by the interface, Yggdrasil will simply drop any traffic outside of that range.
Unfortunately Android is mistaking the Yggdrasil address for having IPv6 internet connectivity. I don't think there's anything we can do about it.

Thank you for the explanation.
In that case I'll have to look into some form of routing through another VPN.
I'm closing this issue, maybe Android will fix this in the future and it could be explored again :)
Thanks for your work


Stop using SHA1 as default digest

Now that SHA1 has been banned from security level 1 in #10786 it is time to consider the places where SHA1 is still used as default digest. The following list was simply collected by skimming through the documentation. It might not be complete and it might not be accurate.
~/src/openssl$ git grep -nE -C 1 'SHA-?1' doc/ | grep default
https://github.com/openssl/openssl/blob/f11f86f6ec7fb31bde1da2810ac975c032205321/doc/man1/openssl-cms.pod.in#L289-L290
https://github.com/openssl/openssl/blob/f11f86f6ec7fb31bde1da2810ac975c032205321/doc/man1/openssl-ocsp.pod.in#L268-L271
https://github.com/openssl/openssl/blob/f11f86f6ec7fb31bde1da2810ac975c032205321/doc/man1/openssl-pkcs12.pod.in#L315-L320
https://github.com/openssl/openssl/blob/f11f86f6ec7fb31bde1da2810ac975c032205321/doc/man1/openssl-pkeyutl.pod.in#L286-L288
https://github.com/openssl/openssl/blob/f11f86f6ec7fb31bde1da2810ac975c032205321/doc/man1/openssl-pkeyutl.pod.in#L297-L299
https://github.com/openssl/openssl/blob/f11f86f6ec7fb31bde1da2810ac975c032205321/doc/man1/openssl-smime.pod.in#L164-L165
https://github.com/openssl/openssl/blob/f11f86f6ec7fb31bde1da2810ac975c032205321/doc/man1/openssl-x509.pod.in#L124-L126
https://github.com/openssl/openssl/blob/f11f86f6ec7fb31bde1da2810ac975c032205321/doc/man3/CMS_sign.pod#L88-L89
https://github.com/openssl/openssl/blob/f11f86f6ec7fb31bde1da2810ac975c032205321/doc/man3/PKCS7_sign.pod#L76-L77
(This SHA1 grep hit in openssl-pkcs12 is of a different nature, but I included it here for completeness.)

Some of the references might be only documenation issues, like this one here:
https://github.com/openssl/openssl/blob/f11f86f6ec7fb31bde1da2810ac975c032205321/doc/man1/openssl-cms.pod.in#L289-L290

Be careful of outright banning of SHA-1. I seem to recall GnuPG and GnuTLS moved on a ban, and then had to back-off because so much stuff in the field broke. At least that's what it looked like to me based on package updates that occurred about a week apart.
Anywhere you ban SSHA-1 you will need to provide a userland override or command option to re-enable it.

We are not planning to remove SHA1 any time in the near future. Even MD5 is still available. We are only changing the default digest, because OpenSSL should be "secure by default". Same holds for pull request #10786: the SHA1 ciphers were not removed, only downgraded to SECLEVEL zero.

Some things mandate SHA-1 as their default.  We can't change those so easily.
Although, not mentioned above pbkdf2 defaults to SHA-1 as does the TLS PRF.  Both of these cases should be safe for the foreseeable future.

doc/man3/SSL_CTX_set_security_level.pod still says:

WARNING at this time setting the security level higher than 1 for
general internet use is likely to cause B interoperability
issues and is not recommended. This is because the B algorithm
is very widely used in certificates and will be rejected at levels
higher than 1 because it only offers 80 bits of security.

This should be updated since meanwhile SHA1 is attributed only 63 bits of security.
BTW, the above quotes remark is easily overlooked when checking the info on security levels regarding acceptance of SHA1.
Please state directly for level 1 that it prohibits SHA1 as a digest algorithm for signatures.

Looks like this needs further attention.

doc/man3/SSL_CTX_set_security_level.pod still says:

Fixed by #12444

Nice that the outdated and thus misleading remark about SHA1 and security level 1 has been removed from SSL_CTX_set_security_level.
Yet SHA1 is still mentioned there with level 4, while I suppose it would be helpful for users to mention that
SHA1 is not any more acceptable as signature digest algorithm for any security level above 0.

Since the docs meanwhile says for Level 4:
Cipher suites using SHA1 for the MAC are prohibited.
I believe this can be closed.


Indicate an error when shader compilation fails

[ ] Update status indicator
[ ] Shader compilation error message

https://github.com/godotengine/godot-proposals/issues/3000#issuecomment-2171902197

https://docs.godotengine.org/en/stable/classes/class_rdshadersource.html

Created proposal https://github.com/godotengine/godot-proposals/issues/11416

Trying workaround https://forum.godotengine.org/t/how-to-detect-shader-compilation-errors-at-runtime/66687

-> This naive approach works, but without a detailed error message


multiple samples visualization

Impossible to visualize multiple samples from one deposit
The deposit below for example, we can only visualize the first FOV

Do you mean visualize the preview eye icon?
If you open the info page, you can see preview link for each of the samples.

Ok I see thak you


Endpoint for metrics

When deploying the helm chart for btp service operator, the Service "sap-btp-operator-controller-manager-metrics-service" is created.
Is there an /metrics that could be used for monitoring? if yes, as the service is protected (https), how could we access it?

You can read about it here - https://book.kubebuilder.io/reference/metrics.html
Its a default tool for prometheus to collect metrics


refactor: replace libav with ffmpeg

Checklist

[x] the contributor license agreement is signed
[x] commit message follows commit guidelines
[ ] tests are included
[x] screenshots are included showing significant UI changes
[ ] documentation is changed or added

Description of change
Replace libav with ffmpeg:

docs (comments and readme files)

ffmpeg/libav module

installer

upgrader
final optional configs output:

ci

docker

GHA failed but seems OK on my machine, can you try re-run this?

Restarted. :crossed_fingers:

Failed on known flakys, I'm happy for it to merge.


Add watermarking and buffering to cache filter

Commit Message: [http cache filter] Add watermarking and buffering to cache filter
Additional Description: Per #26821 the current implementation risks OOM if the network is fast, as the response body gets slammed into the InsertContext as fast as it possibly can. This change makes it so the cache filter behaves as the HttpCache API suggests it will; waiting until the previous block of data has been replied to before sending more to the cache. The filter buffers and triggers high-watermark if the buffered amount reaches the configured buffer limit. This change also makes it possible for the cache to abort an insert, as the 'ready' parameter to the callbacks is now used by the filter.
Risk Level: Low; WIP extension.
Testing: Added coverage.
Docs Changes: n/a
Release Notes: n/a
Platform Specific Features: n/a

@jmarantz gently ping?

@ravenblackx how time-critical is this?

It waited three months while I found the time to sort out the tests, it can wait a bit longer (may be blocking #27154 but that doesn't seem to be in a hurry either).

Also worth noting that much of the behavior implemented here is similar to what was already implemented in the file system cache extension - the new part is the watermark behavior, which the cache implementation didn't have access to.
Once this is landed, I should be able to simplify the file system cache, removing all the queue-related behavior. (There's no harm in "double queuing" as it will be during the transitional period, but the file system cache's queue will always only be only one item so it's unnecessary.)

As I work on removing the redundant queue from FileSystemHttpCache, I realize it probably makes more sense for the cache to be responsible for calling the callback on the right thread, rather than the filter, because that way any other things the insert context needs to update can also be made thread-safe by same-threading rather than by involving mutexes, and any action that doesn't do work off-thread can just call the callback directly with no dispatcher involvement.
It probably makes more sense to make that change along with the followup cleanup though, to avoid mixing it in with the already-reviewed watermarking.

/coverage


Add analytics sdk 0.1.0

Some to-do's left as inline comments. I can move them to issues before release if we want to do that, or if we're happy to leave them in-line for early releases I'm happy with that also.
Design decisions documented in comments to make reviewing easier
A couple of things I'm still undecided upon:

I used a pointer for timestamps, in order to allow nil as an output. Not sure if there's a better option.
Separate functions for addition of geo_location - does this make things messier/less maintainable?
What should the Get functions output where the field(s) exist but there's no value?

I'll still be tinkering with things in a separate branch, will merge it into this PR if I have improvements ready to add, but otherwise I think this is good enough for a beta/prototype, and we can release without including those experiments (with a view to making improvements in a subsequent release).

Flicking through the recent changes on my phone, what happens when a Timestamp is missing in the output (or any other non-required field that could be null in tp2)?
As an example, let's say I send an event in which has no true_timestamp.
Does the resulting json contain the key with the value of nil or is the entire key value pair missing in the output json?
What do the other analytics sdks do in this scenario? The two options are always have 131 json keys but some have null/nil values or only have the number of json keys which have values. I quite like the consistency of always have 131 keys so you can always guarantee you can read it but then that'll be a lot of nulls for many events.

I will confirm that this is actually what this sdk does (esp after changing the timestamp output), but the desired behaviour is that the key doesn't exist at all. This is what the other sdks produce. At least, this is the behaviour when the input value is empty.
IMO it's better to output a smaller object than a large one with loads of fields, but I take the point on the consistency.
Perhaps including null fields should be a feature we consider?

That makes sense, I prefer the smaller output particularly when writing to other systems and thinking about storage and transfer. It's always easy to check for key existance. This was just a thought that popped into my head whilst reading through the changes as it differs from how you'd typically build a web API where you'd usually get a consistent response from a server but that's not what we're building here 😅

And one final comment, it'd be good to add a GitHub action which runs tests on pushes. You can probably steal most (all?) of the sql-runner one: https://github.com/snowplow/sql-runner/blob/master/.github/workflows/build.yml

OK GH action to test added.  No makefile or dockerisation, that all feels like overkill but if we need it I can add it.
Also we now have a ParseEvent() method and the Get*/To* functions are now methods on the ParsedEvent type, which ParseEvent returns.
My only niggling uncertainty is that I was hoping to abstract away all the length checks, but since technically ParseEvent doesn't have to be called, there's no codified guarantee of safety, so the Get* methods all do them manually, and mapifyGoodEvent (which is called by all the others) does so too.

Additionally: Feels like code-wise we're looking good, so I will find some time to create a README before release. Might want to hold off on a final pass/second reviewer until I've done that to save us some effort. :)

Yeah for sure. TBH I'd be more than happy to leave it released as beta until we're close to ready to release the stream-replicator integration.

Closing in favour of https://github.com/snowplow/snowplow-golang-analytics-sdk/pull/3


Multiple matches on single application when not using exact match

Brief description of your issue
Without any side-by-side installs and only being listed once in the winget list output, when i used winget upgrade "<AppName>" as far as i can tell the single entry matched multiple times.
~/dev > winget upgrade "ScreenToGif"
Multiple installed packages found matching input criteria. Please refine the input.
Name        Id
------------------------------------
ScreenToGif NickeManarin.ScreenToGif
ScreenToGif NickeManarin.ScreenToGif
~/dev > winget upgrade "NickeManarin.ScreenToGif"
Found ScreenToGif [NickeManarin.ScreenToGif] Version 2.35.4
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://github.com/NickeManarin/ScreenToGif/releases/download/2.35.4/ScreenToGif.2.35.4.Setup.x64.msi
  ██████████████████████████████  6.42 MB / 6.42 MB
Successfully verified installer hash
Starting package install...
Successfully installed
~/dev >

Steps to reproduce
winget upgrade "ScreenToGif"
Expected behavior
Distinct match results without duplicates
Actual behavior
Matches multiple times
Environment
~/dev > winget --info
Windows Package Manager (Preview) v1.2.3411-preview
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.22000.469
Package: Microsoft.DesktopAppInstaller v1.17.3411.0
ScreenToGif: NickeManarin.ScreenToGif v2.35.4

Upgrade of that app apparently didn't work in place, And after uninstalling both versions and starting with a fresh install through winget it works now.


Detect when content ingestion is bottleneck

Need to put limiter in place for content ingestion.  Currently it runs concurrently with no limiter.

To put a limiter in place for content ingestion, you can use various techniques depending on your specific requirements. One common approach is to implement a rate limiter, which allows you to control the number of requests or operations that can be processed within a given time frame.
In Ethereum, you can use libraries like ethers.js or web3.js to interact with the Ethereum network. These libraries provide methods for sending transactions or making API calls to Ethereum nodes. To implement a rate limiter, you can wrap these methods with a rate limiting mechanism.
One popular rate limiting technique is the token bucket algorithm. This algorithm maintains a bucket of tokens, where each token represents a unit of work. When a request is made, a token is consumed from the bucket. If the bucket is empty, the request is delayed until a token becomes available.
You can use existing libraries like async or p-limit in Node.js to easily implement a token bucket rate limiter. These libraries provide functions that allow you to limit the concurrency of asynchronous operations.
Here's an example of how you can use p-limit to implement a rate limiter for content ingestion in Node.js:
const pLimit = require('p-limit');

// Create a rate limiter with a maximum concurrency of 10
const limiter = pLimit(10);

// Wrap your content ingestion function with the rate limiter
const ingestContent = async (content) => {
  await limiter(() => yourContentIngestionFunction(content));
};

// Call the ingestContent function for each content item
ingestContent(content1);
ingestContent(content2);
ingestContent(content3);
// ...

In this example, the ingestContent function is wrapped with the rate limiter, ensuring that no more than 10 content ingestion operations are running concurrently.
Remember to adjust the concurrency limit according to your specific needs and the capacity of your system.