[Bug]: bad startup performance

Please confirm that you have:

[X] Searched existing issues to see if your issue is a duplicate. (If you’ve found a duplicate issue, feel free to add additional information in a comment on it.)
[X] Reproduced the issue in the latest CLI version.

In which of these areas are you experiencing a problem?
Theme
Expected behavior
Running shopify theme dev --store shop.myshopify.com starts executing immediately.
Actual behavior
Running any command (version as well) takes 5+ seconds to run. For a modern application we are running hundreds of times a day thats not really great.
Verbose output
❯ get-date; shopify theme dev --store shop.myshopify.com --verbose

Freitag, 2. Juni 2023 15:23:37
2023-06-02T13:23:47.635Z: Running command theme dev

Reproduction steps

run any command

Operating System
Windows 11 22H2 (22621.1702)
Shopify CLI version (check your project's package.json if you're not sure)
3.46.2
Shell
powershell with starship
Node version (run node -v if you're not sure)
v16.14.2
What language and version are you using in your application?
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt], pnpm 8.6.0

experienced this too ever since I migrated from cli 2.x to 3.x, there's something throttling theme commands vs how it was before

I'd recommend running with the --verbose flag and reporting what seems to be taking a lot of time for you. There have been some changes to how authentication works, so it's possible that's behind it, or it could be any of the other things that happen during startup. Hard to improve without some concrete data. Looking forward to seeing what you come up with!

Just leaving this here: https://blog.logrocket.com/snapshot-flags-node-js-v18-8/
If node really is the problem here, there might be some ways to improve startup time.
Any ideas on how to check what actually is the problem here?
I think I might do a run with process monitor hooked up to take a look at syscalls tomorrow.

You can also try again setting DEBUG=* in the environment. This will log as it loads the commands, and help understand whether the issue is node itself or some CLI code.
You can also try running node -e "console.log('hello')" to see how node performs on a trivial script.

Thanks for the pointers!
Running with the Debug env has the same behaviour: 10 seconds nothing, then the first debug entry appears. In that time the Microsoft Defender task is running, so I suspect this to be some antivirus scanning going on. Will try to disable it and run again.
Running `node -e "console.log('hello')"`` returns hello instantly.

@Christoph-AK thanks for the context! My read of this is that most of the time is taken by loading dependency packages, which is quite slow on Windows compared with Linux or Mac systems, due to a mixture of NTFS and subsystem design issues. Simply put, Windows is not built to run Node, where the common practice is to load many small files on startup.
Unfortunately, this isn't going to be as simple as a snapshot, because:

Snapshots are only experimentally supported from 18.8 and on. We are still committed to supporting 16+ for a while. And even then, we shouldn't rely heavily on experimental features.
If I understand correctly, snapshots are only supported for 1 file; you can't use it to cache your entire loaded dependency tree.

It's possible we could use pkg to come up with some kind of solution... but at any rate, it's going to be a heavy lift.
If the speed is too slow to deal with, it might be best to try other terminals or set up WSL on your machine, which should be much faster at loading dependencies. Wish I had a better suggestion, but I don't at the moment. Will share your findings with the team, though.

@muchisx

experienced this too ever since I migrated from cli 2.x to 3.x, there's something throttling theme commands vs how it was before

Can you elaborate on what you've experienced? What level of slowdown?

Hey @amcaplan !
It's a similar thing to what @Christoph-AK is experiencing, I also use Windows, 11 in my case.
In CLI 2.x which was running on ruby gems, right? commands and data fetching was fast, so running shopify theme list would return the themes list in a matter of 1s max 2s.
in CLI 3.x now that is running on node, commands like shopify theme list take sometimes up to 10s to display the list.
I guess it's not unusable! but if we can find a solution would be nice.
Video Demo
https://github.com/Shopify/cli/assets/34131801/f375f400-aa61-4930-9363-d5ebe4283df7
Verbose
pwsh> shopify theme pull --store bboxus --verbose
2023-06-08T14:23:09.273Z: Running command theme pull
  shopify:theme:pull init version<EMAIL_ADDRESS>argv: [ '--store', 'bboxus', '--verbose' ] +0ms
2023-06-08T14:23:09.294Z: Ensuring that the user is authenticated with the Theme API with the following scopes:
[]

2023-06-08T14:23:09.295Z: Ensuring that the user is authenticated with the Admin API with the following scopes for the store bboxus.myshopify.com:
[]

2023-06-08T14:23:09.295Z: Getting session store...
2023-06-08T14:23:09.298Z: Validating existing session against the scopes:
[
  "openid",
  "https://api.shopify.com/auth/shop.admin.graphql",
  "https://api.shopify.com/auth/shop.admin.themes",
  "https://api.shopify.com/auth/partners.collaborator-relationships.readonly",
  "https://api.shopify.com/auth/shop.storefront-renderer.devtools",
  "https://api.shopify.com/auth/partners.app.cli.access"
]
For applications:
{
  "adminApi": {
    "scopes": [],
    "storeFqdn": "bboxus.myshopify.com"
  }
}

2023-06-08T14:23:09.299Z: Sending Identity Introspection request to URL: https://accounts.shopify.com/oauth/introspection
2023-06-08T14:23:09.300Z: Sending POST request to URL https://accounts.shopify.com/oauth/introspection
With request headers:
 - User-Agent: Shopify CLI; v=3.45.1
 - Keep-Alive: timeout=30
 - Sec-CH-UA-PLATFORM: win32
 - Content-Type: application/json

2023-06-08T14:23:09.650Z: Request to https://accounts.shopify.com/oauth/introspection completed in 343 ms
With response headers:
 - cache-control: no-cache, no-store, private, must-revalidate, max-age=0
 - content-type: application/json; charset=utf-8
 - etag: W/"45b43db5a401d675c1e858d04c1a1807"
 - x-request-id: 9ebd2aa2-8be5-4211-ad77-1aa3680adf6a

2023-06-08T14:23:09.653Z: The identity token is valid: true
2023-06-08T14:23:09.653Z:
The validation of the token for application/identity completed with the following results:
- It's expired: true
- It's invalid in identity: false

2023-06-08T14:23:09.653Z: The current session is valid but needs refresh. Refreshing...
2023-06-08T14:23:09.654Z: Sending POST request to URL https://accounts.shopify.com/oauth/token?grant_type=refresh_token&access_token=atkn_3dac631c740ad6fa629e049b994acff02fc6514d9d07fb1c1b7ddebf1e39bc25&refresh_token=atkn_11c08fca1ca33ddd62fab53d156bfe244c7abc8514498ee4c3331b6b7e495d08&client_id=fbdb2649-e327-4907-8f67-908d24cfd7e3
With request headers:
 - User-Agent: Shopify CLI; v=3.45.1
 - Keep-Alive: timeout=30
 - Sec-CH-UA-PLATFORM: win32
 - Content-Type: application/json

2023-06-08T14:23:10.149Z: Request to https://accounts.shopify.com/oauth/token?grant_type=refresh_token&access_token=atkn_3dac631c740ad6fa629e049b994acff02fc6514d9d07fb1c1b7ddebf1e39bc25&refresh_token=atkn_11c08fca1ca33ddd62fab53d156bfe244c7abc8514498ee4c3331b6b7e495d08&client_id=fbdb2649-e327-4907-8f67-908d24cfd7e3 completed in 494 ms
With response headers:
 - cache-control: no-cache, no-store, private, must-revalidate, max-age=0
 - content-type: application/json; charset=utf-8
 - etag: W/"152d79bad47dac1b959115aeabe9db0e"
 - x-request-id: 7fd149d5-6644-4b45-b55e-a170db673329

2023-06-08T14:23:10.151Z: Sending POST request to URL https://accounts.shopify.com/oauth/token?grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&client_id=fbdb2649-e327-4907-8f67-908d24cfd7e3&audience=271e16d403dfa18082ffb3d197bd2b5f4479c3fc32736d69296829cbb28d41a6&scope=openid+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fpartners.app.cli.access&subject_token=atkn_c263b1dcd2e54c96310af3225881123367db12db0f0384bf0331192751d35805
With request headers:
 - User-Agent: Shopify CLI; v=3.45.1
 - Keep-Alive: timeout=30
 - Sec-CH-UA-PLATFORM: win32
 - Content-Type: application/json

2023-06-08T14:23:10.151Z: Sending POST request to URL https://accounts.shopify.com/oauth/token?grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&client_id=fbdb2649-e327-4907-8f67-908d24cfd7e3&audience=ee139b3d-5861-4d45-b387-1bc3ada7811c&scope=openid+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fshop.storefront-renderer.devtools&subject_token=atkn_c263b1dcd2e54c96310af3225881123367db12db0f0384bf0331192751d35805
With request headers:
 - User-Agent: Shopify CLI; v=3.45.1
 - Keep-Alive: timeout=30
 - Sec-CH-UA-PLATFORM: win32
 - Content-Type: application/json

2023-06-08T14:23:10.513Z: Request to https://accounts.shopify.com/oauth/token?grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&client_id=fbdb2649-e327-4907-8f67-908d24cfd7e3&audience=271e16d403dfa18082ffb3d197bd2b5f4479c3fc32736d69296829cbb28d41a6&scope=openid+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fpartners.app.cli.access&subject_token=atkn_c263b1dcd2e54c96310af3225881123367db12db0f0384bf0331192751d35805 completed in 361 ms
With response headers:
 - cache-control: no-cache, no-store, private, must-revalidate, max-age=0
 - content-type: application/json; charset=utf-8
 - etag: W/"e65e0eaaff0d159bf29825ac79ab55c5"
 - x-request-id: b8b108d6-52a4-4a4f-be87-0a3c35cc6c22

2023-06-08T14:23:10.733Z: Request to https://accounts.shopify.com/oauth/token?grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&client_id=fbdb2649-e327-4907-8f67-908d24cfd7e3&audience=ee139b3d-5861-4d45-b387-1bc3ada7811c&scope=openid+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fshop.storefront-renderer.devtools&subject_token=atkn_c263b1dcd2e54c96310af3225881123367db12db0f0384bf0331192751d35805 completed in 580 ms
With response headers:
 - cache-control: no-cache, no-store, private, must-revalidate, max-age=0
 - content-type: application/json; charset=utf-8
 - etag: W/"2c6d63060dfaed184b5f89141b44d8ee"
 - x-request-id: 46309b84-199e-41e9-8b1c-e339103fbcb6

2023-06-08T14:23:10.734Z: Sending POST request to URL https://accounts.shopify.com/oauth/token?grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&client_id=fbdb2649-e327-4907-8f67-908d24cfd7e3&audience=7ee65a63608843c577db8b23c4d7316ea0a01bd2f7594f8a9c06ea668c1b775c&scope=openid+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fshop.admin.graphql+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fshop.admin.themes+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fpartners.collaborator-relationships.readonly&subject_token=atkn_c263b1dcd2e54c96310af3225881123367db12db0f0384bf0331192751d35805&destination=https%3A%2F%2Fbboxus.myshopify.com%2Fadmin
With request headers:
 - User-Agent: Shopify CLI; v=3.45.1
 - Keep-Alive: timeout=30
 - Sec-CH-UA-PLATFORM: win32
 - Content-Type: application/json

2023-06-08T14:23:11.086Z: Request to https://accounts.shopify.com/oauth/token?grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token&client_id=fbdb2649-e327-4907-8f67-908d24cfd7e3&audience=7ee65a63608843c577db8b23c4d7316ea0a01bd2f7594f8a9c06ea668c1b775c&scope=openid+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fshop.admin.graphql+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fshop.admin.themes+https%3A%2F%2Fapi.shopify.com%2Fauth%2Fpartners.collaborator-relationships.readonly&subject_token=atkn_c263b1dcd2e54c96310af3225881123367db12db0f0384bf0331192751d35805&destination=https%3A%2F%2Fbboxus.myshopify.com%2Fadmin completed in 351 ms
With response headers:
 - cache-control: no-cache, no-store, private, must-revalidate, max-age=0
 - content-type: application/json; charset=utf-8
 - etag: W/"a66db28c5b83c032f4f82071ec82b255"
 - x-request-id: d1a04257-2255-46ab-bba0-5f7d475113b8

2023-06-08T14:23:11.088Z: Setting session store...
2023-06-08T14:23:11.098Z: Getting development theme...
2023-06-08T14:23:11.669Z: Request to https://bboxus.myshopify.com/admin/api/unstable/themes/124428648546.json?fields=id completed in 569 ms
With response headers:
 - content-type: application/json; charset=utf-8
 - x-request-id: d13bc533-7bbf-40c4-882e-d32ca07e38fb

2023-06-08T14:23:11.695Z:
Running system process:
  · Command: ruby -v
  · Working directory: C:\Users\Migue

2023-06-08T14:23:11.729Z:
Running system process:
  · Command: bundle -v
  · Working directory: C:\Users\Migue

2023-06-08T14:23:12.023Z: Reading the content of file at AppData/Roaming/npm/node_modules/<EMAIL_ADDRESS>2023-06-08T14:23:12.044Z:
Running system process:
  · Command: bundle config set --local path C:\Users\Migue\AppData\Local\shopify-gems-nodejs\Cache
  · Working directory: C:/Users/Migue/AppData/Roaming/npm/node_modules/@shopify/theme/node_modules/@shopify/cli-kit/assets/cli-ruby

2023-06-08T14:23:12.377Z:
Running system process:
  · Command: bundle config set --local without development:test
  · Working directory: C:/Users/Migue/AppData/Roaming/npm/node_modules/@shopify/theme/node_modules/@shopify/cli-kit/assets/cli-ruby

2023-06-08T14:23:12.719Z:
Running system process:
  · Command: bundle install
  · Working directory: C:/Users/Migue/AppData/Roaming/npm/node_modules/@shopify/theme/node_modules/@shopify/cli-kit/assets/cli-ruby

2023-06-08T14:23:13.286Z:
Running system process:
  · Command: bundle exec ruby C:/Users/Migue/AppData/Roaming/npm/node_modules/@shopify/theme/node_modules/@shopify/cli-kit/assets/cli-ruby/bin/shopify theme pull C:\Users\Migue --development-theme-id<PHONE_NUMBER>46
  · Working directory: C:\Users\Migue

DEBUG GET https://bboxus.myshopify.com/admin/api/unstable/themes.json with request_id: 67d0f303-7b0c-427c-9a89-b1fabd47fbdb
? Select a theme to pull from bboxus.myshopify.com (Navigate up with 'k' and down with 'j', press Enter to select, filter with 'f', enter option with 'e')
> 1.  v3.0.8 | 2 Feb | Klaviyo Popup [live]
  2.  CDSD-23692 [unpublished]
etc...

From here it looks like Microsoft is pretty open about being very slow for Node applications. So unless we'd choose to rewrite the CLI in another language (unlikely at the moment), this isn't something we can fix easily.
However, as mentioned above, WSL is a very good option. Additionally, Windows Insider builds have a Dev Drive feature where you can move your npm cache for significantly better performance.
@muchisx it looks like some of what you're experiencing is slowness on refreshing your login. Recall that on CLI2 you'd run a command, get told to log in again, then log in, then run the command and succeed? On CLI3 we take care of this within the command, including refreshing your authentication. We could probably give better UI feedback about what's happening (e.g. a taskbar saying we're refreshing your authentication) but it's impossible to circumvent the need to be certain we have valid authentication before proceeding. That's also why the second run of the command is significantly faster.

This all sound fairly lame. I think it is obvious that V3 CLI runs very slowly and to say it is a "Windows" thing is not really a valid response. I run node under Windows and Linux as well as in WSL and all other packages do not have extreme differences in performance. Has any analysis been done as to why exactly it runs slow, which dependencies, alternatives etc? Just letting
the issue close appears the lazy option.


Getting the same usable collectible item from star-shaped ore spot twice

An example is digging up the floodgate key, using it (which removes it from your inventory), and being able to dig it up again. This doesn't matter mechanically and it seems like it would be a pain to fix, so I'm not fixing it. 😛

Actually, that does not remove it from your inventory. I need to test this more.

Closing this since it's been three weeks and it hasn't shown up again.


Any progress?

Hello Grizzelbee,
are you still working on this project? Is there any possibility to install it at the moment?

Hi @Spezialtrick
to be honest - currently I'm not working on this and I don't know whether ever I do.
 Therefore I started to write this ioBroker adapter to integrate it better to ioBroker.
But ... during scripting it turned out that esPresence does not work really good for me. The accuracy of the presence detection was pretty poor and as a result of that I lost my interest in this project.
Maybe sometimes I'll give it another try - but currently not.
The project should be installable - but without any warranty that it'll do any usefull things. The only thing I can promise: It will use diskspace. ;)


feat(map): user menu button for sign-up [EP-2760]

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


error install

(virtualenv-pmgbilltracker)notroot@dhcppc4:~/pmgbilltracker/pmgbilltracker$ python runserver_backend.py
Traceback (most recent call last):
  File "runserver_backend.py", line 1, in <module>
	from pmg_backend import app as app_backend
  File "/home/notroot/pmgbilltracker/pmgbilltracker/pmg_backend/__init__.py", line 4, in <module>
	from flask import Flask
ImportError: No module named flask

How fix it

Hi, please tell me correct steps for installation, tnks

Hi Felipe, it looks like some of the requirements are missing. Once you've activated your virtualenv
source virtualenv-pmgbilltracker/bin/activate

you need to install the requirements:
sudo pip install -r requirements/local.txt

B.t.w. thanks for having a look at the code. What is the problem that you need to solve?
We wrote it in order to add some views to a really outdated, badly designed website. The site has lots of content on things like parliamentary committee meetings, but it has no way of navigating the dataset to find everything that's related to a particular bill. So that's the only thing that the pmgbilltracker project was built for.
Right now, we're very close to launching a re-design of the site itself, which includes these bill-centric views. So this project will be retired.

you have a date for realease?

Yes, we're releasing at the end of this month. The code is at
https://github.com/Code4SA/pmg-cms-2
On 9 January 2015 at 23:47, felipe<EMAIL_ADDRESS>wrote:

you have a date for realease?
—
Reply to this email directly or view it on GitHub
https://github.com/Code4SA/pmgbilltracker/issues/45#issuecomment-69404608
.


Remove duplicate config in description

As reported by @scottisafool:

Needs more details and very old.

@RichiCoder1 apologies, yes, more information definitely required here.
This is when doing the export of the list of installed packages.  When the save as dialog pops up, asking where to save the file, within the description of the "Save as type" the word config is unnecessarily duplicated.
This was be the offending line here:
https://github.com/chocolatey/ChocolateyGUI/blob/b5b05c42a60634ce29cf3e0b7acc977b2f6b3aa1/Source/ChocolateyGui/ViewModels/Controls/LocalSourceControlViewModel.cs#L209

Hmmm. This needs to be rethought either way. I'm going to leave this closed for now and kill of the export feature.

@RichiCoder1 said...
kill of the export feature.

Hmm, that was an often asked for feature in ChocolateyGUI. I would be hesitant to remove that.

If we're to keep it, would probably like to map out something more official with Choco ( @ferventcoder ) or Boxstarter ( @mwrock )

@ferventcoder do you mean have a function within Chocolatey Client/Lib that does the actual export, and then call that from ChocolateyGUI?


Adding optional km/h option for windspeed

Adding new option wendSpeedUnit with default Mps. If option is km/h it calculates the value with *3,6

knock knock


ignore default paths if -scp is provided

close #970

Thanks so much for your contribution @zrquan , we appreciate it!
We also have a Discord server, which you’re more than welcome to join. It's a great place to connect with fellow contributors and stay updated with the latest developments!

I accidentally deleted the head repository. Can someone teach me how to recover it, or do I have to submit a new PR :smiling_face_with_tear:

@zrquan  Can you create a new branch with the same name and commits?

create a new branch with the same name and commits

Then I created a new PR(#979) 😂


[9.0] Handle card failure in plan swap

Previously, when a plan swap was attempted and payment failed, the exception was cascaded to the end user and the update to the subscription in the app was not performed. However, the update to the subscription in Stripe itself was performed and the two states would be out of sync unless you implemented webhooks.
We've decided to catch the card failure exception and allow the plan swap to continue regardless of the failed payment. This leaves the subscription in a "past_due" state. This is because payment failure will be handled by Stripe and Stripe may attempt to retry the payment later on. When payment finally fails on its last attempt Stripe will send out a webhook to update the subscription in the way you specified in its settings: https://stripe.com/docs/billing/lifecycle#settings

@driesvints what if a developer want to catch this specific event and perform its own business logic about failed plan update? Like in my case I want to revert back to previously used plan.

@hlorofos unfortunately we can't provide for two cases. You'll have to roll your own solution and override the method. We encourage making use of webhooks to let Stripe retry the payments first.

Understandable and this is exactly how I did it. Just to explain this to anyone reading this thread, you have to create custom Billable trait and use your own Subscription model as the relationship. Then you can define any custom logic.
My reasonale is the following - a customer is on plan and trying to upgrade to a better plan, however the charge isn't successful (like there is no funds for such a costly plan). In my case I'm rolling back previous plan, so that customer could continue using it and potentially be re-billed with the usual price.


Rename and reorganize components

Our current naming convention is based on the ecosystems the components were originally built in, and also assume a narrow view of use-case.

One example is "ArticleCarousel." This refers to WWW using ArticleCarousel solely for news stories. This isn't a holistic name and leads to a disorganized and confusing naming convention in Explorer 1.
Another example is all of the different card types, and how they aren't all visible in one place.
And yet another example is our usage of the word "Blocks" to refer directly to blocks that are available for use in a wagtail body streamfield.

@Scotchester has started a figjam board categorizing the current state of our components.

Notes after a discussion with @kaelynrichards and @Scotchester:
Component renaming notes

combine article and topics carousel into “LinkCarousel”

instead of variant, use “item format” or “item type?” and choose “card” or “tile”

Rethinking base

Problem statement: noticed a disconnect between things like BaseCarouselCards and BaseVideoBg compared to things like buttons and links. Example: users probably wouldn’t copy the HTML of BaseCarouselCards into a project template. Users should use things like “LinkCarousel” for that.
BaseCarouselCards and other similar utility components should be rethought of as “mixins” or similar and categorized as such on Storybook.
we could either take base things out of base, or leave that as is, and move things like “button” or “link” into a more elemental category, like atoms

Hero blocks renaming strategy
In Storybook, present it as a hero block with different variants, rather than separate hero components:

rename HeroFocalPoint to "Large" in Storybook and WCP
rename HeroFeature to "Medium" in Storybook and WCP
the new small hero should be called "Small" in Storybook and WCP
rename "HeroMedia" to "Media Only" in Storybook and WCP

Rename BlockFactCards:

BlockFactCards --> BlockCardGroup
BlockFactCardItem --> BlockCard

Where will we change the name:

Storybook
Explorer 1 files (scss and js)
Block labels in WCP

Where we won't change the name:

We will not change data models (at least not yet), but we should consider maintaining a table of how the data models correspond with the design system blocks

Reviewed your spreadsheet and replied to a few of your comments, @stephiescastle!


Running master fails

I'm getting the following error:
thread 'main' panicked at /home/malte/.cargo/registry/src/index.crates.io-6f17d22bba15001f/clap_builder-4.4.7/src/builder/debug_asserts.rs:832:5:
Argument "stream"
  Arg::is_takes_value_set is required when Arg::is_hide_possible_values_set is set.

when building with
cargo 1.76.0-nightly (26333c732 2023-11-28)
rustc 1.76.0-nightly (b10cfcd65 2023-11-29)

but I've tried stable aswell.
The following patch fixes it for me, without showing possible values when running with heygpt --help
diff --git a/src/main.rs b/src/main.rs
index 7263c4c..2631142 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -26,7 +26,7 @@ use spinner::Spinner;
 struct Options {
     /// Whether to use streaming API (default: true)
     #[default(true)]
-    #[arg(long, hide_possible_values = true)]
+    #[arg(long)]
     pub stream: bool,

     /// The model to query (default: gpt-3.5-turbo)

I could send a PR, if that's okay with you. Thanks for your work!

Hi, Thanks for the feedback. Several issues recently discovered are related to the clap_serde library. I plan to remove it soon.


ESP32 support

Support ESP32 single or dual core with Bluetooth LE and WiFi.

ESP32-IDF docs
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/
Documentation for Bluetooth LE API
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/bluetooth/bt_le.html
(alternative simpler BLE API) NimBLE
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/bluetooth/nimble/index.html
GPIO mapping
https://github.com/espressif/arduino-esp32/blob/master/docs/esp32_pinmap.png
Reserved GPIO
https://desire.giesecke.tk/index.php/2018/07/06/reserved-gpios/

Will use TTGO T-Display board (without display for now)
https://github.com/Xinyuan-LilyGO/TTGO-T-Display


Using dnx version > to 451 makes Unit test disappears from test explorer

Related to this stackoverflow question : http://stackoverflow.com/questions/35626118/why-does-xunit-tests-are-not-visible-in-test-explorer-if-dnx-version-is-to-451
No answers in SO, so I post my question here. Is there a reason ?
I'm using same config as my SO question
{
  "version": "1.0.0-*",
  "description": "SESAMEngineFacturation.Tests Class Library",
  "authors": [ "christophe.mom" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",
  "commands": {
    "test": "xunit.runner.dnx"
  },
  "dependencies": {
    "SESAMEngineFacturation": "",
    "xunit": "2.1.0",
    "xunit.runner.dnx": "2.1.0-*",
    "FluentAssertions": "4.2.2"
  },
  "frameworks": {
    "dnx451": { }
  }
}

This make them appear. If I choose dnx460, there not visible (and no compilation error). We want to use dnx460. How can we manage it ?

DNX isn't supported yet, it needs changes in ReSharper. I'm hoping to get them done in time for 10.1 (aka 2016.1 in ReSharper's new versioning scheme). Closing this in favour of #38


List on Graylog Marketplace

We have launched the beta of the Graylog Marketplace: https://marketplace.graylog.org/
The Marketplace is the central directory of all Graylog add-ons and integrations, including GELF libraries.
You would help us a lot if you could submit your tool there. :)

Cool, thanks for letting me know. I've submitted this now.

Thank you! :+1: :shipit:


remove cluster-prereqs for openshift from build-manifest

This PR removes the cluster-prereqs i.e. enabling MachineConfig (MC) for the MachineConfigPools (MCPs) to support cgroup-v2 and kernel-devel extensions in case of OpenShift clusters. With the latest Kepler version, we no longer require them.

just a heads up, the MC still are being linked in the troubleshooting guide: https://sustainable-computing.io/usage/trouble_shooting/#kepler-energy-metrics-are-zeroes

thank you @engelju for checking this.
@vprashar2929 would you like to have a follow up PR in the doc?

Sure @rootfs will update that.


Adding documentation support based on Issue #1408. Closes #1408

Closes #1408
Have you signed the contributor license agreement? Yes
Have you followed the contributor guidelines? Yes
Have you run make check-all successfully? No
Did you choose a descriptive title and description for your PR? Yes
(Only for maintainers) Did you apply appropriate labels and a milestone?

Thank you for the pull request! Can you please add "Closes #1408" in the description?

Hey @pquentin
I have mentioned the changes you asked for in the description


update for spree v3.00

sprangular is using spree 2-4-stable is there any plan for spree 3?

@ccfiel It's on our roadmap. We're also going to be testing Sprangular with Solidus

@bryanmtl nice!


NBT tag too Big

I keep getting this error when using pretty pipes well i be leave this is but not 100 % sure tho  "Internal Exception: io.netty.handler.codec.DecoderException: java.lang.RuntimeException: Tried to read NBT tag that was too big; tried to allocate: 2097175bytes where max allowed: 2097152"
I am using prettypipes with minecolonies to move items into a sorter  so it could be a minecolonies item going into pipes triggering error.
and I am playing through lan server  so if you need any log files i would need to get them off the other computer since it hosts minecraft

Hi, I also get this problem, i have to replace the capabilities.dat file with an older one, when looking inside it has a few hundred 'items' in the pretty pipes section which i think is the issue, so just too many items being transferred in the pipe network

I'd like to join in on this problem, I have encountered a capabilities.dat file that has 1678 prettypipe:network items in it that reaches the packet size limit.
I've attached a parsed file with the error from the server:
error.txt
and the capabilities.dat file (Replaced the file extension to .txt since GitHub doesn't allow .dat files):
capabilities.txt
Most data seems to be spent on path, isn't there a way to allow the client to calculate the path for itself?
If not, perhaps a collection of cardinal vectors would be a more compact way to define the path of items are supposed to take?
Something like this:
{
  "path": [
   {"axis":"y", "value":5},
   {"axis":"x", "value":-4},
   {"axis":"z", "value":1},
  ]
}

Hi! I'll need a bit more context for the error you posted, @aofekiko.
It seems like a big packet is being sent here that features forge capabilities for the world from multiple mods? By default (at least when I first made the mod), Forge's Level capabilities aren't ever sent to the client automatically, and Pretty Pipes doesn't do so or require them to be either.
Can you try to reproduce this issue with just Pretty Pipes installed? There might be a mod that sends all capability data to the client, no matter what mods it comes from.

I am running the FTB Inferno modpack.
Sadly there is no stack trace other than the packet dump that I sent and the line [00:55:09] [Netty Epoll Server IO #6/ERROR]: Attempted to send packet over maximum protocol size: 2119699 > 2097152 that comed before it.
I will work on trying to reproduce this.
Right now I cant seem to populate items with any entries

I managed to reproduce the issue.

Server stack trace:
[20:38:06] [Netty Server IO #6/ERROR] [minecraft/PacketEncoder]: Error receiving packet 34
java.lang.IllegalArgumentException: Packet too big (is 10053572, should be less than 8388608): net.minecraft.network.protocol.game.ClientboundLevelChunkWithLightPacket@2fe9c4fc
	at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:48) ~[server-1.18.2-20220404.173914-srg.jar%2342!/:?]
	at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:14) ~[server-1.18.2-20220404.173914-srg.jar%2342!/:?]
	at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:709) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:792) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:110) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:764) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:790) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:758) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:808) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1025) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:306) ~[netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at net.minecraft.network.Connection.m_178303_(Connection.java:214) ~[server-1.18.2-20220404.173914-srg.jar%2342!/:?]
	at net.minecraft.network.Connection.lambda$sendPacket$8(Connection.java:203) ~[server-1.18.2-20220404.173914-srg.jar%2342!/:?]
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) [netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469) [netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) [netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) [netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-all-4.1.68.Final.jar%2330!/:4.1.68.Final]
	at java.lang.Thread.run(Thread.java:833) [?:?]

Client logs show no error.
capabilities.dat file:
capabilities.txt
World file use for reproduction:
world.zip

Thanks for investigating! This looks like it'll help a lot :)

FYI: introducing this Packet Fixer solved this for me.


contour crashes when spamming clear

Contour Terminal version
Contour Terminal Emulator 0.3.0-unreleased-master-c4103667
Installer source
something else (please specify below)
Operating System
Arch Linux
Architecture
x86-64
Other Software
GNU bash, version 5.1.16(1)-release-(x86_64-pc-linux-gnu)
Steps to reproduce
spam clear in the terminal a bunch of times.
Expected Behavior
clears the terminal output
Actual Behavior
pauses for a small amount of time, then crashes after a certain number of clears. The number of clears does not have to be the same.
Additional notes
I used the git repo that has the PKGBUILD info for arch linux. The AUR repo to install contour.
TERM env var
contour
gdb output
Thread 3 "contour" received signal SIGABRT, Aborted.
[Switching to Thread 0x7ffff162a640 (LWP 57522)]
0x00007ffff64c134c in __pthread_kill_implementation () from /usr/lib/libc.so.6
(gdb) bt full
#0  0x00007ffff64c134c in __pthread_kill_implementation () from /usr/lib/libc.so.6
No symbol table info available.
#1  0x00007ffff64744b8 in raise () from /usr/lib/libc.so.6
No symbol table info available.
#2  0x00007ffff645e534 in abort () from /usr/lib/libc.so.6
No symbol table info available.
#3  0x000000000052f7a2 in crispy::detail::fail(std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, int) ()
No symbol table info available.
#4  0x00000000005528a6 in terminal::Grid<terminal::Cell>::verifyState() ()
No symbol table info available.
#5  0x00000000005546a3 in terminal::Grid<terminal::Cell>::scrollUp(crispy::boxed<int, terminal::detail::tags::LineCount>, terminal::GraphicsAttributes, terminal::Margin) ()
No symbol table info available.
#6  0x000000000056e402 in terminal::Screen<terminal::Cell>::scrollUp(crispy::boxed<int, terminal::detail::tags::LineCount>, terminal::GraphicsAttributes, terminal::Margin) ()
No symbol table info available.
#7  0x0000000000585aaa in terminal::Sequencer::apply(terminal::FunctionDefinition const&, terminal::Sequence const&) ()
No symbol table info available.
#8  0x0000000000587921 in terminal::Sequencer::applyAndLog(terminal::FunctionDefinition const&, terminal::Sequence const&) ()
No symbol table info available.
#9  0x0000000000588a55 in terminal::Sequencer::handleSequence() ()
No symbol table info available.
#10 0x000000000057c35a in terminal::parser::Parser<terminal::Sequencer>::parseFragment(std::basic_string_view<char, std::char_traits<char> >) ()
No symbol table info available.
#11 0x000000000057c514 in terminal::Screen<terminal::Cell>::write(std::basic_string_view<char, std::char_traits<char> >) ()
No symbol table info available.
#12 0x0000000000595de7 in terminal::Terminal::processInputOnce() ()
No symbol table info available.
#13 0x0000000000599450 in terminal::Terminal::mainLoop() ()
No symbol table info available.
#14 0x00007ffff68144d4 in std::execute_native_thread_routine (__p=0xb37ad0) at /usr/src/debug/gcc/libstdc++-v3/src/c++11/thread.cc:82
        __t = <optimized out>
#15 0x00007ffff64bf5c2 in start_thread () from /usr/lib/libc.so.6
No symbol table info available.
#16 0x00007ffff6544584 in clone () from /usr/lib/libc.so.6
No symbol table info available.

I have encountered some of these crashes on FreeBSD in the past too.
Usually it was something like a cpu-temp monitor type loop that called clear.
Sometimes these crashes also occur when running irssi inside tmux for a while.
Anyways, here's a full backtrace of the bug on the current master (fac71898c66f4f123a190be01feb9111a2ee4f51).
https://gist.githubusercontent.com/herrhotzenplotz/0c3554276ea0975137763cc8fc5a6ae5/raw/a6701030a88c930ff965388d876a7f136d6ecc1a/gistfile1.txt
Dunno if it very helpful.
Easily reproducible with:
$ while :; do clear; done

Thanks guys. I try to reproduce ASAP.

Ok, i can't repro it on my (currently on: Mac) via $ while :; do clear; done.
What's the output of:
Or alternatively:
strace -o strace.log -s 128 -e trace=write clear &&
      cat strace.log &&
       rm strace.log

Alternatively, you could run contour debug vt.trace (be aware, that prints all VT sequences being processed. just hit  to make some space for logical separation :)

Okay, it's in ED. I've found it. No need to run the above. (Can't repro still, but will look at it).

I have managed to reproduce it:

resize window
spam clear

@christianparpart

Hey guys, maybe (with CI having built the binary), you can try out that binary and confirm that it is also fixing it for you?

The crashes still happen for me with Contour Terminal Emulator 0.3.0-unreleased-master-be38086d

nico@hades:~/src/contour $ git show @ | sed 5q
commit 2bdbf27221acc93069f88c0644bbcdc6362de306
Author: Christian Parpart<EMAIL_ADDRESS>Date:   Fri Mar 25 14:41:25 2022 +0100

    [terminal] Grid: Fixes issue in in scrollUp when scrollback buffer is about to become full and rotating should start kicking in. Refs #626.
nico@hades:~/src/contour $ git branch
  fix/548-feedback
* fix/issue-626
  master
nico@hades:~/src/contour $

Backtrace at: https://gist.githubusercontent.com/herrhotzenplotz/dd6bfcd7dc196c4e77626dde95239524/raw/acd470057a69c3f54e5272d749663445d656be91/gdb.txt
Reproduce with:

Start contour
while :; do clear; done
while that loop is running, resize the window.

Wow that is an amazing backtrace. This looks clearly like another issue that is showing up now, though. I'll be digging into it. Thanks.

I am architectually not happy with the solution, so there'll be a little resize-related cleanup-rewrite to make the implementation less naive. But at least it is not crashing due to assertion failure anymore. It's working for me on Linux in my tests so far.
I noticed some oddity main-page area placement on Windows. But that may be something (entirely) different.
@cod1r can you try master branch for some little feedback, please?
p.s.: your explained crash requires the history to be fully filled (that's why while :; do clear; done trick with resize was triggering it).


nixos/tests/misc: don't test experimental nix path-info

this is both an infinite source of maintenance effort on the
distribution side and a surefire way to paint Nix development into a corner
Description of changes
Recently touched:
@hexa https://github.com/NixOS/nixpkgs/pull/315857
@Mic92 https://github.com/NixOS/nixpkgs/pull/315262
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

I think this is a bit of an overreaction. Breaking a release blocker actually doesn't cause much harm, because all it does is just delaying channel updates a bit. On the other hand having a nix release changing evaluation checksums is a problem that will cause regressions for users. In https://github.com/NixOS/nixpkgs/pull/315927 this now has been added to the nix package itself, so it's more visible when upgrading nix.

Meh, somehow I missed the diverging update... I still don't think anyone should depend on experimental features, it just makes everyone do more work.


Roll engine 9f878fcb3ecd..cee2bd73295d (5 commits)

https://github.com/flutter/engine/compare/9f878fcb3ecd...cee2bd73295d
git log 9f878fcb3ecdcc2c6ba0c6d958282c176f008183..cee2bd73295ddd464ae7d555fae744d85f698224 --no-merges --oneline
cee2bd732 Roll src/third_party/skia 97d957d1db65..ab4c138c0ef3 (3 commits) (flutter/engine#8285)
ef3cbe8ac Roll src/third_party/skia 4c0b5c4b79dd..97d957d1db65 (1 commits) (flutter/engine#8284)
bd4f6d726 Roll src/third_party/skia b1dbbc8509c6..4c0b5c4b79dd (2 commits) (flutter/engine#8283)
8d23b21d1 Roll src/third_party/skia 61bd91237778..b1dbbc8509c6 (2 commits) (flutter/engine#8282)
61838cab6 Roll src/third_party/skia ec1c6fdfdd11..61bd91237778 (1 commits) (flutter/engine#8280)
The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
If the roll is causing failures, please contact the current sheriff (liyuqian@google.com), and stop
the roller if necessary.

Trybots failed. These were the failed builds: https://cirrus-ci.com/task/6526578359009280

Commit queue failed; closing this roll.


Update download plugin to be compatible with gradle 2.7+

@matthieun : I ran into an issue with download task because of version compatibility issue.

Awesome, thanks!


exclude "scratch" from the default latest check #1613

By default, in a docker FROM statement, if no tag is specified, it is treated as the :latest tag. This is flagged by rule AC_DOCKER_0041, but the current rego implementation of the rule erroneously includes the case when the FROM references the special reserved 'image' - "scratch" - ref https://hub.docker.com/_/scratch  This PR ensures FROM scratch is not flagged.

Codecov Report

Merging #1640 (f3adf6e) into master (2029321) will not change coverage.
The diff coverage is n/a.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.

@@           Coverage Diff           @@
##           master    #1640   +/-   ##
=======================================
  Coverage   78.49%   78.49%
=======================================
  Files         280      280
  Lines        7906     7906
=======================================
  Hits         6206     6206
  Misses       1329     1329
  Partials      371      371


added zxing library definition

I have created definition file for zxing library. Review it for any issues

Looks good :)
Thanks!


app.exit() called even if preventDefault() used in will-quit event

[X] Review the documentation: https://docs.sentry.io/platforms/javascript/electron/
[X] Search for existing issues: https://github.com/getsentry/sentry-electron/issues
[X] Use the latest release: https://github.com/getsentry/sentry-electron/releases
[ ] Provide a link to the affected event from your Sentry account

Versions + Platform

[X] SDK version -<EMAIL_ADDRESS>[X] Electron version -<EMAIL_ADDRESS>[X] Platform - All Windows/macOS/Linux

Description
We listen for the will-quit event to perform some cleanup before the app is shut down. In particular flushing data and waiting for pending tasks to complete. This may take a few minutes so we use preventDefault() to stop the process and perform our cleanup, then exit gracefully.
MainProcessEssion _exitHandler takes a similar approach. However it cleans up much faster than our cleanup code and calls app.exit() before we've completed our cleanup work causing the app to shutdown immediately.
I've confirmed that adding a this to the exit handler allows it to exit gracefully while still allowing other handlers to block stop the app from quitting.
if(event.defaultPrevented) {
   return;
}

This has been released in 3.0.7. Sorry for the delay!


[SPARK-39071][SQL][PYTHON] Add unwrap_udt function for unwrapping UserDefinedType columns

What changes were proposed in this pull request?
Add unwrap_udt function for unwrapping UserDefinedType columns
Why are the changes needed?
This is useful in open-source project https://github.com/mengxr/pyspark-xgboost
Does this PR introduce any user-facing change?
Yes.
new sql function unwrap_udt added.
How was this patch tested?
Unit test.

jenkins merge


Live tweeting issue

The example given:
https://twitter.com/corylanou/status/691799977094451202
@varunksaini presenting Writing an HTTPS Server in #golang at @ChicagoGolang hosted by @MediaMath
This isn't a good example.  The general twittersphere (those people not using the website) might have seen it, but those people using the website will never see it unless they go to your Tweets & replies tab, which, most rarely do.
A better example:
.@varunksaini presenting Writing an HTTPS Server in #golang at @ChicagoGolang hosted by @MediaMath
Note the leading . in front of @varunksaini - That prevents it from being a directed tweet.
Hope this helps.

Thanks!


Can't summon plugin once loaded

Well, I'm at a loss, I launch traefik with:
--experimental.plugins.plugin-simplecache.modulename=github.com/traefik/plugin-simplecache
--experimental.plugins.plugin-simplecache.version=v0.2.1

I confirmed it loaded:
DEBU[2021-01-23T05:11:46Z] loading of plugin: cache<EMAIL_ADDRESS>but when I try to use it in a static config with:
  middlewares:
    my-plugin-simplecache:
        plugin:
            plugin-simplecache:
                path: /tmp

I end up with an odd type-less middleware:

and the middleware isn't in effect in the router:

I've tried everything I could think of, hence my cry for help :) Any feedback or ideas very much appreciated, thank you!

Meow? :\

Hi @unamedplayer,
Did you add the middleware on a router ?
Here is a full configuration sample of how using and combining pilot plugins, I hope it will help you:
traefik.toml:
[entryPoints]
  [entryPoints.web]
    address = ":10080"

[api]
  insecure = true
  dashboard = true

[metrics]
  prometheus = true

[providers]
  [providers.file]
    directory = "dynamic_conf.d"
    watch = true

[pilot]
    token = "xxxx"

[experimental.plugins.rewritebody]
  modulename = "github.com/traefik/plugin-rewritebody"
  version = "v0.3.1"

[experimental.plugins.cache]
  modulename = "github.com/traefik/plugin-simplecache"
  version = "v0.2.1"

dynamic_conf.d/test_plugins.toml:
[http.routers]
  [http.routers.my-router]
    rule = "PathPrefix(`/`)"
    middlewares = ["testHeader", "rewrite-foo", "my-cache"]
    service = "my-service"
    entryPoints = ["web"]

[http.middlewares]
  [http.middlewares.rewrite-foo.plugin.rewritebody]
    lastModified = true

    [[http.middlewares.rewrite-foo.plugin.rewritebody.rewrites]]
      regex = "panique"
      replacement = "stress"

  [http.middlewares.testHeader.headers]
    [http.middlewares.testHeader.headers.customRequestHeaders]
        Host = "www.perdu.com"

  [http.middlewares.my-cache.plugin.cache]
    path = "/tmp/cache/"

[http.services]
  [http.services.my-service]
    [http.services.my-service.loadBalancer]
      [[http.services.my-service.loadBalancer.servers]]
        url = "http://www.perdu.com"

Rémi

Did you add the middleware on a router ?
That's exactly what I was missing :) I didn't find that anywhere else. Merci mille fois for pointing it out.
And on a fun note, I grew up in France, in the early days of the Internet, back when finding a silly website was novel and you couldn't believe someone would spend money on a domain just for one silly joke. For as long as I can remember, I've been using perdu.com for all my web testing needs. I chuckle to think about our distinct trajectories in life, yet, probably because we shared the same culture at the same time, we both adopted perdu.com as our website of reference for this.
J'ai beaucoup perdu de mon Français mais j'adore l'idée d'une expèrience partagée il y a plus de 20 ans qui nous amène tous les deux ajourd'hui a utiliser ce site :).
Bref, that's a long diatribe for a silly website :) but it made my day that you used it for this. And well it also made my day that you nailed my problem in your first sentence. Merci encore!
Just in case it's useful, the middleware still shows up funny in the Traefik Dashboard, but it works!

Take care!


Expose SocketChannel class on EventLoop/Group

When configuring a Bootstrap the channel class type depends on the type of the EventLoopGroup which leads to code like:
if (eventLoopGroup instanceOf EpollEventLoopGroup) {
    return EpollChannelSocket.class;
} else if (eventLoopGroup instanceOf KQueueEventLoopGroup) {
    return KQueueChannelSocket.class;
} else {
    return NioChannelSocket.class;
}

see here: https://github.com/aws/aws-sdk-java-v2/blob/master/http-clients/netty-nio-client/src/main/java/software/amazon/awssdk/http/nio/netty/NettyNioAsyncHttpClient.java#L135
Since the EventLoopGroup type and the SocketChannel are coupled together does it make sense to expose the type of SocketChannel on the EventLoopGroup itself? Basically extending the EventLoopGroup interface to add:
Class<? extends SocketChannel> socketChannelClass();

Happy to submit a PR for this - just wanted to float the idea before I did.

@kiiadi something like this? https://github.com/netty/netty/pull/6873

Pretty much! I'll resolve this at watch that PR!


Fix Issue #1536

Remove "provided" scope from com.google.auto.value:auto-value.
Scope provided seems to cause build system consumers to expect that
auto-value is present on the classpath somewhere at runtime, while
nothing is providing it.
I tested this locally with gradle and this seems to be the smallest
change that fixes #1536. Gradle properly handles the auto-value
dependency without requiring it to be shaded.

It might make sense to have a compile/runtime dependency only on auto-value-annotations and then to add auto-value (which contains the processor) to annotationProcessorPaths instead. See https://github.com/google/auto/blob/master/value/userguide/index.md#with-maven

Ok, if I understood you correctly, this next commit is in line with what you proposed, and still seems to work in testing error prone against a gradle project through the net.ltgt.errorprone gradle plugin. It's worth noting that I saw this comment, https://github.com/google/error-prone/pull/1398#issuecomment-609976958 , and I've been testing using -XepPatchChecks:... successfully without needing to include diffutils-1.3.0.jar in the shaded jar as well.

Thanks. I was proposing to put auto-value under annotationProcessorPaths, rather than keeping it in dependencies as provided. But I suspect that either way is an improvement over the current setup.

I tried this diff (and then removing com.google.auto.value:auto-value as a dependency in the various pom.xml files), but this results in some test failures I don't quite understand:
diff --git a/pom.xml b/pom.xml
index 5108624da..c819933d0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -131,6 +131,13 @@
           <testExcludes>
             <exclude>**/testdata/**</exclude>
           </testExcludes>
+          <annotationProcessorPaths>
+            <path>
+              <groupId>com.google.auto.value</groupId>
+              <artifactId>auto-value</artifactId>
+              <version>${autovalue.version}</version>
+            </path>
+          </annotationProcessorPaths>
         </configuration>
       </plugin>
       <plugin>

Results :

Failed tests:
  ErrorProneJavacPluginTest.applyFixes:151
expected to be true
  ErrorProneJavacPluginTest.applyToPatchFile:210
expected to be true
  ErrorProneJavacPluginTest.compilesWithFix:383 expected to contain: [TestCompilesWithFix]
but was            : plug-in not found: ErrorProne
  ErrorProneJavacPluginTest.explicitBadPolicyGiven:259 expected java.lang.RuntimeException to be thrown, but nothing was thrown
  ErrorProneJavacPluginTest.hello:110 expected to contain: [CollectionIncompatibleType]
but was            : plug-in not found: ErrorProne
  ErrorProneJavacPluginTest.noPolicyGiven:236 expected java.lang.RuntimeException to be thrown, but nothing was thrown
  ErrorProneJavacPluginTest.stopOnErrorPolicy:313 value of    : iterable.size()
expected    : 2
but was     : 1
iterable was: [plug-in not found: ErrorProne]

Tests run: 3612, Failures: 7, Errors: 0, Skipped: 49

Sorry about that. I hit a similar problem with another project, so I think I know what's up.
As soon as you add the first entry to annotationProcessorPaths, Maven/javac stops looking for other annotation processors (and plugins, like Error Prone) in your regular classpath.
This is probably the more sensible behavior. However, if a project currently depends on finding annotation processors or plugins in the regular classpath, it produces a breakage.
The fix is to change the setup for Error Prone itself to list it in annotationProcessorPaths, as in the instructions.
However, I have no idea what additional challenges that might present, so I completely understand if you want to stick with provided. Thanks for trying annotationProcessorPaths out.
(You can see where I unknowingly introduced and unknowingly fixed the problem in another project.)

My understanding so far is that adding the annotationProcessorPaths section to pom.xml adds a -processorpath arg to javac. Without -processorpath specified, annotators are searched for in the classpath.
The test failures are because the tests were relying on being able to find the locally compiled ErrorProne in the classpath, ex. https://github.com/google/error-prone/blob/master/core/src/test/java/com/google/errorprone/ErrorProneJavacPluginTest.java#L302.
As I understand it, the fix here would be to add the target/ directory to processorpath or modify the tests somehow to do that themselves. We can't just add ErrorProne to the top pom.xml as an annotationProcessor because that goes through the normal maven external resolution process (if you set the project pom versions to 2.3.6-SNAPSHOT maven quickly fails on resolution for this reason). I can't figure out how to add target/ to processorpath and I'm also unsure how the tests could be modified to do that.
If anyone has any ideas on how to accomplish the above I'd be happy to try them and modify the PR accordingly if any of the ideas pan out, otherwise I think the PR is good as-is.
As a side note I noticed I had committed the diffutils change and I can either leave that in the PR as-is or remove that if you have any comments on that one way or the other. My testing against a gradle project using JDK 11 and using many -XepPatchChecks: arguments succeed without this dependency being included in the shaded jar.

I can't understand why changing how the tests are compiled (looking up annotation processors from annotationProcessorPaths rather than the classpath) would change how they behave at runtime. There must be something else that breaks the tests.
I'll have a look if I find time this weekend.

Ok, understood: same change needs to be done with auto-service: use auto-service-annotations as dependency and move auto-service to annotationProcessorPaths.
The META-INF/services/com.sun.source.util.Plugin file no longer is generated, so indeed JavaC can no longer find the plugin when using -Xplugin:ErrorProne.
As @cushon said, as soon as you start using -processorpath (annotationProcessorPaths in Maven), you need to move all processors to it (and ideally out of the classpath); but the problem wasn't ErrorProne itself (which is not used when building ErrorProne), but auto-service.
BTW, should auto-service-annotations and auto-value-annotations be shaded into the with-dependencies JAR? They're not required, but if we add them as transitive dependencies to those consuming ErrorProne as a Maven dependency, then maybe we should add them to the with-dependencies JAR too, for consistency.

Thanks for taking a look and explaining the issue @tbroyer. I've tested moving auto-value and auto-service into annotationProcessorPaths and it works in my local testing and passes the unit tests. I've also modified the shade config to include the auto-value and auto-service annotations.

Anything left to do on this PR before merge?


CASMCMS-9176: Make BOS importer grudgingly tolerate unknown BOS options

If the BOS import tool tries to import BOS data that contains an unknown BOS option, it fails in an ugly way. This is not technically a bug, since the importer should only be used on exports that came from the same CSM version, and thus it should never contain BOS options that do not exist at import time. We ran into this when trying to recover a system which had accidentally had its BOS version updated to a much higher level, which pulled in some new BOS options. We wanted to restore the data back on their older BOS version, and the importer barfed when it saw the unknown options.
This PR modifies the tool so that it instead issues warnings about unknown options, but still restores the options that it does know about.
This was tested on the customer system where the problem was originally hit.

/backport release/1.6 release/1.4 release/1.3


Test and output for run_ogusa_example.py

We should do the following for the example script for OG-USA, which will make it more consistent with what is done for other PSL models and help to comply with the PSL criteria:

Rename script and move it to /OG-USA/example.py
Check in pickle files of output to the repo
Write a test runs example.py and compares the local output to that checked into the repo.

In the interest of run time, we may want to have example.py work with some pre-estimated tax functions with files containing the estimated parameters being checked into the repo.

I've decided to stick with the run_examples directory as it keeps the main directory clearer.  PR #509  added an example output file (./run_examples/expected_ogusa_example_output.csv) and bash files to check for differences between the file the user generates from ./run_examples/run_ogusa_example.py and these expected results.
This issue has been resolved with PR #509.


Feature/msg builders

This PR introduces message builders through the typed-builder crate. The builder are based on the typestate pattern, but the crate is (at least advertised) to be fully compatible/replaceable by the derive-builder trait, which is using runtime construction of the type and allows for more flexibility (like passing builders around).
The typestate vs runtime construction decision will essentially depend on whether consumers want/need to build messages themselves and how convoluted these processes usually get. We don't really have to decide now, but it's a good thing to consider in the future.
For consistency reasons even some single fielded protocol specific messages contents implement builders, so that it is convenient, uniform and easy to know how one would go about composing a message.
There are some inner types which also implement the builders, yet for some types it is indeed quite the overkill (like CredentialPreview). I might revisit such types and just implement plain old new() constructors.
Another change that this PR brings is a uniformization of the Invitation message from the Connection protocol, so that the same decorators are used regardless of invitation type. The rationale is that it's much easier to reason with the invitation this way and since the protocol is old and won't be suffering changes it should be fine to simply deal with it like this.
Also, this addresses #949 .

Codecov Report

Merging #972 (4fc7631) into main (3b77552) will decrease coverage by 0.25%.
The diff coverage is 47.85%.

@@            Coverage Diff             @@
##             main     #972      +/-   ##
==========================================
- Coverage   35.14%   34.90%   -0.25%
==========================================
  Files         413      413
  Lines       27471    27398      -73
  Branches     5811     5822      +11
==========================================
- Hits         9656     9564      -92
- Misses      14776    14791      +15
- Partials     3039     3043       +4

Flag
Coverage Δ

unittests-aries-vcx
34.90% <47.85%> (-0.25%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed
Coverage Δ

aries_vcx/src/handlers/discovery/mod.rs
0.00% <0.00%> (ø)

aries_vcx/src/handlers/issuance/holder.rs
42.13% <0.00%> (-0.54%)
:arrow_down:

aries_vcx/src/handlers/out_of_band/receiver.rs
25.16% <0.00%> (ø)

...ries_vcx/src/handlers/proof_presentation/prover.rs
38.59% <0.00%> (+2.53%)
:arrow_up:

...es_vcx/src/handlers/proof_presentation/verifier.rs
41.73% <0.00%> (+2.47%)
:arrow_up:

aries_vcx/src/handlers/util.rs
13.25% <0.00%> (+0.31%)
:arrow_up:

aries_vcx/src/protocols/connection/generic/mod.rs
0.00% <0.00%> (ø)

aries_vcx/src/protocols/connection/invitee/mod.rs
0.00% <0.00%> (ø)

...src/protocols/connection/invitee/states/invited.rs
0.00% <0.00%> (ø)

aries_vcx/src/protocols/connection/inviter/mod.rs
0.00% <0.00%> (ø)

... and 69 more

... and 1 file with indirect coverage changes


PowerAutomateFlow_as_UI

PowerAutomateFlow_as_UI

It look amazing, I will need to test it before merging @fs366e2spm but this is fantastic!

@fs366e2spm  Why do you have a GitHub Action?


ETCD Backend - frontend/backends missing

Hey,
I just recently took the decision to move to traefik for http(s) instead of haproxy/confd.
At the same time I wanted to add K8S Ingress to my services - but since I hit #732 I decided to use current setup but change it to traefik.
I've tried to leverage the etcd backend, but I can't get any frontend/backend displayed in the UI. I was able to reproduce the issue and just made a quick docker-compose setup here: https://github.com/iwalz/traefik_etcd
Just in case you want something easy to reproduce - clone and docker-compose up.
This is the structure in etcd:
root@705f8513fbf8:/# etcdctl --endpoint=http://etcd:2379 ls -r /
/traefik
/traefik/frontends
/traefik/frontends/web
/traefik/frontends/web/routes
/traefik/frontends/web/routes/frontpage
/traefik/frontends/web/routes/frontpage/rule

/traefik/frontends/web/backend
/traefik/frontends/web/entrypoints
/traefik/backends
/traefik/backends/web
/traefik/backends/web/servers
/traefik/backends/web/servers/705f8513fbf8
/traefik/backends/web/servers/705f8513fbf8/url
/traefik/backends/web/servers/705f8513fbf8/weight

And a very small traefik.conf
[web]
address = ":8080"

[etcd]
endpoint = "etcd:2379"
watch = true

The UI shows me the etcd backend, but no entries.
Same behaviour in 1.1 and 1.0.3.
Any idea what's wrong with this setup?

Gonna close this issue, since it seem to be a duplicate after some investigation #821


add reference to gatekeeper repo

creating a link between gatekeeper/rego repo and policy-collection repo

have issues with signing existing commits hence will open other PR and work in all comments


Features missing from new vertical notificaitons

Description of problem
The following requested features were not implemented in #1249:

[ ] Background color to white( for group of items )
[ ] Adding padding that show Grey between each group of items

For the first point above I think we could implement something like this:
https://snack.expo.dev/@heytony01/keyboard-function-component-example
Although, I do believe this feature isn't overly in-demand. I don't expect many people to get enough notifications to warrant pagination - if they do then we probably have a different problem that will start to become a time sync.
Expected behavior
Steps to reproduce
Screenshots and/or log output
Environment

[x] Occurs on Android
[x] Occurs on iOS

Build #:
Android Device Model:
iOS Device Model:
Workaround
Severity

[ ] High
[ ] Medium
[x] Low

Looks good!


[$250] LHN- LHN shows "This chat is with..." instead of last message if deleting thread message

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

Version Number: 9.0.48-0
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: https://expensify.testrail.io/index.php?/tests/view/5074346&group_by=cases:section_id&group_order=asc&group_id=292106
Issue reported by: Applause Internal Team
Action Performed:

Open the staging.new.expensify.com website.
Open a chat with some messages displayed.
Right click over the last message.
Click on "Reply in Thread"
Send any message in thread chat.
Delete the just sent reply.
Return to the first chat.
Delete the recently threaded message.
Verify that chat preview in LHN now displays the previous message.

Expected Result:
When deleting the last message of a chat, the chat preview in LHN, should display the previous message.
Actual Result:
When deleting a threaded message, displayed last in a chat conversation, the chat preview shows "This chat is with user" instead of the previous message in chat.
Workaround:
Unknown
Platforms:

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

Screenshots/Videos
https://github.com/user-attachments/assets/c280f491-364d-46ee-a752-c554232d7e73

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~021846016204171199063
Upwork Job ID:<PHONE_NUMBER>171199063
Last Price Increase: 2024-10-15

Issue OwnerCurrent Issue Owner: @paultsimura

We think that this bug might be related to #wave-collect - Release 1

@RachCHopkins  FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

Easy to repro. External as far as I can tell!

This is a backend issue. lastMessageText returns an empty string when the message is deleted.

@AndrewGable can you take a gander at this please?

Seems like resolved, I couldn't reproduce it.

@paultsimura can you confirm?

@AndrewGable can you please take a look?

I vote we close this

@AndrewGable do you agree that this should be closed?

Yes!


489 cachesize less than filesize

Added some code to src/toil/test/src/jobFileStoreTest.py so that it tests the case where a file is created within a localTempDir using writeGlobalFile.
Wrote a test jobCacheLessThanFileSizeTest.py that tests 2 conditions when a file is created by writeGlobalFile in a localTempDir
a) The file size is greater than the cache size
b) The file size is less than the cache size
There is a weird Error case that is seen in both tests at a semi-frequent rate. Needs more debugging to identify the cause. Test b) almost always fails in absence of an Error.
This is supplementary to issue #489

Continued with fixed branch name in #506.


installing MAT Pkg

incorrect files are installed in the .julia directory when using Pkg.add("MAT")
I had to clone https://github.com/JuliaIO/MAT.jl and replace the file in .julia/packages directory in order to get it to precompile successfully and work.

This appears to be a bug with the MAT package.


Update CommonVoice with new release

Adding a Dataset

Name: CommonVoice mid-2021 release
Description: more data in CommonVoice: Languages that have increased the most by percentage are Thai (almost 20x growth, from 12 hours to 250 hours), Luganda (almost 9x growth, from 8 to 80), Esperanto (7x growth, from 100 to 840), and Tamil (almost 8x, from 24 to 220).
Paper: https://discourse.mozilla.org/t/common-voice-2021-mid-year-dataset-release/83812
Data: https://commonvoice.mozilla.org/en/datasets
Motivation: More data and more varied. I think we just need to add configs in the existing dataset script.

Instructions to add a new dataset can be found here.

cc @patrickvonplaten?

Does anybody know if there is a bundled link, which would allow direct data download instead of manual?
Something similar to: https://voice-prod-bundler-ee1969a6ce8178826482b88e843c335139bd3fb4.s3.amazonaws.com/cv-corpus-6.1-2020-12-11/ab.tar.gz ? cc @patil-suraj

Also see: https://github.com/common-voice/common-voice-bundler/issues/15


Adds neutron examples and some cleanup

Work in progress, investigating some problems with 1.9.0.

merged


Es6 refactor refactor

Here you go @ibgreen, a first attempt at removing core.js. :tada: All the lessons are working.
The organization of the code flow of the lessons changed as I worked through them and I took a couple of liberties with styling; I'm happy to adopt whatever you guys prefer, just let me know. :)
@philogb Unless you prefer otherwise, I'll start pinging you on these so you can keep abreast of what I'm up to. :)

Rye, this is massive! Just what I was envisioning!
Apart from some minor cleanup (e.g. see my comments in this diff plus some minor things like removing jquery-mini etc), we are getting very close to the point where apps can start to upgrade.
The one tricky part that is left is removing (or at least minimizing the need for) the Application object. The reason it is so important to address this is that the Application object unwanted coupling between our other classes, which are now otherwise very clean and independent. Because of the application object parameter it becomes very hard to understand what information flows between those classes. This makes the current API much harder to understand for a beginner than it should be.
Looking at the Application constructor, I mostly see it initialize a number of caches for buffers, frameBuffers, renderBuffers and textures. If these are only used by one other class, they could be simply moved into that class as static objects.
If not, we could rename the Application class to something more descriptive (like BufferCache) and have that as a an explicit parameter to methods that need it. That would make it easier to reason about the code since the responsibility of the class would now be clearer and much more limited.
What I haven't checked is if other properties are being slapped on to the Application instance after it is created. An easy way to flush that out is to call Object.seal(this) on the object in the Application constructor. Then any attempt to store data on the instance will generate an exception. It is possible that this will uncover a lot of complicated dependencies, then we'll have to work together to engineer around them.

Great, I'm glad you like it!
Would you like me to puzzle out how to rid ourselves of Application next? Or I can try to address your comments here first?
Thanks for the thorough review!

Let's tackle the Application issue first - I'd like to know as soon as possible if there are any surprises or unexpected complications.
Once we have the Application taken care of, the remaining work should be straightforward.

Sounds good! I'll start tonight. :+1:


Fixed list spacing within theme-guide/configuration documentation

Fixed spacing between list and code block to prevent wrong formatting.

Hello,
thank you for creating this pull request.
I have opened an issue on our Issue Tracker for you. See the issue link: https://issues.shopware.com/issues/NEXT-9012
Please use this issue to track the state of your pull request.

Hi @ChristopherDosin,
thank you for your contribution. 🎉
Your changes have been merged to 6.2.
Best regards
Tobias


Ligatures

This issue will track our analyses of ligatures. Please contribute your thoughts by replying to this issue and keep the theme restricted to Ligatures.


Code Splitting/Async route issue with query string for same route

Hi there,
In the example app, I can search repos for GitHub user. But in my case, I want to share the search result to another person, so query string is needed to indicate specific result.
For example, when I input my GitHub account and press enter in home page, I want the url will be http://localhost:3000?user=just4fun. In this way, React Router will notice route changed, which will leads async route for home route be triggered (it has already been triggered when we access home page). And worse still, our sagas will be injected again.
path: '/',
name: 'home',
getComponent(nextState, cb) {
  const importModules = Promise.all([
    System.import('containers/HomePage/reducer'),
    System.import('containers/HomePage/sagas'),
    System.import('containers/HomePage'),
  ]);

  const renderRoute = loadModule(cb);

  importModules.then(([reducer, sagas, component]) => {
    injectReducer('home', reducer.default);
    injectSagas(sagas.default);

    renderRoute(component);
  });

  importModules.catch(errorLoading);
},

Another side, as for the sagas,
export function* githubData() {
  // Fork watcher so we can continue execution
  const watcher = yield fork(getReposWatcher);

  // Suspend execution until location changes
  yield take(LOCATION_CHANGE);
  yield cancel(watcher);
}

When url updated with query string, LOCATION_CHANGE action will be dispatched, it will leads the watcher be cancelled.
In conclusion, when I press enter, I did

update url with query string for enter key handler
get query string in mapStateToProps, then dispatch loadRepos action with query string in componentWillMount (case: input url directly) and componentWillReceiveProps (case: common search)

but nothing happen, b/c

sagas has been injected again
watcher in previous sagas has been cancelled

Is there any way to handle this case? Or is there any step I did not in proper way?

a simple solution would be to filter location actions by passing function to take effect, ie...
export function* githubData() {
  // Fork watcher so we can continue execution
  const watcher = yield fork(getReposWatcher);

  const locationFilter = (action) =>
    action.type === LOCATION_CHANGE && !action.payload.query.user

  // Suspend execution until location changes * without user query *
  yield take(locationFilter);
  yield cancel(watcher);
}

now LOCATION_CHANGE actions will not cancel watcher:
// eg in homepage component
this.props.changeRoute({ query: { user: 'justin' } })

you will still need to decide how to get name into query, whether or not the route drives the logic, etc... hint: you are probably going to want to refactor getRepos saga to accept user as param
redux-saga is so flexible that there are probably 50 ways this could be set up :) i hope this at least provides some direction

@justingreenberg - Thank you, I had similar thought with you but I didn't know take effect can receive function, redux-saga is really very cool.
Now I did same step with you in my sagas, it will avoid my watcher to be cancelled.
Then I added more route check in routes.js, which will avoid my home stuff be injected again.
path: '/',
name: 'home',
getComponent(nextState, cb) {
  if (previousPath === nextState.location.pathname) { return; } // check whether it's same route

  const importModules = Promise.all([
    System.import('containers/HomePage/reducer'),
    System.import('containers/HomePage/sagas'),
    System.import('containers/HomePage'),
  ]);

  const renderRoute = loadModule(cb);

  importModules.then(([reducer, sagas, component]) => {
    injectReducer('home', reducer.default);
    injectSagas(sagas.default);

    renderRoute(component);

    previousPath = nextState.location.pathname; // remember previous route
  });

  importModules.catch(errorLoading);
},

@just4fun thanks, your solution work!

I was having a similar problem using css3 :target selectors, say to create a modal form
Of course the POST saga watcher was getting canceled when navigating "away" from the page (/someRoute#showForm to /someRoute)
I managed to figure out how to filter the LOCATION_CHANGE take and not cancel the watcher but ended up with an amusing collection of new default sagas and n+1 extra POSTs each time. Now I see how to stop the default saga from being injected over and over - thanks @just4fun!


Fix issue 356 (! is missing from reported comment)

This pull request derives from #365. So needs to be handled after that.

Fixes #356

fbae1ffa7ae672af59a49dd1d5166fc3ef92d799 adds a test for the problem. It fails as expected. (Travis, AppVeyor)
6c2c65a3d559761356dd7044123e547a4b93deca fixes the problem.
Now the comment node is serialized correctly.

@cirulls
Merged this bug fix.


Fix README links to CONFIGS.md

The links to CONFIGS.md in top-level README file were broken.

@farnoodma Please approve and merge it.


[FEATURE] Add timings to ci

print time when running ci so we can see what takes time.
time ninja

in perform.sh for example

#561 added per operations steps which incldues timing.


Swift 3

it'd be cool to have a swift 3 version, if you have any interest to create a branch i would like to help with that.

@nschucky, see my pull request. I've updated it to Swift 3.


Adding aria-selected to dropdown list items

This PR fixes #19676

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

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

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
28146

Relevant Lines:
62355

💛  - Coveralls

i am looking into another similar issue and I think this is not the correct way to fix it, let me spend some more time and I will send out a fix. let's keep this PR open for now.


Dynamic Programming - Coin Change Problem

Given a value N, if we want to make change for N cents, and we have infinite supply of each of S = { S1, S2, .. , Sm} valued coins, how many ways can we make the change? The order of coins doesn’t matter.
For example, for N = 4 and S = {1,2,3}, there are four solutions: {1,1,1,1},{1,1,2},{2,2},{1,3}. So output should be 4. For N = 10 and S = {2, 5, 3, 6}, there are five solutions: {2,2,2,2,2}, {2,2,3,3}, {2,2,6}, {2,3,5} and {5,5}. So the output should be 5.

Removing all other languages than C. Please open issues if you wish to implement in other language.


Is there a way that i can show shimmer for a spasific amount of time

i don't have much data to load so before shimmer can be displayed data loads if possible add a time delay before data set to imageView and TextView

u can use Handler().postdelayed

it's it a lazy way of donig it ?

This should be the logic you can code on your end and decide what to be shown. You have all the control.


Pick Multiple Images?

Hi, Is there an option to pick multiple images? Thanks.

Need multiple image selection feature!
Its 2022, still thinking to enhance this feature bro? @Drjacky

@rrsaikat Feel free to add the feature and open a PR 🙏🏼

is this Feature Available now ?
if No then is there any Work around to Multi-select Images ??

It's available on 2.3.17


implement REST API fetcher base class

We now do periodic fetching of a REST API in multiple places so this
commit adds a base class to help with the common logic.

@lyft/network-team


Should pyproject.toml have a dev dependencies section?

I wonder whether we still need a dev section for the pyproject toml.
Mostly, we expect people to install imod-python from conda-forge (or get it via Deltaforge). In that case, the whole pyproject dependencies aren't relevant, since it's the recipe that defines the dependencies.
However, we also release imod python on PyPI and there are people who do not use conda-forge (for whatever reason). For this reason, we've tried to keep a "minimal" version installable via pip, which is why we have the current required dependencies:
dependencies = [
    'pandas',
    'numba',
    'numba_celltree',
    'numpy',
    'pooch',
    'scipy',
    'xarray',
]

The more problematic stuff is things like netCDF4, GDAL, PROJ, etc. For this, the idea is that they're optional dependencies. They are available via optional-dependencies all, which should result in the same packages as the conda-forge install.
For stuff that only developers need (sphinx, etc.), the dev deps are separate. However, since we expect/recommend to use pixi now, we might as well get rid of it?

Also: shouldn't xugrid be included in the required dependencies, as well as e.g. dask? Since I remember an issue (from Hendrik?) where he couldn't read IDFs due to dask missing.

I think the dev dependencies can be removed with the introduction of pixi.

Also: shouldn't xugrid be included in the required dependencies, as well as e.g. dask? Since I remember an issue (from Hendrik?) where he couldn't read IDFs due to dask missing.

Since https://github.com/Deltares/imod-python/pull/707, these have been added. I however, noticed a inconsitency in pinned packages: in pixi.toml xugrid = ">=0.6.4", whereas in pyproject.toml "xugrid >=0.3.0".
Furthermore, another mistake is that hatchling is missing from the pixi.toml. This will probably cause issues when we try to release.


Lack of reality in the server

Hello, I noticed a lack of reality in the server Multiogar 1.6.1 compared to the game Agar.io, for example, does not give the feeling of being in an original server of Agar.io but without people, only bots. I wanted to ask why and ask for improvement on this.

@Hydra4dude If you have a cluster with thousands of GPUs, you can try to code a neural network with CUDA/OpenCL and interface it with MultiOgar-Edited. But this will never be included in the master branch, because most users of MultiOgar-Edited aren't millionaires.

:(

The code is given to you, it is optimised really well, If you would like to code something along the lines of Elon Musk's AI. Then I Invite you to, but this will impact the performance of the server a lot.


Webview: Fixed broken fullscreen modals due to zero body height.

JavaScript plugins such as Fotorama are broken when attempting use its fullscreen feature.
If there's an absolute HTML element with 100% height under <body>, its height is 0 when rendered in the Android WebView.
This commit fixes it.

By analyzing the blame information on this pull request, we identified @mkonicek and @nicklockwood to be potential reviewers.

Does this commit also fix this issue? - https://github.com/facebook/react-native/issues/5211

@satya164 I've just tested it on my own device - Indeed, I can see the gitter login page.
Fixes #5211 as well.
Spread the word :)

@danielbraun awesome. will shipit as soon as the tests pass.

@danielbraun Hey. Sorry forgot to merge this. Now it seems that this has different changes. Can you fix it please and ping me?

@satya164 I've merged a pending pull request into my my fork, it added it to my pull request. I'll sort it out.

@satya164 I've replaced this PR with #8830


The compile commands header to source heuristic doesn't use the file type

When a compilation database does not contain an entry for a header file, say X.H, clangd employs a heuristic to find a reasonable compile command, which typically involves finding X.c or X.cpp, and using its compile command instead.
This heuristic, however, uses the path of the file to guess the type of the file, instead of using the file type passed in by the client.
See the getCompileCommands function here.
auto Lang = guessType(Filename, &TypeCertain);

My organization uses the ".C" extension for cpp files, and leads clangd to be unusable without adding an entry for every header to the compilation database.
I'd be happy to submit a patch for this issue, if it would be welcome. Would such a patch be welcome?

Aren't .C and .H already recognized as C++ based on this?

I don't think so. Here is a way of reproducing:
$ tree
.
├── body.C
├── body.H
├── compile_commands.json
└── random_file.cpp

$ cat compile_commands.json
[
    {
        "file": "body.C",
        "directory": "/Users/ishaangandhi/Desktop/test/failing_clangd",
        "command": "clang++ body commands"
    },
    {
        "file": "random_file.cpp",
        "directory": "/Users/ishaangandhi/Desktop/test/failing_clangd",
        "command": "clang++ random file commands"
    }
]%

Now run clangd with -log=verbose and open up "Body.H":
I[20:41:18.962] Loaded compilation database from /Users/ishaangandhi/Desktop/test/failing_clangd/compile_commands.json
V[20:41:18.962] Broadcasting compilation database from /Users/ishaangandhi/Desktop/test/failing_clangd
I[20:41:18.962] ASTWorker building file /Users/ishaangandhi/Desktop/test/failing_clangd/body.H version 1 with command inferred from random_file.cpp

I would expect the command to be inferred from body.C, but instead it is inferred from random_file.cpp.

Now say you change the filename "body.C" to "body.cpp":
I[20:47:47.353] Loaded compilation database from /Users/ishaangandhi/Desktop/test/failing_clangd/compile_commands.json
I[20:47:47.353] ASTWorker building file /Users/ishaangandhi/Desktop/test/failing_clangd/body.C version 1 with command inferred from body.cpp

This now works as expected.

The issue is FileIndex(std::vector<std::string> Files) gets files with everything lowercased. So "file.C" looks like "file.c".
Then, when it determines types, it guesses it is a C and not a C++ file. In that constructor, we use the line:
StringRef Path = Strings.save(StringRef(OriginalPaths[I]).lower());
...
Types.push_back(foldType(guessType(Path)));

We could instead guess the type of the original path, without a call to lower. I confirmed this approach works on the above-mentioned simple reproduction. That would be enough for my company's use case of having ".C" C++ files. Though it still would be nice to actually use the file type the user so generously provided and not guess :)

Gotcha. Would a patch with the approach of not lowercasing the path before passing to the type guesser be welcome to fix this?

I think a patch that gets InterpolatingCompilationDatabase to correctly classify .C files as having C++ filetype would definitely be welcome.
I don't have the confidence to say the exact change to describe is the right one, but I think that's more of a detail to be sorted out during code review. In other words, I encourage you to write the patch!

Gotcha. Would a patch with the approach of not lowercasing the path before passing to the type guesser be welcome to fix this?

It needs to be more nuanced than that: the case folding was added because some projects use FooBar.h and foo_bar.cpp.
(I find that a little odd, but I also find .C a little odd, let's find a way to make them both work)

The proposal was to use the original path before pushing an element into the "Types" array. the "Path" variable, which is the lowercased version would still be used elsewhere. Would that address the concern?

Sounds like it would, sorry for not reading so carefully!
(I morbidly wonder whether this is going to mess up parsing of C:\HELLOW~1.H for someone :smile:)

Though it still would be nice to actually use the file type the user so generously provided and not guess :)

Problem is robustly parsing the type out of a set of flags is a fair amount of work: unescaping the JSON, shell-unescaping into a list of args, then feeding those to clang's arg parser which isn't optimized for speed... This would need to be done for all files in the CDB to build the index, and it would happen right on startup, blocking parsing the user's first file.
When we tried using more of the compile_commands.json contents upfront, this caused noticeable slowdown in chrome-sized projects (compilation database is several hundred MB).


Revert "Fixed setup image version, Enterprise installation support"

See https://github.com/mageinferno/magento2-docker-compose/pull/51
This reverts commit c1ca67d6515928156277ed570369fca4c329033b.

I can confirm that 7.1 install(spent an hour trying to figure out what was wrong with the install) is broken on CE edition as well. Reverting back to 7.0.


numpy parser parameter table breaks if there is an empty line between parameters

Describe the bug
From what I can tell, the numpydoc parser supports empty lines between parameter descriptions. e.g.
"""
Parameters
------------
x: int
    a thing
                                         <--- note this empty line
y: float
    another thing
"""

However, with griffe's numpy parser this triggers the end of the parameters table.
One possible solution
If we instead use the following rule to indicate a new section, it should be able to keep the table intact, without changing the current behavior too much.

detect directly the next section of documentation (e.g. line has words, and the next line starts with ---)

Breaking cases
Note that with this solution, these kinds of docstrings from the unit tests could be parsed differently:
Returns
-------
only_item : type
    Description.

Something.

Currently, these get parsed as 2 sections (a Returns and a generic Text section).  However, AFAICT, the numpydoc parser just considers the "Something." to be part of the Returns section, since sections must be separated by headings.
from numpydoc.docscrape import NumpyDocString

docstring = """
Returns
-------
only_item : type
    Description.

Something.
"""

doc = NumpyDocString(docstring)
list(doc.items())

WDYT? Happy to find the right balance of current behavior / supporting table description variations!

Thanks for the report!
I find it weird that
Returns
-------
only_item : type
    Description.

Something.

...would be parsed as a single Returns section. How do you intertwine prose and semantic sections? Is that not possible with Numpydoc's spec? I think supporting blank lines in-between items is very niche. IMO it costs nothing to just remove the blank line, and it even makes the docstring more readable.
However this is just my opinion, and I'm fine with anything that matches the spec: I'm not using this docstring style after all, so those who actually use it know better :slightly_smiling_face: Reading again the spec at https://numpydoc.readthedocs.io/en/latest/format.html, it seems indeed that prose is not expected in-between sections, and therefore headings (and dash lines) are the true sections delimiters, not blank lines.

Hmm... I dug a bit deeper, and it looks like sphinx does allow including extra narrative (to a degree).
It seems like the rule they use to end a section (sphinx code here) is...

Encounter a new section, OR
2 empty lines in the table block

So maybe this could be a nice compromise? I didn't realize that numpydoc and sphinx both have parsers :/

Parsers, parsers everywhere!
Thanks for investigating, the double blank line seems like a good compromise indeed.

That's a breaking change though 🤔

Yeah, it's a tough spot :/. For what it's worth, I think there are libraries using sphinx in the wild that that include empty lines in their parameter tables. I haven't seen people add narrative to sections like parameters, so am in favor of breaking changes there 😬 (but if it's helpful, we could also refactor the numpy parser to be a class, and then I could subclass it as a new parser implementation somewhere?).
Here's an example docstring from the pandas DataFrame docs:

Two-dimensional, size-mutable, potentially heterogeneous tabular data.

Data structure also contains labeled axes (rows and columns).
Arithmetic operations align on both row and column labels. Can be
thought of as a dict-like container for Series objects. The primary
pandas data structure.

Parameters
----------
data : ndarray (structured or homogeneous), Iterable, dict, or DataFrame
    Dict can contain Series, arrays, constants, dataclass or list-like objects. If
    data is a dict, column order follows insertion-order. If a dict contains Series
    which have an index defined, it is aligned by its index. This alignment also
    occurs if data is a Series or a DataFrame itself. Alignment is done on
    Series/DataFrame inputs.

    If data is a list of dicts, column order follows insertion-order.

index : Index or array-like
    Index to use for resulting frame. Will default to RangeIndex if
    no indexing information part of input data and no index provided.
columns : Index or array-like
    Column labels to use for resulting frame when data does not have them,
    defaulting to RangeIndex(0, 1, 2, ..., n). If data contains column labels,
    will perform column selection instead.
dtype : dtype, default None
    Data type to force. Only a single dtype is allowed. If None, infer.
copy : bool or None, default None
    Copy data from inputs.
    For dict data, the default of None behaves like ``copy=True``.  For DataFrame
    or 2d ndarray input, the default of None behaves like ``copy=False``.
    If data is a dict containing one or more Series (possibly of different dtypes),
    ``copy=False`` will ensure that these inputs are not copied.

    .. versionchanged:: 1.3.0

...

numpy.array (maybe less of an issue, since empty lines are in parameter descriptions):

array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0,
      like=None)

Create an array.

Parameters
----------
object : array_like
    An array, any object exposing the array interface, an object whose
    __array__ method returns an array, or any (nested) sequence.
    If object is a scalar, a 0-dimensional array containing object is
    returned.
dtype : data-type, optional
    The desired data-type for the array.  If not given, then the type will
    be determined as the minimum type required to hold the objects in the
    sequence.
copy : bool, optional
    If true (default), then the object is copied.  Otherwise, a copy will
    only be made if __array__ returns a copy, if obj is a nested sequence,
    or if a copy is needed to satisfy any of the other requirements
    (`dtype`, `order`, etc.).
order : {'K', 'A', 'C', 'F'}, optional
    Specify the memory layout of the array. If object is not an array, the
    newly created array will be in C order (row major) unless 'F' is
    specified, in which case it will be in Fortran order (column major).
    If object is an array the following holds.

    ===== ========= ===================================================
    order  no copy                     copy=True
    ===== ========= ===================================================
    'K'   unchanged F & C order preserved, otherwise most similar order
    'A'   unchanged F order if input is F and not C, otherwise C order
    'C'   C order   C order
    'F'   F order   F order
    ===== ========= ===================================================

    When ``copy=False`` and a copy is made for other reasons, the result is
    the same as if ``copy=True``, with some exceptions for 'A', see the
    Notes section. The default order is 'K'.
subok : bool, optional
    If True, then sub-classes will be passed-through, otherwise
    the returned array will be forced to be a base-class array (default).
ndmin : int, optional
    Specifies the minimum number of dimensions that the resulting
    array should have.  Ones will be prepended to the shape as
    needed to meet this requirement.
like : array_like, optional
    Reference object to allow the creation of arrays which are not
    NumPy arrays. If an array-like passed in as ``like`` supports
    the ``__array_function__`` protocol, the result will be defined
    by it. In this case, it ensures the creation of an array object
    compatible with that passed in via this argument.

    .. versionadded:: 1.20.0

Yep second example poses no issue, since the indentation helps us determining it's still within the section (and section item).
We could add an option to the numpy parser? This way, no breaking change, and users can still opt-in to be able to have blank lines in sections (while needing double blank lines to separate prose from sections or inversely.