Switch Object.assign to object-assign module

Internet Explorer doesn't support native Object.assign, so use polyfill
instead.

@singles This was done on purpose in the latest version to keep package size smaller. We recommend that you polyfill this yourself using Babel, es6-shim, or a polyfill service like polyfill.io in browsers that don't support this yet.

If you don't want to bring in all of es6-shim, you can also:
npm install object.assign

And then in your source:
if(!Object.assign) {Object.assign = require('object.assign').getPolyfill();}

Making dependencies require to configure app with some polyfill is really bad. It's like forcing all the consumers to use specific environment and build tools. And it 100% will cause a LOT of problems for big amount of developers, especially if you update dep, test in chrome and then get errors in browsers like IE totally unexpected.

And reason for making it lighter is really not valid, object-assing dep weights nothing https://github.com/sindresorhus/object-assign/blob/master/index.js.

@operatino I don't agree: why should fluxible-router apply its own polyfill when I already apply mine? Also: https://twitter.com/iamdustan/status/675354183394983936 :smile:

@gpbl object-assign is not a polyfill, it's a small library. It doesn't extend the Object, it provides a function that does merging. You don't call Lodash a polyfill right?
Why should developers apply pollyfils requested by dependencies? The more limitation like this we have, the more problems we need to deal with using third party dependencies.

Polyfills are already required by React, so adding a couple more shouldn't be a big deal. You're right object-assign isn't that large, but it's still duplicating functionality that is now part of browsers. Many functions in lodash are no longer needed in modern browsers as well, so we would not use it as a whole.

Which kind of polyfills are required by React? ES6 and JSX are optional.
If each dependency will add a couple of polyfills, we'll end up with maintenance nightmare. Just image bumping version of dependencies, that require to re-build whole pipeline.


istioctl analyze works with restricted role

We should test situations where istioctl analyze is running under a role with restricted permissions (e.g. if unable to view the istio-system namespace, what does the injection analyzer do? What should it do?)

I ran into this today. istioctl analyze -k seems to require list permissions on CustomResourceDefinitions, which are cluster-scoped:
Failed to list *v1beta1.CustomResourceDefinition: customresourcedefinitions.apiextensions.k8s.io is forbidden: User "developer" cannot list resource "customresourcedefinitions" in API group "apiextensions.k8s.io" at the cluster scope

Will look into this and see if we can skip the CRD check.

Hmm. I can skip the CRD check by changing a few lines, but the Galley code will try to watch all Istio resources at the cluster-scope.

We should determine exactly what permissions are needed make sure they get documented.

Permissions needed:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: istioctl-analyze-role
rules:
- apiGroups:
  - ""
  resources:
  - endpoints
  - namespaces
  - nodes
  - pods
  - secrets
  - services
  verbs:
  - list
  - watch
- apiGroups:
  - ""
  resourceNames:
  - istio
  resources:
  - configmaps
  verbs:
  - get
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - list
  - watch
- apiGroups:
  - apps
  resources:
  - deployments
  verbs:
  - list
  - watch
- apiGroups:
  - extensions
  resources:
  - ingresses
  verbs:
  - list
  - watch
- apiGroups:
  - authentication.istio.io
  - config.istio.io
  - networking.istio.io
  - rbac.istio.io
  - security.istio.io
  resources:
  - '*'
  verbs:
  - list
  - watch

Some scenarios I've tested:

If missing list permissions on a regular or custom resource, we get a permissions error every second or so and analyze gets stuck until killed.
Likewise if missing the specific permissions to customresourcedefinitions.
If the user has list permission but is missing watch on regular or custom resources, we get a bunch of permissions errors, but analyze doesn't get stuck and in fact appears to complete normally. (Perhaps the Watch functionality isn't really getting used?)

The first problem is made tricky because the error being generated & logged is apparently being swallowed by the k8s go client libs we're using. If there is a way to handle the error so the caller (us) knows that something went wrong, preferably specifically that it's a permission issue, I don't know what it is.
As an experimental workaround, I added a timeout on the code that waits for sync. This prevents analyze from blocking forever when there are missing permissions for k8s or Istio resources. I had trouble getting it to work for missing customresourcedefinitions permissions, however.
Next steps:

[ ] Find out if there's a way for us to correctly handle missing permissions issues and not block forever. (Maybe talk to some k8s folks whose code we're invoking?)
[ ] Test scenarios where the user has namespace-scoped permissions, so they can access some but not all of a particular resource.

After doing some testing, it looks like we don't have really good support for namespace-limited users. The list requests are being done at the cluster level, so they'll fail even if the user has access to some (but not all) of the namespaces.
I think I'm OK making it a stated requirement for the user running istioctl analyze to have a cluster role binding to the cluster role defined above. Perhaps we should include an analyze-user cluster role in the Istio install?


fine tuning for plot sensors

After merging #3065 the next thing would be to add axis, picks and color parameters. Why is this? It facilitates creating educational plots of ROIS, e.g. like that:

that looks great

that looks great

thanks, so far done with Python-(minus)MNE

Yes I like it. This is used in many ERP publications.

This is now done in https://github.com/mne-tools/mne-python/pull/3237 although there is no color parameter. The color is automatically defined when you use an array as regions. See if it satisfies you.

quick feedback after playing a bit with it

regions seems like a misnomer as it can be a list of arrays that are not clusters / form regions

regions='selection' would allow to see the automatic selections used in raw.plot

raw.plot_sensors(ch_type='grad', regions='position')  # crashes on SPM dataset

returns:
RuntimeError: Did not find any digitization points of kind FIFFV_POINT_EEG (3) in the info.
but this works
raw.plot_sensors(regions='position')

raw.copy().pick_types(meg=False, eeg=True).plot_sensors(regions='position')

gives rather weird results.
Also see with grad or mag on sample. See the light blue dot at the right corner.

regions seems like a misnomer as it can be a list of arrays that are not clusters / form regions

Any suggestion for a better name? All the other comments addressed.

Can this be closed due to #3237 then?

I guess so.


Can we get an explicit license?

Would it be possible to put an explicit OSS license on the codebase just to remove approval burden when experimenting based on this code? I want to prototype a bit on laptop to get the plumbing right before moving to cloud GPUs to actually train and this looks like the best CPU friendly implementation I have found for that purpose

Done! ;)


US 1583733 Add missing language IDs - 46

US 1583733 - Fix CATS P1 issues by adding missing language IDs to code blocks.

Used "vb" for syntax examples of VB operators.

Contributes to #2192

@rpetrusha Thanks for the review. I implemented your suggestions.

Thanks, @v-thpra. I'll merge now.


Update theme for Ghost v4

These are some minor changes to prepare for migrating to Ghost v4.
The significant one is changing the height of images in articles to auto,
as suggested in the migration guide.
When I do that locally, before and after:

This is what it looks like on v4 without this change:

It seems preferable to me to show the full height of the image 🤔
Something unfortunate is that the Heroku-adapted version of Ghost used for preview deployments isn’t yet updated for v4, but hopefully that can be updated soon.

Looks great. Full height definitely looks better 👍


Ix.Async: Dispose an AsyncEnumerator once.

Make sure the dispose action executes at most once in AsyncEnumeble.CreateEnumerator.
Fixes: #471

Hopefully not in vain (C# 8).


[Google_sign_in] Provide a fix so that the exceptions in signIn method can be caught correctly by plugin users.

Issue to track a possible fix to #26705.
cc @cyanglaz

@cyanglaz do you know if any tests or examples already on the package will trigger the exception? So that I can get things up to speed.

@feinstein I think you can just call signIn() method in the example app and try to catch exception for it. You might need to use the IDE's uncaught exceptions break pointer to see the issue. I think the original issue has some examples as well.

I got the exception as soon as I started the example, as signInSilently() triggers it.
Now I am wondering how to fix the code...
Line 302 of the google_sign_in.dart has:
return result.catchError((dynamic _) => null);

I am new to dart, but I think this is wrapping the Future into a new one that upon execution will have that catchError that ignores errors. I am trying to figure out what's the traditional try-catch equivalent of this, if any.... maybe I have to wrap a try-catch inside a new Future?

Ok, I think I fixed it, at least I am not getting any Exceptions any more here... but apparently I broke the tests, so I will investigate this as well.

Ok, fixed it. I will land a PR so you can review it.

PR flutter/plugins#1937
@cyanglaz please also review the styling as the style guide is too long and I probably won't remember it all, thanks :)

@cyanglaz I follower the versioning doc here and since this change doesn't change the public API, I added a +1, but the automatic checks apparently don't like this. Am I understanding the usage of +1 wrongly?

I tried to run the flutter_plugin_tools, but I am getting some errors like this one:

c:\Programacao\Flutter\plugins>pub global run flutter_plugin_tools test --plugins google_sign_in
RUNNING google_sign_in tests...
CreateProcessW failed 2
Unhandled exception:
ProcessException: The system cannot find the file specified.
Command: flutter test --color
#0      runAndStream (package:flutter_plugin_tools/src/common.dart:199:7)

#1      TestCommand.run (package:flutter_plugin_tools/src/test_command.dart:38:26)

#2      CommandRunner.runCommand (package:args/command_runner.dart:197:27)

#3      CommandRunner.run. (package:args/command_runner.dart:112:25)
#4      new Future.sync (dart:async/future.dart:224:31)
#5      CommandRunner.run (package:args/command_runner.dart:112:14)
#6      main (package:flutter_plugin_tools/src/main.dart:47:17)
#7      _startIsolate. (dart:isolate-patch/isolate_patch.dart:299:32)
#8      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)

The PR https://github.com/flutter/plugins/pull/1937 is merged, closing the issue now.

@cyanglaz thanks for all the help.
As a side note, the pub badge here  is updated, but the one at the plugin page here  is still on 4.0.4.

@cyanglaz I think we will need to reopen this issue as recent changes in the API have brought back the usage of the Future API, which leads to exception leakage in debug mode.


Feature Implementation Request - findTopElement()

Finding the topmost Sprite in the game can be quite tricky. Finding the topmost Sprite that meets a certain condition is even trickier. I made a method that makes these things possible and I think it would be great if Phaser had it as a helper function.
function findTopSprite(object, fn, ctx, sprite) {
    if (fn.call(ctx, object) === true) {
        sprite = object;
    }

    for (var i = 0; i < object.children.length; i++) {
        sprite = findTopSprite(object.children[i], fn, ctx, sprite);
    }

    return sprite;
}

function check(sprite) {
    if (sprite instanceof Phaser.Group === false) {
        return sprite.getBounds().contains(
            this.input.activePointer.x,
            this.input.activePointer.y
        );
    }
}

// Returns the topmost Sprite under the active input pointer.
findTopSprite(game.world, check, game);

If the first argument is a Group or a Sprite, the result will be the topmost Sprite in that certain object. The second argument can be a function that checks anything in a Sprite. If the desired condition is met, it should simply return true. The third argument is the context in which the given checker function should run. The fourth argument can be a default Sprite in case there aren't any valid Sprites found.
The function uses recursion which can be dangerous, but I tested it and it's working fine. I suppose it can cause problems or performance issues if the checked Sprite tree is too large, but despite that, this can be very useful in my opinion.
Thanks for reading!

I found an even better solution:
function findTopSprite(object, fn, ctx, sprite) {
    if (fn.call(ctx, object) === true) {
        return object;
    }

    for (var i = (object.children.length - 1); i >= 0; i--) {
        sprite = findTopSprite(object.children[i], fn, ctx, sprite);
        if (sprite) {
            return sprite;
        }
    }

    return sprite;
}

It doesn't have to iterate through the whole world tree because it works backwards and returns the first Sprite that meets the condition. If it starts from the topmost Sprite and goes down, the first Sprite to meet the condition is guaranteed to also be the topmost that does.
The downside is that the fourth argument can no longer be used as a default Sprite if no match is found, but I don't think that's a big deal, though.

Think you can add some comments to this and make it a bit more formal?

Well, I don't know what I could comment, really. Recursions are confusing in my opinion and comments can't help much until you dive into it and check what happens for yourself. I'll try, though.
/**
* Gets the topmost child of an element with the option to check for a condition.
*
* @method
* @param {object} - Element inside of which to search.
* @param {function} - Optional checker function that is called for each child in the recursion. It should return true or false depending on whether we want the child to be a possible match.
* @param {array} - Optional array of arguments to be passed to the checker function.
*/

function findTopElement(object, checker, args) {
    return (function search(object, match) {
        var c = object.children;

        if (Array.isArray(c)) {
            var i = c.length;

            while (i--) {
                // If the current child matched the checker function condition or
                // no such function was given, return the child to the parent caller.
                if (typeof checker !== "function" || checker.apply(c[i], args) === true) {
                    return c[i];
                }

                // Save any matches that the child might find inside itself.
                match = search(c[i], match);

                // If a match was found in the current child, break the recursion and proceed
                // to return the match to the parent caller.
                if (match) {
                    return match;
                }
            }
        }

        // Return any match found to the parent caller.
        return match;
    })(object, null);
}

function findTopElement(object, checker, args, match) {
     var c = object.children;

     if (Array.isArray(c)) {
         var i = c.length;

         while (i--) {
             // If the current child matched the checker function condition or
             // no such function was given, return the child to the parent caller.
             if (typeof checker !== "function" || checker.apply(c[i], args) === true) {
                 return c[i];
             }

             // Save any matches that the child might find inside itself.
             match = findTopElement(c[i], checker, args, match);

             // If a match was found in the current child, break the recursion and proceed
             // to return the match to the parent caller.
             if (match) {
                 return match;
             }
         }
     }

     // Return any match found to the parent caller.
     return match;
}

The first method uses a nested function. That's because the match variable is used internally by the recursion to pass data to child calls. This way, the user can't specify this argument because he doesn't have to.
The second method doesn't use a nested function and match can be specified. If it's not falsy, the method would return match after the first child has been checked and none of the child's children have been matched.

Thank you for taking the time to open this issue. However, official support for Phaser 2 has now ended as we focus on preparing Phaser 3 for beta release. In a bid to keep the project tidy, and avoid confusion, we are closing all v2 related issues.
This does not mean your issue won't be looked-at. In November 2016 the Phaser CE (Community Edition) project began. The aim of Phaser CE was to allow the community to continue v2 development. Since then it has gained significant traction, with many updates and releases.
If you are still interested in having your issue investigated we strongly recommend testing the latest Phaser CE release. And only if the problem persists, opening an issue on the Phaser CE repo.


Add 'random' Library to .toml File

We need to include the 'random' library in our project configuration (.toml file). The desired version for the 'random' library is 3.12.1. Please update the .toml file accordingly.

Random is an in-built module of Python, so we don't have to install it via pip.

Okay, I didn't know that. Then it's settled.


Connecting with Pulse Audio from service

Hi! I'm using the library to create an Ubuntu service that connects with Pulse Audio and automatically ducks music applications when something else is running.
When I run the script, it runs perfectly, but when I run it as a service, it fails to connect with the Pulse Audio server. Any ideas why please? This is the traceback:
Mar 08 21:52:11 nitro python[47240]: Traceback (most recent call last):
Mar 08 21:52:11 nitro python[47240]:   File "/path/to/venv/lib/python3.8/site-packages/pulsectl_asyncio/pulsectl_async.py", line 129, in connect
Mar 08 21:52:11 nitro python[47240]:     c.pa.context_connect(self._ctx, self.server, flags, None)
Mar 08 21:52:11 nitro python[47240]:   File "/path/to/venv/lib/python3.8/site-packages/pulsectl/_pulsectl.py", line 673, in _wrapper
Mar 08 21:52:11 nitro python[47240]:     raise self.CallError(*err)
Mar 08 21:52:11 nitro python[47240]: pulsectl._pulsectl.CallError: ('pa_context_connect', (<pulsectl._pulsectl.LP_PA_CONTEXT object at 0x7ff96e34aa40>, None, 1, None), -1, 'Connection refused [pulse errno 6]')
Mar 08 21:52:11 nitro python[47240]: The above exception was the direct cause of the following exception:
Mar 08 21:52:11 nitro python[47240]: Traceback (most recent call last):
Mar 08 21:52:11 nitro python[47240]:   File "/path/to/main.py", line 81, in <module>
Mar 08 21:52:11 nitro python[47240]:     loop.run_until_complete(main())
Mar 08 21:52:11 nitro python[47240]:   File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
Mar 08 21:52:11 nitro python[47240]:     return future.result()
Mar 08 21:52:11 nitro python[47240]:   File "/path/to/main.py", line 17, in main
Mar 08 21:52:11 nitro python[47240]:     async with pulsectl_asyncio.PulseAsync('volume-increaser') as pulse:
Mar 08 21:52:11 nitro python[47240]:   File "/path/to/venv/lib/python3.8/site-packages/pulsectl_asyncio/pulsectl_async.py", line 163, in __aenter__
Mar 08 21:52:11 nitro python[47240]:     await self.connect()
Mar 08 21:52:11 nitro python[47240]:   File "/path/to/venv/lib/python3.8/site-packages/pulsectl_asyncio/pulsectl_async.py", line 136, in connect
Mar 08 21:52:11 nitro python[47240]:     raise PulseError('Failed to connect to pulseaudio server') from e
Mar 08 21:52:11 nitro python[47240]: pulsectl.pulsectl.PulseError: Failed to connect to pulseaudio server

This is my service:
[Unit]
Description=Auto-ducker
After=multi-user.target
[Service]
Type=simple
Restart=always
ExecStart=/path/to/venv/bin/python /path/to/main.py
[Install]
WantedBy=multi-user.target

I have tried:

Specifying the server manually. When I run  pulse.server_info(), the server name shows as 'pulseaudio'. When I specify the server (async with pulsectl_asyncio.PulseAsync('volume-increaser', server='pulseaudio') as pulse:), it fails to connect.
Running the service with User=nicholas and Group=nicholas, my user and user group.

In both cases, the server fails to connect to the pulseaudio server.

This is more a PulseAudio / libpulse usage issue than an issue with this library.
I'm not 100% sure about the mechanism, how libpulse detects the correct socket of the PulseAudio server. I would assume that, if you run PulseAudio in user mode for your specific user (as opposed to system mode), you need to
a) run your service as your user (for access privileges to the PulseAudio socket)
b) set the XDG_RUNTIME_DIR to your user's runtime directory.
but I'm not sure about this.
You should probably google how to run a PulseAudio client as a systemd service. (pulsectl-asyncio is not different from any other native PulseAudio client, based on libpulse).
Maybe running the service as a systemd user unit could be a solution?

I know it's not a library issue, but I thought maybe you had met the issue before. I've continued to experiment and it gives me the same error even if I try to run it as my own user through sudo: sudo -H -u nicholas bash -c '/home/nicholas/GitHub/auto-ducker/venv/bin/python /home/nicholas/GitHub/auto-ducker/main.py'. Anyway, I'll close the issue and ask on Ask Ubuntu.
Thank you for the work on the library!

I know it's not a library issue, but I thought maybe you had met the issue before. I've continued to experiment and it gives me the same error even if I try to run it as my own user through sudo: sudo -H -u nicholas bash -c '/home/nicholas/GitHub/auto-ducker/venv/bin/python /home/nicholas/GitHub/auto-ducker/main.py'. Anyway, I'll close the issue and ask on Ask Ubuntu.
Thank you for the work on the library!


Changing access token during SignalR session (with websockets protocol)

The following phrase is emphasized on https://docs.microsoft.com/en-us/aspnet/core/signalr/authn-and-authz?view=aspnetcore-2.2:

The access token function you provide is called before every HTTP request made by SignalR. If you need to renew the token in order to keep the connection active (because it may expire during the connection), do so from within this function and return the updated token.

However it's easy to confuse 'http request' here with the concept of 'message sent'.
When using websockets there is only one http request made when you first connect - after that the token isn't sent again and my function isn't called. The above paragraph kind of implies it will automagically refresh itself when it changes which for websockets isn't entirely accurate.
Can you make it clearer what the recommended procedure is for changing access token when connected with websockets. I assume I'm supposed to just disconnect and reconnect.
Although to be frank this is kind of a massive pain and I'm almost tempted to just send the access token as part of the message (which in my case is rarely needed anyway).

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: d0da2144-3730-f8ef-1d16-a89f11fd6198
Version Independent ID: 6d8f5bc8-8f5c-ba13-b7f2-0366eac46f81
Content: Authentication and authorization in ASP.NET Core SignalR
Content Source: aspnetcore/signalr/authn-and-authz.md
Product: aspnet-core
Technology: aspnetcore-signalr
GitHub Login: @bradygaster
Microsoft Alias: bradyg

1 million times this.  I'm bashing my head against the desk wondering why my accessTokenFactory method isn't being called once the connection is established, wondering if I'm doing something wrong.  This note is completely misleading and should be removed.  What is MSFT's recommended approach?  Is it in fact to disconnect and reconnect when a new access token is received?  This seems like a massive oversight.

+1 here also. Very confusing.
I've also found that the Authorize attribute doesnt really protect you from expired tokens also.
https://github.com/aspnet/AspNetCore/issues/5283
So with Websockets, once you set up a connection.. on the client side you're not easily able to keep your tokens up to date: and then on the server side: it doesn't check if they're expired anyway...

tl;dr: Does using a pattern of establishing/reestablishing websocket-based connections to a hub on an as-needed basis create too much connection overhead (or defeat the purpose of web-sockets to begin with) to be useful as a solution to the above problems? (The idea being that each re-established connection would use a token re-fresh pattern)
Story:
I'm currently trying to write a live multi-user app using Blazor client-side with a feature-rich server-side using signalr. I have signalr connections working and token validation working with all of the above issues with authorization (tokens only validated on connection, and web-socket calls to hub methods are 'authorized' with expired tokens indefinitely on the same connection as was established when the token was valid. Re-connection attempts fail authorization with an expired token).
All that said, if I'm going to stick with jwt auth, is it just better to use a short expiry and a refresh token pattern, with a policy that between client-side actions that don't occur frequently enough connections are dropped, as a solution as opposed to having to have "timed tasks" on both the client side and server side?  (Those tasks being what causes expired tokens to be re-issued?)

Microsoft, what is your guidance regarding expiring tokens both on the client and the server?

This would cause a lot of errors goes undetected. I am hoping that someone can provide a viable solution or workaround.

Here is another request about the same issue: https://github.com/dotnet/AspNetCore.Docs/issues/18265

Microsoft, there seems to be quite a lot of developers who are confused about how to refresh the access token in a SignalR connection (me included), as the token factory seems to be executed only on connection start and if the token is revoked it's not checked for again. Could you please clarify what the suggested flow is for handling this as it is not brought up in the documentation. Thanks so much.

I think this is something we’ll have to think about more but let me ask some questions about the expected behavior:
Whats the ideal experience? Do you want to have the token expire and have the physical connection drop? That’s the easiest thing to do. The client would then re-connect and rerun then access token factory client side and you could re run whatever logic you need to to get a new token.
If we don’t do that does it mean the physical connection stays open and it’s less clear what it would do, how the client would re-negotiate etc

IMO, the access token factory should maintain access token state and once the token expires, should invoke for a new one.  If a new one is provided and is valid, the connection maintains, otherwise the connection drops.

@davidfowl I believe we should invoke new refresh token as suggested by mmulhearn, this is how we do it in non-websocket anyway, however the feature should be supported on client side/server side or both. Currently on server side we have read query_string and set Context.Token while I would expect the SignalR middle ware to automatically take care of that.
Now on the clientside I would suggest to add onAuthenticationFailure retry/reconnect (i.e 401 received) behavior similar to withAutomaticReconnect, then the accessTokenFactory can re-read whatever value we provided and attempt to reconnect the connection with the new accessTokenFactory.

What's the state of this? Curious what the team has come up with or decided on before I roll my own refresh logic.

Somebody at Microsoft needs to take point on these issues. Using SignalR has been more time consuming than doing everything from scratch, as it doesn’t handle the most primitive cases.
@CodyPaul Considering the complete lack of interest to fix this most primitive issue don’t hold your breath for a resolution any time soon. The current handling of the token clearly shows it’s not meant for production use and you’ll need to make your own anyway.

We're looking to invest in this area (whether doc or feature) during this time frame. Perhaps we should write something even if temporary in the docs to explain the current options (even if they aren't good).

@BrennanConroy can you provide an update based on our discussion yesterday?

@BrennanConroy can you provide an update based on our discussion yesterday?

Anxiously awaiting reply

I think this is something we’ll have to think about more but let me ask some questions about the expected behavior:
Whats the ideal experience? Do you want to have the token expire and have the physical connection drop? That’s the easiest thing to do. The client would then re-connect and rerun then access token factory client side and you could re run whatever logic you need to to get a new token.
If we don’t do that does it mean the physical connection stays open and it’s less clear what it would do, how the client would re-negotiate etc

Hi @davidfowl,
Don't have the answer on how it'd reconnect,  but it seems there's an actual way to update the HttpContext from a hub method:
var httpContext = this.Context.GetHttpContext()!;
httpContext.Items["access_token"] = updatedToken;
... re-authenticate user ...
httpContext.User = authenticateResult.Principal

And the only thing that prevent this new user to be used is how HubConnectionContext.Usermethod has been implemented.
 public virtual ClaimsPrincipal User
        {
            get
            {
                if (_user is null)
                {
                    _user = Features.Get<IConnectionUserFeature>()?.User ?? new ClaimsPrincipal();
                }
                return _user;
            }
        }

It'd work fine with this new code IMO as all subsequent calls to HubConnectionContext.Userwould use the new user:
public virtual ClaimsPrincipal User
        {
            get
            {
               return Features.Get<IConnectionUserFeature>()?.User ?? new ClaimsPrincipal();
            }
        }

This only thing is that theres no way to extend/proxy  HubConnectionContext because of HubConnectionHandler
and as mentionned here: https://github.com/dotnet/aspnetcore/issues/41709
public override async Task OnConnectedAsync(ConnectionContext connection)
        {
           ...
           var connectionContext = new HubConnectionContext(connection, contextOptions, _loggerFactory);
          ...
       }

Here is how I did it;
`
private void ProlongConnectionAuthenticationExpiration(ClaimsPrincipal claimsPrincipal)
{
if (claimsPrincipal == null)
{
throw new ArgumentNullException(nameof(claimsPrincipal));
}
        // Get validation parameters.
        TokenValidationParameters? validationParameters = _serviceProvider.GetService<TokenValidationParameters>();
        if (validationParameters == null)
        {
            throw new InvalidOperationException("Failed to determine validation parameters.");
        }

        // Define new expiration time.
        string? newExpirationTime = claimsPrincipal.Claims.FirstOrDefault(claim => claim.Type == "exp")?.Value;
        if (newExpirationTime == null && validationParameters.ValidateLifetime)
        {
            throw new InvalidOperationException("Newly provided claims do not contain expiration time.");
        }
        if (!long.TryParse(newExpirationTime, out long unixSecondsExpiration))
        {
            throw new InvalidOperationException("Failed to parse new expiration time.");
        }

        DateTimeOffset expirationTimeUtc;
        try
        {
            expirationTimeUtc = DateTimeOffset.FromUnixTimeSeconds(unixSecondsExpiration).Add(validationParameters.ClockSkew);
        }
        catch (ArgumentOutOfRangeException)
        {
            throw new InvalidOperationException("Failed to parse new expiration time. Out of range exception");
        }

        // Get internal http context
        IHttpContextFeature? contextFeature = Context.Features.Get<IHttpContextFeature>();

        if (contextFeature == null)
        {
            throw new InvalidOperationException("Failed to resolve feature " + nameof(IHttpContextFeature));
        }

        PropertyInfo? pi = contextFeature.GetType().GetProperty("AuthenticationExpiration", BindingFlags.Instance | BindingFlags.NonPublic);
        if (pi == null)
        {
            throw new InvalidOperationException("Failed to resolve http connection context fields.");
        }
        object? previousExpirationObject = pi.GetValue(contextFeature);
        if (previousExpirationObject == null)
        {
            throw new InvalidOperationException("Failed to determine previous expiration time.");
        }
        DateTimeOffset previousExpiration = (DateTimeOffset)previousExpirationObject;

        // Log update.
        _logger.LogDebug("Prolonging authentication for connection {0}. Previous expiration [{1}]. Prolonged expiration [{2}].",
            Context.ConnectionId,
            previousExpiration.ToUniversalTime().ToString(),
            expirationTimeUtc.ToString());

        // Update AuthenticationResult feature if used.
        IAuthenticateResultFeature? authResultFeature = Context.Features.Get<IAuthenticateResultFeature>();
        if (authResultFeature != null)
        {
            AuthenticationProperties ap = new AuthenticationProperties();
            AuthenticationTicket authTicket = new AuthenticationTicket(claimsPrincipal, ap, JwtBearerDefaults.AuthenticationScheme);
            authResultFeature.AuthenticateResult = AuthenticateResult.Success(authTicket);
        }

        // Set new expiration date.
        pi.SetValue(contextFeature, expirationTimeUtc);
    }`

Nasty, but that's how it goes with bad frameworks

Nasty, but that's how it goes with bad frameworks. Expected nothing less from microsoft managed projects

It's quite incredible that the response from Microsoft was that "they'll have to think about it". Think about it, years after release? This is such a common case that it's incredible it wasn't thought about when the framework was made. Like... how can you miss adding any kind of mechanism for expiring tokens?

Is there a fix for this yet? It's been like 3 years.

No, there is no fix, you can follow this issue https://github.com/dotnet/aspnetcore/issues/5297

Microsoft please dont be so slow by fixing so important aspekts from the framework
5 Years is not excusable


Browsers natively supporting EventSource

I'm only interested in the extensions and would use the library if it wraps the native implementation if there's one - is this the case?

No, the goal of this library is to keep in sync with the W3C specification while allowing it to be used in Node and browser environments. No extra features.


Added optional input "model_dir" to class SpladeEncoder

Problem
Everytime an object of this class is initialise, the model is downloaded again. This wastes time, memory and network resources
Solution
Added optional input "model_dir" to specify the directory model should be downloaded in and loaded from.
Type of Change

[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[x] This change requires a documentation update
[ ] Infrastructure change (CI configs, etc)
[ ] Non-code change (docs, etc)
[ ] None of the above: (explain here)

Test Plan
Describe specific steps for validating this change.

Takes only 0.8 seconds to load now. Earlier it used to take atleast 100 seconds.


Cache promise on load/preload

Summary
I guess the cache in preload and load methods is not used on purpose but I was curious whether you'd be interested in this change, maybe under an option or a different static method cache.
The use case for me is that I did try to prefetch pages on link hover, but after transiting to the prefetched page I saw a blink of white page in between the route transitions, even though I was blocking the transition until the module was fetched.
This only happened on the first transition, subsequent transitions to the cached pages didn't have the blink anymore, which lead me to this change.

Hey @theKashey -- is this ready to go? Not sure I understood the review comment, but happy to help with implementation if I can. We're running into this issue as well.

Everything is fine, I am just have developed a habit to always seek for perfection as mentoring our devs is a big part of my job.
And that is not the best habit.
gonna merge this PR and apply changes I would like to see by myself, that’s just a few lines change.

Everything is fine, I am just have developed a habit to always seek for perfection as mentoring our devs is a big part of my job.
And that is not the best habit.
gonna merge this PR and apply changes I would like to see by myself, that’s just a few lines change.


[RFC] MYNEWT-430: Segger's SystemView working with Mynewt

Hi,
this PR adds support for SystemView. It introduces tracing API as an abstraction layer. To test this:

Download Segger's SystemView app from their website
Copy the description file from sys/sysview/SYSVIEW_Mynewt.txt to the /description/
directory of SystemView, e.g. "/opt/SEGGER/SystemView/Description/"
Build target with OS_SYSVIEW: 1
Launch app and start recording events

Comments are welcome
BR,
Michał

Hi, Marko.
Thanks for the comment. Removed unnecessary deletes.
BR,
Michał


fix(Accordion): always allow numeric activeIndex (#3192)

Cleans up the API a bit for Accordion, always allowing a numeric activeIndex prop instead of requiring an array when exclusive is true.
More information in #3192

Codecov Report

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

@@            Coverage Diff             @@
##           master    #3193      +/-   ##
==========================================
+ Coverage   99.92%   99.92%   +<.01%
==========================================
  Files         169      169
  Lines        2790     2803      +13
==========================================
+ Hits         2788     2801      +13
  Misses          2        2

Impacted Files
Coverage Δ

src/modules/Accordion/AccordionAccordion.js
100% <100%> (ø)
:arrow_up:

src/modules/Sidebar/Sidebar.js
100% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

@SimonKinds thank you, contributions are always welcome :+1:
However, my opinion that we don't need to these changes.

we have other places were is similar API, i.e. Drop-down
this change will make inconsistent onChange callback, you pass a number as value, but you will receive an array. It's will be more confusing than current API :cat:

Possibly, the better solution will be to add example of controlled Accordion with exclusive=false and some info messages to clarify the current API.
Please let me know what you think.
/cc @levithomason @brianespinosa

I hadn't considered the impact on the onChange callback, nice catch. With that in mind, I do agree that maybe it's better to keep the current behavior, but with a clear error message as well as well as an example of the behavior.
I gave the repository a quick look regarding how error messages are presented, and I feel as if having something similar to whatever is used in Dropdown is a good way of doing it for the Accordion as well.
    /* eslint-disable no-console */
    if (process.env.NODE_ENV !== 'production') {
      // in development, validate value type matches dropdown type
      const isNextValueArray = Array.isArray(nextProps.value)
      const hasValue = _.has(nextProps, 'value')

      if (hasValue && nextProps.multiple && !isNextValueArray) {
        console.error(
          'Dropdown `value` must be an array when `multiple` is set.' +
            ` Received type: \`${Object.prototype.toString.call(nextProps.value)}\`.`,
        )
      } else if (hasValue && !nextProps.multiple && isNextValueArray) {
        console.error(
          'Dropdown `value` must not be an array when `multiple` is not set.' +
            ' Either set `multiple={true}` or use a string or number value.',
        )
      }
    }

Feel free to close this PR if you see fit, and I can send another one with the updated documentation etc. if you believe that's the better way forward.

I gave the repository a quick look regarding how error messages are presented, and I feel as if having something similar to whatever is used in Dropdown is a good way of doing it for the Accordion as well.

Nice catch :+1: This will be very clear.

and I can send another one with the updated documentation etc.

Yes, sir, please :cat: I will close this PR and will wait for the new :+1:


Long running upload ingestion package loading bar

Background:
For ingestion packages with long "upload as ingestion package" load times there is currently no user feedback to show how long the process is expected to take. We would like a loading bar to show a % load completion during the "upload as ingestion package" process
Implementation Details:
Eclipse has a status bar for running process that we could use - or - log status on the console (interleaved with upload trace statements)

Note comments on PR need addressing (in the future)


runtime(vim): Update syntax file

Add new foreach() function.

Hmm, it cannot be generated?

Hmm, it cannot be generated?

There was something on github.
Here, if I'm not mistaken. The "generator" branch.

Yes, unfortunately I believe Charles is mostly inactive now and I don't know how the vim.vim syntax file has been generated.


tour design improves

(screens in telegram)
Please remove the highlight from the balance portion as we want to focus the user on the buttons only.
Please remove the highlight from the balance portion as we want to focus the user on the buttons only.
Please add a period here at the end if this sentence.
This tip runs off the page. Please fix.
Please narrow the highlight box on these buttons to only show the button and not so much white space.
Please change this to read: "That's it! Lets get started."
And just change the "next" button to say "close" instead.

сделал все кроме этого, кто разберется - молодец, я не смог

https://github.com/swaponline/MultiCurrencyWallet/issues/2878

https://github.com/swaponline/MultiCurrencyWallet/pull/2877


⚠ ClamAV has degraded performance

In 80cad52, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 473 ms

Resolved: ClamAV performance has improved in b49cbe6 after 6 minutes.


Publish to PyPi isn't working on releases

It appears as this script is not working properly:
https://github.com/NebraLtd/hm-pyhelper/blob/master/.github/workflows/publish-to-pypi.yml

I have a guess that the matter is in the version of the package.

Looks like this was a false error https://github.com/NebraLtd/hm-pyhelper/actions/runs/1253622149


Feature/create edit course improvements/instructor customizations

Checklist

[x] Server: I added multiple integration tests (Spring) related to the features
[x] Client: I translated all the newly inserted strings into German and English

Motivation and Context

This PR implements the point: Instructors should be able to specify the following customizations on course level from issue #1221
Description

Updated course table schema with 2 new columns: max_complaint_time_weeks & qna_enabled (column for max complaints is already there)
Added the options to customize in the create/update course page
Added server unittests for the new functionality
Tested from the frontend webapp

Please post a screenshot or screencast of the user interface

I fixed some problems of the PR, it should now be ready to merge. Would be great if we could get 2 more reviews! Thanks!

Thanks for the review:

Thanks 👍
The tutor dashboard is not enabled. I would expect that a course does not change this setting over time, however in case someone changes it, the existing complaints should still be visible in my opinion. So I think this would be ok.
Yes, this should always be checked in this component. We can move it inside the component


Add support for quarter?

Like:
Jan, Feb, Mar = 1
Apr, May, June = 2
and so on.
Given %Q is taken, perhaps %q?

I’m probably not doing to add any new features to this library; see #57.

I understand the rationale of #57 regarding the long-term future of this package. Nevertheless, Vega will depend on d3-time-format for some time to come (at minimum until version 6, given likely breaking changes when moving to a different formatting system). Moreover, including quarters is valuable in a number of visualization contexts (especially business / finance applications).
So, on the off chance that @mbostock is open to it, I've filed a PR (#58) for adding a %q directive for quarter of the year. Thanks for considering it!

Merged #58 and added parsing support for %q, too.


Empty requirements.txt file

I am trying to create a requirements.txt file for my project. Using --debug as argument, I can see that pyreqs is detecting the packages but it's not writing anything to the requirements.txt file. It is creating an empty file.
pipreqs Issue Video

same as @ashu-tosh-kumar
bro, Have you ever solve the problem?
At current dir,which has my python file,I used [pipreqs . --encoding=utf8 --force]
But the requirements.txt is empty

sorry it was my bad. python file forget to ad .py postfix. after added,it works normally

Hi, I didn't solve the problem. I will try adding .py as you mentioned.

Pipreqs currently does not attempt to open any file that is not a .py file. I will close this issue but feel free to reopen it if adding the .py extension hasn't solved the issue

I am trying to run Pipreqs in the powershell and under the directory where my python program (.py files) resides. I got a blank requirement.txt file.  Not sure what is the problem.  Anyone can advise..

facing the same issue , kept my file alone in the directory "creator"  and ran pipreqs 'creator' file was created but was blank!!!!!

same issue can u send me solution for this issue

I had the same issue. And I found out that pipreqs works differently than pip freeze. In order to generate Not an empty file with pipreqs command you should have some imports in your project's files, because pipreqs's looking only for modules that are directly used in a project. For instance, you've installed a bunch of libraries and in one of your .py file you have 'from selenium import webdriver' it will generate txt with selenium only.

im having the similar issue any inputs to solve the problem


[TA] clean for next pylint

API change check
APIView has identified API level changes in this PR and created following API reviews.
azure-ai-textanalytics

@l0lawrence since the CI is running a different version of the pylint-guidelines-checker right now it doesn't recognize this custom check name: https://dev.azure.com/azure-sdk/public/_build/results?buildId=2858201&view=logs&j=b70e5e73-bbb6-5567-0939-8415943fadb9&t=5da75d26-b661-5189-46a3-f9dd247b5d85&l=66
Do you think I should just blanket ignore here?


In my own dataset, why is the Avg precision always 0.5 in each epoch?

Hi yuan, in my own two-category data set training, the Avg precision in each epoch is 0.5, Recall is always 1, can you answer my question, the following is my result.
start validation
acc: 0.934211
AUC: 0.981920
Avg Precision: 0.500000
Avg Recall: 1.000000
d_prime: 2.962967
train_loss: 0.260971
valid_loss: 0.466797
validation finished
Epoch-2 lr: 1e-05

Have you tried other baselines? It seems the model is biased to one class (i.e., predict all samples as that class), which could be due to the model is not well-trained, or the data has some problem.


[BUG] Microsoft.Azure.Management.Websites 3.1.2 the resource group validation is not correct

Library name and version
Microsoft.Azure.Management.Websites 3.1.2
Describe the bug
Microsoft.Rest.ValidationException: 'resourceGroupName' does not match expected pattern '^[-\w._()]+[^.]$'.
The resource group such as s can be created on Azure but can't pass the validation and it throws error
Expected behavior
The exception shouldn't be thrown for a valid resource group
Actual behavior
Exception: Microsoft.Rest.ValidationException: 'resourceGroupName' does not match expected pattern '^[-\w._()]+[^.]$'.
at Microsoft.Azure.Management.WebSites.WebAppsOperations.***(String resourceGroupName, String name, Dictionary`2 customHeaders, CancellationToken cancellationToken)
at Microsoft.Azure.Management.WebSites.WebAppsOperationsExtensions.ListApplicationSettingsAsync(IWebAppsOperations operations, String resourceGroupName, String name, CancellationToken cancellationToken)
Reproduction Steps
create a resource group named s and a webapp in it,
then call await this._appClient.WebApps.ListApplicationSettingsAsync(resourceGroup, webAppName).ConfigureAwait(false); the error would be thrown
Environment
.NET SDK:
Version:   7.0.203
Commit:    5b005c19f5
Runtime Environment:
OS Name:     Windows
OS Version:  10.0.22621
OS Platform: Windows
RID:         win10-x64
Base Path:   C:\Program Files\dotnet\sdk\7.0.203
global.json file:
Not found

Hi @xfz11.  Thank you for reaching out and we regret that you're experiencing difficulties.  The Microsoft.Azure.Management.Websites package has been deprecated and is currently receiving only critical security fixes.  We would strongly recommend migrating to the current package, Azure.ResourceManager.AppService.   Migration assistance can be found in the management library migration guide.


List of documentation

Documentation
The following references can be used to assist in the development and running of AMPL on the PrecisionFDA (pFDA) platform:

PFDA.md
01_modac_client_run_model.ipynb
Makefile.md

Justin and Pinyi to review

I've updated the documentation as follows:

[x] Moved all images to be stored inside Git repo
[x] Updated docs to be consistent with newer start script
[x] Updated docs to show new jupyter URL
[x] Updated docs to show new snapshot
[x] Fixed some typos


demo isssue #216

Just used to demo issue #216
First commit : results in a passing pytest action, only the notebook fails
Second commit: all actions pass, even though no tests run
in the second commit, all tests could be failing. but because they are never run, the action still gets a green checkmark.
this is an issue..

@ckolbPTB @schuenke

If the tests are not run there are missing files but thy are only treated as warnings rather than errors:
File "/__w/mrpro/mrpro/./pytest.xml" doesn't exist
No content found in file "/__w/mrpro/mrpro/./pytest-coverage.txt"

If the tests are not run there are missing files but thy are only treated as warnings rather than errors: File "/__w/mrpro/mrpro/./pytest.xml" doesn't exist No content found in file "/__w/mrpro/mrpro/./pytest-coverage.txt"

IMO the step before ("Run PyTest) should already fail because of the ModuleNotFoundError. First google search wasn't helpful, but I will have a look.

I think I got it... the problem was that we piped together the pytest...  and tee pytest-coverage.txt command.
In general, when piping together several commands, the exit status of the pipeline is the exit status of the last command. In our case tee pytest-coverage.txt. If we want the pipeline to fail if any command fails, we need to use set -o pipefail.
I don't know why I had to specify that this step uses bash as shell, but might be required due to the docker container?! I dunno...
Anyway, I think it works as expected now.

can we try a 'normal' test error?
just making sure we still get a report if one of the tests fail..

can we try a 'normal' test error? just making sure we still get a report if one of the tests fail..

Good point. Actually it doesn't work as expected.
Maybe useful to fix this:

a failing test results in exit code 1
the import-error results in exit code 4

Maybe we can specify that we want the pipeline to fail only if exit code is > 1 ?

I now check for the existence of the pytest.xml file in an additional step after running pytest. This should do the job!
Wanna have a last look @fzimmermann89 ?

Looks reasonable. Let's see how it behaves in practice.


Make slack integration

Build slack bot, posting event registrations to channel.

@webknjaz this is definitely not the first thing to be done.

@webknjaz could you please describe more precise what does this bot should do.
(Like should it post every registration or only when some condition happened...)

Every registration, for the first time.


[BUG] Spelling Recieved -> Received

Describe the bug
Recieved -> Received
I usually come before E,
except after C,
Or when sounded as "a",
As in neighbor and weigh
But seizure and seize do what they please.

I checked most of the code base I think and found it in these 5 spots...
https://github.com/kercre123/wire-pod/blob/056b63397b8ac6efbf62a308075a803cf247abe0/chipper/pkg/servers/chipper/connectioncheck.go#L41
https://github.com/kercre123/wire-pod/blob/056b63397b8ac6efbf62a308075a803cf247abe0/chipper/pkg/servers/chipper/connectioncheck.go#L49
https://github.com/kercre123/wire-pod/blob/056b63397b8ac6efbf62a308075a803cf247abe0/chipper/pkg/wirepod/preqs/stream_houndify.go#L48
https://github.com/kercre123/wire-pod/blob/056b63397b8ac6efbf62a308075a803cf247abe0/chipper/pkg/wirepod/sdkapp/jdocspinger.go#L106
https://github.com/kercre123/wire-pod/blob/056b63397b8ac6efbf62a308075a803cf247abe0/chipper/pkg/wirepod/stt/houndify/Houndify.go#L78
Noticed it in this log I got:
Haven't recieved a conn check from 00###### in 15 seconds, will ping jdocs on next check
Broadcasting mDNS now (outside of timer loop)
Jdocs: Incoming ReadDocs request, Robot ID: vic:00######, Item(s) to return:
[doc_name:"vic.AppTokens"]
Successfully got jdocs from 00######

Fixed

Thank you


Cannot delete scripts

Even when I'm logged in as root or admin I'm unable to delete some scripts. I get the error "Script xxxx could not be deleted." I would think a super user can delete everything.

Currently even a super user cannot delete scripts that are used within a job.  To delete this particular script, you need to remove it from jobs or delete the jobs in which the script is used.
We are working on an improvement.

These particular scripts are not used in any job, but I am still unable to delete. Any ideas?

We will have a look into it. To address this issue, it would be helpful if you provide further information.
Which version of the OpenSpeedMonitor you are using?
Do you have any logs or stacktraces describing this issue that you are able to share?

Hi
I have a similar problem, but with more details.
I have been able to remove one of my old script, after de-attaching it from the job, however I have one last script that still resists. Here is the error I have :
Script HP desktop - no cookie could not be deleted due to at least one depending ArchivedScript
How do we manage the "ArchivedScript" ?

We have a history of wpt script versions implemented. Whenever you edit and save an existing script a new ArchivedScript is created. The old versions you can view and restore via  Version control button in script/edit view.
Obviously scripts with a history can't be deleted. We didn't really have the need for deleting old scripts so far.
We will have a look for the possibility to delete scripts without a Job reference, but a history.

I'm closing this issue as the comment of @nilskuhn points to a workaround to delete scripts.
Feel free to open it again if this is still a usecase for you.


Add more documentation: Fixed issue 89, point 8, original issue 556

Hi,
this is just a pr to update the README.
It adds a third party example to the list (with HAPI).
Regards.

Has anyone experience with HAPI? I can't review as I dod not used it yet

I think we should not merge this pull request and just close it.

Not maintained anymore (last published 3 years ago)
Readme refers to the old node-oauth2-server repository, not this one.


supports DigitalOcean Spaces?

[sorry for querying here]
I've been searching for some confirmation regarding applicability of carrierwave-aws with DO Spaces.
Given DO uses AWS underneath, it is a pretty valid assumption, but an assumption nonetheless.
Any information, confirmations, limitations to put forth?

@dvodvo Sorry, I have no idea. This gem builds entirely on aws-sdk, so if DO works with aws-sdk then it will work.

@dvodvo Sorry, I have no idea. This gem builds entirely on aws-sdk, so if DO works with aws-sdk then it will work.


handle mocking of classes that are not visible (private/protected) for wildmock

mocking a non visible class throws an unclear message. even worse: mocking a protected method just doesn't mock (but the underlying method on the class is called instead!)


Tracked expense unexpectedly reported on workspace

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.79-5
Reproducible in staging?: Needs Reproduction
Reproducible in production?: Needs reproduction
If this was caught on HybridApp, is this reproducible on New Expensify Standalone?:
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @neil-marcellini
Slack conversation (hyperlinked to channel name): quality
Action Performed:

Go to self DM on iOS Hybrid App
Create expense
Scan receipt
Enter description
Save
Choose do nothing for now
Wait for SmartScan to complete
View the expense on Mac Chrome

Expected Result:
The expense is tracked on my self DM and details are filled in my smart scan
Actual Result:
The expense shows with violations, (missing amount and category) submitted to my default group policy. The merchant is set to "Chronos time tracking @ 3.63 hours" which makes no sense, but for added context  did stop a Chronos timer just before this. On the selfDM there is an expense that shows with an loading skeleton permanently.
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Standalone
[ ] Android: HybridApp
[ ] Android: mWeb Chrome
[ ] iOS: Standalone
[x] iOS: HybridApp
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos

Add any screenshot/video evidence

onyx-state.txt
View all open jobs on GitHub

This has been labelled "Needs Reproduction". Follow the steps here: https://stackoverflowteams.com/c/expensify/questions/16989


lsp: Update example index with PRs not commits

Commits to main are protected and rejected.

See https://github.com/marketplace/actions/create-pull-request#action-inputs, I cannot test this until it's merged...

Fine to merge @charlieegan3 ... we'll just have to try until it works


Cannot get volume to work

Is the below code supposed to work? All it says in the docs is that the client cannot be set to speaking, which is why it sets speaking to false before changing the volume..
This kind of works but it only sets the volume when i play another file.

$vc->setSpeaking(false);
$vc->setVolume($volume);
$vc->setSpeaking(true);
$message->channel->sendMessage('Volume set to '.$volume.'%');

The volume cannot be changed when the song is already playing as it is set when the opus encoding has started. Possibly this is your issue? Otherwise, you are not catching errors from the promises which could have more information. Closing due to age.


decomp: mostly finish ogreboss

there was one function that inserted an odd go-to statement

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
5 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.005%) to 54.8%

Files with Coverage Reduction
New Missed Lines
%

goalc/debugger/Debugger.cpp
5
72.58%

Totals

Change from base Build<PHONE_NUMBER>:
-0.005%

Covered Lines:
40803

Relevant Lines:
74458

💛  - Coveralls


GROOVY-9598: account for static modifier when checking for outer members

https://issues.apache.org/jira/browse/GROOVY-9598

Merged. Thanks.


  This is confusing for new users.  We should either remove the outlines from these examples (since they don't show up anyway) or explicitly set the height to 0 so that ground primitives aren't used and the outline is shown.
@rahwang this might be a good low-hanging issue to work on.

This is true of our regular Geometry examples too, (i.e. Corridor).

Thanks for pointing this out, @mramato !


PayPal - Apple Pay

PHP Version: 8.2.0   | Shopware Version: <IP_ADDRESS>  | Affected area / extension: Extension:PayPal-Integration

Expected behaviour:
Apple Pay payment method can also be used in Chrome and Firefox
Actual behaviour:
Error if i choose "apple pay" e.g. Chrome
The selected payment method is not supported by your current browser. Please try another browser or select a different payment method.
How to reproduce:
Select Apple Pay as payment method in Chrome

[public] Shopware automated response: This issue is linked to the internal issue: PPI-1004
[created from PPI-1004, comment 503214]

The problem ist also in Shopware-Version <IP_ADDRESS>


Plan to remove Dein.vim GUI in v0.4.0

I added Dein.vim GUI experimentally at 0.3.0, but I'm planning to remove it because the design is not good and it is not used so much.

@akiyosi Will you be keeping the sidebar as it is (only without the dein.vim part), changing it in some form, or removing it entirely?

Hi,
I will remove activitybar and dein.vim GUI feature. so gonvim v0.4.0 only have file explorer feature in sidebar.


[db-restore] transaction-replay test exceeds 6hrs

The test exceeds 6 hrs and is terminated by CI, ex https://github.com/diem/diem/runs/2905672311?check_suite_focus=true
The problem is the amount the test is set to replay from the beginning.  This doesn't bode well for a growing chain. Can we update the test replay the last xxx versions instead?
2021-06-24T14:36:08.318434Z [main] INFO storage/backup/backup-cli/src/coordinators/restore.rs:97 Planned to restore to version 36600000.
...
2021-06-24T14:50:20.280657Z [main] INFO storage/backup/backup-cli/src/backup_types/transaction/restore.rs:228 Replaying transactions 1 to 100000.
3548
...
2021-06-24T19:59:48.748613Z [main] INFO storage/backup/backup-cli/src/backup_types/transaction/restore.rs:228 Replaying transactions 34000001 to 34100000.

Can we update the test replay the last xxx versions instead?

That sort of defeats the purpose of the test since then we won't be testing if we can replay all txns, only some. Of course if we decide we don't care about replaying all txns we can look at doing that.
I think the bigger issues is that a chain with zero traffic on it takes over 6 hours to replay

a chain with zero traffic

Well it's a chain of 14 TPS of block metadata txns. I guess @davidiw has a lot to say about that -_,-

Well it's a chain of 14 TPS of block metadata txns. I guess @davidiw has a lot to say about that -_,-

💩

I wonder if there's some way of fast forwarding through the block metadata txns. @msmouse ?

@davidiw  Remember the point of this test is to go through every transaction with the VM and DB to check compatibility. Otherwise you fast forward by skipping running everything before the latest state snapshot.

@msmouse The bulk of it are metadata txns, and I haven't yet realized what we would gain incrementally by going all of them. At some point down the road, we might have breaking changes and the test would become time bounded.  I think we would want to know the compatibility from now to t-x version in published waypoint.
On a related note, how often is the snapshot taken? I wonder if we can use some of induction proof and replay x versions from each of these snapshots.

@davidiw I do have fast forward mode in my mind that skips writing to db the intermediate state between endings of txn chunks, for the state-sync initial catch up, where the historical state is most probably just a waste to be pruned very soon. It saves DB committing time, but not VM execution time though. But distinguishing normal transactions and metadata transactions is not part of that thought.
@davidiw @sausagee @bmwill  1. Doing this less frequently does make  sense to me. 2. Verifying chunks of the history (divided by state snapshots) in parallel is doable. 3. as a special case of 2, yeah you can verify any of the chunks as you like, including the chunk between the latest snapshot and the latest latest.

If we're really interested in the needle in the haystack, we could create a weekly job that actually does the entire replay.

I'm fine with move this job from nightly to weekly.


refactor(matcher): add a more constrained version of the Matcher type

What?
introduce a more constrained version of Matcher
Why?
This will allow us to be more specific when we can
How?
By making Matcher generic and introducing AnyMatcher, which is basically the old Matcher

Codecov Report
Base: 97.82% // Head: 97.82% // No change to project coverage :thumbsup:

Coverage data is based on head (74879b0) compared to base (f54bf01).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #61   +/-   ##
=======================================
  Coverage   97.82%   97.82%
=======================================
  Files           8        8
  Lines         920      920
=======================================
  Hits          900      900
  Misses         14       14
  Partials        6        6

Impacted Files
Coverage Δ

generic.go
100.00% <100.00%> (ø)

kv/collection.go
98.37% <100.00%> (ø)

kv/ordered/collection.go
95.21% <100.00%> (ø)

matcher.go
93.75% <100.00%> (ø)

slice/collection.go
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Repl inputs not being written to its history

This happens on v0.7.13 also.
How to reproduce:
module Ch13 where

import Control.Monad
import System.IO (hSetBuffering, stdout, BufferMode(..))
import System.Exit (exitSuccess)
import Data.Char (isLetter, toLower)

-- Madam I’m Adam,

palindrome :: IO ()
palindrome = do
  hSetBuffering stdout NoBuffering
  forever $ do
    line <- getLine
    if isPalindrome line
      then do
        putStrLn "It's a palindrome!"
        exitSuccess
      else putStrLn "Nope!"

isPalindrome :: String -> Bool
isPalindrome s = sm == reverse sm
  where
    sm = toLower <$> filter isLetter s

Load the module in the repl with :l
Type palindrome and
Type anything. Whatever you typed will not be written to the REPL history. If the Interrupts current computation button is pressed then the strings typed will appear in the history.
Expected behavior (repl run from terminal):

*Ch13> palindrome
qwe
Nope!
nqwejbqwe
Nope!
Madam I'm Adam
It's a palindrome!
*** Exception: ExitSuccess

Extra note, when interrupting, in the Repl tab it is printed:

Interrupted.
Variable not in scope: quehquehiquehiwe

So it appears that the Repl was treating the palindrome program input as input to the Repl itself and there was no variable named quehquehiquehiwe
This works as intended if run directly from GHCI.
Ref: https://github.com/atom-haskell/ide-haskell-repl/issues/61

I thought I explained caveats and limitations well enough, but here's a gif

@lierdakil I did read the caveats and limitations.
In my test I did press enter to send a newline before pressing shift + enter and it still did not work.
I don't get how it is working on your machine.

Are you on Windows by any chance? If so, could you run a quick test?

Open REPL
Run palindrome or whatever, getLine will do.
Open developer console (View → Developer → Toggle Developer Tools → Console tab or something similar)
Paste and run the following snippet:document.querySelector('atom-text-editor.ide-haskell-repl').getModel().setText('asd\r\n'); atom.commands.dispatch(document.querySelector('atom-text-editor.ide-haskell-repl'), 'ide-haskell-repl:exec-command');

See if asd shows up in repl output

I am on NixOS, Linux.
Following the instructions asd appears in Repl and Nope! after it.

Getting quite a few warnings from when Atom is started in the dev console:

IntersectionObserver.observe(target): target element is not a descendant of root.
TreeView @ :121025
/home/neo/.atom/packages/haskell-ghc-mod/lib/util.js:43 haskell-ghc-mod warning: Reading cabal sandbox config failed with  Error: ENOENT: no such file or directory, open '/home/neo/HaskellLearning/IdeTest/cabal.sandbox.config'
warn @ /home/neo/.atom/packages/haskell-ghc-mod/lib/util.js:43
/home/neo/.atom/packages/haskell-ghc-mod/lib/util.js:43 haskell-ghc-mod warning: No cabal sandbox found
warn @ /home/neo/.atom/packages/haskell-ghc-mod/lib/util.js:43
4/home/neo/.atom/packages/haskell-ghc-mod/lib/util.js:43 haskell-ghc-mod warning: Warning: 'dist/setup-config' exists, ignoring Stack project
on the commandline: warning:
-package-conf=/home/neo/.ghc-mod/cabal-helper/Cabal-<IP_ADDRESS>-db-8.0.2 is deprecated: Use -package-db instead
[1 of 5] Compiling CabalHelper.Types ( CabalHelper/Types.hs, /home/neo/.ghc-mod/cabal-helper/CabalHelper/Types.o )
[2 of 5] Compiling CabalHelper.Sandbox ( CabalHelper/Sandbox.hs, /home/neo/.ghc-mod/cabal-helper/CabalHelper/Sandbox.o )
[3 of 5] Compiling CabalHelper.Licenses ( CabalHelper/Licenses.hs, /home/neo/.ghc-mod/cabal-helper/CabalHelper/Licenses.o )
CabalHelper/Licenses.hs:56:8: error:
• Expecting one more argument to ‘CPackageIndex ModuleName’
Expected a type, but ‘CPackageIndex ModuleName’ has kind ‘* -> *’
• In the type signature:
findTransitiveDependencies :: CPackageIndex ModuleName
-> Set CInstalledPackageId -> Set CInstalledPackageId
on the commandline: warning:
-package-conf=/home/neo/.ghc-mod/cabal-helper/Cabal-<IP_ADDRESS>-db-8.0.2 is deprecated: Use -package-db instead
[1 of 5] Compiling CabalHelper.Types ( CabalHelper/Types.hs, /home/neo/.ghc-mod/cabal-helper/CabalHelper/Types.o )
[2 of 5] Compiling CabalHelper.Sandbox ( CabalHelper/Sandbox.hs, /home/neo/.ghc-mod/cabal-helper/CabalHelper/Sandbox.o )
[3 of 5] Compiling CabalHelper.Licenses ( CabalHelper/Licenses.hs, /home/neo/.ghc-mod/cabal-helper/CabalHelper/Licenses.o )
CabalHelper/Licenses.hs:56:8: error:
• Expecting one more argument to ‘CPackageIndex ModuleName’
Expected a type, but ‘CPackageIndex ModuleName’ has kind ‘* -> *’
• In the type signature:
findTransitiveDependencies :: CPackageIndex ModuleName
-> Set CInstalledPackageId -> Set CInstalledPackageId
EXCEPTION: browse:
readCreateProcess: /nix/store/07wnp40jsxzavj5n31ld2n1536w87spa-cabal-helper-<IP_ADDRESS>/libexec/x86_64-linux-ghc-8.0.2/cabal-helper-<IP_ADDRESS>/cabal-helper-wrapper "--with-ghc=ghc" "--with-ghc-pkg=ghc-pkg" "--with-cabal=cabal" "/home/neo/HaskellLearning/IdeTest" "/home/neo/HaskellLearning/IdeTest/dist" "package-db-stack" "entrypoints" "source-dirs" "ghc-options" "ghc-src-options" "ghc-pkg-options" "ghc-merged-pkg-options" "ghc-lang-options" "licenses" "flags" "config-flags" "non-default-config-flags" "compiler-version" (exit 1): failed
warn @ /home/neo/.atom/packages/haskell-ghc-mod/lib/util.js:43

But not getting any errors/warnings when doing palindrome test with extra new line for inputs. Not even after pressing interrupt and the inputs get shown.

Well, ghc-mod is apparently broken because it can't handle Cabal 2. Also a good chance your ghc package database is broken since you don't use sandboxes apparently (run ghc-pkg check to check for broken packages, haddock warnings are safe to ignore). These warnings are not relevant to the problem at hand though.
I'm pretty sure getLine on Linux only looks for LF (\n) and doesn't care about CR (\r).
Can you run the same test but use this snippet instead:
document.querySelector('atom-text-editor.ide-haskell-repl').getModel().setText('asd\n'); atom.commands.dispatch(document.querySelector('atom-text-editor.ide-haskell-repl'), 'ide-haskell-repl:exec-command');

?

[neo@nixos:~/HaskellLearning/IdeTest]$ ghc-pkg check
Warning: haddock-interfaces: /nix/store/rykisz7fl7lyaqzbhp9n0fdh57aqdf9v-fail-<IP_ADDRESS>/share/doc/x86_64-linux-ghc-8.0.2/fail-<IP_ADDRESS>/html/fail.haddock doesn't exist or isn't a file
Warning: haddock-html: /nix/store/rykisz7fl7lyaqzbhp9n0fdh57aqdf9v-fail-<IP_ADDRESS>/share/doc/x86_64-linux-ghc-8.0.2/fail-<IP_ADDRESS>/html doesn't exist or isn't a directory
Warning: haddock-interfaces: /nix/store/jvl5i3pffs56r3k9w0wan9sh3pnwjmxy-either-<IP_ADDRESS>/share/doc/x86_64-linux-ghc-8.0.2/either-<IP_ADDRESS>/html/either.haddock doesn't exist or isn't a file
Warning: haddock-html: /nix/store/jvl5i3pffs56r3k9w0wan9sh3pnwjmxy-either-<IP_ADDRESS>/share/doc/x86_64-linux-ghc-8.0.2/either-<IP_ADDRESS>/html doesn't exist or isn't a directory

I deleted the dist folder since I'm actually using stack for the build.

I run the test with the new snippet and it also prints asd in the repl and Nope!

Which is actually really strange, because the second snippet is equivalent to:

Removing all text from ide-haskell-repl input box
Writing asd
Pressing 'enter'
Pressing 'shift+enter'

modulo redefined keybindings

Any updates? Is this still relevant?

Tested with 0.7.15, the issue is still happening.
I think this is relevant since it changes GHCI behavior in a commonly used case.

My point is: it's entirely unclear why. I can not reproduce this on my end, and when running controlled tests via code, the issue doesn't manifest on your end either. So... if you could provide any insight, that would be nice. Otherwise, I don't know what I could possibly do about this.

I tracked down the issue to: https://github.com/atom-haskell/ide-haskell-repl/blob/master/src/views/ide-haskell-repl-view.tsx#L93
When the test is run via command line this.ghci.isBusy() returns true and the stdin program input is printed correctly.
When run by typing manually asa  the value of this.ghci.isBusy() is false.

Ah, of course, now it makes sense. Thank you! I'll try to cook up a fix in a bit.

@lierdakil Awesome, thank you! Quite curious to see what the issue was. I've been investigating for quite some time.

The root of the issue is the package attempts to send autocompletion requests for stdin input. Which is obviously pointless, but what's worse, messes up isBusy logic.
And the reason why I couldn't reproduce on my end is that I have autocomplete-plus option 'Show Suggestions On Keystroke' disabled.

Still weird that no one else run into this issue yet

Not many people use ide-haskell-repl (when compared to ide-haskell itself), and I imagine even fewer use stdin for input. I personally prefer passing string arguments to functions instead of fumbling with getLine -- for one, most functions don't live in IO in the first place.
On a brighter note, v0.7.16 is up :tada:, which should fix this issue (and a few other potential race conditions similar to this one). Let me know if it works for you.
I also added a small busy indicator near prompt while at it:

(in the upper left corner)
Again, thanks for your help!

Thank you! It works fine on the latest version.


bad checksum; testing travis script- do not merge

leaving this open as an example for https://github.com/travis-ci/travis-ci/issues/5133


BUG in TailCalibX.py

in TailCalibX.py, it inherit the generate_points(self) function, but in that, it cant generate featrue and store for multi-time:

@Z-ZHHH Thanks for pointing it out. It's fixed now.


Individual RM not considered in additional constructor

Hi and thanks a lot for this great library!
I wondered about the following behavior that contradicts the example from the doc's FAQ section. Shouldn't it be possible to set RM individually on an additional constructor. Seems like Big's RM is used when no rm is set for methods like toFixed and round.
const Big = require('big.js');

// additional constructor
const X = Big();
X.NE = -10;
X.RM = 0;

const x1 = X('7.55');
console.log(x1.toFixed(1)); // expected 7.5 but is 7.6?
console.log(x1.toFixed(1, 0)); // correct

const x2 = X('0.00000000888');
console.log(x2.toString()); // correct

// main constructor
Big.NE = -10;
Big.RM = 0;
const b1 = Big('7.55');
console.log(b1.toFixed(1)); // correct (7.5)

const b2 = Big('0.00000000888');
console.log(b2.toString()); // correct

// additional constructor again
console.log(x1.toFixed(1)); // now also correct (7.5) after we set Big.RM

Also I got a bit confused while trying around because of the docs for RM. Isn't it Big.roundDown instead of Big.roundUp and vice versa in the first column of the table?

😲
Fixed in v6.1.1. Thanks a lot!
The bug was introduced in v6.0.0 when I refactored a PR that added a rounding mode parameter to toFixed etc.
And thanks also for noticing the mistake in the rounding mode documentation. How could that happen? I blame git.
Muchas gracias.

Great! Thanks a lot too! Happy to hear that I could help!


wb fill possible memory retention issue

Server: Windows 10 Pro x64
Hosted: locally, I manage on my servers.
PaperSpigot: 1.14.4 builds 207 and 209 (haven't tried earlier builds)
WorldBorder: 1.9.10
Dynmap: Dynmap-3.0-beta-6-spigot.jar
Plugins
latest.log file showing all exceptions and startup
Java: 1.8.0_202
PaperSpigot Server RAM: 4GB + MetaspaceSize=1024m MaxMetaspaceSize=2048m
Issue: from console, I initiated the wb fill pillagers 20 208 true and while the fill was going through the chunks in the center (spawn) over time it started having memory and thread dumps.
The wb fill behaves as if the chuck has been loaded and completes the process, but are not releasing (all or some) of the memory once done.  Ultimately it runs out, we get a thread dump and it starts up again - but it keeps going thru the same cycle of holding memory without releasing.  In the attached log about line 4001 you'll see the memory floating up/down until about row 7500 and from there it drops further until the dump is written when getting to 163MB free at line 7767.  It gets worse from that point on until I stop the server, restart and then it repeats again.
Additional info: I did run dynmap fullrender first and it completed fine.  Setup the border and shape in worldborder and tried to just use wb fill pillagers without the force=true and it would not fill the inside.  Only with the force=true did it start writing to dynmap. If you need anything further, do let me know.
Not sure if this has to do with the new chuckloading that was introduced in 1.14.4 or problems with paperspigot - though the log says it is not.  So, starting here and if we need to pull in the Paper guys, we can.  Thanks!! --Steve

Sorry, the startup was cut off due to how many lines was written.  Here is a the startup info.


Add Design file link and fix broken link on Media-and-outreach folder

Problem: There is no section for Design files in the Brand Style guide document, and there is also a broken link on "logos"
Solution:

Add a short section for Design files under "Project Name and Logos" pointing to this drive link: https://drive.google.com/drive/folders/1Ew4EEKmX5A4-4xjgSWvX-g1NwLKM-4s6?usp=sharing
Change the broken link to point to this link: https://github.com/chaoss/website/tree/main/About/Media

If you have any questions, feel free to ask @Ruth-ikegah

Hi @Ruth-ikegah Please, assign this to me

sure! I just assigned it to you @LamiWilliams

Hi @LamiWilliams are you working on this issue..

Hello @Adityasaini10012001 Yes, I am


Make Function a subclass of Graph?

Functions are similar enough with graphs that we should just make them Graph?

Graph has attributes that a function does not have, so we cannot call function a subclass of graph.


nextest musl host install is broken

Before: https://github.com/PyO3/maturin/actions/runs/3640263333/jobs/6144701047
Now: https://github.com/PyO3/maturin/actions/runs/3667239167/jobs/6199567442
info: installing nextest@latest
info: downloading https://get.nexte.st/latest/linux
info: nextest installed at /usr/local/bin/cargo-nextest
+ cargo nextest --version
error: could not execute process `/usr/local/bin/cargo-nextest nextest --version` (never executed)

Caused by:
  No such file or directory (os error 2)

It wrongly installed the GNU version.

Fixed in 1.15.3 (reverted musl-related changes between 1.15.1 and 1.15.2). Thanks for the report!

(And, I added a regression test to CI by #31, so this kind of breakage should not happen in the future.)


Some icons have incorrect outlines and have background fills

I put the svg "outline" style icons against a dark background and used CSS to override the fill property of the paths, this led me to discover some issues.
I believe icons should look like this (on my dark background with red fill color):

but some look like this, which means they weren't correctly converted to outlines:

Several others have white backgrounds in the SVG

Last, these two blister pill icons have some issues:

I would be happy to fix these but I think it has to happen on the Figma file so that future exports are correct. I've requested access to the file on Figma

One other, this oral contraceptive icon has an issue:

Here's a list of all the icons I've found with issues (I've only checked the 'outline' style)
Misc

Oral Contraceptive 28 (fill only affects outer edge)
Blister Pills Round x16 (altering fill color replaces entire icon)
Blister Pills Round x14 (uses opacity effects)
Rural Clinic (opacity issue)

Contains non-outlined strokes:

Exam
Animal Donkey
Warning
Social Distancing
Activity Run (head is correct, body is not)

has white background shape:

Wheelchair
Ventilator
Quarantine Home
Calendar Quarantine
Social Distancing ALT
Intestinal Pain
Shield Virus
Syringe Vaccine
Virus ALT
Patient Virus
Global Pandemic
Globe
Chart Cured Decreasing
Chart Cured Increasing
Chart Death Rate Decreasing
Chart Death Rate Increasing
Chart Death Rate Stable
Chart Infected Decreasing
Chart Infected Increasing
Chart Infected Stable
Virus Mutation
Dental Hygiene
PPE Sanitizer ALT
Nose
Loss of Smell
Viral Lung Infection
PPE Face Shield ALT
PPE Virus Sanitizer Spray
Virus Research ALT
Virus Research
Virus Lab Research
Virus Lab Research ALT
Liver ALT

I made an app that displays all the SVG icons with customizable fill and stroke colors, this helps to discover icons with problems easily: https://priceless-fermi-4bf406.netlify.app/

I found similar, like this one: https://github.com/resolvetosavelives/healthicons/blob/main/public/icons/svg/negative/emotions/nervous.svg

This seems to be fixed. I will create a separate ticket for (negative) "nervous" icon (all paths have the same color)

This seems to be fixed

When I looked at the Figma file, they seem to be correct there, is that what you mean? Or have they already been updated in the export by someone?

The actual files were updated. This issue should be closed (as well as others). Unfortunately, this repo doesn't do releases, so I am using it as a git submodule. Another issue I opened has not yet been fixed: https://github.com/resolvetosavelives/healthicons/issues/151
Unfortunately, it has the wrong tag and I cannot remove it.

OMG - this is such an old issue. Sorry everyone! The colors have been normalized for a while, but we've now also updated them to be much easier to override the colors using the currentColor CSS feature. We've also removed white backgrounds to make them transparent.
You can now do this:
svg {
 background: #123abc;
 color: #abc123;
}

Thanks @troccoli for brining it to our attention!


confusion about self_pipe

I've read your code carefully recent days,learning your program skills.  But I'm confused about the role of self_pipe in class io_service. How does it work?

Hi,
Thanks for your interest in tacopie :)
The purpose of the self_pipe is to wake up the select polling call.
Indeed, in the io_service, I call select() (for example, here).
select will poll the given file descriptors (fds) sets for reading and writing events and will wake up whenever an event occurs (socket is readable or writable) or whenever the given timeout has expired.
However, I decided to set a NULL timeout when calling select.
From the documentation If timeout is a nil pointer, the select blocks indefinitely..
What is the benefit of setting an unlimited timeout?
Well, first it saves some CPU usage: if no event occurs during 5mn, your program will stay inactive during these 5mn without consuming any CPU power.
Second, if you want to modify the fd sets, you don't need to wait for the timeout to expire so that it refresh the list of sockets to poll. This can be a real struggle because if you set a too low timeout, your program will consume a lot the CPU for nothing 99% of the time, but if you set a too high timeout, then your program might be a bit slow to listen to read or write availability when we want to poll a new socket.
But if we have an unlimited timeout, this means that our select only wakes up if a socket is available for reading or writing!
So what if we want to poll a new socket? What if we want to stop polling one socket?
We need to be able to wake up the select call instantly.
One way to do it is mostly to use the self-pipe trick.
The principle is simple:

you create a pipe
you listen for read availability on one side of the pipe
when you want to wake your select call, you write on the other side of the pipe
magic: select wakes up and notify you that the first side of the select has some bytes that can be read!

You can see that basically, I use the self-pipe trick anytime I need to wake-up select due to some external changes:

when I want to turn off the io_service
when I complete the execution of a read/write callback (indeed, some actions done in the callback might have modified the state of the socket, like doing async_read, async_write or simply disconnect: we need to wake up select to reflect these changes).
whenever I track/untrack a socket or listen to new types of event

Hope this makes the self-pipe part of the code more clear for you :)
Do not hesitate to let me know if you have any other questions.
Best!


Add eligibility helpers

Changes:

Add eligibility.js utils for parsing and checking eligibility
Make account.profiles computed to allow transformation into a genuine Ember.Object subclass
Add 'age' computed to Profile class

Pass complete. There are a few places we can simplify the lgoic, which I'd recommend before merge if possible.
Although I'm a bit leery about the custom DSL, it's probably what we need to move forward for now. Thanks for the documentation! (including where the custom units are drawn from; very helpful)


[UPD]

updated pitch

👷 Deploy Preview for cerulean-blini-883dc7 processing.

Name
Link

🔨 Latest commit
db981d0ce2ffb0bf3f18cc0eef7aa974b8e049e8

🔍 Latest deploy log
https://app.netlify.com/sites/cerulean-blini-883dc7/deploys/625b2f7b07faff00084d92f0


feat/integration tests

Add a new integration test framework
openapi3: Port integration test into correct package
tocss: Port integration tests to their package
templates: Port integration test to its package
minifier: Port integration tests to its package
postcss: Move integration test to its own package
js: Port integration tests to its own package
babel: Port integration tests to their own package

/cc @jmooring I have had this living in another branch, will wrap it up and merge it later -- but one benefit of this is that we can add small integration tests in the package where they belnong (ref. your template bug report).


add DecodeContent options for bodyReader

give the Consumer the option to decide if the http payload should be transparently decoded or not
and what to do with unknown encodings.
supersedes https://github.com/rejectedsoftware/vibe.d/pull/1477

rebase please

Needs refactoring.
s-ludwig ╡  I think it needs two changes: decodeContent shouldn't be a
         ╡ parameter for bodyReader, as it will oly have an effect on the first call, which may be unexpected, and there must be some kind of indication to the user if the result
         ╡ is decoded or not.

So my proposal for the first issue would be to simply add a method setContentDecodeMode (I'd also call the enum accordingly). For determining if decoding is effective, I'm not yet sure.
The obvious solution would be to add a property isContentDecoded. This would have to be determined up front, before the first call to bodyReader and after each call to setContentDecodeMode to reduce the risk of usage mistakes. Using a special return type for bodyReader instead of a plain InputStream would be another possibility, and has the advantage that there would still be only one place to determine how to decode. However, any additional runtime overhead must be avoided.