fix(trello): Fix Trello integration after UI updates

Please remember the Contributing Guidelines :heart:
:star2: What does this PR do?

Fixes Trello integration. Some subtle UI updates had broken it.
Make it not completely error out if the UI has changed again. We'll still of course hear about it not pulling in information if it breaks, but at least it will function.

:bug: Recommendations for testing
All changes should be tested across Chrome and Firefox.
Please take care that it does work for all cards, and checklist items. Use the Toggl Button Project project.

:memo: Links to relevant issues or information

Closes #1476 and closes #1449

👌 pushed a fix @bryanph


Left app pane background Acrylic not working

When app is expanded, the left panes are supposed to have background Acrylic, except they are all just grey. Please fix.

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

ID: c9faf87c-bd56-99da-70ed-07c68f9118a5
Version Independent ID: 713b5c24-d710-303f-620e-9c7735797907
Content: Acrylic material - Windows UWP applications
Content Source: windows-apps-src/design/style/acrylic.md
Product: uwp
Technology: design
GitHub Login: @mijacobs
Microsoft Alias: mijacobs

This was an intentional change, always-expanded NavigationView no longer uses acrylic. That is reserved for "transient" UI, so only the compact/minimal pane flyout will use acrylic.

Why? Why do you add beauty and then remove it? It looked nice and was nice how it switched between background and in app Acrylic. Why did you remove it?

@carmellolb  – thank you for taking the time to provide feedback. Although I agree that NavigationView’s pane with background acrylic looked beautiful, we strive to implement the default styles of XAML controls with more than just aesthetics in mind. The goal of the Fluent Design System is to provide thoughtful, coherent guidelines applicable to all of Microsoft’s controls libraries. We want to ensure that acrylic, when applied within the Fluent framework, is used purposefully and intentionally. As Fluent continued to evolve, we came to the realization that, thanks to its translucent qualities, acrylic’s most effective usage is in providing a visual bridge between layers of app UI. When NavigationView’s pane is placed side-by-side with the app content, this visual bridge is unnecessary and is in fact distracting because the acrylic invites unrelated content to shine through. To uphold the Fluent principles and ensure that the design system’s guidance about acrylic remained coherent for all app developers, we felt it was necessary to remove the background acrylic from NavigationView’s expanded pane and avoid implementing a style contradictory to acrylic best practices.

I understand what you are saying, but I think that aesthetics should also be important, and rather they seem to be being put aside and neglected, and therefore the apps’ designs are now looking more on the not so nice side. I understand what you are saying, but in my opinion, and in a a lot of other people’s opinions, it wasn’t, and it actually provided context, and showed that the menu had important controls. The plain gray rather lacks that importance, and has a very unappealing look that defies the beauty that you guys seemed to be striving for with Fluent Design, and the early concepts. I just hope you will reconsider, as the Acrylic on those panels was a pretty important component of Fluent Design for me, and many others.

@carmellolb @YuliKl
Unfortunately, I think MS was put off by cases like this:

where the colorful acrylic background could indeed unwantingly steel away attention from both the navigation pane content and other app content.
I do agree with @carmellolb though, the current uniform grey background really doesn't look visually appealing at all, especially if you consider these two examples:

With Acrylic background:

Especially in this case the point of "the acrylic invites unrelated content to shine through [and thus becomes distracting]" doesn't apply for me because the background - thanks to the colors - really is just subtle. It looks good (way better than just plain gray) and isn't distracting at all.
Following below is my overall thought about the Fluent Design/Win 10 Design Language:
Overall, I wish the Fluent Design team would establish a straight back-and-forth dialogue with the target platform users and don't just come and decide stuff we the users can't really avoid in the end (or just with additional work). Best example would be the recent rounded-corners push (apparently making rounded corners the new standard). Why not make that thought process open-source on github too? Instead, we just got MS seemingly pushing through without giving its users much of a chance to respond to such massive UI changes.
A good example for how I'd envision such a conversation can actually be found in this repo: https://github.com/microsoft/microsoft-ui-xaml/issues/242 A MS employee proposed a design idea and isneatd of just going ahead of it (and then gather consumer input after release), users had the chance to give ideas and state their objections which ultimately put the original design idea on hold (and give the OP a chance to refine the proposal based on that feedback.)
Instead, what we get are official MS controls (this very issue case) and even official MS Win10 apps (Settings) using acrylic background when suddenly that design is declared deprecated with little to no notice. What's next? Someone at MS pushing the switch 6 months later telling us acrylic background is the deal again?
Fluent Design needs to be developed by MS with the community together, not behind some closed-doors to which the average consumer has no access to. Why not open a github repository for the Fluent Design system? Why not give users a chance communicate directly with the Design Team? Why not give the user the chance to influence the Fluent Design system?

Best example would be the recent rounded-corners push (apparently making rounded corners the new standard). Why not make that thought process open-source on github too?

https://github.com/microsoft/microsoft-ui-xaml/issues/524

Why not give users a chance to communicate directly with the Design Team?

https://www.microsoft.com/design/fluent/#/
That conversation is primarily taking place on LinkedIn: https://www.linkedin.com/groups/13529340/

@YuliKl @chigy I saw that proposal but I'm under the impression the Fluet Design (FD) team already decided to went ahead with their plans anyway. My point was about bringing the user into the discussion of design changes before the general direction is decided, and not once it is finalized. Correct me if I'm wrong, but am I correct in assumig the FD team (and now the WinUI team) is already busy implementing rounded corners as the standard look for the WinUI controls?
As for that LinkedIn link: MS has designated github as their go-to platform for feedback these days. Take the Calculator and Terminal apps for example. User feedback on them is gathered on Github, not on linkedin or somewhere else. So if a user has a suggestion about UI for those apps, he will use Github. Those apps however are part of Windows 10 and need to follow guidelines the FD team has been setting up. So, if that user suggestion touches those guidelines, the communication basically dies on github, because the app team cannot work on that suggestion and the FD team cannot be found on Github.
Instead, the discussion takes place somewhere entirely else - on LinkedIn, far from the place where users engage with the MS teams working on Win10 apps.
That's just not good in my opinion.
Another example: You, @YuliKl said in this issue that this repo is the place to use for raising issues. Then you say the FD conversation is taking place on LinkedIn and you say "We'll work with the Fluent design team". So basically you are acting like a middle-man who relays our suggestions to the actual design team.
What is keeping you guys from bringing the FD team to open a github repository and start the conversation there? Your interested audience already is here on github and especially in this very repository so we could finally have a direct communication with the team.

Why get rid of the effect altogether? Why not just introduce a less transparent version of Acrylic for use in supporting UI instead that's less distracting without looking, for lack of better terms, crude and unfinished? That way, you can satisfy both camps; it keeps the UI looking great while improving content legibility. Flat out removing the effect is just throwing the baby out with the bath water.
People lobbied for acrylic effects hard because they don't like the block-colour look. I anticipate some very strongly worded protests if this regression gets applied to more common apps like Settings 😕

Why get rid of the effect altogether? Why not just introduce a less transparent version of Acrylic for use in supporting UI instead that's less distracting without looking, for lack of better terms, crude and unfinished? That way, you can satisfy both camps; it keeps the UI looking great while improving content legibility. Flat out removing the effect is just throwing the baby out with the bath water.
People lobbied for acrylic effects hard because they don't like the block-colour look. I anticipate some very strongly worded protests if this regression gets applied to more common apps like Settings 😕

Yes, I completely agree. Microsoft just doesn’t seem to carefully about users’ opinions and instead is taking the all or nothing approach and is reverting the design back to pre-Fluent. It is a shame. I hope they reconsider.

Any news on this issue? I’m still opening apps like Feedback Hub and Your Phone almost daily, every time hoping that I’ll see BG acrylic on the sidebar. Yet it never comes. Is there any sort of progress going on with this issue? @YuliKl @chigy

Thank you for the ping. I added a comment to https://github.com/microsoft/microsoft-ui-xaml/issues/947 about a proposed color change.

Rather than remove Acrylic altogether, why not implement a less Transparent opacity version by default?

Tell me, is there a way to apply acrylic blur to an existing window? Just as the old DwmEnableBlurBehindWindow function worked.

You can use an Acrylic Brush resource as a Background colour.

Show an example please and screen of this window

When you are developing your own apps, you can use the brush resource for the page background
ThemeResource SystemControlAcrylicWindowBrush

This is not what I asked. I want to apply the blur to the already created UWP windows. For example, apply blur to the Settings Window

Someone, people, which of you can make this window completely transparent ?? How is this even possible or impossible? What is required for this?

This is not what I asked. I want to apply the blur to the already created UWP windows. For example, apply blur to the Settings Window

You can't.
It is for the app developer to decide how their apps look.  Modifying an existing app would be a security risk, and would break the app.

We could use the DwmEnableBlurBehindWindow function before, it was safe and did not cause breakdowns. I would like to get an alternative to this feature today. The question was precisely this - is it possible ?? Is it possible to implement this without interfering with applications?


docs: allow static example

Summary
Right now we don't have to possibility to expose static code example in the documentation. We always have the run button in header preview. For some cases it might be interesting to support static code example (e.g. GeoSearch - we don't want to load Leaflet in the page just for the connector example).
This PR adds a new JSDoc annotation called @staticExample to allow this kind of example. This annotation behaves the same way as @example, except that the example won't have the run button.
Note that for now we don't support both example types at the same time. It works but the structure of the HTML page will be a bit weird since we duplicate the h2. We can probably merge them into only one, but lets interate on that when the needs occur.
fixes #2694

misc is not allowed by our commit linting, FYI 😄

All right, will rebase that.... Thanks!

@samouss don't bother updating the commits 👍


Undocumented CONTINUOUS_INTEGRATION envvar

CONTINUOUS_INTEGRATION—what is it? Looks like a boolean value based on its usage (through configTest.reporter) here.
Current behavior

https://github.com/cfpb/cfgov-refresh/blob/master/gulp/config.js#L42 attempts to access envvar CONTINUOUS_INTEGRATION, which is not set in .env_SAMPLE.

Expected behavior

All envvars referenced in the codebase should appear in .env_SAMPLE.

Appears only in gulp config.js. It certainly looks like a boolean to my eyes (based on comment eslint-disable-line no-process-env) but I am not sure. Can someone verify this so I can fix the issue, please?
Thank you.

Tried the following:
$ node --print 'process.env.CONTINUOUS_INTEGRATION'
undefined

The result is obvious, looks like it's not set. Assuming this has something to do with the CI, I would assume that this must be set to true?

The comment (eslint-disable-line no-process-env) shows that ESLint rules and process env is disabled on that specific line? But why?

@Newman101 Our ESLint rule prohibits having process.env in the code so that those calls can be consolidated inside https://github.com/cfpb/cfgov-refresh/blob/master/config/environment.js#L13-L22.  In some cases it makes sense to override a rule for an edge case, though I'm not saying this is such a case as it should probably move to environment.js. eslint-disable-line is overriding the rule so it doesn't throw an error. CONTINUOUS_INTEGRATION is likely used in our Jenkins job but hasn't been documented on this side.


libantlr4-runtime.dylib, makefile crashes

The generated make file crashes when copying the dylib.

Sorry, for the late reply.
There have been several different problems with the C++ build, given the many different setups people have. So, we have revamped the organization of the build file. Now, it is based on the CMake script from the ANTLR C++ Runtime, so hopefully it should be more solid. Can you try know if this fixes the issue?
You should read the updated README. This setup will directly download the ANTLR C++ runtime from the official github repository, so the build will require a bit of patience the first time.

Cool!!
Can you point to the README file you refer to?
klaus
On Tue, Feb 23, 2021 at 7:01 AM Gabriele Tomassetti <
<EMAIL_ADDRESS>wrote:

Sorry, for the late reply.
There have been several different problems with the C++ build, given the
many different setups people have. So, we have revamped the organization of
the build file. Now, it is based on the CMake script from the ANTLR C++
Runtime, so hopefully it should be more solid. Can you try know if this
fixes the issue?
You should read the updated README. This setup will directly download the
ANTLR C++ runtime from the official github repository, so the build will
require a bit of patience the first time.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/gabriele-tomassetti/antlr-cpp/issues/4#issuecomment-784263690,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABMVWHTFVOEFPAAHM6UOG53TAO7MZANCNFSM4X4YZHSA
.

I can imagine it is a nightmare to maintain this kind of documentation.
Klaus
On Tue, Feb 23, 2021 at 7:10 AM Klaus Havelund<EMAIL_ADDRESS>wrote:

Cool!!
Can you point to the README file you refer to?
klaus
On Tue, Feb 23, 2021 at 7:01 AM Gabriele Tomassetti <
<EMAIL_ADDRESS>wrote:

Sorry, for the late reply.
There have been several different problems with the C++ build, given the
many different setups people have. So, we have revamped the organization of
the build file. Now, it is based on the CMake script from the ANTLR C++
Runtime, so hopefully it should be more solid. Can you try know if this
fixes the issue?
You should read the updated README. This setup will directly download the
ANTLR C++ runtime from the official github repository, so the build will
require a bit of patience the first time.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/gabriele-tomassetti/antlr-cpp/issues/4#issuecomment-784263690,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABMVWHTFVOEFPAAHM6UOG53TAO7MZANCNFSM4X4YZHSA
.

There is a README for this project in the main directory: https://github.com/gabriele-tomassetti/antlr-cpp/blob/master/README.md .
There is also a readme inside the cmake directory https://github.com/gabriele-tomassetti/antlr-cpp/blob/master/cmake/README.md
which comes from the official ANTLR project. This is the one you want, if you want to learn how to build your own ANTLR projects.

I can imagine it is a nightmare to maintain this kind of documentation.
Well, in my experience it is always a nightmare to maintain a cross-platform C++ project. The documentation is just the icing on the cake. The consolation is that we have to keep updated for work, so at least this way we help other people.

Many thanks, I will keep you updated how it goes.
Klaus
On Tue, Feb 23, 2021 at 7:16 AM Gabriele Tomassetti <
<EMAIL_ADDRESS>wrote:

There is a README for this project in the main directory:
https://github.com/gabriele-tomassetti/antlr-cpp/blob/master/README.md .

There is also a readme inside the cmake directory
https://github.com/gabriele-tomassetti/antlr-cpp/blob/master/cmake/README.md
which comes from the official ANTLR project. This is the one you want, if
you want to learn how to build your own ANTLR projects.
I can imagine it is a nightmare to maintain this kind of documentation.
Well, in my experience it is always a nightmare to maintain a
cross-platform C++ project. The documentation is just the icing on the
cake. The consolation is that we have to keep updated for work, so at least
this way we help other people.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/gabriele-tomassetti/antlr-cpp/issues/4#issuecomment-784274644,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABMVWHRBGZCXCHGFEXBQKSDTAPBGDANCNFSM4X4YZHSA
.


InvalidOperationException if a context has foreign keys upon multiple columns

Hi!
I tried to connect this library to the project I work on but found the issue which makes it impossible for us to use it because it throws InvalidOperationException on initialization. The investigation shows that the reason is that some of the foreign keys we have been set upon multiple columns, while LazyEntityGraph expect there is alwas a single one:
IPropertyBase fkPrincipalProp = fkProp.PrincipalKey.Properties.Single();
var foreignKeyPropInfo = fkProp.Properties.Single().PropertyInfo;

Here I came up with the test reproducing the issue and I was hoping I'll be able to fix it myself and submit a pull request but it seems, this can be more tricky that I can handle.
@dbroudy do you maybe have an idea about how this can be fixed?

@Pankraty Thanks for the report and the test case. It requires some changes to the ForeignKeyConstraint too, not just the key selectors, but I think it's not going to be too bad. I have some changes in progress and just have to do some more testing.


New Tab not going to same directory

It's been bugging me for a while, I haven't found any answer on the internet. This is me typing on a fresh install of mac. I just installed laptop script + dotfiles. When I opened again the terminal, I can't open a new tab that is going to the same directory I am currently with. I've search for this solution but I can't understand it.
https://www.dropbox.com/s/4hxkm85s18c1tzh/Screenshot 2015-12-16 19.00.41.png?dl=0
https://www.dropbox.com/s/j8cyn90uqcdwoaj/Screenshot 2015-12-16 19.00.43.png?dl=0
Thank you guys, and just close this if it's redundant.

I use iTerm and there's a setting for it here: http://nateeagle.com/2013/03/08/open-new-tabs-in-iterm-in-the-current-directory/


Remotes UI not clear

I want to add a remote using the extension, the UI only has one text box.  What does it expect?  The URL to the remote or the name?  I think it should be two text boxes the name of the remote, i.e. 'upstream' and the remote 'https://github..."

Updated the setting description to note that it should be by name. By default, "origin" and "upstream" should appear in the list which would also hopefully make this clearer

Thank you Rachel!


ionic2 is very slow to load the new page template on iOS

ios version: 9.3.4
After I start an ionic 2 app, and click any page, it is long time to wait until the page appears.
From the safari web inspector, the duration to download the html template file is from 400ms to 3s. That is very very slow.
To download other resources files like js, images, fonts is very fast less than 3ms.
I am not sure it is related to the compilation the template or not.

same to #6776


Proper pagination wouldn't work with Async Iteratees

When the fetch sizes are large while using Play framework's async Iteratees, it crashes Cassandra.
I made a SO question with logs only to find this out.
There is another question that mentions this problem.
I wonder if changing fetch size on the Datastax java driver underneath could solve this problem, but haven't found a Scala way to do that easily.

Hi @ChetanBhasin,
I would have serious doubts the problem is Phantom specific given we do have long winded tests for such scenarios which greatly exceed the capacity I think you are mentioning:

Increasing the read timeout on a cluster builder is done easily from the ContactPoint definition.
You have provided very little context as to what specifically you are doing. If you post a full example we can help further, right now everyone is  second guessing what you are up to.
There may be a lot of performance culprits coming from how you choose to model data, usage of collections, etc. Until you provide a full example there isn't much that can be done.

For the ContactPoint definition, you can simply use

ContactPoints(Seq(seedHost))
    .withClusterBuilder(_.withSocketOptions(new SocketOptions().setReadTimeoutMillis(500)))
    .keySpace("test")

Hi @alexflav23,
Thanks for the reply. I'll try to describe the problem as much as I understand it myself. It's not about how Phantom behaves in a production cluster.
Increasing the timeout helps when we have a timeout problem. In this case, however, I believe that it's because Cassandra is running out of memory in JVM.
In cases when the size of the data being querried from Cassandra (in all the rows which match the query) is big (say half the size of RAM on the node) this, I think, will overwhelm Cassandra (specially in a typical development environment).
CQL Client provided with Cassnadra distribution solves this problem by implimenting paging. The Datastax Java driver allows you to set a page size to make sure that Cassandra is not overwhelmed with one big request.
While using the Enumerator for fetching data, I thought Phantom was automatically using paging. What I'm trying to find out is if there is a way one can set a page size in Phantom without using the Java driver underneth.
I may be wrong in my assumption that paging is not implimented in Enumerators, but I thought it would be work asking since I couldn't find paging in code.

Hi @ChetanBhasin,
Phantom also uses the native paging of the Datastax Java driver underneath, our async iterators are just a nicer way to use the underlying Java Driver. To reduce paging, you should use setFetchSize(). However, it sounds like the size of your requirements would mandate something like Spark running the show, and Datastax offer a connector for that, which distributes table reads across Spark nodes to reduce memory pressure.
Phantom is designed for application logic, and while we plan to offer phantom-spark in the future as part of phantom-enterprise, currently you should investigate using a mix of the two technologies to address the data challenges.
Regards.

Thanks @alexflav23,
My application is supposed to stream the data in Cassandra so I doubt if Spark is needed for this case. Which is why I was looking for the concept of paging.
Nontheless, is there a way in Phantom to directly change fetch size without working on the Java driver it is built over?

Hi @ChetanBhasin ,
Have a look here for some ideas of how we've done that in the past.
Hope some of that will help.
Regards.

Hi @ChetanBhasin,
Just to reiterate what @alexflav23 is saying, there is no way that phantom is the problem here. The code for generating the enumerator is found here. It is not complicated. We simply loop through the result set as supplied by datastax. The default fetch size for a result set is 5000. So, we never require more than 5k results in heap on the client or the server at a time.
Possible problems:

Buggy Cassandra holding more in memory than necessary on the server side. Unlikely.
You are storing massive blobs such that the default fetch size is wrong for you. More likely.

If you want to change the default fetch size, just change the config in the cluster.  Don't have giant maps. Your problems point to your modelling in cassandra, not the datastax client, and not phantom.

@benjumanji Thanks for the reply.
I did figure out the problem. You're right, it's bad configuration and big maps in Cassandra which are causing this problem.
I'll close this issue.
Thanks for the heplp you people. And I'm sorry for dragging it longer than it should have been in first place.


Refactor: using LIBLINALG_PARALLEL_FLOATS to advance on fors

Advancements in fors should be done using the variable LIBLINALG_PARALLEL_FLOATS instead of by hardcoded +=4. This way, we should more easily add new backends by modifying that variable, apart of being more consistent.

Fixed on newest commit.


Added support for Datasource OauthPassThru (Forward OAuth Identity)

Description
Grafana has an option to forward user's upstream OAuth identity to a data source. Basically, it means that a user's jwt token gets passed along in the Authorization header with every request sent to a data source. - It's incredible useful in environments where token claims influence authorization decisions (like whether a user should have access to certain metrics or endpoints).
The option is called "Forward OAuth Identity" (oauthPassThru):

The proposed change adds support for that.
Type of change

[X] New feature (non-breaking change which adds functionality)

Checklist

[ ] This change requires a documentation update
I've added an example below, you might want to include it in the documentation. Though, I'm not sure if we should document every possible option :) So, it's up to you to decide.
[X] I have added a test case that will be used to verify my changes
[X] Verified independently on a cluster by reviewer

Verification steps

Deploy a data source with the following specification:

apiVersion: integreatly.org/v1alpha1
kind: GrafanaDataSource
metadata:
  name: example-grafanadatasource
spec:
  name: middleware.yaml
  datasources:
    - name: Prometheus
      type: prometheus
      access: proxy
      url: http://prometheus-service:9090
      isDefault: true
      version: 1
      editable: true
      jsonData:
        tlsSkipVerify: true
        oauthPassThru: true

Go to the data source settings (Configuration -> Datasources -> Prometheus) and find the section "Auth". The Forward OAuth Identity option should be turned on.

This is a feature I've been looking for, but when looking at the changes in this PR I have trouble to believe that this would be all that's required. I have tried adding the oauthPassThru: true to my datasource and it didn't work.
Do I not need to specify the format and content of this forwarding?
Would this work in combination with an oauth-proxy sidecar which uses openshift for authentication? Can you give an example config for the oauth-proxy?

@pantaoran The point of this flag is just to make Grafana forward its identity token to a data source. It means that you need to add all the required custom mappers to the grafana OIDC client that you're using to authenticate with provider (I relied on Keycloak). - You can't play with the contents of the token in Grafana.
A token consists of a header (with type and algorithm), payload (roles and other fields) and a signature. Only an identity provider has all the private credentials needed to generate a correct signature. You can read more about that here. When an app wants to verify a token, it goes to a IDP's public endpoint, fetches some public credentials that help to verify that the signature is valid and issued for this header and payload.
I use the feature in combination with a personally developed project called label filter gateway | lfgw to do metrics authorization based on OIDC roles. It's similar to prometheus-acls. In case you're interested what's difference between the two, it's described in README.md.
The basic idea there is the following: if there's a match between roles described in an ACL and the ones listed in a user's token, a label matcher (=filter) is added to a PromQL query to limit the scope of metrics by a Kubernetes namespace. If there's no match, the request is rejected.
The metrics authorization is done for both Grafana (requests go directly to lfgw exposed through a Service) and Prometheus web-interface (I have two ingresses - all API requests and /federation is forwarded to lfgw, the rest - to Prometheus Service). The latter is exposed with Oauth2-proxy.
I haven't seen OpenShift for over a year (and didn't do much there even before). What's exactly your case? Is it Prometheus protected with oauth2-proxy? Is it in the same cluster?
As a last note, I'd like to mention that Grafana has a poor implementation of the feature (at least, in 7.x). If a token becomes invalid for any reason, Grafana just stops adding Authorization header to its requests, which makes no sense. To say that again, a user session is not tied to an OIDC session. - When you login into Grafana, it actually creates a local user (previously, you could even change a local password, it's fixed in latest releases). So, you have to find a good combination between login_maximum_inactive_lifetime_duration, login_maximum_lifetime_duration (added in this PR) and similar parameters for SSO session in IDP. Otherwise, e.g. when you close a tab with Grafana and the session reaches SSO session timeout, refresh token is revoked, then you open Grafana, its local session is still valid, Grafana tries to refresh its token, fails, and just stops adding it to requests sent to the data-source.
There's a related issue that's been open for ages, I made a comment there where described my struggles with configuring timeouts. In case you're interested: https://github.com/grafana/grafana/issues/12131#issuecomment-776087984
I thought of writing an article about all of that, adding a helm chart to lfgw and some tips for configuring an OIDC client. Just not sure if anyone actually wants to read that :) And I don't have much presence on media sites, just open issues and PRs here and there while figuring out how to fit a certain project into our environment.

Thanks a lot for taking the time to write this detailed answer.
My situation is quite different, but until now I hadn't fully realized just how different it is. I'm using the official OpenShift oauth-proxy to offload authentication. So far I expected that this would forward a Bearer token to the upstream service (Grafana), and that this token could then be forwarded to Prometheus. But this was wrong.
My current understanding is that the oauth-proxy that I use could forward a Bearer token if the client already provided one, but it doesn't itself create one. It wouldn't be clear what kind of claims should be included in such a token anyway, and it's also not clear how the upstream services should react to such claims. Overall, I just had the wrong idea and don't actually have any use for the feature of this PR.
What I do is let the oauth-proxy decide who to let in, and then assume that once they can see Grafana they should have permission to see any metrics stored in Prometheus. I achieve this by means of an OpenShift service account with a Bearer token that never expires. I then store that token in the GrafanaDataSource CR.

@pantaoran Why do you need to forward token in the first place?
If Grafana is deployed to same cluster as Prometheus, you can just change two settings in your datasource spec:

The data-source should point to a Prometheus service (not to oauth2-proxy). It would be something like: http://prometheus.monitoring:9090 (not sure which service name and namespace exactly are used in OpenShift);
The data-source must be in proxy mode (access: proxy, you can find an example here). - Basically, with direct mode, Prometheus must be exposed via an Ingress/Route, so a user's browser sends requests directly to Prometheus API. With proxy mode, requests are sent to a special URI in Grafana, Grafana itself goes to Prometheus and then forwards the responses back to the user's browser. In this case, you don't have to expose Prometheus - you still can, but Grafana only needs a Service, so the Ingress/Route would be only for end users.

I think you misunderstand my usage of the proxy. My proxy is between Grafana and the user. The OpenShift service for the Grafana UI points to the proxy sidecar container in the Grafana pod. That proxy will show a login window to the user first, and once authenticated it will just pass everything through to the Grafana container until the login expires. Grafana talks to Prometheus directly via service, as you suggested in point 1.

@pantaoran where do you want to forward the token to and why? :)

That's what I'm saying: nowhere. I have no use for this feature. I had the wrong idea. 😆

@pantaoran ah, alright. I'm glad the whole conversation was useful then :)


EtherDFS - How would I mount a FAT partition?

EtherDFS says that the directory isn't a FAT partition, so MS-DOS attributes would be lost. Is there a way to handle this scenario? I'm not a linux guru but I can navigate and do commands. Can a 2gb (or whatever is in a config file?) partition be carved out and mounted at the correct folder?

Discovered the wiki.. reading more...

I'm going to close this. I think the wiki has all the information I need. Thanks for writing it!


Setting up a new Python virtual environment for Jupyter notebooks

Comments for my blog post on setting up new, clean virtual environments that can run Jupyter notebooks with separate kernels: https://sean.lane.sh/blog/2018/Virtualenv-with-jupyter

Thank you @seanlane, it worked great!


Downgrade cannon

In case this repo regresses

This is good to have handy. Will merge if things get worse.

Will merge. Will revert when #1 is fixed


Linked List: Add Binary Search in Python

please merge my PR
I have added binary search in python

Can you assign this issue to me?

Can you assign this issue to me?

@AvnitAnand  assigned

Can you please assign this issue to me? I want to contribute

Can you please assign this issue to me? I want to contribute

sure

Sir please assign this issue to me i want to contribute

Can you please assign this issue ?
I want to contribute.

Can you assign this issue to me?

can you assign this task to me?

can you asign this issue to me ?
I want to contribute.

Can you assign this issue to me?
I want to contribute.

Can you assign this task to me?

Greetings! @TechVine  I am interested to solve this issue, please assign me this.

Hi @TechVine, can you assign this issue to me?
I want to contribute.


Issue with through_tables when foreigns keys target the same table

First, thanks for your awesome tool :)
When we have a children with two foreign keys targetting the same table pgsync do not synchronize the children.
PGSync version: 1.1.14
Postgres version: 11.4
Elasticsearch version: 7.4
Redis version: 5.0.0
In schema.json we have the following relation passing through zone_relation_parent
 {
    "table": "zone",
    "schema": "cassini",
    "columns": [
        "id",
    ],
    "label": "parents",
    "relationship": {
        "variant": "object",
        "type": "one_to_many",
        "through_tables": [
            "zone_relation_parent"
        ]
    }
}

Our table :

CREATE TABLE zone
(
    id text COLLATE pg_catalog."default" NOT NULL DEFAULT nextval('zone_sequence'::regclass),
    cassini_id text COLLATE pg_catalog."default",
    CONSTRAINT zone_pkey PRIMARY KEY (id)
)
WITH (
    OIDS = FALSE
)
TABLESPACE pg_default;

CREATE TABLE zone_relation_parent
(
    zone_id text COLLATE pg_catalog."default" NOT NULL,
    zone_id_relation text COLLATE pg_catalog."default" NOT NULL,
    CONSTRAINT zone_relation_parent_zone_id_fkey FOREIGN KEY (zone_id)
        REFERENCES zone (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION,
    CONSTRAINT zone_relation_parent_zone_id_relation_fkey FOREIGN KEY (zone_id_relation)
        REFERENCES zone (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION
)
WITH (
    OIDS = FALSE
)
TABLESPACE pg_default;

The full schema.json is :
{
        "database": "lu",
        "index": "zones",
        "setting": {},
        "nodes": [
            {
                "table": "zone",
                "schema": "cassini",
                "columns": [
                    "cassini_id",
                    "country_code",
                    "admin_level",
                    "geometry_json",
                    "bounding_box_json"
                ],
                "children": [
                    {
                        "table": "metadata",
                        "schema": "cassini",
                        "columns": [
                            "key",
                            "value",
                            "type"
                        ],
                        "label": "metadatas",
                        "relationship": {
                            "variant": "object",
                            "type": "one_to_many",
                            "through_tables": [
                                "zone_metadata"
                            ]
                        }
                    },
                    {
                        "table": "zone",
                        "schema": "cassini",
                        "columns": [
                            "cassini_id",
                            "country_code",
                            "admin_level"
                        ],
                        "label": "parents",
                        "relationship": {
                            "variant": "object",
                            "type": "one_to_many",
                            "through_tables": [
                                "zone_relation_parent"
                            ]
                        }
                    }
                ],
                "transform": {
                    "rename": {
                        "cassini_id": "cassiniId",
                        "country_code": "countryCode",
                        "admin_level": "adminLevel",
                        "geometry_json": "geometry",
                        "bounding_box_json": "boundingBox"
                    }
                }
            }
        ]
    }

The  "label": "metadatas" relation is working well but the  "label": "parents" have always a null property.
The only difference is see between my two tables : zone_metadata and zone_relation_parent is that zone_relation_parent have two foreigns keys targeting to the same table "zones".
I think pgsync is not working correctly when the through_tables property table is filled with a table that have at least two properties pointing to the same table. Do i have wrong ?
I think is an issue
Thanks in advance

Any news about this issue please ?

Sorry. Taking a look at this now.

OK I have made a change to support this in the master branch. Can you try this out and let me know
@sl-vincentaugerot

Hi @toluaina thank you for your help.
Unfortunatly we have tested with master branch but the property parent is always null in eslastic after running pgsync

How can we help you to debug ?

That's a bit odd. I am going by the Postgres schema and pgsync schema you provided above.
Can you try the ffw:

git pull
git checkout through_tables_when_foreigns_keys_target_the_same_table_63
source .pythonpath
./examples/bootstrap.sh sandbox

In the scenario, above you will see that the elastic search index here shows the
parents property is not null.
Alternatively when you run pgsync in your own environment. can you add -v and send me the output.
PS: make sure you mask out any sensitive info

Hello,
I am working with Vincent. Thank you a lot for your help.
We integrated your code into the docker image (provided on your repo) to try it under linux environment. (we can provide you this integrated code if it can help? We will need to be allowed to make PR on this branch.)
Sadly, it seem its still not working for us:
There is the result:

And the logs:
logs.txt
Thank you in advance.
Regards

Sorey for the delay. Can you provide me with directions to the integrated code you are using. I was merely going by the schema provided previously. In the mean time I will take a look at the logs agin

Hello,
Thank you for your answer. There is the code based on your through_tables_when_foreigns_keys_target_the_same_table_63 branch which we updated, to make your code working with docker & docker-compose. We only did that. I invite you to check the commit on this "fork" and advise us if you can see any mistake ? Thank you a lot.
pgsyncupdated.zip
Regards

I think I know whats going on. The leatest code changes are not in the container.
I would suggest you do a

docker system prune -a
docker volume prune

I believe the container is pulling the package from pypi using pip. So it appears you are not using the changes in master.
I was waiting for you to verify it was working before publishihg the next release

I have published 1.1.26 which includes these changes to make it easier. Can you please re-run docker compose

Hello,
Its working now ! Thanks you very much.
We also tried directly in our code, it's all good !
Thank you again.
Regards

@toluaina Very good job, thanks for your help and your reactivity 👍

PGSync version: 2.2.1
Postgres version: 14.2
Elasticsearch version: 7.16.2
I have got similar use case like the one explained above
Tables:
CREATE TABLE zone
(
    id text NOT NULL PRIMARY KEY,
    place_name text
);

CREATE TABLE zone_relation_parent
(
    zone_id text  NOT NULL REFERENCES zone (id),
    zone_id_relation text NOT NULL REFERENCES zone (id)
);

INSERT INTO zone VALUES ('1', 'abc'), ('2', 'bcd'), ('3', 'cde');

INSERT INTO zone_relation_parent VALUES ('1', '2'), ('1', '3'), ('2', '3');

Schema:
[
    {
        "database": "mydb",
        "index": "zones",
        "nodes": {
            "table": "zone",
            "columns": [
                "id",
                "place_name"
            ],
            "children": [
                {
                    "table": "zone",
                    "columns": [
                        "id",
                        "place_name"
                    ],
                    "label": "parents",
                    "relationship": {
                        "variant": "object",
                        "type": "one_to_many",
                        "through_tables": [
                            "zone_relation_parent"
                        ]
                    }
                }
            ]
        }
    }
]

But when I use, pgsync it is not able to replicate the one-to-many mapping
Elasticsearch
{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 3,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "zones",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "id" : "1",
          "parents" : [
            null
          ],
          "place_name" : "abc",
          "_meta" : { }
        }
      },
      {
        "_index" : "zones",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 1.0,
        "_source" : {
          "id" : "2",
          "parents" : [
            null
          ],
          "place_name" : "bcd",
          "_meta" : { }
        }
      },
      {
        "_index" : "zones",
        "_type" : "_doc",
        "_id" : "3",
        "_score" : 1.0,
        "_source" : {
          "id" : "3",
          "parents" : [
            null
          ],
          "place_name" : "cde",
          "_meta" : { }
        }
      }
    ]
  }
}

For _id "1"
I'm expecting it to populated parents like this,
[{"id": 2, "place_name": "bcd"}, {"id": 3, "place_name": "cde"}]

and for _id "2"
[{"id": 3, "place_name": "cde"}]


fix: use commit statuses for base image update check

:pencil: Description

Use commit statuses instead of the checks API to determine if base image update should be allowed. This should make it more flexible for clients.

:tada: This PR is included in version 1.8.4 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Add pkg to Rake's CLOBBER FileList

Bundler's gem_tasks are quite helpful. But the first thing that needs added to a new gem's Rakefile is frequently require 'rake/clean' and CLOBBER.include 'pkg'
Since 'pkg' is hardcoded into the build task, might it also be handy to pre-populate the CLOBBER FileList with 'pkg' as well?

It might be handy... can you elaborate on why you need to clobber pkg? I never do, and the only side effect seems to be ending up with old versions of the gem sitting in pkg...

"need" is a bit strong. It's mostly just the urge to keep things tidy. And
a bit of habit. I typically make clean or npm run clean or rake clean.
Of course, in keeping with rake's fine distinction of clean vs clobber, I
use clobber for gems. (clean being for temporary/intermediate files,
clobber being for resulting/generated files)
So there's no particular reason why I have the compulsion for cleaning. But
given that rake has default semantics for clean, I figured it'd be worth
considering applying those semantics to bundler's tasks.
On Tue, May 26, 2015 at 3:36 PM, André Arko<EMAIL_ADDRESS>wrote:

It might be handy... can you elaborate on why you need to clobber pkg? I
never do, and the only side effect seems to be ending up with old versions
of the gem sitting in pkg...
—
Reply to this email directly or view it on GitHub
https://github.com/bundler/bundler/issues/3676#issuecomment-105643471.

Yeah, seems reasonable. Send a PR?
On Tue, May 26, 2015 at 12:42 PM, Jason Karns<EMAIL_ADDRESS>wrote:

"need" is a bit strong. It's mostly just the urge to keep things tidy. And
a bit of habit. I typically make clean or npm run clean or rake clean.
Of course, in keeping with rake's fine distinction of clean vs clobber, I
use clobber for gems. (clean being for temporary/intermediate files,
clobber being for resulting/generated files)
So there's no particular reason why I have the compulsion for cleaning. But
given that rake has default semantics for clean, I figured it'd be worth
considering applying those semantics to bundler's tasks.
On Tue, May 26, 2015 at 3:36 PM, André Arko<EMAIL_ADDRESS>wrote:

It might be handy... can you elaborate on why you need to clobber pkg? I
never do, and the only side effect seems to be ending up with old versions
of the gem sitting in pkg...
—
Reply to this email directly or view it on GitHub
https://github.com/bundler/bundler/issues/3676#issuecomment-105643471.

Reply to this email directly or view it on GitHub:
https://github.com/bundler/bundler/issues/3676#issuecomment-105644612

sure thing!
On Tue, May 26, 2015 at 3:57 PM, André Arko<EMAIL_ADDRESS>wrote:

Yeah, seems reasonable. Send a PR?
On Tue, May 26, 2015 at 12:42 PM, Jason Karns<EMAIL_ADDRESS>wrote:

"need" is a bit strong. It's mostly just the urge to keep things tidy.
And
a bit of habit. I typically make clean or npm run clean or rake clean.
Of course, in keeping with rake's fine distinction of clean vs clobber, I
use clobber for gems. (clean being for temporary/intermediate files,
clobber being for resulting/generated files)
So there's no particular reason why I have the compulsion for cleaning.
But
given that rake has default semantics for clean, I figured it'd be worth
considering applying those semantics to bundler's tasks.
On Tue, May 26, 2015 at 3:36 PM, André Arko<EMAIL_ADDRESS>wrote:

It might be handy... can you elaborate on why you need to clobber pkg? I
never do, and the only side effect seems to be ending up with old
versions
of the gem sitting in pkg...
—
Reply to this email directly or view it on GitHub
<https://github.com/bundler/bundler/issues/3676#issuecomment-105643471
.

Reply to this email directly or view it on GitHub:
https://github.com/bundler/bundler/issues/3676#issuecomment-105644612

—
Reply to this email directly or view it on GitHub
https://github.com/bundler/bundler/issues/3676#issuecomment-105648025.


Slider: Animation between 3 states

[x] Sliding up from closed state takes you to mandatory prayers state
[ ] Holding down a mandatory prayer icon takes you to "prayer options" menu
[ ] Choosing an option/ swiping down/ clicking away takes you to closed state/ mandatory prayers state

Scrapped.


DNS search domain is not merged with existing

Describe the problem
On setting the DNS in the /etc/resolv.conf NetBird adds the search domain netbird.cloud in the beginning of the file. That works fine for nameserver as any following entry above 3 is ignored. However, it fails if there is the search domain defined already, as the latest one overwrites the previous. In a result, short hostnames don't work. Instead, the search should be prepended with NetBird entry.
To Reproduce
Steps to reproduce the behavior:

Disconnect
Add any search list to the /etc/resolv.conf
Connect
Try to resolve the short host name in netbird.cloud domain
See could not resolve hostname error

Expected behavior
The short hostname in netbird.cloud domain should resolve correctly
NetBird status -d output:
Daemon version: 0.22.3
CLI version: 0.22.3
Screenshots
$ netbird down
$ cat /etc/resolv.conf
# Generated by NetworkManager
search home
nameserver <IP_ADDRESS>
$ netbird up
Connected
$ cat /etc/resolv.conf
# Generated by NetBird
# If needed you can restore the original file by copying back /etc/resolv.conf.original.netbird

nameserver <IP_ADDRESS>
search  netbird.cloud

# Generated by NetworkManager
search home
nameserver <IP_ADDRESS>
$ host work
$ host work.netbird.cloud
work.netbird.cloud has address <IP_ADDRESS>

Additional context
As per the resolv.conf man page:

If there are multiple search directives, only the search list from the last instance is used.

I confirm this issue and handle this currently by manually managing my /etc/resolv.conf file, which is extremely unfeasible :-(

after some of last updates it seems to resolve itself for me, see https://github.com/netbirdio/netbird/issues/1559#issuecomment-2086048625


upgrade node to 0.12 - remove support for old node

no need to support 0.10 or 0.11 of node, they are replaced completely by current node stable 0.12.

Appveyor is B.S.  looks like they have blessed versions of node and io.js they know about.

looks like Appveyor's node-gyp is messed up.  it cannot build the necessary binaries for child_process to function properly.  So, we're seeing these in the test output:
1) Acceptance: sane generate resource/api user:
     Error: spawn C:\projects\sane\bin\sane ENOENT `C:\projects\sane\bin\sane new . --skip-npm --skip-bower --skip-analytics` (exited with error code ENOENT)
      at exports._errnoException (util.js:738:11)
      at Process.ChildProcess._handle.onexit (child_process.js:1019:32)
      at child_process.js:1109:20
      at process._tickCallback (node.js:337:11)

Doh, windows doesn't know #!/usr/bin/env node she-bang binaries.  We'll need to create a sane.bat for the windows platform, so we can call child_process.spawn.

@kriswill aahh that is a good point. But how is ember-cli doing it? They are not having an ember.bat. Maybe I'll get some more time tonight to check that out https://github.com/ember-cli/ember-cli/issues/1558. That seems to have some interesting pointers.

Aahhh, because we are using execFile. Yeah that might be the issue.

@Globegitter take a look at ember-cli's new test here: https://github.com/ember-cli/ember-cli/blob/master/tests/acceptance/new-test.js#L81-L91
Instead of forking a child process they simply call the ember-cli processor with arguments, and use a promise to check the results.


Backport 2 0 0

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Reset the build number to 0 (if the version changed)
[x] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin, please rerender

@conda-forge/help-python please review at your convenience. The recipe is more or less identical to v 2.3.0

@dopplershift please review and approve or assign somebody who can, I understand that you all have other stuff to do, but I really need this approved ASAP to use it in my project.

#2 should have caused you to receive a new invite. Please look for it (check spam) and accept and you'll be good to handle this on your own!


KAFKA-7922: Return authorized operations in describe consumer group responses (KIP-430 Part-1)

Use automatic RPC generation in DescribeGroups Request/Response classes
https://cwiki.apache.org/confluence/display/KAFKA/KIP-430+-+Return+Authorized+Operations+in+Describe+Responses

Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

@rajinisivaram  This is first part of the implementation for KIP-430.  This contains changes for consumer group requests. Will raise another PR for metadata requests.

@rajinisivaram Thanks for the review. Addresses the review comments. Pls take a look.

@rajinisivaram Thanks for the latest review. Updated the PR.
I will update the KIP and send a note to the discuss thread.


Store WriteConcern in WriteResult to allow reporting of acknowledgement

https://jira.mongodb.org/browse/PHPC-168
https://jira.mongodb.org/browse/PHPC-170
https://jira.mongodb.org/browse/PHPC-177

Other then the comments above, lgtm


[release-v1.11] switch RHBQ version in workflow plugin config

Per title moving a notch down for workflow plugin.
/cc @Kaustubh-pande

/lgtm


Language lzh is not shown on the web interface

Describe the bug
Despite its popularity, the language lzh (Literary Chinese) is not shown on the left panel on the dataset page:

On the metadata section of a certain dataset, languages are shown in their names, but lzh is shown as "lzh".

While we can see that the name does exist in the languages.json file:
https://github.com/huggingface/datasets/blob/7fcbe5b1575c8d162b65b9397b3dfda995a4e048/src/datasets/utils/resources/languages.json#L3880
Steps to reproduce the bug
Open the link https://huggingface.co/datasets?language=language:lzh and https://huggingface.co/datasets/Ayaka/ORCHESTRA-simple-1M
Expected behavior

"Literary Chinese" should be shown on the left panel
"lzh" should be displayed as "Literary Chinese"

Hi! I've opened a PR with a fix.


Add helpers to construct Trace backed by IOLocal

Following up on #723, this adds a new cats-effect module with ioLocalTrace helper methods for constructing a Trace[IO] backed by an IOLocal[Span[IO]]

Thanks for this @mrdziuban!
Last time I looked at this, the IOLocal instance had to be shared by all threads using Trace. If that is the case the parent span could be overwritten by any thread using the Trace instance. Have you tried this in a multi-threaded app?
Also for this to work properly with the Http4s module, you need to have a Provide instance.

Thanks for this @mrdziuban!

Yes, absolutely love this PR and the fact someone else is excited about this possibility. I have played with IOLocal for tracing recently, glad to see someone invested the time to make a proper PR out of it! I didn't have the time for that until now. Tested your changes locally and implemented a bit more on top (hope you don't mind me sharing it here), see https://github.com/ybasket/trace4cats/commits/trace-iolocal – explanations below. Feel free to copy over whatever you like, I'll send a PR with the leftovers once this one is merged.

Last time I looked at this, the IOLocal instance had to be shared by all threads using Trace. If that is the case the parent span could be overwritten by any thread using the Trace instance. Have you tried this in a multi-threaded app?

IOLocal works per CE Fiber, so if you have things running in parallel, they will all only modify their own copy (created on first modification within that fiber), so ideal for tracing. Natchez has an implementation already. The only artefact you have is a root span that lives for as long as your Trace instance lives. But this can be mitigated by a special kind of span, see the DischargeSpan commit on my branch. It's a PoC only, its ergonomics can probably be optimised, but it works and is remotely inspired by https://github.com/armanbilge/bayou. I tested the combination of IOLocal tracing from this PR with this special span on two linked http4s services of mine and a dummy Fibonacci app that does use massive parallelism, Jaeger showed all spans as expected.

Also for this to work properly with the Http4s module, you need to have a Provide instance.

I implemented a Provide instance and also instances for an IOLocal[Ctx] where Ctx has a Lens to a Span[IO] on my branch.

Thanks for the explanation @ybasket! All we should need is a Provide instance on Ctx then, with helpers providing Lens

Thanks all for the feedback, and thank you @ybasket for the enhancements! I've just added your commits here. @janstenpickle there were a couple Provide instances in @ybasket's work, do either of them match what you're thinking of? If not, I'm happy to add them, just would need a bit more guidance on the exact types to target.

Sorry for short and shallow comments. I will return later with concrete suggestions.

No problem! I may not be super active or responsive the next few days but will keep my eye on this and add relevant changes (including the context bound changes) next week

@mrdziuban I rebased your branch on master and added 2 new commits with fixes to base(-laws) and cio modules.
The review is not finished though as I have a few questions for @ybasket and want to try the IOLocal instances in different use-cases to make sure it compiles and works as expected.

I think I'll be ready to merge this PR when we have law tests for the Provide instance. Does anyone want to add them? I'll have some spare time in a few days only.

I think I'll be ready to merge this PR when we have law tests for the Provide instance. Does anyone want to add them? I'll have some spare time in a few days only.

@catostrophe I tried to add them in https://github.com/ybasket/trace4cats/commit/330fa65b816ad0077b6254ee8c7463fee403535a. The test passes, but I'm afraid it's at least partially non-sensical. I had to implement an instance of Eq[IO[IO ~> IO]], a type for which I don't see any reasonable meaning nor implementation. As a placeholder, I always return false (true also works) – that hints towards not being used well. I'm no expert in law testing, wdyt could be done here? Extract the one law that requires the nonsensical instance and not check it for IOLocal?

@ybasket hey! You should have got an ability to push to contributors fork branches. Please check and push your commits straight to this PR. I will review them a bit later and apply fix if any needed.

@ybasket hey! You should have got an ability to push to contributors fork branches. Please check and push your commits straight to this PR. I will review them a bit later and apply fix if any needed.

Oh, thank you for the honour 😊
Just pushed the commit.

Will review it tonight. Sorry for the delay

I refactored the module. I did it in the same way as we have it in the zio integration.
Still no law tests. Still working on it.

I improved tests a bit (by adding more sensical arb instances), but I still can't get why Eq[IO ~> IO] works. Been busy at $WORK and can't dig deeper atm. Let's keep it as is and return to it later.


Tuya curtain motors TM616EGZT Calibration feature missing

There is no way to set the end limits or the direction of the motor with the physical buttons, so calibration needs to be done using zigbee. Would it be possible to add the calibration cluster that exist for some other Tuya  motors (e.g. TS130F) to the TM616EGZT?

Ive had a look at the Tuya IOT builder, and i believe the calibration is controlled using Tuya command "border" with DP ID 16. This command takes a "Enum" data type, is R/W, and has the properties "Enum Value: up, down, up_delete, down_delete, remove_top_bottom"
I haven't had any real experience with writing ZHA quirks to expose these settings, but ill have a look

I think the defrnition of the commands shall being placed in this part in the INIT:
https://github.com/zigpy/zha-device-handlers/blob/08f99237f165560921845abbc6b810cb5a0cd4d8/zhaquirks/tuya/__init__.py#L96-L102 or some line above that have some that looks like attributes and commands.
The device class is here and more classes below but i dont knowing  how to implementing it then outs out of my skills.
https://github.com/zigpy/zha-device-handlers/blob/08f99237f165560921845abbc6b810cb5a0cd4d8/zhaquirks/tuya/__init__.py#L929-L931

I managed to get the following commands to work using the developer tools > Services to set a "border" in Home Assistant. As you dont usually have to run the calibration often, this might be a good workaround for the moment. Im making use of the custom command function in the ZHA quirk. It worked on my device with firmware TZE200_gubdgai2
Grab the MAC for the device from your devices page, substitute it in the YAML, and then try the below codes. Remember to click "Go To YAML Mode" to paste the code.
Set Upper Bounds
service: zha.issue_zigbee_cluster_command
data:
  ieee: INSERT YOUR DEVICE MAC HERE
  endpoint_id: 1
  command_type: server
  cluster_id: 258
  command: 0x6
  args:
      - 0
      - 0
      - 0x0410
      - 0
      - [1,0x0000]

Set lower bound
service: zha.issue_zigbee_cluster_command
data:
  ieee: INSERT YOUR DEVICE MAC HERE
  endpoint_id: 1
  command_type: server
  cluster_id: 258
  command: 0x6
  args:
      - 0
      - 0
      - 0x0410
      - 0
      - [1,0x0001]

Delete upper bounds
service: zha.issue_zigbee_cluster_command
data:
  ieee: INSERT YOUR DEVICE MAC HERE
  endpoint_id: 1
  command_type: server
  cluster_id: 258
  command: 0x6
  args:
      - 0
      - 0
      - 0x0410
      - 0
      - [1,0x0002]

Delete lower bounds
service: zha.issue_zigbee_cluster_command
data:
  ieee: INSERT YOUR DEVICE MAC HERE
  endpoint_id: 1
  command_type: server
  cluster_id: 258
  command: 0x6
  args:
      - 0
      - 0
      - 0x0410
      - 0
      - [1,0x0003]

0x04 is data type Enum and then 0x10 is DP ID "Border". The hex in the last argument most likely corresponds to "up, down, up_delete, down_delete, remove_top_bottom"
Im not entirely sure how to make this more user friendly or expose it in the UI just yet, but i thought i would post this code in the hope it might be of interest to others. No guarantee it would work on your device though, test it before you install it so you don't destroy your blinds.

I managed to get the following commands to work using the developer tools > Services to set a "border" in Home Assistant.

Confirmed solution! ....works brilliantly. Thank you!
How did you manage to find that command?

Ive had a look at the Tuya IOT builder.

I don't have a Tuya developer account and I never found a public API. What other interesting settings are there to play with?
I assume there is a way to reverse the motor direction, so the buttons work the other way around.

Set motor direction Forward
Valid for at least the _TZE200_gubdgai2 variant
service: zha.issue_zigbee_cluster_command
data:
ieee: b4:e3:f9:ff:fe:af:58:c1
  endpoint_id: 1
  command_type: server
  cluster_id: 258
  command: 0x6
  args:
      - 0
      - 0
      - 0x0405 # DIP command 5, motor direction
      - 0
      - [1,0x0000] # Forward direction

Set Motor Direction Back
service: zha.issue_zigbee_cluster_command
data:
  ieee: b4:e3:f9:ff:fe:af:58:c1
  endpoint_id: 1
  command_type: server
  cluster_id: 258
  command: 0x6
  args:
      - 0
      - 0
      - 0x0405 # DIP command 5, motor direction
      - 0
      - [1,0x0001] # Back direction

Oh nice! Any idea if there is a setting for increasing/decreasing the speed of the motor?

I'm trying to run those set motor direction commands in the latest version of HASS and I keep getting this error: Failed to perform the action zha.issue_zigbee_cluster_command. Unknown error
This is the relevant error from the logs:
Logger: homeassistant.helpers.script.websocket_api_script
Source: helpers/script.py:525
First occurred: September 18, 2024 at 7:50:19 PM (30 occurrences)
Last logged: 4:48:13 PM

websocket_api script: Error executing script. Unexpected error for call_service at pos 1: 6
websocket_api script: Error executing script. Unexpected error for call_service at pos 1: 3
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 525, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 763, in _async_call_service_step
    response_data = await self._async_run_long_action(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 726, in _async_run_long_action
    return await long_task
           ^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2761, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2804, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1099, in _async_admin_handler
    await result
  File "/usr/src/homeassistant/homeassistant/components/zha/websocket_api.py", line 1389, in issue_zigbee_cluster_command
    await zha_device.issue_cluster_command(
  File "/usr/local/lib/python3.12/site-packages/zha/zigbee/device.py", line 904, in issue_cluster_command
    [field.name for field in commands[command].schema.fields],
                             ~~~~~~~~^^^^^^^^^
KeyError: 6

Any ideas?


Support for drag selection for all channels (regions plugin)

Wavesurfer.js version(s):
6.2.0
Browser and operating system version(s):
Browser: Chrome
OS: Linux, macOS
Problem description

In the latest version I do not see the possibility of selecting one common region for all channels. Has this opportunity been removed? If so, is it possible to add such an option?

Support for drag selection to be separated for each channel comes with version 6.0.0: https://github.com/katspaugh/wavesurfer.js/blob/master/CHANGES.md#600-07022022

Apart from that, selecting regions for separate channels, in my opinion, is unintuitive. Selecting a region for a given channel and playing a track will play audio from all channels. It seems to me that in such a situation only the audio from the selected channel should be played.

can you try to identify where (what commit or what PR) this functionality was removed?

can you try to identify where (what commit or what PR) this functionality was removed?

Found that PR: https://github.com/katspaugh/wavesurfer.js/pull/2380/files

Found that PR: https://github.com/katspaugh/wavesurfer.js/pull/2380/files

Ping @muhammad-sayed-mahdy

Yes, if you split channels and try to drag, it will drag on that channel only
the use case was for annotating multichannel conversation, with each person on a separate channel
We can just add another option if you want the drag selection to be for all channels

We can just add another option if you want the drag selection to be for all channels

It sounds like this new option should be the default, what wavesurfer config were/are you using @4ntke?

We can just add another option if you want the drag selection to be for all channels

It sounds like this new option should be the default, what wavesurfer config were/are you using @4ntke?

That's my config:
{
    container: "audioElement",
    splitChannels: true,
    responsive: true,
    backend: "MediaElement",
    height: 100,
    plugins: [
       WaveSurferRegions.create({
          maxRegions: [2],
          dragSelection: true,
      }),
    ],
}

Agreed.region play seems better to play the selecting channel,not play all channel.


Choose a stack

The produced website must be static, accessible and white label (so other organization could use it). Otherwise feel free to use any kind of tools who wish, let discuss about it.

Gatsby might be a good fit.

Gatsby might be a good fit.

By researching Gatsby I found its Vue counterpart called Gridsome, has anyone had any experience dealing with it?
For Gatsby, I've personally never had the opportunity to use it but it seems like a great fit.

Gatsby works well I used it on a mission and for the NantesJS website. Gridsome seems to have the same features so nice alternative 👍

I like the gatsby idea, easy to setup, many tools builtin, some cool plugins

Gridsome seems to be a young project with a small community :/ (right now). Nuxt.js provides same features, (jamstack architecture ...) and is well known from the vue.js community with a strong support

(so other organization could use it)
Does that mean you will scan only the public repos ?

@ripoul, It means other organizations can make their own instance with customisation options for theming, images an so on :smile:

/polls Gatsby 'Gridsome' "Nuxt"

/polls Gatsby 'Girdsome' "Nuxt"

Here is a poll to choose which tool to use for frontend https://doodle.com/poll/wyprv69ras4gev5i

So it will be Gatsby for frontend ! Thanks all for your participation 👏 I will init a fresh install of gatsby 😉


nm_mrac2mu --head resampling

As the metioned in the documentation, the output resampled images will be in size 344x344x127, if the --head flag is enabled.
However, in our case, the output attenuation map is in 244x244x108?
Of course, we can do resampling the attenuation map in the SIRF recon pipeline, to match the output size(344x344x127). But just a bit confused about whether the resampling was designing to be done in pet-rd-tool or in SIRF?
WIthout the resampling, this will cause the error when estimating the scatters, in SIRF. (see error message below):
/opt/SIRF-SuperBuild/INSTALL/python/sirf/STIR.py in process(self)
2745         self.output = AcquisitionData()
2746         self.output.handle = pystir.cSTIR_runScatterEstimator(self.handle)
-> 2747         check_status(self.output.handle)
2748         print('ScatterEstimator:: estimation finished.')
2749
/opt/SIRF-SuperBuild/INSTALL/python/sirf/Utilities.py in check_status(handle, stack)
408             repr(line) + ' of ' + file + '; ' +
409             'the reconstruction engine output may provide more information'
--> 410         raise error(errorMsg)
411
412
error: ??? "'\nERROR: ScatterSimulation: limitation in #planes and voxel-size for the attenuation image.\nThis would cause a shift of -19.2969mm w.r.t. the activity image.\n(see https://github.com/UCL/STIR/issues/495.\n' exception caught at line 439 of /opt/SIRF-SuperBuild/sources/SIRF/src/xSTIR/cSTIR/cstir.cpp; the reconstruction engine output may provide more information"
any hints would be helpful. thanks

In a PET/MR scanner system, the movement between PET and MRAC should be minimal. In this case, a resamplig of the MRAC to match the PET image would be an acceptable option? thanks

Assuming that the coordinate systems are aligned. However, this isn't the case, due to a difference in convention with STIR. This will be easier one day (https://github.com/UCL/STIR/projects/1#card-61085594), but not quite yet.

by the way, what is reason behind the operaiton, 'divide by 10000' after registration? or it is differnt data precisions? thanks

This is just a change of units, I believe Siemens uses um^-1 and STIR uses cm^-1.


Added event hubs change log highlights

None of the suggested changes are major changes. This isn't the CHANGELOG. I think what you are saying is "We added the event processor to support an easier architecture for processing events", but I'm not sure and I didn't get that from this.

Hi @adrianhall It's true that eventhubs 5.0.0b6 doesn't have major changes. The main change from pull model to push model was done in b5. So we don't need to mention event hubs in this file for this release since there are no major changes?

@YijunXieMS - there are a major changes:

event processing callback went from batch to single event.
send method was removed, replaced with Batch sending exclusively via send_batch

I think (based on Annas comment):

The semantics for sending events was changed.  send_event now sends a single event, whereas send_batch sends a batch of events.

Link the individual functions to the API documentation, and obviously make sure the function names are correct.
From: Yijun Xie<EMAIL_ADDRESS>Date: Thursday, December 5, 2019 at 10:10 AM
To: Azure/azure-sdk<EMAIL_ADDRESS>Cc: Adrian Hall<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [Azure/azure-sdk] Added event hubs change log highlights (#840)
None of the suggested changes are major changes. This isn't the CHANGELOG. I think what you are saying is "We added the event processor to support an easier architecture for processing events", but I'm not sure and I didn't get that from this.
Hi @adrianhallhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fadrianhall&data=02|01|Adrian.Hall%40microsoft.com|03ac5234267742af91b808d779ae6396|72f988bf86f141af91ab2d7cd011db47|1|0|637111662209722302&sdata=jpamlAjXLULyA758VEzgFRm6rYzKQDyJj34m0EDFJwg%3D&reserved=0 It's true that eventhubs 5.0.0b6 doesn't have major changes. The main change from pull model to push model was done in b5. So we don't need to mention event hubs in this file for this release since there are no major changes?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk%2Fpull%2F840%3Femail_source%3Dnotifications%26email_token%3DAALLUOOV7MVGCH4NDWAFQB3QXE7YVA5CNFSM4JVSMBX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGBTNEQ%23issuecomment-562247314&data=02|01|Adrian.Hall%40microsoft.com|03ac5234267742af91b808d779ae6396|72f988bf86f141af91ab2d7cd011db47|1|0|637111662209722302&sdata=4BT9uP1rEi%2FIsSBC026G2RPwqmCNjbVVjh0D25IW7Bk%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAALLUOP2ZRQQ3KU5NCA4RMDQXE7YVANCNFSM4JVSMBXQ&data=02|01|Adrian.Hall%40microsoft.com|03ac5234267742af91b808d779ae6396|72f988bf86f141af91ab2d7cd011db47|1|0|637111662209732259&sdata=GSQs0N1fAAA9K09WYTeyn25leAO%2BdaYqP4fcSmI6n48%3D&reserved=0.

I keep the two major changes that Anna proposed and use the same text from the HISTORY.md of event hubs.
From: Adrian Hall<EMAIL_ADDRESS>Sent: Thursday, December 5, 2019 11:19 AM
To: Azure/azure-sdk<EMAIL_ADDRESS>Cc: Yijun Xie<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [Azure/azure-sdk] Added event hubs change log highlights (#840)
I think (based on Annas comment):

The semantics for sending events was changed. send_event now sends a single event, whereas send_batch sends a batch of events.

Link the individual functions to the API documentation, and obviously make sure the function names are correct.
From: Yijun Xie <notifications<EMAIL_ADDRESS>Date: Thursday, December 5, 2019 at 10:10 AM
To: Azure/azure-sdk <azure-sdk<EMAIL_ADDRESS>Cc: Adrian Hall <Adrian.Hall<EMAIL_ADDRESS>Mention <mention<EMAIL_ADDRESS>Subject: Re: [Azure/azure-sdk] Added event hubs change log highlights (#840)
None of the suggested changes are major changes. This isn't the CHANGELOG. I think what you are saying is "We added the event processor to support an easier architecture for processing events", but I'm not sure and I didn't get that from this.
Hi @adrianhallhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fadrianhall&data=02|01|Adrian.Hall%40microsoft.com|03ac5234267742af91b808d779ae6396|72f988bf86f141af91ab2d7cd011db47|1|0|637111662209722302&sdata=jpamlAjXLULyA758VEzgFRm6rYzKQDyJj34m0EDFJwg%3D&reserved=0 It's true that eventhubs 5.0.0b6 doesn't have major changes. The main change from pull model to push model was done in b5. So we don't need to mention event hubs in this file for this release since there are no major changes?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk%2Fpull%2F840%3Femail_source%3Dnotifications%26email_token%3DAALLUOOV7MVGCH4NDWAFQB3QXE7YVA5CNFSM4JVSMBX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGBTNEQ%23issuecomment-562247314&data=02|01|Adrian.Hall%40microsoft.com|03ac5234267742af91b808d779ae6396|72f988bf86f141af91ab2d7cd011db47|1|0|637111662209722302&sdata=4BT9uP1rEi%2FIsSBC026G2RPwqmCNjbVVjh0D25IW7Bk%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAALLUOP2ZRQQ3KU5NCA4RMDQXE7YVANCNFSM4JVSMBXQ&data=02|01|Adrian.Hall%40microsoft.com|03ac5234267742af91b808d779ae6396|72f988bf86f141af91ab2d7cd011db47|1|0|637111662209732259&sdata=GSQs0N1fAAA9K09WYTeyn25leAO%2BdaYqP4fcSmI6n48%3D&reserved=0.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk%2Fpull%2F840%3Femail_source%3Dnotifications%26email_token%3DALQFVACRHENALNIO5AQDSGLQXFHYXA5CNFSM4JVSMBX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGBZ6YQ%23issuecomment-562274146&data=02|01|yijun.xie%40microsoft.com|533747bd877a440d9ef108d779b7ed37|72f988bf86f141af91ab2d7cd011db47|1|0|637111703181704756&sdata=0dzt19C563o197xuLBHR2CSLsMmUnISu3vdCIKlhHfA%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FALQFVADCCITB4IHVVX5C5STQXFHYXANCNFSM4JVSMBXQ&data=02|01|yijun.xie%40microsoft.com|533747bd877a440d9ef108d779b7ed37|72f988bf86f141af91ab2d7cd011db47|1|0|637111703181704756&sdata=1QqW2Zxvf3PfwkcgyJskGMuNPok8Ax46byTSJRzrrkU%3D&reserved=0.


[flutter_adaptive_scaffold] Leading and Trailing widgets are not visible on NavigationRail

Steps to Reproduce

Execute flutter run on the code sample
Resize window

Expected results:
On Extended Navigation Rail:

On Unextended Navigation Rail: (Since there is no trailingUnextendedNavRail property)

Actual results:
On Extended Navigation Rail:

On Unextended Navigation Rail:

Code sample

import 'package:flutter/material.dart';
import 'package:flutter_adaptive_scaffold/flutter_adaptive_scaffold.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorSchemeSeed: const Color(0xFFE4935D),
        useMaterial3: true,
        brightness: Brightness.light,
      ),
      // darkTheme: ThemeData(
      //   colorSchemeSeed: const Color(0xFFE4935D),
      //   useMaterial3: true,
      //   brightness: Brightness.dark,
      // ),
      home: const HomePage(),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return AdaptiveScaffold(
      appBar: AppBar(
        elevation: 4,
        title: const Text('Demo App'),
      ),
      useDrawer: false,
      trailingNavRail: OutlinedButton.icon(
        icon: const Icon(Icons.exit_to_app),
        onPressed: () {},
        label: const Text('Exit'),
      ),
      leadingExtendedNavRail: OutlinedButton.icon(
        icon: const Icon(Icons.add),
        onPressed: () {},
        label: const Text('New'),
      ),
      leadingUnextendedNavRail: IconButton(
        icon: const Icon(Icons.add),
        onPressed: () {},
      ),
      destinations: const <NavigationDestination>[
        NavigationDestination(
          icon: Icon(Icons.home),
          label: 'Home',
        ),
        NavigationDestination(
          icon: Icon(Icons.add_box),
          label: 'Counter',
        ),
      ],
      body: (final _) {
        return const SizedBox.shrink();
      },
      onSelectedIndexChange: (final index) {},
    );
  }
}

This issue is caused because the leading and trailing widgets are not passed into AdaptiveScaffold.standardNavigationRail() function from AdaptiveScaffold widget in adaptive_scaffold.dart.
The solution:
After providing leading and trailing widgets to AdaptiveScaffold.standardNavigationRail() from AdaptiveScaffold widget, it works as expected.
class _AdaptiveScaffoldState extends State<AdaptiveScaffold> {
  @override
  Widget build(BuildContext context) {
    return Directionality(
      ...
        body: AdaptiveLayout(
          bodyOrientation: widget.bodyOrientation,
          bodyRatio: widget.bodyRatio,
          internalAnimations: widget.internalAnimations,
          primaryNavigation: SlotLayout(
            config: <Breakpoint, SlotLayoutConfig>{
              widget.mediumBreakpoint: SlotLayout.from(
                key: const Key('primaryNavigation'),
                builder: (_) => AdaptiveScaffold.standardNavigationRail(
                  width: widget.navigationRailWidth,
                  selectedIndex: widget.selectedIndex,
                  leading: widget.leadingUnextendedNavRail, // add this line
                  destinations: widget.destinations
                      .map((_) => AdaptiveScaffold.toRailDestination(_))
                      .toList(),
                  onDestinationSelected: widget.onSelectedIndexChange,
                ),
              ),
              widget.largeBreakpoint: SlotLayout.from(
                key: const Key('primaryNavigation1'),
                builder: (_) => AdaptiveScaffold.standardNavigationRail(
                  width: widget.extendedNavigationRailWidth,
                  extended: true,
                  leading: widget.leadingExtendedNavRail, // add this line
                  trailing: widget.trailingNavRail, // add this line
                  selectedIndex: widget.selectedIndex,
                  destinations: widget.destinations
                      .map((_) => AdaptiveScaffold.toRailDestination(_))
                      .toList(),
                  onDestinationSelected: widget.onSelectedIndexChange,
                ),
              ),
            },
          ),
          ...
    );
  }
}

Thanks for the detailed report and code sample. Using it, I see same behavior.

 stable, master flutter doctor -v
[✓] Flutter (Channel stable, 3.3.7, on macOS 12.2.1 21D62 darwin-x64, locale
    en-GB)
    • Flutter version 3.3.7 on channel stable at
      /Users/dhs/documents/fluttersdk/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision e99c9c7cd9 (2 days ago), 2022-11-01 16:59:00 -0700
    • Engine revision 857bd6b74c
    • Dart version 2.18.4
    • DevTools version 2.15.0

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

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

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

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

[!] Flutter (Channel master, 3.5.0-12.0.pre.141, on macOS 12.2.1 21D62
    darwin-x64, locale en-GB)
    • Flutter version 3.5.0-12.0.pre.141 on channel master at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 19c5fc50d9 (45 minutes ago), 2022-11-06 23:09:10 -0500
    • Engine revision 0cbdf464c0
    • Dart version 2.19.0 (build 2.19.0-374.0.dev)
    • DevTools version 2.19.0
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

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

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

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.


[FEATURE REQ] Provide property to configure auto lock renewal for Standard tier

Is your feature request related to a problem? Please describe.
Currently, it is possible to set max lock time for 5 minutes for a message and impossible to configure auto-renewal of a message that is in processing.
We do use ServiceBus messages for starting some heavy file processing activities which are taking 10-60 minutes to complete and want to use the PEEK_LOCK approach to have the ability to retry failed or abandoned messages.
Describe the solution you'd like
Please, provide the ability to set auto-renewal for messages in progress via properties.
Describe alternatives you've considered
As an alternative, 2 hours of max lock duration can also be an option

Currently, it is possible to set max lock time for 5 minutes for a message

You can set the max auto lock renewal time to any number based on your needs. Can you share more on where you found that you can only set this to at max 5 minutes?


Corrections for multiple plays

Corrections for multiple plays of the same song.

If song has been saved locally before and should not be sent to last.fm, the local db is now updated with the new array location

Removal of locally stored songs removed (not needed anymore) and also seems to fix an issue caused by time-zones where songs were marked as "Today" even though it's part of the previous day. Identification based on array position now.

Tested on running 3 songs in a loop, all of them getting tracked correctly.

thanks for this was meaning to make this change on my own but now i don't have to!


Why is preparing an image from a generalized Azure VM not recommended?

This article states: "To scale Batch pools reliably with a custom image, we recommend creating a managed image using only the first method: using snapshots of the VM's disks.".
Why is this the case?
I understood that deprovisioning and generalizing VMs is recommended for production workloads. Especially, considering the removal of user accounts.
Thank you very much in advance for clarifying.

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

ID: 769b09e2-6818-2cdc-5f4d-bcd4f7bb9ae7
Version Independent ID: 3f3e9318-bfac-9d46-c048-f1c3667b2750
Content: Provision a custom pool from a managed image - Azure Batch - Azure Batch
Content Source: articles/batch/batch-custom-images.md
Service: batch
GitHub Login: @laurenhughes
Microsoft Alias: lahugh

@Christian-e-S Thanks for the feedback! We are currently investigating and will update you shortly.

@laurenhughes Please answer the users question and update the doc if needed

#reassign:@JnHs

Thank you @Christian-e-S for the feedback, and I apologize for the long time to respond. As this is a product question and not a docs issue, I would suggest using the newly announced Docs Q&A forum instead.
https://docs.microsoft.com/en-us/answers/topics/azure-batch.html
Thanks again!
@MicrosoftDocss/azure-cxp-triage #please-close


Feat/vendor card

Adds the vendor card feature.
Issue #7

@ccmelas Did you know the issue you resolve was for #2  not #7 ?

@owonwo so that's taken care of.

@NotJohs are you done ?

@ccmelas this is the link for the vendor list component Designs Spec


Get imagettftext array back using text() method

It would be nice to have the imagettftext array return value in order to place a second text next to the first. Maybe saving it as a lastText position array property.
Overall great work!

Good idea. With 9b40cc8 you can now pass a third argument which will be populated by reference.
Example:
$image = new \claviska\SimpleImage('image.png');
$image
  ->text('Some Text', [
    'fontFile' => 'font.ttf',
    'size' => 50,
    'color' => 'white',
    'anchor' => 'center'
  ], $box)
  // Draws a rectangle around the text
  ->rectangle($box['x1'], $box['y1'], $box['x2'], $box['y2'], 'red');

Also see #165 which addresses a long-standing text positioning bug.


Remote crc

Hello, I am installing a crc on a baremetal Debian 11, I want to be able to connect to the cluster from outside on a Windows machine, and I am not getting it, I have opened ports, I have exposed routes and the documentation does not have any effect when I apply it, could you please help me . The crc version is the latest, just like the oc cli.

The documentation has a section about this. Please check https://crc.dev/crc/