fix: no PR title for merge

Summary by CodeRabbit

New Features

Enhanced CI workflow to trigger on pull request updates, improving responsiveness.

Bug Fixes

Improved error handling in the pull request title check, ensuring necessary context is available before proceeding.

Refactor

Updated dependency management in the release process to ensure critical checks are completed before release actions.

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


Use database name in cache prefix

I see that the database connection name is used as a cache prefix in the CachePrefixing trait.
Is it possible to also add the database name to the prefix?
In a multi tenant application, I have a "main" connection and a "tenant" connection. The database name in the "tenant" connection is changed using a middleware for each tenant. This way I can use the "main" connection for the shared database, and the "tenant" connection for each tenant databases. So adding the database name to the cache prefix will allow me to use model caching without creating one connection per tenant. Related to https://github.com/GeneaLabs/laravel-model-caching/issues/99.
Thanks.

Yes, we are already doing that; https://github.com/GeneaLabs/laravel-model-caching/blob/master/src/Traits/CachePrefixing.php#L9. Or did you mean something else?

@mikebronner I missed that line, I read https://github.com/GeneaLabs/laravel-model-caching/issues/99#issuecomment-376460817 and assumed only the connection name was being used! Thanks!

Ah yea, it was implemented right after that. :)


Option to keep orphaned disks with clean-up --all

When running clean-up without --all it keeps the 3 last versions of releases and stemcells. For stemcells that means for each mainline. This ultimately means that only running clean-up without --all piles up unneeded artefacts over time. In most cases we actually want to get rid of anything unused, but running --all also removes the orphaned disks. Orphaned disks we actually want to keep since there is already a mechanism in place which cleans them up after e.g. 5 days and deleting disks too eagerly is risky.
Proposal
Three options:

Add a --keep-orphaned-disks option that can be additionally used with --all. This would keep the current behavior of --all, but allows to achieve what we need.
Add a --include-orphaned-disks and change --all to delete everything but the orphaned disks.
Just change --all to not remove the orphaned disks, since there is already a mechanism that deletes orphaned disks and one can also delete disks individually.

In order to avoid disrupting others' usage of clean-up, I think option 1 is best.
The word 'all' with --keep-orphaned-disks is slightly odd, but I think for backwards compatibility and avoiding leaking disks for others is important.
Ideally I think option 3 with orphaned disks not even being included in clean-up would be great, but this would easily leak disks for those who don't update their automated clean up processes. bosh disks --orphaned and an option to delete all orphaned disks at once would be ideal.
I'll go with the former option 1 for simplicity, despite a better design with option 3. This will solve the issue and avoid affecting others.

Corresponding director commit: https://github.com/cloudfoundry/bosh/commit/10e1778cd6ce151ca30855e280207003c235de76


Explicit Provisioning Style Automatic

This PR explicitly set the Provisioning Style to Automatic in the iOS, tvOS, and watchOS target.
This has been done by simply unchecking and checking again the checkbox on the General tab.
Having the style explicitly set in the project file can help with scripts.
I didn't open an issue to suggest this change because it's super easy to implement anyway. If you don't find it valuable feel free to close the PR  ¯_(ツ)_/¯.
I didn't touch the macOS one because it was set to manual, and I thought there might have been a reason for that. If that's not the case I'm happy to update with macOS as well.
Cheers

I don't think there is any reason for macOS target. Can you update it then we can merge this forward


integrate poetry, pre-commit, gh-release optionally

we can combine the different templates now with hooks

That is nice!


Have you considered using markdown-it?

https://github.com/markdown-it/markdown-it
It has more features (e.g. via plugins) and seems to parse more reliably. For example: the following Markdown code works in markdown-it, but not in marked (note the | in the last line).
| Operation      | Name        |
|----------------|-------------|
| `~num`         | Bitwise Not |
| `num1 & num2`  | Bitwise And |
| `num1 ^ num2`  | Bitwise Xor |
| `num1 | num2`  | Bitwise Or  |

Note that this is not only about features -- marked seems to be unmaintaned now, see https://github.com/chjj/marked/issues/756.
I am now choosing a slideshow tool and find remark to be a great candidate; however, dependency on unmaintained component is quite a show-stopper to me.

@gnab are you open to a PR?

@jcrben: I can't speak on behalf of @gnab, but I would review a PR to adopt markdown-it…

@jcrben: see https://github.com/gnab/remark/issues/495#issuecomment-356854744


Alter :user_name and :email if auth fails?

 When I added PowAssent to my Pow configuration, I was unable to register my GitHub account. That’s because I had created an account using my real email address when testing Pow.
Reading other issues here - that makes sense (you can’t tie an auth method unless you're signed in). If registration failed, the default behaviour is to show the Register page - where you can create your own :user_name.
However, for my app I need a unique :user_name and :email. So I altered the Register template to include the email address:

Register

<%= form_for @changeset, @action, [as: :user], fn f -> %>
  <%= if @changeset.action do %>

Oops, something went wrong! Please check the errors below.

  <% end %>

    <%= label f, Pow.Ecto.Schema.user_id_field(@changeset) %>
    <%= text_input f, Pow.Ecto.Schema.user_id_field(@changeset), class: "form-control" %>
    <%= error_tag f, Pow.Ecto.Schema.user_id_field(@changeset) %>

    Email
    <%= text_input f, :email, class: "form-control" %>
    <%= error_tag f, :email %>

    <%= submit "Register", class: "btn btn-outline-secondary" %>

<% end %>

When I go to this page, both fields are empty. Is there a way for me to pre-populate the fields with the values from GitHub (as a starting point)? Also, if there are default values it would be nice if it could display which field(s) violated the unique constraint - so the user can focus on what alternative they may provide.
Is there a way to do this?

Yeah, take a look at this: https://github.com/danschultzer/pow_assent#populate-fields
Since you have username as your user id field, you'll need to cast the :email. Also you'll have to cast the nickname in the Github attrs as username. This is how you can do that:
defmodule MyApp.Users.User do
  use Ecto.Schema
  use Pow.Ecto.Schema
  use PowAssent.Ecto.Schema

  # ...

  def user_identity_changeset(user_or_changeset, user_identity, attrs, user_id_attrs) do
    user_or_changeset
    |> cast_email(attrs, user_id_attrs)
    |> put_username(attrs)
    |> pow_assent_user_identity_changeset(user_identity, attrs, user_id_attrs)
  end

  defp cast_email(changeset, attrs, user_id_attrs) do
    changeset
    |> Ecto.Changeset.cast(attrs, [:email])
    |> Ecto.Changeset.cast(user_id_attrs, [:email]) # Make sure that we cast user input last to override the one fetched from Github
  end

  defp put_username(changeset, %{"nickname" => username}), do: Ecto.Changeset.put_change(changeset, :username, username)
  defp put_username(changeset, _attrs), do: changeset
end

FYI, the user_id_attrs is what's submitted by the user with the above form, while attrs is what's received by the provider. The latter can be trusted, while the former may need additional validation.
The above isn't tested, but this is more a less how it should work. Please add appropriate unit tests for this. I think this could be great as a guide too on https://powauth.com/guides/ so please submit any changes the code need to work or unit test you added 😄

So I was thinking that I would add something like this (based on the code above) and perhaps a unit test like this (a copy and paste job):
defmodule PowAssent.Phoenix.CustomUserAuthorizationControllerTest do
  use PowAssent.Test.Phoenix.ConnCase

  import PowAssent.Test.TestProvider, only: [expect_oauth2_flow: 2, put_oauth2_env: 1, put_oauth2_env: 2]

  alias PowAssent.Test.{Ecto.Users.CustomUser, UserIdentitiesMock}

  @provider "test_provider"
  @callback_params %{code: "test", redirect_uri: "", state: "token"}

  setup _context do
    user   = %CustomUser{id: :loaded}
    bypass = Bypass.open()

    put_oauth2_env(bypass)

    {:ok, user: user, bypass: bypass}
  end

  describe "GET /auth/:provider/callback" do
    setup %{conn: conn} do
      conn = Plug.Conn.put_session(conn, :pow_assent_session_params, %{state: "token"})

      {:ok, conn: conn}
    end

    test "when identity doesn't exist and missing user id", %{conn: conn, bypass: bypass} do
      expect_oauth2_flow(bypass, user: %{email: ""})

      conn = get conn, Routes.pow_assent_authorization_path(conn, :callback, @provider, @callback_params)

      assert redirected_to(conn) == Routes.pow_assent_registration_path(conn, :add_user_id, "test_provider")
      assert %{"test_provider" => %{user_identity: user_identity, user: user}} = Plug.Conn.get_session(conn, :pow_assent_params)
      assert user_identity == %{"provider" => "test_provider", "uid" => "new_user", "token" => %{"access_token" => "access_token"}}
      assert user == %{"name" => "Dan Schultzer", "email" => ""}
      refute Plug.Conn.get_session(conn, :pow_assent_session_params)
    end
  end
end

But it's only a guess (based on not much experience) at what I should do. Sorry to be a pain, but if you can provide some tips, I'm happy to help

In this case you would need to unit test the user_identity_changeset/4 method directly, rather than using a controller test. Also the changeset method can be made simpler, since you can rely on the the pow_assent_user_identity_changeset/4 method for the user id field. I’ll post a refactored version tomorrow.

Ah, I forgot to mention. In my project, if it violates a unique constraint (for :email and/or :user_name) it dumps the user to the login page with an error message - instead of redirecting to the Register page. I was hoping to create a test for that scenario too.

Actually, your code was pretty good, just a few things I would change:

The changeset should also have email validation if email can be changed or users can sign up with just password
Ecto.Changeset.unique_constraint(:user_name, on: User.Repo) isn't necessary since the user id field already have unique constraint check in Pow
Cast before pow changeset calls, and custom validate after

defmodule PowAssent.Test.Ecto.Users.CustomUser do
  @moduledoc false
  use Ecto.Schema
  use Pow.Ecto.Schema, user_id_field: :user_name
  use PowAssent.Ecto.Schema

  schema "users" do
    field :user_name, :string
    field :name, :string

    pow_user_fields()

    timestamps()
  end

  def changeset(user_or_changeset, attrs) do
    user_or_changeset
    |> pow_changeset(attrs)
    |> validate_name(attrs)
    |> validate_email(attrs)
  end

  def user_identity_changeset(user_or_changeset, user_identity, attrs, user_id_attrs) do
    user_or_changeset
    |> put_username_from_uid(attrs)
    |> Ecto.Changeset.cast(user_id_attrs, :email)
    |> pow_assent_user_identity_changeset(user_identity, attrs, user_id_attrs)
    |> validate_name(attrs)
    |> validate_email(attrs)
  end

  defp validate_name(user_or_changeset, attrs) do
    user_or_changeset
    |> Ecto.Changeset.cast(attrs, [:name])
    |> Ecto.Changeset.validate_required([:name])
  end

  defp validate_email(user_or_changeset, attrs) do
    user_or_changeset
    |> Ecto.Changeset.cast(attrs, [:email])
    |> Ecto.Changeset.validate_required([:email])
    |> Ecto.Changeset.unique_constraint([:email])
  end

  defp put_username_from_uid(changeset, %{"uid" => user_name}), do: Ecto.Changeset.put_change(changeset, :user_name, user_name)
  defp put_username_from_uid(changeset, _attrs), do: changeset
end

The email format isn't validated. You can use https://hexdocs.pm/pow/Pow.Ecto.Schema.Changeset.html#validate_email/1 if you want to depend on Pow for that.

I'm still working on my tests. But I've confirmed the code path that results in the redirect to the login page (instead of the register page). Given the CustomUser structure (above), :email isn't the primary id, but it also needs to be unique.
In PowAssent.Ecto.UserIdentities.Context there's the create_user function:
  def create_user(user_identity_params, user_params, user_id_params, config) do
    params        = convert_params(user_identity_params)
    user_mod      = user!(config)
    user_id_field = user_mod.pow_user_id_field()

    user_mod
    |> struct()
    |> user_mod.user_identity_changeset(params, user_params, user_id_params)
    |> Context.do_insert(config)
    |> case do
      {:error, %{changes: %{user_identities: [%{errors: [uid_provider: _]}]}} = changeset} ->
        {:error, {:bound_to_different_user, changeset}}

      {:error, %{errors: [{^user_id_field, _}]} = changeset} ->
        {:error, {:invalid_user_id_field, changeset}}

      {:error, changeset} ->
        {:error, changeset}

      {:ok, user} ->
        {:ok, user}
    end
  end

Because :user_name is the user_id_field - the 2nd case never matches for the :email field. It just falls through to the generic error handler (which, later on, redirects to the login page). If I add the following code (to trap any unique constraint) - then the redirect goes to the Register page:
      {:error, %{errors: [{_field, {_desc, [constraint: :unique, constraint_name: _constraint_name]}}]} = changeset} ->
        {:error, {:invalid_user_id_field, changeset}}

Just thought I'd mention it - I'll attempt to make a unit test for this now that I know exactly what's happening.

Good call!
A way to handle it currently would be to set up a custom context so you can catch the :email validation failure in a custom create_user/2: https://github.com/danschultzer/pow_assent/blob/v0.3.2/lib/pow_assent/ecto/user_identities/context.ex#L11-L22
defmodule MyApp.UserIdentities do
  use PowAssent.Ecto.UserIdentities.Context,
    repo: MyApp.Repo,
    user: MyApp.Users.User

  def create_user(user_identity_params, user_params, user_id_params)
    user_identity_params
    |> pow_assent_create_user(user_params, user_id_params)
    |> case do
      {:error, %{errors: [{:email, _}]} = changeset} ->
        {:error, {:invalid_user_id_field, changeset}}

      any ->
        any
    end
  end
end

I'll review the codebase if there an easier way to deal with it.

As an idea, I was thinking potentially you could have another config field called secondary_field. Any errors on this field could be trapped (just like user_id_field).
You could also add a conditional section in the default Register template to accommodate a secondary_field.

Getting back to the original question. I implemented your workaround (above) successfully. The register page shows, but :user_name and :email are empty. So I implemented the following workaround in my template:

Register

<%
  changeset = @changeset

  changeset = if !Ecto.Changeset.get_change(changeset, :email) do
    Ecto.Changeset.put_change( changeset, :email, @conn.private.pow_assent_params.user["email"] )
  else
    changeset
  end

  changeset = if !Ecto.Changeset.get_change(changeset, :user_name) do
    Ecto.Changeset.put_change( changeset, :user_name, @conn.private.pow_assent_params.user["nickname"] )
  else
    changeset
  end
%>

<%= form_for changeset, @action, [as: :user], fn f -> %>
  <%= if changeset.action do %>

Oops, something went wrong! Please check the errors below.

  <% end %>

    <%= label f, Pow.Ecto.Schema.user_id_field(@changeset) %>
    <%= text_input f, Pow.Ecto.Schema.user_id_field(@changeset), class: "form-control" %>
    <%= error_tag f, Pow.Ecto.Schema.user_id_field(@changeset) %>

    Email
    <%= text_input f, :email, class: "form-control" %>
    <%= error_tag f, :email %>

    <%= submit "Register", class: "btn btn-outline-secondary" %>

<% end %>

Which looks like all sorts of bad to me. But is the only way I could think of to achieve what I want.
The workflow isn't bad either:

The first time you come to the register page - it just shows the :user_name and :email without explaining that anything went wrong
The user can just click the "Register" button without typing anything
Now they can see what's wrong, and make adjustments

The register page shows, but :user_name and :email are empty.

Yeah, it's because I use a blank changeset since by default there is only one field and we already know that the value can't be used, and the page already explains that.
You can make it much simpler by just setting value: Ecto.Changeset.get_change(@changeset, :email, default_value) for the inputs. To make it easier to read I've just add the variables to the top:

Register

<%
  default_user_id = @conn.private.pow_assent_params.user["nickname"]
  default_email = @conn.private.pow_assent_params.user["email"]

  user_id = Ecto.Changeset.get_change(@changeset, Pow.Ecto.Schema.user_id_field(@changeset), default_user_id)
  email = Ecto.Changeset.get_change(@changeset, :email, default_email)
%>

<%= form_for changeset, @action, [as: :user], fn f -> %>
  <%= if changeset.action do %>

Oops, something went wrong! Please check the errors below.

  <% end %>

    <%= label f, Pow.Ecto.Schema.user_id_field(@changeset) %>
    <%= text_input f, Pow.Ecto.Schema.user_id_field(@changeset), value: user_id, class: "form-control" %>
    <%= error_tag f, Pow.Ecto.Schema.user_id_field(@changeset) %>

    Email
    <%= text_input f, :email, value: email, class: "form-control" %>
    <%= error_tag f, :email %>

    <%= submit "Register", class: "btn btn-outline-secondary" %>

<% end %>

Thanks for the tip! I'll just go with the above then!


chore(deps): bump argo-events to 1.7.2

fixes #9618
Signed-off-by: William Van Hevelingen<EMAIL_ADDRESS>

Hey @terrytangyuan, any suggestions to getting this passing?  make pre-commit -B won't fully complete for me on this PR.  I opened https://github.com/argoproj/argo-workflows/pull/9639 to get lint working for me. make pre-commit -B updated my golang to 1.19 and it doesn't seem to work well with the current version of golangci. However, with that merged locally I still can't make pre-commit -B to finish

Pull changes from https://github.com/argoproj/argo-workflows/pull/9639?

@terrytangyuan any idea on how to fix the codegen test?

Did you run make codegen -B STATIC_FILES=false?

@terrytangyuan I tried it and nothing changed. I think it runs as part of make pre-commit -B anyways.

The diff came from pkg/client/clientset/ so I think you have different versions of the toolchain from what we have in the CI. I'd double check the versions in the logs: https://github.com/argoproj/argo-workflows/actions/runs/3122754914/jobs/5064938383


Allow rendering markdown::mdast::Node directly to HTML

Hi,
I just found your library and it's working really well! Thanks! :clap:
I'm using markdown::to_mdast to get the AST for some frontmatter parameters and then using markdown::to_html_with_options for rendering and if I'm not mistaken this parses the content twice.
I think it'd be good to expose converting AST tree to HTML directly so I could parse it just once with to_mdast and then convert to HTML from that.
Thanks for your time! :wave:

Welcome @wiktor-k it sounds like you want to do some transformation on content?
If so see #32
Or if you mostly want AST nodes for another reason see https://github.com/wooorm/markdown-rs/issues/27

This indeed seems a duplicate, so closing!
Duplicate of #27


Validations in javascript/typescript

Yup vs joi vs validator vs validate?
Why use Yup in ts?
There is also: https://www.npmjs.com/package/schema-inspector

https://github.com/ianstormtaylor/superstruct

How do you integrate validation with bad request validation results


flutter plug-in for Android Studio will not accept path location for flutter SDK

This is not an issue with the flutter product. It is an issue with the flutter plug-in for Android Studio.
I do not know where/how to report it to the correct group. Please forward it to the proper support group.
I am rebuilding Android Studio and the Flutter SDK.
After a successful install, I went to create the first (default) application.
I am running on the Debian Linux container that is part of the Chrome OS environment.
The problem is the way the panel that is presented for specifying the path for the flutter SDK.
Previously the field for specifying the path had a drop down switch with brought up a
search directory dialog.  In my latest use (minutes ago), the field for manually entering the
path value was too long and covered almost all of the button to open the dialog.
At first I did not see the partial button.  So I manually entered the path. At each try(retry) the
logic rejected the manual value, even though running flutter doctor in a terminal resulted
in successful execution.  It was not until I saw the partial button and clicked it that the dialog
opened and I was able to navigate to the same location and had it accepted.
Everything is working correctly, but I thought someone should know about the bad formatting
of the field for specifying flutter SDK path value.
Attached is a snapshot of the bad panel display along with a terminal image showing that
the flutter SDK in my home directory. I tried to attach but it failed.

@leemke
you can open the issue here https://github.com/flutter/flutter-intellij/issues
also you might have accidentally opened the issue twice https://github.com/flutter/flutter/issues/84923

Please open this issue in above referred dedicated repo for Android Studio's flutter plugin.
Closing from here.


Command-line / Offline app token token keeps expiring even though there's refresh token

This is from this example: I will post it in the other repo.
https://developers.google.com/drive/api/v3/quickstart/php
https://github.com/gsuitedevs/php-samples/blob/master/drive/quickstart/quickstart.php
https://youtu.be/NMGaXlq0qAk
Environment details

OS: Windows 10 Home, 64 bit
PHP version: PHP 7.2.22 (cli) (built: Aug 28 2019 09:29:01) ( ZTS MSVC15 (Visual C++ 2017) x64 )
Package name and version: const LIBVER = "2.4";

Steps to reproduce

... https://youtu.be/NMGaXlq0qAk

Code example (fix)
			$renewed = 0;

			// Refresh the token if possible, else fetch a new one.
			if ( $client->getRefreshToken() ) {
				$client->fetchAccessTokenWithRefreshToken( $client->getRefreshToken() );
				$renewed = 1;
			} else {
				// Request authorization from the user.
				$authUrl = $client->createAuthUrl();
				printf( "Open the following link in your browser:\n%s\n", $authUrl );
				print 'Enter verification code: ';
				$authCode = trim( fgets( STDIN ) );

				// Exchange authorization code for an access token.
				$accessToken = $client->fetchAccessTokenWithAuthCode( $authCode );
				$client->setAccessToken( $accessToken );

				// Check to see if there was an error.
				if ( array_key_exists( 'error', $accessToken ) ) {
					throw new Exception( join( ', ', $accessToken ) );
				}
			}

			if (! $renewed) {
				// Save the token to a file.
				if ( ! file_exists( dirname( $tokenPath ) ) ) {
					$mkdir_res = mkdir( dirname( $tokenPath ), 0700, true );

					if ( empty( $mkdir_res ) ) {
						throw new Exception( "Cannot create parent directory for file: " . $tokenPath );
					}
				}

				$save_res = file_put_contents( $tokenPath, json_encode( $client->getAccessToken() ), LOCK_EX );

				if ( empty( $save_res ) ) {
					throw new Exception( "Cannot save file: " . $tokenPath );
				}
			}

Hi, I just wanted to let you know that this was an issue for us as well, and @lordspace's post solved the issue for us.  We were running this Google Drive import as a command line job (using Redis/Resque) and it would always fail after 3600 seconds.
Thinking the same code wasn't the source of the issue, we spent many hours looking elsewhere, and the cause was just as described above.  The $renewed flag fixes the issue.  Thanks for posting this issue and please consider updating the sample code accordingly.

If I'm reading this right, this skips saving the access token to a file if the access token was fetched using fetchAccessTokenWithRefreshToken.
I think the root issue here could have been that the refresh_token field was not being added back to the access token, but this was fixed 6 years ago in https://github.com/googleapis/google-api-php-client/pull/1121, so I think the problem has been resolved.


sst: support java 17

This PR is providing Java 17 support.
include CDK update to 2.79
refs: #2855

Thanks @julbrs! Java 17 runtime is now supported in 2.18.0


Set Metro package roots separately from Metro watch folders

Description
When Metro runs, it gets the list of package root paths from the config property watchFolders. This means all packages, in-repo and external, must be watched for changes. In large mono-repos, this causes problems when thousands of external packages are used. File-watcher limits are hit, and a lot of CPU, memory and disk resources are used.
This PR PATCHES Metro. It adds support for a new roots Metro config property to explicitly separate package roots from watch folders. It is the patch-equivalent of this Metro PR: https://github.com/facebook/metro/pull/701
This PR also makes use of the patch.

It exposes two new APIs in @rnx-kit/metro-config which give the developer the data needed to set roots and watchFolders together.
It updates the test-app package to use the new metro-config APIs, and adds warning-suppression because Metro complains that roots is not a valid property.

When the Metro PR is merged and published, we will upgrade our packages to make use of it and the remove the patching and test-app changes.
Fixes #536.

Test plan
Add tests for new APIs. Verify bundling of all platforms in the debugger. Ensure that roots and watchFolders are set correctly, and that bundling still works.

Back to draft. Looks like a different patch is needed, deeper in jest-haste-map.

We're not going forward with this PR.


Add visualisation for BLAST against genomic targets

Description
This PR introduces a new visualisation specifically for results of BLAST jobs against top-level genomic sequences (the DNA database). See the XD with the design here
The genomic visualisation makes an api call to fetch the species karyotype, which it then uses as a reference when drawing genomic regions. This allows us both to display top-level regions in the same order as they are typically represented in a karyotype, and to filter out the regions that are not part of karyotype (such as chromosome patches).
The rendering of the visualisation of BLAST results is now conditional on which database the input sequences were BLASTed against. For the DNA database, we will be showing the new visualisation; while for the transcripts and the proteins databases, we will be showing the one that we developed previously.
Also:
Removed extra horizontal padding from row elements in a BLAST results box:

notice the unnecessary inner padding (green):

which resulted in this misalignment in the layout:

Related JIRA Issue(s)
https://www.ebi.ac.uk/panda/jira/browse/ENSWBSITES-1735
Deployment URL(s)
http://genomic-blast-viz.review.ensembl.org

Missing line for 0 hits. (as in the xd)

Also when there are no hits, we do not need to render the table at all and also remove the arrow at the end of species name.

Also when there are no hits, we do not need to render the table at all and also remove the arrow at the end of species name.

This should certainly be done in a dedicated PR.

Missing line for 0 hits. (as in the xd)

Updated.

Having fewer than five visible circles is going to be unavoidable. Any concerns (for a separate  PR) Andrea ?


  This seems counter intuitive and if you could filter like that it would be useful

Expected behavior
Application of a second text filter

## Actual behavior

I am told it is not allowed

Environment data

5.1.18362.1171
Desktop

To be clear up front: You likely won't see improvements in Windows PowerShell  - please note that this repo is only for PowerShell Core 6 and PowerShell 7+ issues.
In a pinch, you can pipe to Out-String -Stream before piping to the 2nd Select-String call, but note that this will retain the formatting artifacts, notably the > before the matching line and a space before the context lines.

There are two related issues:

Select-Object -Context ... | Select-Object ... causes the context information in the first command's output objects to be quietly ignored by the second command.

Additionally, Select-Object -Context ... | Select-Object -Context ..., i.e. using -Context with both commands causes the -Context parameter to also be ignored by the 2nd command, accompanied by warning The option "Context" is not valid when searching results that are piped from Select-String output.

I can't speak to the original design intent, but the behavior seems unhelpful.
The code at https://github.com/PowerShell/PowerShell/blob/ac560d8d320f3ba72e525825be2c64d9c5abdf2c/src/Microsoft.PowerShell.Commands.Utility/commands/utility/MatchString.cs#L1740-L1757

suggests that only looking at the .Line property of  incoming Microsoft.PowerShell.Commands.MatchInfo  instance - instead of also considering .PreContext and .PostContext -  is intentional.

additionally restricting the use of -Context in the receiving command seems curious, however: perhaps this was a logic error, where the actual intent was solely to warn about the incoming context information getting ignored?

A similar issue arose in combination with the -Raw switch (not available in Windows PowerShell), which which outputs just the matching lines rather than Microsoft.PowerShell.Commands.MatchInfo objects:
Here too the intuitive expectation is that combining -Raw with -Context would also output the context lines, which isn't the case either, unfortunately, as reported in #14350.

P.S., @microlaser, can you please give your issue a meaningful title, for better discoverability?

I realized I misinterpreted the current behavior and design intent, so here's the hopefully correct summary, based on https://github.com/PowerShell/PowerShell/blob/ac560d8d320f3ba72e525825be2c64d9c5abdf2c/src/Microsoft.PowerShell.Commands.Utility/commands/utility/MatchString.cs#L1740-L1757 and experimenting with commands:

By (debatable) design, when Select-String receives input from another Select-String call, it acts as a filter on the Microsoft.PowerShell.Commands.MatchInfo objects received as input rather than on the text context_ they represent:

The filtering is solely based on the .Line property value of the input objects, not also on the lines contained in the .Context property, if present.

Due to this match-info-object-filtering approach, the receiving Select-String call doesn't support a -Context argument itself  so it is ignored, but a warning is issued.

While context resulting from a -Context argument passed to the sending Select-String is passed through - if the .Line property value matches the filter - there is a display bug, in that the context lines passed through do not show up in the formatted output anymore; e.g.:

1..5 | Select-String 3 -Context 1 | Select-String 3 outputs just > 3, not   2\n> 3\n  4, as the original command would; the problem is connected to the .Context.DisplayPreContext and .Context.DisplayPostContext values not getting preserved on filtering.

The upshot is:

The current behavior when chaining Select-String calls is unhelpful, in two respects:

It doesn't consider context lines when filtering in the receiving Select-String command.
The receiving Select-String command doesn't support -Context (your original complaint).

What would be helpful if receiving Select-String calls solely operated on the strings represented by the input objects, notably including the context lines, but without duplicates from overlapping contexts - as you currently already see in the formatted output from non-chained calls (formatting markup aside).
A similar issue arose in combination with the -Raw switch (not available in Windows PowerShell; its purpose is to output just the matching lines (text) rather than Microsoft.PowerShell.Commands.MatchInfo objects):
Here too the intuitive expectation is that combining -Raw with -Context should also output the context lines without duplicates, which isn't the case either, unfortunately, as reported in #14350.

To me, these changes would undoubtedly be helpful, but at least in the non--Raw case they do amount to a breaking change, so the question is whether it is an acceptable breaking change, namely one that falls into bucket 3: Unlikely Grey Area.

@mklement0 Can you please move your comment to a new issue with a meaning title? I will close this one given that the PR title and description are not helpful.

@daxian-dbw, please see #14850

@daxian-dbw, given that the current behavior is (mostly) by design (but somewhat unhelpful), the new issues is of type "Issue-Enhancement", not a bug report. I have adde sample commands that demonstrate the unhelpful behavior, however (in the context of the current behavior there is also a small bug, but fixing that will be moot, if the behavior is more fundamentally revised).

Thank you @mklement0!


Folder expand states are loaded from storage when adding/removing new folders to workspace

VSCode Version: 1.31.1
OS Version: Windows 10 Enterprise

Steps to Reproduce:

Create a workspace and add one or more folder in it
Expand one or more folders from the workspace in the explorer and close VS Code to save the folder expansion state
Run VS Code and collapse the expanded folder from (2) then add a new folder to the workspace (or remove a folder from workspace)
Notice that the collapsed folder is expanded again (Expansion state loaded from storage rather than keeping the current state)

Does this issue occur when all extensions are disabled?: Yes

This is a fair bug. Pushing it to the backlog since not mayor.

Is there a setting attribute I can duct tape this with? I use the add/remove feature pretty frequently in my workflow and this can get maddening.


Add javadoc to core and api

All methods of at least the core and the api should be documented via javadoc, to make them easy to use in other modules.

Postponing this for a bit, considering #242


edited and main.py

Edited main.py

Codecov Report

Merging #14 (3bb277f) into main (fafb841) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #14   +/-   ##
=======================================
  Coverage   82.42%   82.42%
=======================================
  Files           5        5
  Lines         239      239
=======================================
  Hits          197      197
  Misses         42       42

Flag
Coverage Δ

unittests
82.42% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Add: Another C# Payload

Fix:

Replace cmd.exe with {shell} in existing payload.

Addition:

Second C# payload is added

New C# Payload

O

Merged new C# Payload

Merged new C# Payload


Cannot seem to run on host.

➜  _utilities ./docker-gen
zsh: exec format error: ./docker-gen
I'm runnin on osx 10.10.1.  I've tried it with;
server api: 1.10.1 and 1.8.3
client api: 1.21, 1.20, 1.19, 1.18
Running on virtualbox as well if thats relevant.

Did you download the correct binary?  You may be running the osx binary under linux or vice versa.
https://github.com/jwilder/docker-gen/releases/tag/0.7.1


Filter reset clicks, filter input should clear

Expected Behavior
while Filter reset clicks, filter input should clear
Current Behavior
while Filter reset clicks, filter input not clearing

I would get that filter input clear, whenever reset button is clicked
1

###2

3

Steps to Reproduce (for bugs)
1 Open Filter

2. Search Anything in filter

--Listing data from backend
3. Click any of listed item -- Related column will shows in table

4. Click reset, Check input box inside the filter,

Your Environment

Tech
Version

Material-UI
5.6.2

MUI-datatables
3.8.5

React
17.0.1

browser
chrome

etc

@ajmal-n Were you able to find a solution for this?


Create: Fabric Compatability

Are there any plans to support Fabric? Create, Valkyrien Skies, and Clockwork are all Fabric compatible - Fabric compatibility for Trackwork would open up land-based vehicles for a lot of players that use Fabric instead of Forge.

See: https://github.com/Endalion/trackwork/issues/7


Need to update sinon for path-to-regexp vulnerability GHSA-9wv6-86v2-598j

You might merge in the PR #237  to resolve this
npm audit report
path-to-regexp  0.2.0 - 7.2.0
Severity: high
path-to-regexp outputs backtracking regular expressions - https://github.com/advisories/GHSA-9wv6-86v2-598j
No fix available
node_modules/path-to-regexp
nise  <=6.0.0
Depends on vulnerable versions of path-to-regexp
node_modules/nise
sinon  3.0.0 - 17.0.2
Depends on vulnerable versions of nise
node_modules/sinon
aws-sdk-client-mock  *
Depends on vulnerable versions of sinon
node_modules/aws-sdk-client-mock
aws-sdk-client-mock-jest  *
Depends on vulnerable versions of aws-sdk-client-mock
node_modules/aws-sdk-client-mock-jest

I override the sinon version to 18.0.0 in package.json to avoid the vulnerability and all features that I use from aws-sdk-client-mock still working.

Thanks @mrRodrigo I also am doing so while waiting for this to land in master. I used a more specific override for package.
  "overrides": {
    "aws-sdk-client-mock": {
      "sinon": "^18.0.1",
      "@types/sinon": "^17.0.3"
    }
  },

Sinon bumped in v4.0.2


server: workaround images with Config.Volumes

Workaround for some tests in the e2e suite.
@mrunalp @sameo PTAL
Signed-off-by: Antonio Murdaca<EMAIL_ADDRESS>

This looks fine; will wait for the tests to go through.

LGTM


Fixes bug when active speaker and pinned accomplice are the same

Fixes issue where if pinned user and active speaker are the same, this causes the client to download lastN-1 streams
The code was effectively counting the pinnedEndpoint twice as it was first in the lastNEndpoints list (which is the ordered list of active speakers)

Didn't realize Jitsi had a branch out to split last-n out into it's own controller...
So this bug is being fixed upstream. I'm wondering if I should close this or leave it in as a workaround until https://github.com/jitsi/jitsi-videobridge/tree/split-last-n gets merged

@lsevans - another options would be to merge split-last-n into master of our fork.

@joshuawarner32 Good point. I just wanted to make sure we have a fix before brady bunch goes in as it'll be more obvious when we're missing a stream.
I'll pull it in and do some testing with it.

According to a discussion on the mailing list, the split-last-n branch should be close to ready to merge. They just put up a PR for it and just need to do some testing. We can definitely help with that.


[feat] Add firebase and firestore support

Add firebase and firestore support to sync notes on different devices

hi, i can work on this but i need more info on how it should work

@yaderson yes sure you can start, i would be happy to answer your queries

Hi, if it is still not done, I will be happy to help you out with this

@akhil2000mittal sure you can proceede.

@ayaankhan98 but for this we have to make a firebase project and it will be appreciated if you make a firebase account with your account and then add me as a editor


SQL errors related to unquoted keywords after upgrading H2.

I recently upgrade Reladomo from 18.0.0 to 18.1.0, and H2 from 1.4.200 to 2.2.224. I ran into issues with SQL syntax errors, related to unquoted keywords user, which I use as a table name, and key and value, which I use as column names. I was able to work around the problem. I'll share my workarounds here, in case they make sense to upstream. I'm also wondering if there's a better way to handle this. It seems like Reladomo is designed to handle this, since the file SqlKeywords.java includes all of these keywords. Is there a way to turn on identifier quoting for all sql?
First, I created a custom DatabaseType, to copy patterns I found in https://github.com/goldmansachs/reladomo/commit/e5d754c79d82325b382cfa1ae39996096cf0e751. As far as I can tell, there's no equivalent of SET QUOTED_IDENTIFIER ON for H2. Instead I ran SET NON_KEYWORDS USER, KEY, VALUE. I did not need SET MODE LEGACY.
    @Override
    public void configureConnection(Connection connection)
            throws SQLException
    {
        // this.fullyExecute(connection, "SET QUOTED_IDENTIFIER ON");
        // this.fullyExecute(connection, "SET MODE LEGACY");
        this.fullyExecute(connection, "SET NON_KEYWORDS USER, KEY, VALUE");
    }

I found I was still getting sql syntax errors and after debugging, I found some connections used by Reladomo that had not been passed to configureConnection. So next, I changed my ConnectionManager.
    @Override
    public Connection getConnection()
    {
        try
        {
            Connection connection = this.dataSource.getConnection();
            this.databaseType.configureConnection(connection);
            return connection;
        }
        catch (SQLException e)
        {
            throw new RuntimeException(e);
        }
    }

Thoughts on these changes? Is there another way to get identifiers to be quoted instead?

You can simply quote them in you xml. Just remember to escape literal quotes in xml.

I've tried different combinations, and I can't get quoting to work.
When I put quotes around the table name in xml...
    <ClassName>Parameter</ClassName>
    <DefaultTable>"PARAMETER"</DefaultTable>

... the generated java code doesn't compile. In ParameterDatabaseObjectAbstract:
	public String getDefaultTableName()
	{
		return ""PARAMETER"";
	}

If I don't quote the table name in the xml, but I do quote it during schema creation, then I get a sql error saying table not found.
When I put quotes around column names in the xml, I also get compilations in the Java code.
    <Attribute
            name="name"
            javaType="String"
            primaryKey="true"
            nullable="false"
            maxLength="256"
            finalGetter="true"
            columnName=""NAME""
            trim="false" />

	private static final String PK_WITH_ALIAS = "t0."NAME" = ?";
	private static final String PK_INDEX_COLS = ""NAME"";

I tried a bunch of other things too, but I figured I should stop and report back at this point.

I just double checked and putting quotes in the xml is the older solution that should no longer be necessary. The test class User has a column named "NAME", which gets quoted in java automatically:
xml:
    <Attribute name="name" javaType="String" columnName="NAME" maxLength="128"/>

generated finder:
                result = this.mapper == null ? SingleColumnStringAttribute.generate("\"NAME\"", ...

generated db object:
    private static final String COL_LIST_WITHOUT_PK = "USERID,\"NAME\",ACTIVE...

Are you sure you're using the correct generator version?
In case you need to do it the old way, the correct syntax is "backslash-quote", like so:
    <DefaultTable>\"USER_TBL\"</DefaultTable>
...
    <Attribute name="profileId" nullable="false" javaType="int" columnName="\"PROFILE_OID\""/>
...

Using Reladomo 18.1.0, when I use columnName="\"id\"" I get generated invalid generated code in a few places, including the *DatabaseObjectAbstract class.
	public String getPrimaryKeyWhereSql()
	{
		return "\"id\" = ?";
	}

and for tables:
    <DefaultTable>\"TABLE\"</DefaultTable>

	public String getDefaultTableName()
	{
		return "\"TABLE\"";
	}

Another thing that threw me off is that I think xsd2bean doesn't escape quotes during marshalling, though I'm not 100% sure since that wasn't the problem I was trying to reproduce.

I was able to upgrade to H2 version 2.

I had to downgrade to Reladomo 18.0.0
I quoted every identifier in every Reladomo definition xml, every table name and column name
I turned on Liquibase's objectQuotingStrategy="QUOTE_ALL_OBJECTS" which does the same thing
Not sure if this is strictly necessary, but I changed every identifier to be all upper-case. Previously my columns used lower-case.

I couldn't get Reladomo 18.1.0 to work in any combination of configuration options I tried.


Abdul Testing GitHub DevOps automation

This is a Microsoft Internal DevOps Bug ID AB#12356

closed after testing


docker image failed to start

just followed the instruction of the guide  with such docker-compse.yaml
version: '3'
services:
  strapi:
    image: strapi/strapi
    environment:
      DATABASE_CLIENT: postgres
      DATABASE_NAME: strapi
      DATABASE_HOST: postgres
      DATABASE_PORT: 5432
      DATABASE_USERNAME: strapi
      DATABASE_PASSWORD: strapi
    volumes:
      - ./app:/srv/app
    ports:
      - '1337:1337'
    depends_on:
      - postgres

  postgres:
    image: postgres
    environment:
      POSTGRES_DB: strapi
      POSTGRES_USER: strapi
      POSTGRES_PASSWORD: strapi
    volumes:
      - ./data:/var/lib/postgresql/data

and got such error
Starting your app...

Error loading the local develop command. Strapi might not be installed in your "node_modules". You may need to run "npm install"

os: windows 10 home

Can you provide the logs from the Strapi container?

Creating network "strapi_default" with the default driver
Creating strapi-db ... done
Creating strapi-app ... done
Attaching to strapi-db, strapi-app
strapi-db   | The files belonging to this database system will be owned by user "postgres".
strapi-db   | This user must also own the server process.
strapi-db   |
strapi-db   | The database cluster will be initialized with locale "en_US.utf8".
strapi-db   | The default database encoding has accordingly been set to "UTF8".
strapi-db   | The default text search configuration will be set to "english".
strapi-db   |
strapi-db   | Data page checksums are disabled.
strapi-db   |
strapi-db   | fixing permissions on existing directory /var/lib/postgresql/data ... ok
strapi-db   | creating subdirectories ... ok
strapi-db   | selecting dynamic shared memory implementation ... posix
strapi-db   | selecting default max_connections ... 100
strapi-db   | selecting default shared_buffers ... 128MB
strapi-db   | selecting default time zone ... Etc/UTC
strapi-db   | creating configuration files ... ok
strapi-db   | running bootstrap script ... ok
strapi-app  | Using strapi 3.4.6
strapi-app  | No project found at /srv/app. Creating a new strapi project
strapi-db   | performing post-bootstrap initialization ... ok
strapi-app  | Creating a new Strapi application at /srv/app.
strapi-app  |
strapi-app  | Creating a project from the database CLI arguments.
strapi-app  | Creating files.
strapi-app  | - Installing dependencies:
strapi-db   | syncing data to disk ... initdb: warning: enabling "trust" authentication for local connections
strapi-db   | You can change this by editing pg_hba.conf or using the option -A, or
strapi-db   | --auth-local and --auth-host, the next time you run initdb.
strapi-db   | ok
strapi-db   |
strapi-db   |
strapi-db   | Success. You can now start the database server using:
strapi-db   |
strapi-db   |     pg_ctl -D /var/lib/postgresql/data -l logfile start
strapi-db   |
strapi-db   | waiting for server to start....2021-02-18 03:14:37.575 UTC [48] LOG:  starting PostgreSQL 13.2 (Debian 13.2-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
strapi-db   | 2021-02-18 03:14:37.673 UTC [48] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
strapi-db   | 2021-02-18 03:14:38.013 UTC [49] LOG:  database system was shut down at 2021-02-18 03:13:22 UTC
strapi-db   | 2021-02-18 03:14:38.224 UTC [48] LOG:  database system is ready to accept connections
strapi-db   |  done
strapi-db   | server started
strapi-db   | CREATE DATABASE
strapi-db   |
strapi-db   |
strapi-db   | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*
strapi-db   |
strapi-db   | 2021-02-18 03:15:03.591 UTC [48] LOG:  received fast shutdown request
strapi-db   | waiting for server to shut down....2021-02-18 03:15:03.648 UTC [48] LOG:  aborting any active transactions
strapi-db   | 2021-02-18 03:15:03.652 UTC [48] LOG:  background worker "logical replication launcher" (PID 55) exited with exit code 1
strapi-db   | 2021-02-18 03:15:03.658 UTC [50] LOG:  shutting down
strapi-db   | 2021-02-18 03:15:04.294 UTC [48] LOG:  database system is shut down
strapi-db   |  done
strapi-db   | server stopped
strapi-db   |
strapi-db   | PostgreSQL init process complete; ready for start up.
strapi-db   |
strapi-db   | 2021-02-18 03:15:04.723 UTC [1] LOG:  starting PostgreSQL 13.2 (Debian 13.2-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
strapi-db   | 2021-02-18 03:15:04.724 UTC [1] LOG:  listening on IPv4 address "<IP_ADDRESS>", port 5432
strapi-db   | 2021-02-18 03:15:04.724 UTC [1] LOG:  listening on IPv6 address "::", port 5432
strapi-db   | 2021-02-18 03:15:04.900 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
strapi-db   | 2021-02-18 03:15:05.086 UTC [76] LOG:  database system was shut down at 2021-02-18 03:15:04 UTC
strapi-db   | 2021-02-18 03:15:05.200 UTC [1] LOG:  database system is ready to accept connections
strapi-app  | Error while installing dependencies:
strapi-app  | warning strapi ><EMAIL_ADDRESS>This module has moved and is now available at @hapi/boom. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
strapi-app  | warning strapi > koa-ip ><EMAIL_ADDRESS>Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
strapi-app  | warning strapi > boom ><EMAIL_ADDRESS>This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
strapi-app  | warning strapi > chokidar ><EMAIL_ADDRESS>"Please update to latest v2.3 or v2.2"
strapi-app  | warning strapi-admin ><EMAIL_ADDRESS>🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.
strapi-app  | warning strapi-admin > webpack-dev-server ><EMAIL_ADDRESS>Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
strapi-app  | warning strapi-admin > webpack-dev-server > chokidar ><EMAIL_ADDRESS>fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
strapi-app  | warning strapi-admin > @babel/polyfill ><EMAIL_ADDRESS>core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
strapi-app  | warning strapi-admin > react-intl ><EMAIL_ADDRESS>We have renamed the package to @formatjs/intl-numberformat
strapi-app  | warning strapi-admin > react-intl ><EMAIL_ADDRESS>backwards incompatible, please upgrade to 6.0 instead
strapi-app  | warning strapi-admin > react-intl > intl-messageformat ><EMAIL_ADDRESS>backwards incompatible, please upgrade to 6.0 instead
strapi-app  | warning strapi-admin > reactstrap > react-popper ><EMAIL_ADDRESS>You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1
strapi-app  | warning strapi-admin > webpack > watchpack > watchpack-chokidar2 ><EMAIL_ADDRESS>Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
strapi-app  | warning strapi-admin > webpack-dev-server > chokidar > braces > snapdragon > source-map-resolve ><EMAIL_ADDRESS>https://github.com/lydell/resolve-url#deprecated
strapi-app  | warning strapi-admin > webpack-dev-server > chokidar > braces > snapdragon > source-map-resolve ><EMAIL_ADDRESS>Please see https://github.com/lydell/urix#deprecated
strapi-app  | warning strapi-plugin-users-permissions ><EMAIL_ADDRESS>request has been deprecated, see https://github.com/request/request/issues/3142
strapi-app  | warning strapi-plugin-users-permissions > request ><EMAIL_ADDRESS>this library is no longer supported
strapi-app  | warning strapi-plugin-email > strapi-provider-email-sendmail > sendmail ><EMAIL_ADDRESS>This project is unmaintained
strapi-app  | warning strapi-plugin-email > strapi-provider-email-sendmail > sendmail > mailcomposer ><EMAIL_ADDRESS>This project is unmaintained
strapi-app  | warning knex ><EMAIL_ADDRESS>Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
strapi-app  | warning<EMAIL_ADDRESS>Invalid bin field for "url-loader".
strapi-app  | error An unexpected error occurred: "https://registry.yarnpkg.com/date-fns/-/date-fns-2.17.0.tgz: ESOCKETTIMEDOUT".
strapi-app  |
strapi-app  |  Keep trying!
strapi-app  |
strapi-app  | Oh, it seems that you encountered errors while installing dependencies in your project.
strapi-app  | Don't give up, your project was created correctly.
strapi-app  | Fix the issues mentioned in the installation errors and try to run the following command:
strapi-app  |
strapi-app  | cd /srv/app && yarn install
strapi-app  |
strapi-app exited with code 1

Hi, the log shows a yarn timeout. it is not a pbl with strapi you should be able to run the yarn install again to fix this

i several times remove the container and up again, the same result

Sorry but this clearly is an issue with network timeouts. Not sure how we can help you here :/
Would you mind trying to use a custom Dockerfile like in the examples to test if the yarn install step works ?

every time, network timeout issue with the same node module?! ))

This happens to me as well. Followed instructions on how to build the docker image, and each time I get this error. If I stop the containers, cd in to the app-directory and install dependencies, then the error goes away.
Feels like something is wrong though.

@hbakhtiyor @nonameolsson same issue here - did you resolve it somehow?


Updating Quarkus extension for DJL

Hello,
We have been attempting to update DJL's support for Quarkus in 'djl-demo' to the latest versions of DJL (0.24.0) and Quarkus (3.5.1).
The updating of the Demo to DJL 0.24.0, was successful and straightforward, but we are having problems updating Quarkus to 3.5.1. This appears to be due to the changes in how the DJL's Quarkus Extension now needs to accomplish Dependency and Context injection. We are wondering if any one had looked at this, and had come to a conclusion on the best approach.
Will this change the current api? How?
No.
Who will benefit from this enhancement?
Quarkus community.

Can you share more details about the problem you were facing? Was there any error message or in-progress code that we can take a look at?


Revert follow-up for "Enable clang-tidy for pre-push (opt-out), exclude performance-unnecessary-value-param"

Follow-up/context bug for https://github.com/flutter/engine/pull/45020.
We reverted it because it seemed to be triggering some build failures on https://github.com/flutter/engine/pull/43764. (Failed build: https://ci.chromium.org/ui/p/flutter/builders/try/Linux Engine Drone/1263361/overview)
CC @matanlurey

I am going to close this as not necessary.


Cosmetic changes from #1737

Pulling out some of the cosmetic changes from #1737:

Rename the SigningRoot container to SigningData. The signing_root (of type Root) is the hash_tree_root of the SigningData (of type Container).
Cleanup compute_signing_root
Remove unnecessary new lines.

(The rationale for this split is because the substantive changes from #1737 may not make it in phase 0. Also this will help focus the discussion in #1737 on the substantive changes.)

I really think we should avoid nitpicking the spec at this point. Any non-security critical changes we introduce add unnecessary overhead for client teams and the potential to introduce minor bugs.
I agree that this looks good and the PR is a very small and digestible. Okay to merge.
But, I reiterate, now is generally not the time for a wave of renamings and code restructurings even if non-substantive


Updating cursor from 10.000 to 100.000 #81589

This PR tries to improve a little the problem when we have to try to edit more than 10 thousand lines, and we can't. We often have to edit around 100 thousand lines and it is difficult to deal with it. And always we still need two editors installed in computer, of course we like vscode. But we will hardly edit more than 1M of lines. With that at least we can solve the problem of most people. For the test is also easy. It is only generate a file with 1M lines and go at end use command to column cursor. After that add one line more and do the same test again and a message will be appeared. "The number of cursors has been limited to 1000000." The issue is #81589
Trying with 100k lines. Windows won't broke.

Trying with 100k lines.

@caiohb The limit is not introduced by accident or arbitrary. The limit is introduced because the editor freezes with such a large number of cursors when typing, pressing Enter, etc.
Simply increasing the limit number is not a solution to the feature request. A solution would be to make the editor so fast such that it works well with 100k cursors.

@alexdima My suggestion/opinion is still to add something like "editor.multiCursorMaxLines": 10000 to defaultSettings.json, instead of just increasing the static max value (e.g. public static read-only MAX_CURSOR_COUNT = 1000000;).  This way the onus is on the user to increase it from the default 10000 to begin with, and to your point about potentially reduced performance, a warning could simply be added as a comment to that setting as a disclaimer.
So in my scenario, I guess you'd still want to increase/set the upper limit as @caiohb did, but additionally add a new user/workspace setting (which could default to the current 10000), enabling users to increase it up to the MAX_CURSOR_COUNT limit...at their own peril :finnadie:


Deprecate usage of positional arguments

This PR adds a deprecation warning when a positional argument is used. In draft until #11 is merged. After this, a new version of the gem should be released so that developers can prepare for the new changes.

@adrianthedev It's a bit strange, but the CI's are not running on the PRs, do you have to configure something?

Maybe it's because the PR was created before we merged the CI jobs?
AFAIK I don't have to do anything to have them run


SPFx 1.17.2 webpart as a teams app. Save button disable while adding app in teams meeting

I am using SPFX 1.17.2 to create Teams Meeting Side Panel App. I have tried with and without creating manifest file in ./teams folder.
Also added below in webpart.manifest.json file
"supportedHosts": [
"SharePointWebPart",
"SharePointFullPage",
"TeamsMeetingApp"
],
below is manifest file added in ./teams folder
{
"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.16/MicrosoftTeams.schema.json",
"manifestVersion": "1.16",
"packageName": "{{SPFX_PACKAGE_NAME}}",
"id": "{{SPFX_COMPONENT_ID}}",
"version": "1.0",
"developer": {
"name": "Ashok Ghoghari",
"websiteUrl": "",
"privacyUrl": "",
"termsOfUseUrl": "",
"mpnId": ""
},
"name": {
"short": "{{SPFX_COMPONENT_NAME}}",
"full": "{{SPFX_COMPONENT_NAME}}"
},
"description": {
"short": "{{SPFX_COMPONENT_SHORT_DESCRIPTION}}",
"full": "{{SPFX_COMPONENT_LONG_DESCRIPTION}}"
},
"icons": {
"outline": "{{SPFX_COMPONENT_ID}}_outline.png",
"color": "{{SPFX_COMPONENT_ID}}_color.png"
},
"accentColor": "#ffffff",
"configurableTabs": [
{
"configurationUrl": "https://{teamSiteDomain}/_layouts/15/TeamsLogon.aspx?SPFX=true&dest=/_layouts/15/teamshostedapp.aspx%3Fteams%26componentId={{SPFX_COMPONENT_ID}}",
"canUpdateConfiguration": true,
"scopes": ["team", "groupchat"],
"context": [
"channelTab",
"privateChatTab",
"meetingSidePanel",
"meetingDetailsTab",
"meetingChatTab",
"meetingStage",
]
}
],
"validDomains": [
".microsoft.com",
".login.microsoftonline.com",
"*.sharepoint.com",
"resourceseng.blob.core.windows.net"
],
"webApplicationInfo": {
"resource": "https://{teamSiteDomain}",
"id": "00000003-0000-0ff1-ce00-000000000000"
}
}

Any update on this issue?

@ashokghoghari - sorry for the long delay.
First of all, TeamsMeetingApp is invalid value for the supported hosts. You should use TeamsTab and TeamsPersonalApp.
Second, your teams manifest values for SPFX_COMPONENT_NAME and SPFX_COMPONENT_ID should be replaced with actual name and id of the web part.

@AJIXuMuK ,
Thanks for your reply.
I was checking schema here and it is showing TeamsMeetingApp a valid value

@ashokghoghari - so I've tested 2 approaches:

one when you have TeamsMeetingApp in the supported hosts and don't provide the custom manifest (as it is not needed)
second with the custom manifest

Both are working for me without any issues.
I'm attaching the solutions here - could you please test it on your side?
meeting-app-manifest.zip
meeting-app.zip


Add reminder to clean drain to your calendar

i'd like to think about this further. where and when would the user get this prompt to add to calendar? would it be an option in the box that appears once a person adopts a drain, perhaps below the "Abandon this Drain" button? would we enable them to add it to a Gmail, Outlook, Apple... and Yahoo? would love thoughts from @jafowler49 and @jszwedko :) as to how hard this would be to implement.

Hmm, was the thinking that this would be a calendar feed that would be managed by the city? I could see us having a single calendar feed that people could subscribe to (that way, you could add calendar events in advance of weather events).

i'm closing this because we already email drain adopters in advance of heavy rains and we are currently exploring sending text message reminders as well.


RuntimeError: This format has more than one image with Subfile Type 0 so cannot be loaded!

HI cuCIM staff
My company is doing image processing stuff, and the image format provided is '.svs'.
Since we are interesting in this tool kit, we convert the .svs  to .tif format by tifffile package.
I got this error message when I ran code below.
"
input_file = "1M09_1.tif"
slide = cucim.CuImage(input_file)
"
The point is I really don't know how to fix this error.
BTW, I did try with another image(get from online)  in  this step. And it works as normal. So, I guess my cuCIm is installed correctly.

uploaded the Image File(1M09_1.tif) to Google Drive.
https://drive.google.com/file/d/1AZlocYpdRZd9jC0s-JsOtWuxCTZJwdgf/view?usp=sharing

Thanks @aan1173 for the report and sorry for the late response.
For Generic tiled tiff file to be loaded by cuCIM, subfile type of TIFF is correctly set (only one image with subfile type 0 which is the largest image should be available).

For the main (largest resolution): subfiletype == 0
For reduced images: subfiletype == 1

https://github.com/rapidsai/cucim/blob/branch-21.08/python/cucim/src/cucim/clara/converter/tiff.py#L160
SUBFILETYPE_NONE = 0
SUBFILETYPE_REDUCEDIMAGE = 1

                    if level:  # if this image is reduced image
                        subfiletype = SUBFILETYPE_REDUCEDIMAGE
                    else:  # if this is the original image (largest image)
                        subfiletype = SUBFILETYPE_NONE

https://github.com/rapidsai/cucim/blob/branch-21.08/python/cucim/src/cucim/clara/converter/tiff.py#L165
                    tif.save(
                        src_arr,
                        software="Glencoe/Faas pyramid",
                        metadata={"axes": "YXC"},
                        tile=(tile_size, tile_size),
                        photometric="RGB",
                        planarconfig="CONTIG",
                        resolution=(
                            x_resolution // 2 ** level,
                            y_resolution // 2 ** level,
                            resolution_unit,
                        ),
                        compress=("jpeg", 95),  # requires imagecodecs
                        subfiletype=subfiletype,
                    )

To convert .svs file to Generic TIFF format, you can use cucim's cli command:
Convert .svs file to .tif file
This package has the CLI tool to convert image in other formats (such as .svs) to TIFF (JPEG-compressed) image by using tifffile library. You can exploit the tool until cuCIM natively supports Aperio SVS format.
Please install openslide-python and tifffile package and follow the instruction here:
$ cucim convert --help

Usage: cucim convert [OPTIONS] SRC_FILE [DEST_FOLDER]

  Convert file format

Options:
  --tile-size INTEGER
  --overlap INTEGER
  --num-workers INTEGER
  --output-filename TEXT
  --help                  Show this message and exit.

$ cucim convert input/TUPAC-TR-467.svs --output-filename TUPAC-TR-467.tif --tile-size 512

INFO:cucim.clara.converter.tiff:Parameters
INFO:cucim.clara.converter.tiff:       input file: input/TUPAC-TR-467.svs
INFO:cucim.clara.converter.tiff:    output folder: .
INFO:cucim.clara.converter.tiff:        tile size: 512
INFO:cucim.clara.converter.tiff:          overlap: 0
INFO:cucim.clara.converter.tiff:      num_workers: 12
INFO:cucim.clara.converter.tiff:  output filename: TUPAC-TR-467.tif
INFO:cucim.clara.converter.tiff:  Created level0.mmap (26420, 19920, 3)
INFO:cucim.clara.converter.tiff:  Created level1.mmap (13210, 9960, 3)
INFO:cucim.clara.converter.tiff:  Created level2.mmap (6605, 4980, 3)
INFO:cucim.clara.converter.tiff:  Created level3.mmap (3302, 2490, 3)
INFO:cucim.clara.converter.tiff:  Created level4.mmap (1651, 1245, 3)
INFO:cucim.clara.converter.tiff:  Created level5.mmap (826, 622, 3)
INFO:cucim.clara.converter.tiff:Processing tiles...
INFO:cucim.clara.converter.tiff:Storing low resolution images...
INFO:cucim.clara.converter.tiff:  Level 1: (13210, 9960, 3)
INFO:cucim.clara.converter.tiff:  Level 2: (6605, 4980, 3)
INFO:cucim.clara.converter.tiff:  Level 3: (3302, 2490, 3)
INFO:cucim.clara.converter.tiff:  Level 4: (1651, 1245, 3)
INFO:cucim.clara.converter.tiff:  Level 5: (826, 622, 3)
INFO:cucim.clara.converter.tiff:Saving Level 0 image (19920 x 26420)...
INFO:cucim.clara.converter.tiff:Saving Level 1 image (9960 x 13210)...
INFO:cucim.clara.converter.tiff:Saving Level 2 image (4980 x 6605)...
INFO:cucim.clara.converter.tiff:Saving Level 3 image (2490 x 3302)...
INFO:cucim.clara.converter.tiff:Saving Level 4 image (1245 x 1651)...
INFO:cucim.clara.converter.tiff:Saving Level 5 image (622 x 826)...
INFO:cucim.clara.converter.tiff:Done.
INFO:cucim.clara.converter.tiff:Removing memmapped files...

code for the converter is available in https://github.com/rapidsai/cucim/blob/branch-21.08/python/cucim/src/cucim/clara/converter/tiff.py and it uses this CLI (https://github.com/rapidsai/cucim/blob/branch-21.08/python/cucim/src/cucim/clara/cli.py).
FYI, we are planning to support .svs format for v21.10.01 (https://github.com/rapidsai/cucim/issues/35)


test: adds exclusion: prerelease grpcio!=1.49.0rc0

Provides an exclusion to avoid using a problematic version of grpcio.

Owlbot's reverting the changes, see https://github.com/googleapis/python-bigquery-pandas/blob/388196a9fe7bcf954bdae258ad7b79081b1dfc86/owlbot.py#L77-L79 for example on how to make changes you'd like.


Support new quantization formats

llama.cpp appears to have developed new quantization formats (K_S, K_M, K_L). We should investigate these and figure out what's required to support them.

Already opened another issue for this https://github.com/rustformers/llm/issues/301 😬

derp


Export XYZ + Infrared

Dear Thomas,
first of all thanks a lot for the work you put into the KinectPV2 project!
What I am searching for is a possibility to map the infrared values to the depth image and to export a file which contains the XYZ coordinates of the points as well as the corresponding grey value of the IR channel for each point.
The RGB values are accessible via 'getColorChannelBuffer()' (as far as I understood), but is there also a solution for tapping the infrared channel in the same way?
Thanks in advance for your answer!

@MartinPetitMarteau this project might be helpful https://github.com/najeebt/atrium

ohh see, there are couple of missing mapping functions

@abenzer I am looking explicitly for a possibility to extract also the infrared greyscale value for each depth pixel / XYZ coordinate, which does not seem to be included in atrium, but thanks for the hint!

Hi again!
Sorry for being stubborn, but would it be a large effort for you to provide a function to access the infrared image so that the following example would be possible?
FloatBuffer InfraredBuffer = kinect.getInfraredImageBuffer();

@MartinPetitMarteau were you able to make any progress on this? I'm trying to extract the XYZ coordinate data of the points as the Kinect scans, and your question seemed similar. Thanks!


[Git] Allow specifying non-branch symbolic refs

The intention here is to allow installing a gem from git using a
ref of the form "refs/zuul/" (which are used by the zuul
continuous-integration system). There are likely other use cases for
arbitrary refs.

Closes #4845

👍 @bundlerbot r+

The reason this PR is mergeable where #4845 was not is that it avoids fetching all symbolic refs, and the only non-tag/head refs fetched are those specifically requested by a gemfile


tls doesn't support self-hosted etcd now

Currently we hard-code self-hosted etcd to use url scheme as "http".
Checklist:

[ ] https://github.com/coreos/etcd-operator/issues/1102

@hongchaodeng this is fixed now, right?

One more PR to go: https://github.com/coreos/etcd-operator/pull/1103


Listing not found screen needs to be designed

Currently it leads you to a dead end less than ideal experience. The only way out is to click the back button in the navigation bar.

How is that a dead end? You can navigate back, you can enter a different url in the address bar, you could use the nav menu in the top bar.
I definitely agree that the design could use some sprucing up, but to keep things simple I'm not sure how much interactivity the page needs. (I guess my concern is that dev cycles are being spent on things that arguably aren't as critical as other things, like server-connecting, ordering, search, channels, etc...)

Yes, you're right. There is more than one way out. My choice of terminology could have been better.
I have a few questions though...
Shouldn't "Listing not found" display in a modal? We open working listings in modals, so I don't really understand the inconsistency here? Moving to a modal would provide 3 additional ways to exit. Is that difficult to do?

Here's what I'm thinking. We could ditch the extra reload/cancel buttons if it's time consuming.

Shouldn't "Listing not found" display in a modal? We open working listings in modals, so I don't really understand the inconsistency here?

I guess we were being consistent with the other 'Not Found' pages ('user not found', 'page not found'...). Also, I suppose we were taking the lower hanging fruit, since it's debatable whether the experience is that much better the other way.

Is that difficult to do?

It is much more complex than a regular page. There are some hoops to jump through to make modals work with the history state. For example, when the modal is closed, you want to set the url to be to whatever it was before the modal was opened.
And... it's not prefect. For example, this is how the Listing Details modal works:

Load some non-store page, like Connected Peers.
Load store listing A. Listing A opens in modal with the Store behind it.
Hit Back. You land back on number 1.
Hit Forward. You land back on number 2.

That kind of works as expected. Perhaps in step 3, you'd rather land on the Store. But, that would require quite a hack to do. To continue:

With Listing A still open in a modal... you press the X to close it. The url changes to the Store and the modal closes.
Press forward. Nothing happens. Once we update page nav, forward will actually be disabled at this point since you're at the end of the history queue.

The issue is that in step 5, we just closed the modal and updated the url. We didn't actually navigate back in the browser's history state. The main reasons for that is:

If we go back via the router, the whole Store will be reloaded with any previous state lost. That defeats a big purpose of the modal where you want to be able to view listings, but keep your place in the store.

@jjeffryes and I brainstormed if there was a way to go back in history without reloading the page and the only thing we could come up with we decided against because it's quite a hack and could be quite difficult to manage... and that is we turn off our router, navigate back so we go back one state in History and then after closing the modal we turn back on the router. Not even sure if that would work since turning back on the router may cause the page to reload anyway.
Another complexity along these line is what if the listing is the url that's first opened when the app is opened. There is no previous url, so I guess in that case we'd need to make this modal follow suit with the Listing Details modal and open up Listing Not Found with a certain page behind it (Store in this case).
We can't just make a generic Listing Not Found experience that works for Stores, Channels, Search.
Anyhow, some of these pain points might be able to be worked around, but they take time and / or questionable code approaches. Also, when it comes to History state, we are at the whims of the browser API, which is restrictive for security reasons.
My main point is, from a priority perspective, where should we be focusing our efforts. If this is a high priority given the complexities I described above, then so be it.

It is much more complex than a regular page. There are some hoops to jump through to make modals work with the history state. For example, when the modal is closed, you want to set the url to be to whatever it was before the modal was opened.
And... it's not prefect. For example, this is how the Listing Details modal works:
Load some non-store page, like Connected Peers.
Load store listing A. Listing A opens in modal with the Store behind it.
Hit Back. You land back on number 1.
Hit Forward. You land back on number 2.
That kind of works as expected. Perhaps in step 3, you'd rather land on the Store. But, that would require quite a hack to do. To continue:
With Listing A still open in a modal... you press the X to close it. The url changes to the Store and the modal closes.
Press forward. Nothing happens. Once we update page nav, forward will actually be disabled at this point since you're at the end of the history queue.
The issue is that in step 5, we just closed the modal and updated the url. We didn't actually navigate back in the browser's history state. The main reasons for that is:
If we go back via the router, the whole Store will be reloaded with any previous state lost. That defeats a big purpose of the modal where you want to be able to view listings, but keep your place in the store.
@jjeffryes and I brainstormed if there was a way to go back in history without reloading the page and the only thing we could come up with we decided against because it's quite a hack and could be quite difficult to manage... and that is we turn off our router, navigate back so we go back one state in History and then after closing the modal we turn back on the router. Not even sure if that would work since turning back on the router may cause the page to reload anyway.
Another complexity along these line is what if the listing is the url that's first opened when the app is opened. There is no previous url, so I guess in that case we'd need to make this modal follow suit with the Listing Details modal and open up Listing Not Found with a certain page behind it (Store in this case).

Thank you for the detailed response @rmisio. I totally understand that loading listings in modals is complex, but the complexities you pointed out seem mostly associated to modals in general, and not specifically to the change I'm suggesting. There is definitely some extra work here, but it's still not clear to me how much additional work is required.

My main point is, from a priority perspective, where should we be focusing our efforts. If this is a high priority given the complexities I described above, then so be it.

I'll let @hoffmabc take that one. I share the same concerns, but at the same time, I need to be able to log issues without receiving push back. I never stated this issue was high priority, and if the issues I'm finding are overly labor intensive, let's at the minimum put a list of technical requirements on them and circle back to them later.

I don't think Rob was saying we shouldn't make the not found appear in a modal, we was saying we should prioritize it after milestone 1.
Which I think is reasonable. Most of the other recent issues we've been filing have been things to fix before milestone 1, which made it unclear what the priority here was.

if the issues I'm finding are overly labor intensive, let's at the minimum put a list of technical requirements on them and circle back to them later.

That's what I attempted to do :) I'm sorry if it was too long winded and came off as stand-offish.

we was saying we should prioritize it after milestone 1.

Yeah, kind of. I was essentially questioning, what would we rather have first: a v2 app where you could search for listings and buy them albeit with a Listing Not Found page -or- a v2 app with a Listing Not Found modal, but no way to search for or buy a listing?

There is definitely some extra work here, but it's still not clear to me how much additional work is required.

Not sure exactly, my best guess would be 4 hours. The wild-card is that then the Listing Not Found modal cannot be generically used for Search, Channel, etc... It would have to be created for those as well, which is some work (although it would be less than 4 hours since we could re-use some code once we make it for the store).

Thank you

@morebrownies  We have the above implemented now instead of a modal, is there a reason to switch to a modal? The current implementation seems ok to me.

This UI area seems so foreign when you come across it. I'm not sure if it's just the cryptic, techie explanation or not, but it just feels like it breaks the flow of the app for some reason.

This bug is about the Listing (singular) not found experience. Josh posted a screenshot of the Listings (plural) not found experience.
The singular one, I've already given my analysis.
The plural one I think is fine other than the specific text, which like almost all back-end errors is cryptic as heck. To fix it, we either ask the back-end to send a more usable error message or they send a unique error code along with the cryptic message, so the UI could display a more readable message. Based on past conversations, I think the server devs would be open to the latter (and probably not the former).

This bug is about the Listing (singular) not found experience. Josh posted a screenshot of the Listings (plural) not found experience.

+1 we're mixing issues here. The original issue for a listing not found still needs to be fixed imo.

The plural one I think is fine other than the specific text, which like almost all back-end errors is cryptic as heck. To fix it, we either ask the back-end to send a more usable error message or they send a unique error code along with the cryptic message, so the UI could display a more readable message. Based on past conversations, I think the server devs would be open to the latter (and probably not the former).

+1 I have no idea what that error message means. I see it pretty often too which makes things even worse.

My bad, got my issues mixed up.
So the singular listing not found is still an issue.

This was completed.


Error:  Schema must be an instance of GraphQLSchema.

When installing the package locally and running my Apollo server I receive: Error: Schema must be an instance of GraphQLSchema. Also ensure that there are not multiple versions of GraphQL installed in your node_modules directory
Consider changing the graphql dependency to peerDependency.

Please update to 0.5.4.


Make blurring work

This patch fixes #31, changes crop_save_dir to /tmp because /data requires root, fixes division by 0 when no Cuda devices are present.

If you want to save the crops for unblurring in the future,  /tmp isn't a good location.

Oh, yeah, makes sense. But /data still doesn't seem like the best directory. Would it be better to make it configurable somehow?


Add ability to reference existing content

Summary
This is a SUPER SUPER SUPER RISKY CHANGE. DO NOT MERGE.
Now that's out of the way, this plugin allows us to single source documentation across versions.
Replaces #3759 3759
Reason
Backporting changes is painful. Let's single source the content and use {% if version > 2.8.x %} etc in the files instead to incrementally add new content
The nav file required a small format change to contain the product + version, and the existing content is nested under item. This is a backwards compatible change as the versions plugin has been updated to accomodate this format in addition to the old one.
Testing
Check out the deck 1.12.x docs. You can see the source for this docset here.
https://deploy-preview-3765--kongdocs.netlify.app/deck/1.12.x/

This is the first step towards single sourced content. We also need filters that are version-aware to be able to conditionally render content, but I wanted to get the initial workflow up for review before continuing to invest time

Smoke test failed! That's a good catch. Looks like some index page redirect generation is broken. Will investigate

Smoke test failed! That's a good catch. Looks like some index page redirect generation is broken. Will investigate

This is interesting, because the failures don't really make sense (sidebar is there, breadcrumbs look fine). What is happening is that the https://deploy-preview-3765--kongdocs.netlify.app/deck/ URL doesn't work, which should redirect to the index for the index page - so I'm guessing the smoke test tries to visit that URL and fails?

In the previous iteration of this workflow, the way each live page determined which file to pull info from depended on a setting in its YAML front matter. What's the thought on differentiating between a v1/v2 of a page in this approach? Are you thinking that the nav file will be the source of truth for this, maybe with a key like version: v2 that determines which file to look at? (or maybe don't actually use "version", that word is way overloaded already 😅 )

We have two potential ways to handle this.

Using src, set the version in the filename e.g. src: install-and-run/docker-v1 and src: install-and-run/docker-v2
Using a version (or whatever we decidewhich is then added to the path. Soinstall-and-run/docker.mdwould becomeinstall-and-run/docker/.md`

Is there any concern or consideration for using {% include %} statements, or will this continue to work as before without changes? There aren't any includes in the decK docs, otherwise I'd check.

They should work as expected (I had to fix an include in development when trialling Gateway, so I know they still work. Single sourcing includes is an additional step that I think we should take, but not as part of this PR).

We would have to set each github edit link to go to src instead of a version, but that's even cleaner than what it is now. Not a question, just an observation for something we don't want to miss.

Good catch, I'd forgotten about this. Will make the change if we decide to go with this approach

Do you think this approach will work for the plugin hub, or is that a conversation we don't really want to have yet?

The general approach will work, but I'd ignore plugin hub entirely at this point. We'll pick that up in Q2 sometime as a standalone project

Sample PR showing how single sourcing works: https://github.com/Kong/docs.konghq.com/pull/3773

Found an issue: Switching versions doesn't take you to the same page. Need to fix the file_exists check


community[patch]: Invoke callback prior to yielding token fix [HuggingFaceTextGenInference]

…gFaceTextGenInference)

[x] PR title: community[patch]: Invoke callback prior to yielding token fix for [HuggingFaceTextGenInference]

[x] PR message:

Description: Invoke callback prior to yielding token in stream method in [HuggingFaceTextGenInference]
Issue: https://github.com/langchain-ai/langchain/issues/16913
Dependencies: None
Twitter handle: @bolun_zhang

If no one reviews your PR within a few days, please @-mention one of baskaryan, efriis, eyurtsev, hwchase17.

@ccurme Would you mind review this pr as well? Thanks!


Error when trying to aquireTokenSilent

Library

[x]<EMAIL_ADDRESS>
Important: Please fill in your exact version number above, e.g<EMAIL_ADDRESS>Framework
React - Create React App
Description
When the app first loads I attempt to perform a acquireTokenSilent with an accountInfo object stored in localStorage.
The msal storage is using session storage.
Error Message
index.es.js:3892 Uncaught (in promise) TypeError: Cannot read property 'homeAccountId' of null

Security

[ ] Is this issue security related?

Regression

[ ] Did this behavior work before?
Version:

MSAL Configuration
const msalConfig = {
  auth: {
    clientId: 'xxxxx',
    authority: 'xxxxx',
    redirectUri: 'xxxxx',
    postLogoutRedirectUri: 'xxxxx',
    navigateToLoginRequestUrl: false,
  },
  cache: {
    cacheLocation: 'sessionStorage',
    storeAuthStateInCookie: false,
  },
  system: {
    windowHashTimeout: 60000,
    iframeHashTimeout: 6000,
    loadFrameTimeout: 0,
  },
};

// Create an instance of PublicClientApplication
export const msalInstance = new PublicClientApplication(msalConfig);

Reproduction steps
# Where accountInfo is the `AccountInfo` object stored in local storage. authInProgress checks if we are on the login or oauth success screen
  React.useEffect(() => {
    async function authenticate() {
      if (!authInProgress && accountInfo) {
        try {
          msalInstance.acquireTokenSilent({
            account: accountInfo,
            scopes,
          });
          history.push('/home');
        } catch (ex) {
          if (ex instanceof InteractionRequiredAuthError) {
            history.push('/login');
          } else {
            throw ex;
          }
        }
      }
    }

    // Attempt to acquire token atleast once with all scopes
    authenticate();
  }, [authInProgress, accountInfo, history]);

Expected behavior
Browsers/Environment

[x] Chrome
[ ] Firefox
[ ] Edge
[ ] Safari
[ ] IE
[ ] Other (Please add browser name here)

Hi, @cliedeman . Could you please provide some more of the stack trace? It's not immediately clear where the error is originating. Thanks.

Here is the full stack trace
Uncaught (in promise) TypeError: Cannot read property 'homeAccountId' of null
    at t.<anonymous> (index.es.js:3892) #1
    at index.es.js:74
    at Object.next (index.es.js:55)
    at index.es.js:48
    at new Promise (<anonymous>)
    at d (index.es.js:44)
    at t.acquireToken (index.es.js:3878)
    at e.<anonymous> (PublicClientApplication.ts:427) #2
    at 2.6ae5e83f.chunk.js:2
    at Object.next (2.6ae5e83f.chunk.js:2)

1
https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/c9603bdcda2b1958d128f5fe7073447ac49cfc81/lib/msal-common/src/client/SilentFlowClient.ts#L54
2
https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/c9603bdcda2b1958d128f5fe7073447ac49cfc81/lib/msal-browser/src/app/PublicClientApplication.ts#L409

Slightly better stacktrace from dev environment
Uncaught (in promise) TypeError: Cannot read property 'homeAccountId' of null
    at SilentFlowClient.<anonymous> (index.es.js:3892)
    at step (index.es.js:74)
    at Object.next (index.es.js:55)
    at index.es.js:48
    at new Promise (<anonymous>)
    at __awaiter$1 (index.es.js:44)
    at SilentFlowClient.acquireToken (index.es.js:3878)
    at PublicClientApplication.<anonymous> (PublicClientApplication.ts:427)
    at step (0.chunk.js:198)
    at Object.next (0.chunk.js:129)
    at fulfilled (0.chunk.js:81)

When the app first loads I attempt to perform a acquireTokenSilent with an accountInfo object stored in localStorage.
The msal storage is using session storage.

I think that is your answer? If the PublicClientApplication object is configured to use "sessionStorage" it will look in sessionStorage for the full account object. Set the cacheLocation to "localStorage".

Maybe. But either way a hard crash is probably a bug

Added a reproduction here: https://github.com/cliedeman/msal-browser-crash
yarn install
yarn start

@pkanher617 I have already worked around the issue/know how to avoid it. This bug is more about catching a corner case and warning the developer. I would also like to know if this makes sense? I didnt see anywhere in the documentation that you cannot use an account object sourced from somewhere else

@cliedeman Sorry I think I misunderstood what you were trying to do. You are storing the AccountInfo object from the response in localStorage, but msal is using sessionStorage for its own cache.
This should be possible. Are you parsing the string that is retrieved from the localStorage cache as an AccountInfo object before passing to the request?

@pkanher617 thanks for the reply. I just verified the accountInfo object is decoded correctly.
I believe the issue is this line: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/84a5f5aed0ad1626e6d918fb2ef0393837aac3c6/lib/msal-common/src/cache/CacheManager.ts#L162
The return type should be nullable. The current library makes the assumption that the cacheManager.getAccount can never return null

Still an issue

This may be fixed by #2189. We'll update when the next release of msal-common goes out.
If you're able to build msal locally please try that branch and let us know if it does or does not solve the issue and we can take another look.
If this branch does not solve the issue a workaround in the interim would be to first call getAccountByHomeId and pass the homeAccountIdentifier from your AccountInfo object to verify that the account you are trying to use exists in sessionStorage before trying to pass it to acquireTokenSilent

@cliedeman Can you try<EMAIL_ADDRESS>and let us know if this has been resolved?


Non-tokio executor & timeouts

When using an executor that is different from tokio (in my case glib), launching a request from the client results in the following message at runtime:
050, marker: <Phantomcow> }), cache: ThreadCache { is_unread: true, has_attachment: false, tags: [] } }))
 INFO  inox_gtk::components::thread_view                 > load_thread: Thread { thread: Some(Thread { ptr: 0x55a29e2a0050, marker: <Phantomcow> }), cache: ThreadCache { is_unread: true, has_attachment: false, tags: [] } }
thread 'main' panicked at 'there is no timer running, must be called from the context of Tokio runtime', /home/dirk/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.13/src/time/driver/handle.rs:24:9
stack backtrace:

It seems tokio timeouts are not compatible with other runtimes. It'd be cool if there was a runtime-agnostic solution. Peraps https://github.com/async-rs/futures-timer ?

It is possible to use your own runtime, provided that it is within the context of Tokio.

@vorot93 The problem with the Tokio context is twofold:

It is either really difficult or impossible to set up the Tokio context inside your custom executor.
There are no practical examples, documentation, or guides on how to do that.

Speaking as a previous Tokio developer and somebody who has been building the async Rust ecosystem for the past several years, I have no idea how to make a "hello world" example of futures::executor::ThreadPool with the Tokio context set up inside it. It's most likely not possible at all!
So until the Tokio documentation shows the most basic "hello world" of how to do that, it is not possible to use your own runtime with Tokio.

Hey, so I spent a few minutes this morning throwing together an example of using tokio with the futures executor ThreadPool. This can be made generic to any executor as long as you wrap the future as shown in the example.
https://gist.github.com/LucioFranco/ec8c6617b7193fd062d1ddc32b5bb991
Most of the complexity here is making it easy to spawn the future with a global runtime. Otherwise, the main thing here is just wrapping the poll call in a handle.enter(|| ...) like carl showed.
Hopefully, this is helpful! We could probably add this as an example to the tokio repo.

@LucioFranco Thank you, this is the first runnable example that I've encountered! Still, I must admit that the code is quite intimidating for a 'hello world'. If I may make a few suggestions on how to improve the situation:

There should also be an example showing how to set up the context inside block_on() - the entry point into async code.
Exposing TokioIo in tokio-utils or some crate like that would be helpful. Or at the very least, including its implementation in the docs for tokio::runtime::Runtime.
It is not always obvious where to get the runtime Handle from. Should I start my own runtime or do Handle::try_current()? Illustrating that in an example would be nice. Calling try_current() is especially useful when starting ThreadPool from an async fn main().
Rust users struggle with compatibility between tokio::io::{AsyncRead, AsyncWrite} and futures::io::{AsyncRead, AsyncWrite}. There is no mention of tokio_util::compat anywhere in tokio's docs (you just have to hear about it from someone) and there are zero doc-examples showing how to use it.

If you're looking for the most bang-for-buck, you could just make the following the examples:

A #[tokio::main] that starts a ThreadPool inheriting the tokio runtime. Then, inside the ThreadPool, spawn a task that calls tokio::time::delay_for().

A regular fn main() that creates a tokio runtime and runs block_on() that does futures::io::copy(tokio::io::stdin(), tokio::io::stdout()). This is a classic "cat" example.

@stjepang this is some great feedback! I will make sure we incorporate a lot of these ideas into tokio 0.3. Will follow up with a proper issue in tokio. Thanks!

This is something tarpc doesn't handle very gracefully today: tokio is an optional feature, and yet tarpc uses tokio timers regardless of whether the tokio feature is enabled. Is it possible to set up just the timer without being on a full tokio runtime?

@tikue you need something to drive the timer, in tokio we use epoll_timeout/sleep to achieve this. So you need to run the driver anyways. This is the case for every runtime. futures-timer just spawns a background thread and uses a similar implementation.
@stjepang I've opened a bunch of issues in tokio that should cover some of this. Thanks again for the feedback!

@LucioFranco yeah totally, I know there's no getting around that :) but is there a way to set up just the timer's required runtime rather than a full tokio runtime? Sorry if this is a dumb question; I've just kinda ignored the runtime details since #[tokio::main] was introduced :)

@tikue ah yes! If you look at that example I use enable_all you can instead just enable the timer via https://docs.rs/tokio/0.2.22/tokio/runtime/struct.Builder.html#method.enable_time

Nice, thanks!

I've experimented with replacing something like Tokio MPSC into futures and flume, but so far it fails the test by exceeding the deadline. Yet to have the idea why

Is it possible to add an abstraction layer for the runtime? Openraft does it in this way:
pub trait AsyncRuntime: Debug + Default + PartialEq + Eq + OptionalSend + OptionalSync + 'static {
    /// The error type of [`Self::JoinHandle`].
    type JoinError: Debug + Display + OptionalSend;

    /// The return type of [`Self::spawn`].
    type JoinHandle<T: OptionalSend + 'static>: Future<Output = Result<T, Self::JoinError>>
        + OptionalSend
        + OptionalSync
        + Unpin;

    /// The type that enables the user to sleep in an asynchronous runtime.
    type Sleep: Future<Output = ()> + OptionalSend + OptionalSync;

    /// A measurement of a monotonically non-decreasing clock.
    type Instant: Instant;

    /// The timeout error type.
    type TimeoutError: Debug + Display + OptionalSend;

    /// The timeout type used by [`Self::timeout`] and [`Self::timeout_at`] that enables the user
    /// to await the outcome of a [`Future`].
    type Timeout<R, T: Future<Output = R> + OptionalSend>: Future<Output = Result<R, Self::TimeoutError>> + OptionalSend;

    /// Type of a thread-local random number generator.
    type ThreadLocalRng: rand::Rng;

    /// Spawn a new task.
    fn spawn<T>(future: T) -> Self::JoinHandle<T::Output>
    where
        T: Future + OptionalSend + 'static,
        T::Output: OptionalSend + 'static;

    /// Wait until `duration` has elapsed.
    fn sleep(duration: Duration) -> Self::Sleep;

    /// Wait until `deadline` is reached.
    fn sleep_until(deadline: Self::Instant) -> Self::Sleep;

    /// Require a [`Future`] to complete before the specified duration has elapsed.
    fn timeout<R, F: Future<Output = R> + OptionalSend>(duration: Duration, future: F) -> Self::Timeout<R, F>;

    /// Require a [`Future`] to complete before the specified instant in time.
    fn timeout_at<R, F: Future<Output = R> + OptionalSend>(deadline: Self::Instant, future: F) -> Self::Timeout<R, F>;

    /// Check if the [`Self::JoinError`] is `panic`.
    fn is_panic(join_error: &Self::JoinError) -> bool;

    /// Get the random number generator to use for generating random numbers.
    ///
    /// # Note
    ///
    /// This is a per-thread instance, which cannot be shared across threads or
    /// sent to another thread.
    fn thread_rng() -> Self::ThreadLocalRng;

    type Mpsc: Mpsc;

    type MpscUnbounded: MpscUnbounded;

    type Watch: Watch;

    type Oneshot: Oneshot;

    type Mutex<T: OptionalSend + 'static>: Mutex<T>;
}