Fixes in Russian traslation

Added missing levels names
Fixed typos

Also, are you sure, that it's good idea to change untraslated strings with "translate it please" message? Maybe it would be better to change it with an English strings? And optionally make some little mark with modal window or something like that. Now, for example, in Russian version the "Remotes" section consists only of "translate it please" messages.

Also, are you sure, that it's good idea to change untraslated strings with "translate it please" message? Maybe it would be better to change it with an English strings?

Yeah I'm open to feedback on this -- it was a pretty brutal last-minute add just so people realized why they were seeing it. I think for certain languages it makes sense to fallback, but I was worried about people not knowing why all of the sudden english popped up.
I agree its more noise now though than benefit, so let me remove it

Boom! Now we show the english name + the untranslated warning, should be a lot better

i realize that we fall back to english strings for all the normal keys but the level names / hints have custom code for whatever reason. thanks for the feedback though!


change value of leeway only if it is lower than 1

Some servers need more than 1 second.
Change JWT::$leeway only if it has a value lower than 1.

If you do not want the $leeway = 1 behavior, you can instantiate your own Jwt instance and pass it into the client constructor:
new Client_Service(null, null, new Firebase\JWT\JWT());

https://github.com/firebase/php-jwt/blob/master/src/JWT.php
line 30:  public static $leeway = 0;
$leeway is not an instance variable, you change the value globally.

Yes but passing in your own instance bypasses calling the getJwtService function.

this work:
JWT:$leeway = LEEWWAY; //some value
$client = new Google_Client(['jwt' => new Firebase\JWT\JWT()]);

thank you

Yes!! That's it. Thanks for the correction.
On Wed, Sep 13, 2017, 12:29 PM danielhiga<EMAIL_ADDRESS>wrote:

this work:
JWT:$leeway = LEEWWAY; //some value
$client = new Google_Client(['jwt' => new Firebase\JWT\JWT()]);
thank you
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/google/google-api-php-client/pull/1266#issuecomment-329272023,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAGWBa8JBibe4lzkjNqOz5XEUG7RqbrNks5siC0RgaJpZM4OYvTZ
.


Movie routes - Added saveDates route

"feature:movie-routes Added saveDates to movie routes to save datePlanned and dateWatched"

Cannot merge with main, please raise request pull request with dev


Don't take remote_ip from request unless state set

Thanks for the update, merging.  We should probably make the user agent string a configuration variable once the file based config code merges.


V2 ecs ec2 access

Provides access to EC2 instances launched with dalmatian-tools
Extends the aws-sso run command to allow passing in infrastructure name,
environment and region (or the workspace name) rather than the sso profile
name
This is mainly to allow other commands to use this command, that are
only given the infrastructure name etc

Have you run this agiasnt other infrastuctures. I think it only works against the main dalmatian account.

Ah yep ... I missed out quite a bit of logic
I'm now trying to figure out the easiest way to allow specifying only the infrastructure name and environment to resolve the correct profile
This may require enforcing that an infrastructure's name and environment is unique across all accounts - Which we have on dalmatian v1

This may require enforcing that an infrastructure's name and environment is unique across all accounts - Which we have on dalmatian v1

that or make addign the account id part of it. (Also maybe allow workspace to set and work it out from there)

I've put a fix in for this now - And the only things that need to be provided are the infrastructure name and environment name 👍


Comment delete permissions

@parrish I'm looking into https://github.com/zooniverse/Panoptes-Front-End/issues/1252 and am thinking that there may be a permissions mismatch between showing the moderations interface and deleting comments. Should anyone that has a role of admin or moderator be able to take actions from the moderations page?
Right now I have it setup to show that page to admins and mods, and then iterate over the moderatable actions to set that row of buttons

Yep.  Looks like there's a case when the api is incorrectly denying show requests.  It's strange because the policy is allowing the action.  I'll look into it.

Ok cool, Thanks

Okay, this should be fixed with 8d383c90d and 02acc27e.
I'll report back on the other issue after the deploy is out


2 bugs with the new 2.1.6 i noticed , new user here.

Describe the bug

two bugs
a) when i hover over link from different chat , the current Chatterino tab get unselected , wasnt the case in previous Chatterinos.
b) emote preview icon on the bottom right of every chat is broken ??! or idk
To reproduce

for issue a) hover over links , while opening multiple tabs in chattirno , make the current tab unselected and therefore its the issue
for issue b) click on emote preview icon , and see the screenshot below
Screenshots

im not able to capture issue a) since its dynamic cant be screenshotted ,
issue b)
https://imgur.com/GIBlQMn and https://imgur.com/Jdj4PVd
Chatterino version

im using Chatterino 2.1.6 portable version or Chatterino 2.1.6 (commit c5e8c5396)
Operating system

Windows 7
Additional information

if there's no quick fix is there a way to rollback to 2.1.5 portable , thanks in advance

a) is fixed in https://github.com/Chatterino/chatterino2/commit/443aba3f9cfb07ee42d7d78f9e0b0bebc1c71a75
and I can't reproduce b) so I'll close it
In the future please create one issue per bug 👍

thanks for the help !


Opinionated Project Structure

All the other web build tools seem to take a configuration-centric or a code-centric approach. I really like how fuse-box instead takes a more convention over configuration/code approach than the others. Having an opinionated project structure would help further this goal, while still allowing users to override defaults if they want a different structure.
Coming from the Java world with its Maven building tool, I think it would be useful if fuse-box would take a more opinionated view of how projects should be structured like maven does. That is, not maven's specific directory layout but a best practice layout for web projects so that newcomers can get up and running with zero config if they follow the proper layout. As an example, these variables could be set to defaults:
homeDir: 'src/',
output: 'dist/$name$hash.js'
Along with these, maybe a testDir with default folder of 'test/' for the test runner and possibly some default vendor and app bundles based upon an index.ts.

hi @stevensheehy thanks for suggestions. There is a convention for testing. IT does not really matter which folder your tests are in. If you have Foo.test.ts it will be picked up by the test runner. Pattern *.test.ts is a convention.


Will this folder be where we upload examples during the course?

In previous years it's been really great that material and examples have been uploaded as we go. Will these go in this repo? I assume we won't make the gh-pages this year, unless someone knows very well how to do it and wants to do it now? Most important anyway is that we have a place where it goes that people can find :)

Ok! But both repos are public? I thought we go full open science this year with nothing private?

So far its indeed public, fine with me. Until a private wish is expressed, @pzieger ?.

It depends on the data people are planning to use and if the teachers want to publish their slides ;-) Can we have both (public and private space)?

Only if someone wants to do the github pages thing I think!

Or if not, making two repos, but that's a mess.


AutoComplete and Google Manage Scrooling

Hi,
When i tried to scrolling page then google manage complete and autocomplete not scrollable

Tip, check our documentation about this very problem


Ternary-Stream breaking on Node versions less than 6

The latest dependency upgrade in the PR
https://github.com/robrich/ternary-stream/pull/11 is breaking on Node versions <6 (not supporting ES2015 syntax).
I think @robrich has already addressed this here in the PR merge
Originally posted by @robrich in https://github.com/robrich/ternary-stream/pull/11#issuecomment-512540816
See if you can revert it and release it as a major version upgrade please.

Issue details:
gulp-if(~2.0.1) -> ternary-stream -> merge-stream -> index.js:3
(https://github.com/grncdr/merge-stream/blob/master/index.js#L3) is using es2015 syntax.
For builds on versions <6 this throws
SyntaxError: Unexpected token {

Good catch. I need to patch upgrade dependencies back down, and major bump
for these dependencies. I mistakenly assumed officially supported node
versions were all I needed to worry about. Fail on me.

Published 2.1.1 that reverts the dependency version bumps so it'll work on node < 6.  For modern node, published 3.0.0, and I'll update gulp-if in a minute.

Thanks for the quick turnaround.


Enter animation broken on Svelte 5.1+

Describe the bug
The enter animation is broken.. tracked it down to at least 5.1 the problem is introduced.
Downgrading to at least 5.0 fixes it.
Reproduction
https://stackblitz.com/edit/sveltejs-kit-template-default-qep1pf?file=src%2Froutes%2F%2Bpage.svelte
Logs
No response
System Info
all

Severity
breaking usage

Use vaul-svelte@next


scripts: make setup scripts compatible with ash

Hi,
firstly, please target devel branch, there were some improvements recently. Secondly, did you try these scripts at least with bash, dash and ash? I do not know what other common default shells there are.

Hi,
firstly, please target devel branch, there were some improvements recently. Secondly, did you try these scripts at least with bash, dash and ash? I do not know what other common default shells there are.

merge_config and merge_hostkey scripts work well on ash, bash, dash, and zsh. I'm having some issues with setup.sh on dash and zsh, but regardless of my changes that one did not work for me with zsh or dash, so I'll try to fix that up

Okay, since you changed the interpreter in each of the scripts to the default one, I want to merge it only after the scripts works with all the common shells. Thanks for changing it that way. Also, please fix the conflicts you now have with the devel. Like I said, there were some improvements made.

@michalvasko Sure, we should fix it so that it works on all shells.
I resolved all conflicts and pushed again.
eval is not working for me in the script when using dash, while on zsh this line causes problems: https://github.com/CESNET/netopeer2/blob/5aa5e1953022f90c59f8493e60cdcf8cf8d0f04e/scripts/setup.sh#L117 (condition expected: <)

Do you mean that you cannot fix it and I should take a look?

Do you mean that you cannot fix it and I should take a look?

No need, will look into it

Okay.

I got it to work on zsh only. setup.sh uses some features that are not POSIX compliant, so it doens't run properly on dash. I might tackle that when I catch more free time. I left the scripts compatible only with bash for now.
I ran the scripts through ShellCheck and made some general syntax improvements which could be useful, what do you think?

Hi,
okay, thanks. So I guess it could be merged because the compatibility is the same.
Just one possible improvement, I have put all the features to enable with -e in the module list because it then could be used directly when installing the modules. However, it seems that is no longer the case and they server no purpose anymore so those -e should probably be removed and the regexps modified.

Um, I meant just removing the -e parameters, the features themselves must stay to be enabled.

Um, I meant just removing the -e parameters, the features themselves must stay to be enabled.

Right :sweat_smile: I think I got it now


fix(devops): Deploying the signer without env was failing

Motivation
Running npm run deploy wasn't installing the signer canister.
The reason was that when using --network you can't pass an empty string.
Changes

Add local as default value when deploying the signer.

Tests
Tested locally.

@DenysKarmazynDFINITY @bitdivine please review


shellcheck: fix warnings

use quotes around variables
use $(...) instead of `...`
handle cd failure by exiting

This enables users to enter strings with spaces without getting "too many arguments" warnings.
Warnings found using koalaman/shellcheck

Thank you @mercutiodesign ! I wasn't aware of shellcheck - glad to know about it now


Fix #84: Add options to customize format and fail condition

Associated Issue
#84
Changes Made

Implemented 2 new configuration options

formatter allows the output results to be customized
failOnError allows for the option to avoid exiting the pipeline when a failure occurs

Update README with details
Reorganized and added additional tests to ensure proper functionality.

Reviewers
@obuckley-kenzan
@bsawyer
@maksimlikharev

Can one of the admins verify this patch?

@thescientist13
Is there a way to tag a group of reviewers? So instead of you having to ask for a review, I could simply @reviewerGroup or something?

@paul-barry-kenzan
Not that I am aware of.

@paul-barry-kenzan @thescientist13 looks good to me! Just a question, are the default eslint rules we're merging with the default set by eslint i.e. if eslint decides to change their defaults will our defaults become out of sync? I'm not sure if we're concerned with setting rules that would otherwise not be included or set to a particular value.

@bsawyer
The defaults provided with this library are Keystone defaults, decisions we've made internally on how we prefer our JS to be written. I'm sure some of the settings are ESLint defaults, but I don't believe the intention was to leave them as so.
So, to your question, if ESLint were to make changes to default settings, we should be good. If they decided to add additional options/rules, we'd have to update accordingly.

ok to test

@thescientist13
Before merging, can we get @maksimlikharev to take a look since he was the OP?

looks ok, I can do real test after the merge after integrating new features

@paul-barry-kenzan
merge conflicts

@thescientist13
Rebased and pushed.


Searchable Migration Issue | ES Domain Endpoint Can Not Be Deleted

Before opening, please confirm:

[X] I have installed the latest version of the Amplify CLI (see above), and confirmed that the issue still persists.
[X] I have searched for duplicate or closed issues.
[X] I have read the guide for submitting bug reports.
[X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.

How did you install the Amplify CLI?
npm install -g @aws-amplify/cli
If applicable, what version of Node.js are you using?
14.18.1
Amplify CLI Version
7.6.5
What operating system are you using?
Ubuntu 20
Amplify Categories
api
Amplify Commands
push
Describe the bug
For some reason after migrating the schema and custom resolvers, pushing the code results in the following error.
UPDATE_FAILED               SearchableStack                            AWS::CloudFormation::Stack Tue Dec 28 2021 16:44:50 GMT-0800 (Pacific Standard Time) Embedded stack arn:aws:cloudformation:us-west-2:707129987630:stack/amplify-fox-dev-160955-apifox-Y0QXBP993EX1-SearchableStack-TV78E7975PIC/ec47cd50-263a-11ec-bcd6-0a9127743e0d was not successfully updated. Currently in UPDATE_ROLLBACK_IN_PROGRESS with reason: Export utlpffegzvhyfokzquwsa4rg3e:GetAtt:Elasticsearch:DomainEndpoint cannot be deleted as it is in use by amplify-fox-dev-160955-apifox-Y0QXBP993EX1-CustomResourcesjson-1DOW8AX6DZG4
UPDATE_ROLLBACK_IN_PROGRESS amplify-fox-dev-160955-apifox-Y0QXBP993EX1 AWS::CloudFormation::Stack Tue Dec 28 2021 16:44:52 GMT-0800 (Pacific Standard Time) The following resource(s) failed to update: [SearchableStack].
⠦ Updating resources in the cloud. This may take a few minutes...

UPDATE_FAILED apifox AWS::CloudFormation::Stack Tue Dec 28 2021 16:45:12 GMT-0800 (Pacific Standard Time) Embedded stack arn:aws:cloudformation:us-west-2:707129987630:stack/amplify-fox-dev-160955-apifox-Y0QXBP993EX1/bbfb9af0-263a-11ec-9178-0682b490ec17 was not successfully updated. Currently in UPDATE_ROLLBACK_IN_PROGRESS with reason: The following resource(s) failed to update: [SearchableStack].
⠴ Updating resources in the cloud. This may take a few minutes...

The Es Domain Endpoint can't be removed because it's in use.
Expected behavior
I don' think it should be deleting the endpoint, as far as I can tell everything migrated correctly when I updated from ES to OS.
Reproduction steps

Before I did anything, I switched from ES 6.8 to OS 1.0 manually.
I migrated the current schema using amplify migrate api.
I created custom cdks for each of my custom resolvers, moved the appropriate templates to each folder and updated the code using the example config in the migration guide.
I ran amplify push and it all failed.

GraphQL schema(s)

enum ModelStatus {
  DRAFT
  REVIEW
  PUBLISHED
}

type Services {
  value: String
  label: String
}

type Amenities {
  value: String!
  label: String!
}

type Payments {
  value: String!
  label: String!
}

type Covid {
  value: String!
  label: String!
}

type RestaurantOwner {
  name: String!
  ownerid: String!
  group: String
}

type Sponsors {
  value: String
  label: String
  sponsorName: String
  sponsorIcon: String
}

type OriginalHours {
  open: String
  close: String
}

type Hours {
  open: String
  close: String
  label: String
  open24: Boolean
  closed: Boolean
  original: OriginalHours
  key: String
}

type Days {
  sunday: [Hours]
  monday: [Hours]
  tuesday: [Hours]
  wednesday: [Hours]
  thursday: [Hours]
  friday: [Hours]
  saturday: [Hours]
}

type Location {
  lat: Float
  lon: Float
}

type UserDetails {
  key: String!
  value: String!
}

type BlogCategory {
  value: String
  label: String
}

type Device {
  deviceType: String
  deviceLocation: String
  isCurrentSession: Boolean
}

type Restaurant
  @model
  @searchable
  @aws_api_key
  @aws_iam
  @aws_cognito_user_pools
  @auth(
    rules: [
      { allow: owner }
      { allow: public, provider: apiKey }
      { allow: owner, ownerField: "owners", operations: [update, read, create] }
      { allow: public, provider: iam, operations: [read] }
      {
        allow: private
        provider: userPools
        operations: [read, update, create]
      }
      {
        allow: groups
        groups: ["admin"]
        operations: [read, create, update, delete]
      }
      { allow: groups, groups: ["user"], operations: [read, create, update] }
    ]
  ) {
  id: ID!
  owners: [String]
  owner: String
  _status: ModelStatus
  _lastUserToEdit: String
  _lastEdit: String
  _createdAt: String
  name: String
  about: String
  address: String
  route: String
  locality: String
  zip: String!
  phone: String
  website: String
  email: String
  ows: [RestaurantOwner]
  amenities: [Amenities]
  payments: [Payments]
  covid: [Covid]
  details: String
  images: [Images] @hasMany(indexName: "byImages", fields: ["id"])
  location: Location
  placeId: String
  hours: Days
  rating: Float
  services: [Services]
  websiteMenu: String
  sponsors: [Sponsors]
  reviews: [Review] @hasMany(indexName: "byReview", fields: ["id"])
  menu: [Menu] @hasMany(indexName: "byMenu", fields: ["id"])
}

type Images
  @model
  @aws_api_key
  @aws_iam
  @aws_cognito_user_pools
  @auth(
    rules: [
      { allow: owner }
      { allow: public, provider: apiKey }
      { allow: public, provider: iam, operations: [read] }
      {
        allow: private
        provider: userPools
        operations: [read, update, create]
      }
      {
        allow: groups
        groups: ["admin"]
        operations: [read, create, update, delete]
      }
      { allow: groups, groups: ["user"], operations: [read, create, update] }
    ]
  ) {
  id: ID!
  restaurantid: ID!
    @index(
      name: "listImagesByIndex"
      queryField: "listImagesByIndex"
      sortKeyFields: ["index"]
    )
    @index(name: "byImages")
  _status: ModelStatus
  _lastUserToEdit: String
  _lastEdit: String
  _uploadDate: String
  _createdAt: String
  index: Int
  owner: String
  ownerID: String
  src: String
  restaurant: Restaurant @belongsTo(fields: ["restaurantid"])
}

type Menu
  @model
  @aws_api_key
  @aws_iam
  @aws_cognito_user_pools
  @auth(
    rules: [
      { allow: owner }
      { allow: public, provider: apiKey }
      { allow: public, provider: iam, operations: [read] }
      {
        allow: private
        provider: userPools
        operations: [read, update, create]
      }
      {
        allow: groups
        groups: ["admin"]
        operations: [read, create, update, delete]
      }
      { allow: groups, groups: ["user"], operations: [read, create, update] }
    ]
  ) {
  id: ID!
  _status: ModelStatus
  _lastUserToEdit: String
  _lastEdit: String
  _createdAt: String
  index: Int
  restaurantid: ID!
    @index(
      name: "listMenuByIndex"
      queryField: "listMenuByIndex"
      sortKeyFields: ["index"]
    )
    @index(name: "byMenu")
  title: String!
  description: String!
  price: String!
  picture: String!
  owner: String!
  restaurant: Restaurant @belongsTo(fields: ["restaurantid"])
}

type Review
  @model
  @aws_api_key
  @aws_iam
  @aws_cognito_user_pools
  @auth(
    rules: [
      { allow: owner }
      { allow: public, provider: apiKey }
      { allow: public, provider: iam, operations: [read] }
      {
        allow: private
        provider: userPools
        operations: [read, update, create]
      }
      {
        allow: groups
        groups: ["admin"]
        operations: [read, create, update, delete]
      }
      { allow: groups, groups: ["user"], operations: [read, create, update] }
    ]
  ) {
  id: ID!
  _status: ModelStatus
  _lastUserToEdit: String
  _lastEdit: String
  _createdAt: String
  restaurantid: ID! @index(name: "byReview")
  title: String
  description: String
  pictures: [String]
  rating: Float
  userName: String
  userPicture: String
  userEmail: String
  up_votes: Int
  down_votes: Int
  owner: String
  restaurant: Restaurant @belongsTo(fields: ["restaurantid"])
  comments: [ReviewComment]
    @hasMany(indexName: "byReviewComment", fields: ["id"])
}

type ReviewComment
  @model
  @aws_api_key
  @aws_iam
  @aws_cognito_user_pools
  @auth(
    rules: [
      { allow: owner }
      { allow: public, provider: apiKey }
      { allow: public, provider: iam, operations: [read] }
      {
        allow: private
        provider: userPools
        operations: [read, update, create]
      }
      {
        allow: groups
        groups: ["admin"]
        operations: [read, create, update, delete]
      }
      { allow: groups, groups: ["user"], operations: [read, create, update] }
    ]
  ) {
  id: ID!
  _status: ModelStatus
  _lastUserToEdit: String
  _lastEdit: String
  _createdAt: String
  restaurantid: ID! @index(name: "byReviewComment")
  comment: String
  userName: String
  userPicture: String
  userEmail: String
  up_votes: Int
  down_votes: Int
  owner: String
  restaurantReview: Review @belongsTo(fields: ["restaurantid"])
}

type User
  @model
  @searchable
  @aws_api_key
  @aws_iam
  @aws_cognito_user_pools
  @auth(
    rules: [
      { allow: owner }
      { allow: public, provider: apiKey }
      { allow: public, provider: iam, operations: [read] }
      {
        allow: private
        provider: userPools
        operations: [read, update, create]
      }
      {
        allow: groups
        groups: ["admin"]
        operations: [read, create, update, delete]
      }
      { allow: groups, groups: ["user"], operations: [read, create, update] }
    ]
  ) {
  id: ID!
  _status: ModelStatus
  _lastUserToEdit: String
  _lastEdit: String
  _createdAt: String
  sub: String!
  name: String
  picture: String
  email: String
  birthdate: String
  phone: String
  bio: String
  personalDataUse: Boolean
  searchEngineSharing: Boolean
  deviceHistory: [Device]
  timezone: String
  preferredLanguage: String
  preferredCurrency: String
}

type Query {
  exploreRestaurants(
    query: String
    term: String
    total: Int
    nextToken: String
  ): RestaurantConnection @aws_api_key @aws_iam @aws_cognito_user_pools
  nearbyRestaurants(
    location: QueryLocation
    mi: Int
    query: String
    fields: [String]
    total: Int
    nextToken: String
  ): RestaurantConnection @aws_api_key @aws_iam @aws_cognito_user_pools
  boundingBoxRestaurants(
    top_left: QueryLocation
    bottom_right: QueryLocation
    query: String
    fields: [String]
    total: Int
    nextToken: String
  ): RestaurantConnection @aws_api_key @aws_iam @aws_cognito_user_pools
}

input QueryLocation {
  lat: Float
  lon: Float
}

type RestaurantConnection @aws_api_key @aws_iam @aws_cognito_user_pools {
  items: [Restaurant]
  total: Int
  nextToken: String
}

Log output

ResourceNotReady: Resource is not in the state stackUpdateComplete
2021-12-29T00:48:05.973Z|error : amplify-provider-awscloudformation.push-resources.run([{"resourcesToBeCreated":[{"service":"customCDK","providerPlugin":"[***]rmation","dependsOn":[{"category":"api","resourceName":"[***]ox","attributes":["GraphQLAPIKeyOutput","GraphQLAPIIdOutput","GraphQLAPIEndpointOutput"]}],"providerMetadata":{"s3TemplateURL":"https://s3.amazonaws.com/amplify-[***]ox-dev-160955-deployment/amplify-cfn-templates/custom/[***]staurants-cloudformation-template.json","logicalId":"[***]xRestaurants"},"lastPushTimeStamp":"2021-12-29T00:27:11.875Z","resourceName":"[***]staurants","category":"custom"},{"service":"customCDK","providerPlugin":"[***]rmation","dependsOn":[{"category":"api","resourceName":"[***]ox","attributes":["GraphQLAPIKeyOutput","GraphQLAPIIdOutput","GraphQLAPIEndpointOutput"]}],"providerMetadata":{"s3TemplateURL":"https://s3.amazonaws.com/amplify-[***]ox-dev-160955-deployment/amplify-cfn-templates/custom/[***]taurants-cloudformation-template.json","logicalId":"[***]estaurants"},"lastPushTimeStamp":"2021-12-29T00:27:12.086Z","resourceName":"[***]taurants","category":"custom"},{"service":"customCDK","providerPlugin":"[***]rmation","dependsOn":[{"category":"api","resourceName":"[***]ox","attributes":["GraphQLAPIKeyOutput","GraphQLAPIIdOutput","GraphQLAPIEndpointOutput"]}],"providerMetadata":{"s3TemplateURL":"https://s3.amazonaws.com/[***]ify-[***]ox-[***]ev-[***]955-[***]ment/amplify-cfn-templates/custom/[***]aurants-cloudformation-template.json","logicalId":"[***]estaurants"},"lastPushTimeStamp":"2021-12-29T00:27:11.895Z","resourceName":"[***]aurants","category":"custom"}],"resourcesToBeUpdated":[{"service":"AppSync","providerPlugin":"[***]rmation","output":{"authConfig":{"defaultAuthentication":{"authenticationType":"AMAZON_COGNITO_USER_POOLS","userPoolConfig":{"userPoolId":"[***]206fcc"}},"additionalAuthenticationProviders":[{"authenticationType":"API_KEY","apiKeyConfig":{"apiKeyExpirationDays":365,"apiKeyExpirationDate":"[***]22-[***]2-[***]35.516Z","description":"Fox - Query API Key"}},{"authenticationType":"AWS_IAM"}]},"GraphQLAPIIdOutput":"[***]zquwsa4rg3e","GraphQLAPIEndpointOutput":"https://pff4fgdnybfo5fcznfiobmb6wu.appsync-api.us-west-2.amazonaws.com/graphql","GraphQLAPIKeyOutput":"[***]a2-[***]uy2pgmx2vsu"},"lastPushTimeStamp":"2021-12-29T00:39:29.851Z","providerMetadata":{"s3TemplateURL":"https://s3.amazonaws.com/[***]ify-[***]ox-[***]ev-[***]955-[***]ment/amplify-cfn-templates/api/cloudformation-template.json","logicalId":"[***][***]ox"},"lastPushDirHash":"vyFUEJ5OPw7czrqhvLrb9Mgj4K0=","resourceName":"[***]ox","category":"api"}],"resourcesToBeSynced":[],"resourcesToBeDeleted":[],"rootStackUpdated":true,"tagsUpdated":false,"allResources":[{"build":true,"providerPlugin":"[***]rmation","service":"Lambda","output":{"Region":"us-west-2","Arn":"[***]mbda:us-[***]st-[***]06fccPostConfirmation-[***]ev","Name":"[***]onfirmation-[***]ev","LambdaExecutionRole":"[***]onfirmation-dev"},"lastPushTimeStamp":"2021-12-29T00:39:29.838Z","providerMetadata":{"s3TemplateURL":"https://s3.amazonaws.com/amplify-[***]ox-dev-160955-deployment/amplify-cfn-templates/function/[***]06fccPostConfirmation-cloudformation-template.json","logicalId":"[***]stConfirmation"},"s3Bucket":{"deploymentBucketName":"amplify-fox-dev-160955-deployment","s3Key":"[***]ify-[***]lds/[***]onfirmation-[***]784b6877-[***].zip"},"resourceName":"[***]onfirmation","category":"function"},{"service":"Lambda","providerPlugin":"[***]rmation","build":true,"dependsOn":[{"category":"auth","resourceName":"[***]06fcc","attributes":["UserPoolId"]}],"output":{"Region":"us-west-2","Arn":"[***]mbda:us-[***]st-[***]minQueriesf39e8799-[***]ev","Name":"[***]f39e8799-[***]ev","LambdaExecutionRole":"[***]f39e8799LambdaRole-dev"},"lastPushTimeStamp":"2021-12-29T00:39:29.844Z","providerMetadata":{"s3TemplateURL":"https://s3.amazonaws.com/amplify-fox-dev-160955-deployment/amplify-cfn-templates/function/[***]f39e8799-cloudformation-template.json","logicalId":"[***]riesf39e8799"},"lastBuildTimeStamp":"2021-12-28T23:52:45.640Z","lastBuildType":"PROD","lastPackageTimeStamp":"2021-12-28T23:52:49.976Z","distZipFilename":"[***]f39e8799-[***]71716730-[***].zip","s3Bucket":{"deploymentBucketName":"amplify-fox-dev-160955-deployment","s3Key":"[***]ify-[***]lds/[***]f39e8799-[***]71716730-[***].zip"},"lastPushDirHash":"gUYlG1bUIFc0QoW1aAlw4wdeFFU=","resourceName":"[***]eriesf39e8799","category":"function"},{"service":"[***]ito","providerPlugin":"[***]rmation","dependsOn":[{"category":"function","resourceName":"[***]06fccPostConfirmation","triggerProvider":"Cognito","attributes":["Arn","Name"]}],"customAuth":false,"frontendAuthConfig":{"loginMechanisms":["EMAIL","PHONE_NUMBER"],"signupAttributes":["EMAIL"],"passwordProtectionSettings":{"passwordPolicyMinLength":8,"passwordPolicyCharacters":[]},"mfaConfiguration":"OPTIONAL","mfaTypes":["SMS","TOTP"],"verificationMechanisms":["EMAIL"],"socialProviders":["GOOGLE"],"usernameAttributes":["EMAIL","PHONE_NUMBER"]},"output":{"GoogleWebClient":"810063008308-l7da8h521oqsa7jv37ealf9mva4m6blj.apps.googleusercontent.com","CreatedSNSRole":"arn:aws:iam::707129987630:role/sns27206fcc160955-dev","UserPoolId":"[***]s-[***]st-[***]7cMAf","AppClientIDWeb":"[***]j20ci5g575","AppClientID":"[***]23i8hvmi54r","HostedUIDomain":"[***]98edb-[***]8edb-[***]ev","IdentityPoolId":"[***]s-[***]st-[***]866a-[***]1d-[***]48-[***]1c-[***]ed5b5","UserPoolArn":"[***]ognito-[***]:us-[***]st-[***]0:userpool/[***]s-[***]st-[***]7cMAf","IdentityPoolName":"[***]ol_27206fcc__dev","OAuthMetadata":"{\"AllowedOAuthFlows\":[\"code\"],\"AllowedOAuthScopes\":[\"phone\",\"email\",\"openid\",\"profile\",\"aws.cognito.signin.user.admin\"],\"CallbackURLs\":[\"https://tacotuesday.com/\"],\"LogoutURLs\":[\"https://tacotuesday.com/\"]}","UserPoolName":"[***]ool_27206fcc"},"lastPushTimeStamp":"2021-12-29T00:39:29.847Z","providerMetadata":{"s3TemplateURL":"https://s3.amazonaws.com/amplify-fox-dev-160955-deployment/amplify-cfn-templates/auth/[***]06fcc-cloudformation-template.json","logicalId":"[***]206fcc"},"resourceName":"[***]06fcc","category":"auth"},{"service":"Cognito-UserPool-Groups","providerPlugin":"[***]rmation","dependsOn":[{"category":"auth","resourceName":"[***]06fcc","attributes":["UserPoolId","AppClientIDWeb","AppClientID","IdentityPoolId"]}],"output":{"userGroupRole":"arn:aws:iam::707129987630:role/us-west-2_AMIW7cMAf-userGroupRole","adminGroupRole":"arn:aws:iam::707129987630:role/us-west-2_AMIW7cMAf-adminGroupRole"},"lastPushTimeStamp":"2021-12-29T00:39:30.118Z","providerMetadata":{"s3TemplateURL":"https://s3.amazonaws.com/amplify-fox-dev-160955-deployment/amplify-cfn-templates/auth/[***]Groups-cloudformation-template.json","logicalId":"[***]olGroups"},"[***]Groups":{"service":"Cognito-UserPool-Groups","providerPlugin":"[***]rmation","dependsOn":[{"category":"auth","resourceName":"fox27206fcc","attributes":["UserPoolId","AppClientIDWeb","AppClientID","IdentityPoolId"]}]},"resourceName":"[***]Groups","category":"auth"},{"service":"AppSync","providerPlugin":"[***]rmation","output":{"authConfig":{"defaultAuthentication":{"authenticationType":"AMAZON_COGNITO_USER_POOLS","userPoolConfig":{"userPoolId":"[***]206fcc"}},"additionalAuthenticationProviders":[{"authenticationType":"API_KEY","apiKeyConfig":{"apiKeyExpirationDays":365,"apiKeyExpirationDate":"[***]22-[***]2-[***]35.516Z","description":"Fox - Query API Key"}},{"authenticationType":"AWS_IAM"}]},"GraphQLAPIIdOutput":"[***]zquwsa4rg3e","GraphQLAPIEndpointOutput":"https://pff4fgdnybfo5fcznfiobmb6wu.appsync-api.us-west-2.amazonaws.com/graphql","GraphQLAPIKeyOutput":"[***]a2-[***]uy2pgmx2vsu"},"lastPushTimeStamp":"2021-12-29T00:39:29.851Z","providerMetadata":{"s3TemplateURL":"https://s3.amazonaws.com/amplify-fox-dev-160955-deployment/amplify-cfn-templates/api/cloudformation-template.json","logicalId":"[***]fox"},"lastPushDirHash":"vyFUEJ5OPw7czrqhvLrb9Mgj4K0=","resourceName":"fox","category":"api"},{"service":"API Gateway","providerPlugin":"[***]rmation","authorizationType":"AMAZON_COGNITO_USER_POOLS","dependsOn":[{"category":"auth","resourceName":"fox27206fcc","attributes":["UserPoolId"]},{"category":"function","resourceName":"[***]eriesf39e8799","attributes":["Arn","Name"]}],"output":{"ApiName":"AdminQueries","RootUrl":"https://[***]x842.execute-api.us-west-2.amazonaws.com/dev","ApiId":"yvo9xux842"},"lastPushTimeStamp":"2021-12-29T00:39:29.854Z","providerMetadata":{"s3TemplateURL":"https://s3.amazonaws.com/amplify-fox-dev-160955-deployment/amplify-cfn-templates/api/AdminQueries-cloudformation-template.json","logicalId":"[***]ueries"},"resourceName":"AdminQueries","category":"api"},{"service":"S3","providerPlugin":"[***]rmation","dependsOn":[{"category":"auth","resourceName":"fox27206fcc","attributes":["UserPoolId"]},{"category":"auth","resourceName":"userPoolGroups","attributes":["adminGroupRole"]},{"category":"auth","resourceName":"userPoolGroups","attributes":["userGroupRole"]}],"output":{"BucketName":"[***]106e5a879f8160955-[***]ev","Region":"us-west-2"},"lastPushTimeStamp":"2021-12-29T00:39:29.859Z","providerMetadata":{"s3TemplateURL":"https://s3.amazonaws.com/amplify-fox-dev-160955-deployment/amplify-cfn-templates/storage/s3-cloudformation-template.json","logicalId":"[***]Storage"},"resourceName":"[***]rage","category":"storage"},{"service":"customCDK","providerPlugin":"[***]rmation","dependsOn":[{"category":"api","resourceName":"fox","attributes":["GraphQLAPIKeyOutput","GraphQLAPIIdOutput","GraphQLAPIEndpointOutput"]}],"providerMetadata":{"s3TemplateURL":"https://s3.amazonaws.com/amplify-fox-dev-160955-deployment/amplify-cfn-templates/custom/BoundingBoxRestaurants-cloudformation-template.json","logicalId":"[***]xRestaurants"},"lastPushTimeStamp":"2021-12-29T00:27:11.875Z","resourceName":"BoundingBoxRestaurants","category":"custom"},{"service":"customCDK","providerPlugin":"[***]rmation","dependsOn":[{"category":"api","resourceName":"fox","attributes":["GraphQLAPIKeyOutput","GraphQLAPIIdOutput","GraphQLAPIEndpointOutput"]}],"providerMetadata":{"s3TemplateURL":"https://s3.amazonaws.com/amplify-fox-dev-160955-deployment/amplify-cfn-templates/custom/ExploreRestaurants-cloudformation-template.json","logicalId":"[***]estaurants"},"lastPushTimeStamp":"2021-12-29T00:27:12.086Z","resourceName":"ExploreRestaurants","category":"custom"},{"service":"customCDK","providerPlugin":"[***]rmation","dependsOn":[{"category":"api","resourceName":"fox","attributes":["GraphQLAPIKeyOutput","GraphQLAPIIdOutput","GraphQLAPIEndpointOutput"]}],"providerMetadata":{"s3TemplateURL":"https://s3.amazonaws.com/amplify-fox-dev-160955-deployment/amplify-cfn-templates/custom/NearbyRestaurants-cloudformation-template.json","logicalId":"[***]estaurants"},"lastPushTimeStamp":"2021-12-29T00:27:11.895Z","resourceName":"NearbyRestaurants","category":"custom"}]}])
ResourceNotReady: Resource is not in the state stackUpdateComplete
2021-12-29T00:48:05.974Z|info : amplify-provider-awscloudformation.aws-cfn.getStackEvents.cfnModel.describeStackEvents([{"StackName":"[***]ify-[***]ox-[***]ev-[***]955"}])
2021-12-29T01:47:59.517Z|info : amplify version core

Additional information
No response

Hi @Rafcin
I think there is some problem with this stack amplify-fox-dev-160955-apifox-Y0QXBP993EX1-CustomResourcesjson-1DOW8AX6DZG4 . From the error it seems you have custom CFN present in the amplify folder importing value utlpffegzvhyfokzquwsa4rg3e:GetAtt:Elasticsearch:DomainEndpoint which is getting deleted.  So stack is importing a value which isn't exported.
For more info you can check this: https://aws.amazon.com/premiumsupport/knowledge-center/cloudformation-stack-export-name-error/
Can you share the amplify folder at<EMAIL_ADDRESS>by redacting any secret info ?
I can help root cause the error.

I'll send it over
On Wed, Dec 29, 2021, 10:59 AM akshbhu @.***> wrote:

Hi @Rafcin https://github.com/Rafcin
I think there is some problem with this stack
amplify-fox-dev-160955-apifox-Y0QXBP993EX1-CustomResourcesjson-1DOW8AX6DZG4
. From the error it seems you have custom CFN present in the amplify folder
importing value
utlpffegzvhyfokzquwsa4rg3e:GetAtt:Elasticsearch:DomainEndpoint which is
getting deleted. So stack is importing a value which isn't exported.
For more info you can check this:
https://aws.amazon.com/premiumsupport/knowledge-center/cloudformation-stack-export-name-error/
Can you share the amplify folder at @.*** by redacting
any secret info ?
I can help root cause the error.
—
Reply to this email directly, view it on GitHub
https://github.com/aws-amplify/amplify-cli/issues/9391#issuecomment-1002735632,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACQCG62JKPUZFMRUB45FJXLUTNLBHANCNFSM5K5DIP7A
.
You are receiving this because you were mentioned.Message ID:
@.***>

@akshbhu I sent it over to amplify-cli. My CustomResources.json only has auth and unauth policies setup for the resolvers + a policy for lambda to use ES. It looks like this:
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "An auto-generated nested stack.",
  "Metadata": {},
  "Parameters": {
    "AppSyncApiId": {
      "Type": "String",
      "Description": "The id of the AppSync API associated with this project."
    },
    "AppSyncApiName": {
      "Type": "String",
      "Description": "The name of the AppSync API",
      "Default": "AppSyncSimpleTransform"
    },
    "env": {
      "Type": "String",
      "Description": "The environment name. e.g. Dev, Test, or Production",
      "Default": "NONE"
    },
    "S3DeploymentBucket": {
      "Type": "String",
      "Description": "The S3 bucket containing all deployment assets for the project."
    },
    "S3DeploymentRootKey": {
      "Type": "String",
      "Description": "An S3 key relative to the S3DeploymentBucket that points to the root\nof the deployment directory."
    },
    "unauthRoleName": {
      "Type": "String"
    },
    "authRoleName": {
      "Type": "String"
    }
  },
  "Resources": {
    "EmptyResource": {
      "Type": "Custom::EmptyResource",
      "Condition": "AlwaysFalse"
    },
    "nearbyRestaurants": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "AppSyncApiId"
        },
        "DataSourceName": "ElasticSearchDomain",
        "TypeName": "Query",
        "FieldName": "nearbyRestaurants",
        "RequestMappingTemplateS3Location": {
          "Fn::Sub": [
            "s3://${S3DeploymentBucket}/${S3DeploymentRootKey}/resolvers/Query.nearbyRestaurants.req.vtl",
            {
              "S3DeploymentBucket": {
                "Ref": "S3DeploymentBucket"
              },
              "S3DeploymentRootKey": {
                "Ref": "S3DeploymentRootKey"
              }
            }
          ]
        },
        "ResponseMappingTemplateS3Location": {
          "Fn::Sub": [
            "s3://${S3DeploymentBucket}/${S3DeploymentRootKey}/resolvers/Query.nearbyRestaurants.res.vtl",
            {
              "S3DeploymentBucket": {
                "Ref": "S3DeploymentBucket"
              },
              "S3DeploymentRootKey": {
                "Ref": "S3DeploymentRootKey"
              }
            }
          ]
        }
      }
    },
    "boundingBoxRestaurants": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "AppSyncApiId"
        },
        "DataSourceName": "ElasticSearchDomain",
        "TypeName": "Query",
        "FieldName": "boundingBoxRestaurants",
        "RequestMappingTemplateS3Location": {
          "Fn::Sub": [
            "s3://${S3DeploymentBucket}/${S3DeploymentRootKey}/resolvers/Query.boundingBoxRestaurants.req.vtl",
            {
              "S3DeploymentBucket": {
                "Ref": "S3DeploymentBucket"
              },
              "S3DeploymentRootKey": {
                "Ref": "S3DeploymentRootKey"
              }
            }
          ]
        },
        "ResponseMappingTemplateS3Location": {
          "Fn::Sub": [
            "s3://${S3DeploymentBucket}/${S3DeploymentRootKey}/resolvers/Query.boundingBoxRestaurants.res.vtl",
            {
              "S3DeploymentBucket": {
                "Ref": "S3DeploymentBucket"
              },
              "S3DeploymentRootKey": {
                "Ref": "S3DeploymentRootKey"
              }
            }
          ]
        }
      }
    },
    "exploreRestaurants": {
      "Type": "AWS::AppSync::Resolver",
      "Properties": {
        "ApiId": {
          "Ref": "AppSyncApiId"
        },
        "DataSourceName": "ElasticSearchDomain",
        "TypeName": "Query",
        "FieldName": "exploreRestaurants",
        "RequestMappingTemplateS3Location": {
          "Fn::Sub": [
            "s3://${S3DeploymentBucket}/${S3DeploymentRootKey}/resolvers/Query.exploreRestaurants.req.vtl",
            {
              "S3DeploymentBucket": {
                "Ref": "S3DeploymentBucket"
              },
              "S3DeploymentRootKey": {
                "Ref": "S3DeploymentRootKey"
              }
            }
          ]
        },
        "ResponseMappingTemplateS3Location": {
          "Fn::Sub": [
            "s3://${S3DeploymentBucket}/${S3DeploymentRootKey}/resolvers/Query.exploreRestaurants.res.vtl",
            {
              "S3DeploymentBucket": {
                "Ref": "S3DeploymentBucket"
              },
              "S3DeploymentRootKey": {
                "Ref": "S3DeploymentRootKey"
              }
            }
          ]
        }
      }
    },
    "UnauthRolePolicy": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyName": {
          "Fn::Sub": [
            "amplify-${AppSyncApiName}-${env}-UnauthCustomPolicy",
            {
              "AppSyncApiName": {
                "Ref": "AppSyncApiName"
              },
              "env": {
                "Ref": "env"
              }
            }
          ]
        },
        "Roles": [
          {
            "Ref": "unauthRoleName"
          }
        ],
        "PolicyDocument": {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Action": ["appsync:GraphQL"],
              "Resource": [
                {
                  "Fn::Sub": [
                    "arn:aws:appsync:${AWS::Region}:${AWS::AccountId}:apis/${apiId}/types/${typeName}/fields/${fieldName}",
                    {
                      "apiId": {
                        "Ref": "AppSyncApiId"
                      },
                      "typeName": "Query",
                      "fieldName": "exploreRestaurants"
                    }
                  ]
                },
                {
                  "Fn::Sub": [
                    "arn:aws:appsync:${AWS::Region}:${AWS::AccountId}:apis/${apiId}/types/${typeName}/fields/${fieldName}",
                    {
                      "apiId": {
                        "Ref": "AppSyncApiId"
                      },
                      "typeName": "Query",
                      "fieldName": "nearbyRestaurants"
                    }
                  ]
                },
                {
                  "Fn::Sub": [
                    "arn:aws:appsync:${AWS::Region}:${AWS::AccountId}:apis/${apiId}/types/${typeName}/fields/${fieldName}",
                    {
                      "apiId": {
                        "Ref": "AppSyncApiId"
                      },
                      "typeName": "Query",
                      "fieldName": "boundingBoxRestaurants"
                    }
                  ]
                }
              ]
            }
          ]
        }
      }
    },
    "AuthRolePolicy": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyName": {
          "Fn::Sub": [
            "amplify-${AppSyncApiName}-${env}-AuthCustomPolicy",
            {
              "AppSyncApiName": {
                "Ref": "AppSyncApiName"
              },
              "env": {
                "Ref": "env"
              }
            }
          ]
        },
        "Roles": [
          {
            "Ref": "authRoleName"
          }
        ],
        "PolicyDocument": {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Action": ["appsync:GraphQL"],
              "Resource": [
                {
                  "Fn::Sub": [
                    "arn:aws:appsync:${AWS::Region}:${AWS::AccountId}:apis/${apiId}/types/${typeName}/fields/${fieldName}",
                    {
                      "apiId": {
                        "Ref": "AppSyncApiId"
                      },
                      "typeName": "Query",
                      "fieldName": "exploreRestaurants"
                    }
                  ]
                },
                {
                  "Fn::Sub": [
                    "arn:aws:appsync:${AWS::Region}:${AWS::AccountId}:apis/${apiId}/types/${typeName}/fields/${fieldName}",
                    {
                      "apiId": {
                        "Ref": "AppSyncApiId"
                      },
                      "typeName": "Query",
                      "fieldName": "nearbyRestaurants"
                    }
                  ]
                },
                {
                  "Fn::Sub": [
                    "arn:aws:appsync:${AWS::Region}:${AWS::AccountId}:apis/${apiId}/types/${typeName}/fields/${fieldName}",
                    {
                      "apiId": {
                        "Ref": "AppSyncApiId"
                      },
                      "typeName": "Query",
                      "fieldName": "boundingBoxRestaurants"
                    }
                  ]
                }
              ]
            }
          ]
        }
      }
    },
    "LambdaRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Principal": {
                "Service": ["lambda.amazonaws.com"]
              },
              "Action": ["sts:AssumeRole"]
            }
          ]
        },
        "Path": "/",
        "Policies": [
          {
            "PolicyName": "lambda-logs",
            "PolicyDocument": {
              "Version": "2012-10-17",
              "Statement": [
                {
                  "Effect": "Allow",
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                  ],
                  "Resource": ["arn:aws:logs:*:*:*"]
                }
              ]
            }
          },
          {
            "PolicyName": "ES",
            "PolicyDocument": {
              "Version": "2012-10-17",
              "Statement": [
                {
                  "Effect": "Allow",
                  "Action": ["es:*"],
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        {
                          "Fn::ImportValue": {
                            "Fn::Join": [
                              ":",
                              [
                                {
                                  "Ref": "AppSyncApiId"
                                },
                                "GetAtt",
                                "Elasticsearch",
                                "DomainArn"
                              ]
                            ]
                          }
                        },
                        "/*"
                      ]
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    }
  },
  "Conditions": {
    "HasEnvironmentParameter": {
      "Fn::Not": [
        {
          "Fn::Equals": [
            {
              "Ref": "env"
            },
            "NONE"
          ]
        }
      ]
    },
    "AlwaysFalse": {
      "Fn::Equals": ["true", "false"]
    }
  },
  "Outputs": {
    "EmptyOutput": {
      "Description": "An empty output. You may delete this if you have at least one resource above.",
      "Value": ""
    }
  }
}

Removing the lambda role that uses ES causes no change when I attempt to push the changes.

If I remove the auth and unath roles & the lambda, it will throw the domain endpoint error and in addition it will fail to build some normal resolvers.
UPDATE_FAILED SearchableStack AWS::CloudFormation::Stack Wed Dec 29 2021 12:19:30 GMT-0800 (Pacific Standard Time) Embedded stack arn:aws:cloudformation:us-west-2:707129987630:stack/amplify-fox-dev-160955-apifox-Y0QXBP993EX1-SearchableStack-TV78E7975PIC/ec47cd50-263a-11ec-bcd6-0a9127743e0d was not successfully updated. Currently in UPDATE_ROLLBACK_IN_PROGRESS with reason: Export utlpffegzvhyfokzquwsa4rg3e:GetAtt:Elasticsearch:DomainEndpoint cannot be deleted as it is in use by amplify-fox-dev-160955-apifox-Y0QXBP993EX1-CustomResourcesjson-1DOW8AX6DZG4
⠴ Updating resources in the cloud. This may take a few minutes...

 This may take a few minutes...

CREATE_FAILED Reviewcommentsauth0FunctionReviewcommentsauth0FunctionAppSyncFunctionD73197E1         AWS::AppSync::FunctionConfiguration Wed Dec 29 2021 12:19:45 GMT-0800 (Pacific Standard Time) Resource creation cancelled
CREATE_FAILED RestaurantImagesDataResolverFnRestaurantImagesDataResolverFnAppSyncFunctionD4A45981   AWS::AppSync::FunctionConfiguration Wed Dec 29 2021 12:19:45 GMT-0800 (Pacific Standard Time) Resource creation cancelled
CREATE_FAILED RestaurantReviewsDataResolverFnRestaurantReviewsDataResolverFnAppSyncFunction1FD7D927 AWS::AppSync::FunctionConfiguration Wed Dec 29 2021 12:19:45 GMT-0800 (Pacific Standard Time) Resource creation cancelled
⠴ Updating resources in the cloud. This may take a few minutes...

UPDATE_FAILED ConnectionStack AWS::CloudFormation::Stack Wed Dec 29 2021 12:19:52 GMT-0800 (Pacific Standard Time) Resource update cancelled
⠙ Updating resources in the cloud. This may take a few minutes...

UPDATE_FAILED apifox AWS::CloudFormation::Stack Wed Dec 29 2021 12:19:55 GMT-0800 (Pacific Standard Time) Embedded stack arn:aws:cloudformation:us-west-2:707129987630:stack/amplify-fox-dev-160955-apifox-Y0QXBP993EX1/bbfb9af0-263a-11ec-9178-0682b490ec17 was not successfully updated. Currently in UPDATE_ROLLBACK_IN_PROGRESS with reason: The following resource(s) failed to update: [SearchableStack, ConnectionStack].
⠦ Updating resources in the cloud. This may take a few minutes...

Following resources failed

Resource Name: arn:aws:appsync:us-west-2:707129987630:apis/utlpffegzvhyfokzquwsa4rg3e/functions/y26dqpw5cvforkze2wkk5wlv54 (AWS::AppSync::FunctionConfiguration)
Event Type: create
Reason: Resource creation cancelled

Resource Name: arn:aws:appsync:us-west-2:707129987630:apis/utlpffegzvhyfokzquwsa4rg3e/functions/lwueg5ijuvgrlljp2l5knxvdzq (AWS::AppSync::FunctionConfiguration)
Event Type: create
Reason: Resource creation cancelled

Resource Name: arn:aws:appsync:us-west-2:707129987630:apis/utlpffegzvhyfokzquwsa4rg3e/functions/rewagadgyvfbfd3wlsn4clyicu (AWS::AppSync::FunctionConfiguration)
Event Type: create
Reason: Resource creation cancelled

Resource Name: arn:aws:appsync:us-west-2:707129987630:apis/utlpffegzvhyfokzquwsa4rg3e/functions/cwn6airzrjaz5eu3qwhyh7hq6i (AWS::AppSync::FunctionConfiguration)
Event Type: create
Reason: Resource creation cancelled

Resource Name: Restaurantreviewsauth0FunctionRestaurantreviewsauth0FunctionAppSyncFunctionC2FFB943 (AWS::AppSync::FunctionConfiguration)
Event Type: create
Reason: Resource creation cancelled

Resource Name: ReviewRestaurantDataResolverFnReviewRestaurantDataResolverFnAppSyncFunction2409A5EE (AWS::AppSync::FunctionConfiguration)
Event Type: create
Reason: Resource creation cancelled

Resource Name: Menurestaurantauth0FunctionMenurestaurantauth0FunctionAppSyncFunction96E4D6E9 (AWS::AppSync::FunctionConfiguration)
Event Type: create
Reason: Resource creation cancelled

Resource Name: Imagesrestaurantauth0FunctionImagesrestaurantauth0FunctionAppSyncFunction50995E41 (AWS::AppSync::FunctionConfiguration)
Event Type: create
Reason: Resource creation cancelled

Resource Name: Reviewrestaurantauth0FunctionReviewrestaurantauth0FunctionAppSyncFunction9E6EC719 (AWS::AppSync::FunctionConfiguration)
Event Type: create
Reason: Resource creation cancelled

Resource Name: RestaurantMenuDataResolverFnRestaurantMenuDataResolverFnAppSyncFunction018327D5 (AWS::AppSync::FunctionConfiguration)
Event Type: create
Reason: Resource creation cancelled

Resource Name: MenuRestaurantDataResolverFnMenuRestaurantDataResolverFnAppSyncFunction83869CD8 (AWS::AppSync::FunctionConfiguration)
Event Type: create
Reason: Resource creation cancelled

Resource Name: ReviewCommentrestaurantReviewauth0FunctionReviewCommentrestaurantReviewauth0FunctionAppSyncFunction7C0E154F (AWS::AppSync::FunctionConfiguration)
Event Type: create
Reason: Resource creation cancelled

Resource Name: Restaurantmenuauth0FunctionRestaurantmenuauth0FunctionAppSyncFunction3AF40366 (AWS::AppSync::FunctionConfiguration)
Event Type: create
Reason: Resource creation cancelled

Resource Name: arn:aws:appsync:us-west-2:707129987630:apis/utlpffegzvhyfokzquwsa4rg3e/functions/kbbo5xo67za3zasrvlgdoap56u (AWS::AppSync::FunctionConfiguration)
Event Type: create
Reason: Resource creation cancelled

Resource Name: arn:aws:appsync:us-west-2:707129987630:apis/utlpffegzvhyfokzquwsa4rg3e/functions/qnkl4ajzbrbojka5jxagp7xbay (AWS::AppSync::FunctionConfiguration)
Event Type: create
Reason: Resource creation cancelled

Resource Name: arn:aws:appsync:us-west-2:707129987630:apis/utlpffegzvhyfokzquwsa4rg3e/functions/5dngk2jaa5dyrknz6ubjsip2ai (AWS::AppSync::FunctionConfiguration)
Event Type: create
Reason: Resource creation cancelled

✖ An error occurred when pushing the resources to the cloud
🛑 An error occurred during the push operation: Resource is not in the state stackUpdateComplete

Hi @Rafcin
I have a following question:

Can you  try amplify api gql-compile , Is it generating a Seachable Stack  with export value for ES Domain?
I think you have added this lambda roles manually , Can you try removing the below lambda Role and try push again?

Above Solution wont work for lambda roles for this condition :
{
            "PolicyName": "ES",
            "PolicyDocument": {
              "Version": "2012-10-17",
              "Statement": [
                {
                  "Effect": "Allow",
                  "Action": ["es:*"],
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        {
                          "Fn::ImportValue": {
                            "Fn::Join": [
                              ":",
                              [
                                {
                                  "Ref": "AppSyncApiId"
                                },
                                "GetAtt",
                                "Elasticsearch",
                                "DomainArn"
                              ]
                            ]
                          }
                        },
                        "/*"
                      ]
                    ]
                  }
                }
              ]
            }
          }

Here import value is trying to get attributes on Elasticsearch Resource which is not present in custom resources CFN.
You need to remove this condition

@akshbhu This could be, I don't remember if I manually set the permissions. I'm on my way home, I'll try it the moment I get back and let you know!

@akshbhu A few days ago I removed the lambda role and I was able to push fine and then pushg again with a migrated schema (minus the custom resolvers), and now I've added the resolvers using CDK, and the only errors it throws are creation errors for the 3 resolvers:
Resource Name: ExploreRestaurants (AWS::AppSync::Resolver)
Event Type: create
Reason: GraphQL API apifoxGraphQLAPIIdOutput not found. (Service: AWSAppSync; Status Code: 404; Error Code: NotFoundException; Request ID: bfb3383b-59a1-4b7a-927b-5fc11dce4094; Proxy: null)

@Rafcin
This error means the apifoxGraphQLAPIIdOutput is not found or passed wrong to the template.
I check you cdk file and saw this:
    const resolver = new appsync.CfnResolver(this, 'ExploreRestaurants', {
      apiId: retVal.api.fox.GraphQLAPIIdOutput,
      fieldName: 'exploreRestaurants',
      typeName: 'Query', // Query | Mutation | Subscription
...
    });

    const resolver = new appsync.CfnResolver(this, 'ExploreRestaurants', {
// Here you have access parameter via Ref since its an cdk parameter passed from root stack. Previously the ApiId is the variable Name which is wrong , it should be variable value as below
      apiId: cdk.fn.ref(retVal.api.fox.GraphQLAPIIdOutput),
      fieldName: 'exploreRestaurants',
      typeName: 'Query', // Query | Mutation | Subscription
...
    })

Let me know if this works for you?

Closing as a duplicate of : https://github.com/aws-amplify/amplify-cli/issues/9291.
You can follow updates on above thread.

@akshbhu It worked! The only other modification that has to be done is dataSourceName: 'OpenSearchDataSource' because it renamed the datasource.


add supervisor reset API

Adds a reset route to the supervisor API and Kafka supervisor implementation for removing entries from the dataSource metadata table.
Tested manually (confirmed rows removed from MySQL) + unit tests.
Getting it into 0.9.2 would be a nice to have if people have time but not essential.
Fixes #3195

👍

👍  LGTM


template output-dir repeated usage duplicate values

Operating system
Ubuntu 20.24
Helmfile Version
161.0
Helm Version
3.14.1
Bug description
helmfile template
--include-crds
--skip-tests
-f ""helmfile.yaml"
--output-dir "${OUTPUT_DIR}"/
--output-dir-template="{{ .OutputDir }}/releases/{{ .Release.Name }}"
Running the command the first time you get all of the correct outputs to OUTPUT_DIR.  If you run it a second time while the files already exist the vast majority of them are identical, but a few resource types get duplicated where the values get appended.  Each subsequent time you run helmfile template it adds to the existing file instead of replacing it with the output of helmfile template.
This seems to be happening for any resource that contains a helm.sh/hook, but not resources without a helm.sh/hook reference.
Example helmfile.yaml
N/A
Error message you've seen (if any)
N/A
Steps to reproduce
template out files with a helm hook multiple times to the same folder
Working Helmfile Version
N/A
Relevant discussion
No response

Root issue looks to be a helm issue feel free to close this https://github.com/helm/helm/issues/12988

@sstarcher Thanks for your issue.


The NODE_ENV environment variable is required but was not specified

I tried latest release of app-rewired and CRA and when starting I get
The NODE_ENV environment variable is required but was not specified. I used Mobx rewire. Anyone else having trouble?

ok, I found out that I need to specify .env file and add NODE_ENV=development or whatever I like.

but this should be somehow handled within app-rewired, right? because normal CRA works without it.

Just merged a PR from @haydnhkim which should fix this issue if not we'll re-open.


Vue warning in any smart query after migration to vue-apollo 3

I get a console error: [Vue warn]: Error in callback for watcher "function () { [native code] }": "TypeError: this.observer.currentResult is not a function"   for each smart query I use in my application.
To Reproduce
Steps to reproduce the behavior:

Migrate to vue-apollo 3 following the steps suggested here
Add a smart query to your components
Open the console
See error described above.

Expected behavior
A clear and concise description of what you expected to happen.
Versions
vue: 2.6.14
vue-apollo: 3.0.0-alpha.3
@apollo/client: 3.4.10

OK, it solved after installing the latest version instead of the alpha (npm install vue-apollo@latest) 😅


test-targets does not support filter option supported by AndroidJUnitRunner

I'm evaluating flank as a replacement for our current stack.
We'd like to write (and apply) complex rules that will allow us to define what should be tested (ie. dynamic forms e2e and corresponding functional tests) in a way that does not constraint us. So far, I believe the only way to achieve that is by using org.junit.runner.manipulation.Filter.
Would it be difficult to add that support in https://github.com/TestArmada/flank/blob/0a7b34f5e4f116de8dc388d114a6c21036d3b3ca/test_runner/src/main/kotlin/ftl/filter/TestFilters.kt?
Is it something non-trivial that's hard to do, or it was just skipped because it wasn't worth implementing yet? If this is just a matter of crafting (relatively easy) implementation, I'm happy to help.

I think it'd be easy to add. You'll want to include JUnit tests to verify the feature works. I have been transitioning to a new role so I haven't had as much time for Flank development. I am actively reviewing pull requests and responding to issues.
If you join the https://firebase.community/ there's a #flank channel where the developers answer questions.

Thank you, I setup project locally and briefly looked into it. My conclusion is that it's not trivial though, is it? I need to find referenced class, but I'm in the context of runner, so source code will not be available. I would need to find that class in tested apk, extract it and run somehow. Am I missing something here?

I think there are a few options:

Implement the test selection logic in a custom test runner that Flank passes data through
Pre-process the list of tests, then pass on that list to Flank. It should be easy to spin up a local emulator and run whatever test filtering code you need to output the final list of tests.
If everything can be determined statically via bytecode analysis then extending the TestFilters.kt in flank would work. It sounds like what you want is runtime analysis.

What I've seen companies do is either approach 1) or 2), meaning they use custom code to generate the list of tests (which can execute on device) and then pass on the final list of tests to Flank. For 2) that's a matter of having a test runner that understands how you want to filter the tests, then passing on the environment variables through similar to AJUR sharding.
I think that should answer your question.

AST parsing may be another way. Dropbox recently open sourced their test filtering solution:
https://github.com/dropbox/hypershard-android
Your arbitrary code would execute, then generate a flank.yml that flank runs on Firebase Test Lab.

If you have additional questions, let me know. The current sharding approach requires knowing a list of tests in advance. Flank currently uses binary parsing. I think the AST approach would meet your use case as you could generate a flank.yml file using arbitrary criteria.


Rescue for Marlin

It might be worthwhile for us to consider Rescue, in addition to Poseidon.
The main reason is as follows:

In Marlin and a number of universal-setup primitives, the dominating measure is constraint system weight, not number of constraints.
Poseidon uses a lot of partial rounds to save computation of s-box, while the remaining operations are mostly linear combinations. However, in Marlin, linear combinations are also not cheap.
Rescue does not have partial rounds. And the number of full rounds are in a reasonable region.

When trying to find optimized parameters for Poseidon, the optimal point is alpha = 257 in one of the experiments. It is slightly too large.
Based on the analysis in Rescue paper, it might suggest that Rescue is a better choice than Poseidon for Marlin. More numerical analyses might be needed.
Apart from efficiency issues, it might be good to have both the implementations of Poseidon and Rescue, since they have similarities and differences, based on two different design strategies, and thus might be a good foundation for future hash functions.

Updated regarding the optimal alpha for Poseidon---it seems that if one uses a circular MDS matrix (as suggested by Markus Schofnegger) would make alpha = 5 often the better choices for constraint system weight.

There is a rescue implementation in jellyfish: https://github.com/EspressoSystems/jellyfish/tree/main/rescue
We can use alpha = 5 for BN254 and BLS12-381; alpha = 11 for BLS12-377

Talking about which, @zhenfeizhang can you discuss with your team regarding full-state PRF?

Is the idea to upstream the code to ark-crypto-primitives/PRF? I.e., as an alternative to Blake2s?
I think we can do it for the clear implementation for sure, but not sure anyone of us has the cycle to write the R1CS.

The idea is that I may port the parameter generation. But I will avoid full-state PRF for some reasons.


Crash while panning around

A user got a crash while panning around an image. I don't have the image to reproduce it, but hopefully the crash logs will be enough :
Thread: main, Exception: java.lang.IllegalStateException: Size is unspecified
at androidx.compose.ui.geometry.Size.getWidth-impl(Size.kt:48)
at me.saket.telephoto.zoomable.internal.DimensKt.roundToIntSize-uvyYCjk(dimens.kt:13)
at me.saket.telephoto.zoomable.internal.ContentPlacementKt$calculateTopLeftToOverlapWith$alignedOffset$2.invoke-nOcc-ac(contentPlacement.kt:33)
at me.saket.telephoto.zoomable.internal.ContentPlacementKt$calculateTopLeftToOverlapWith$alignedOffset$2.invoke(contentPlacement.kt:28)
at kotlin.UnsafeLazyImpl.getValue(Lazy.kt:81)
at me.saket.telephoto.zoomable.internal.ContentPlacementKt.calculateTopLeftToOverlapWith_x_KDEd0$lambda$1(contentPlacement.kt:28)
at me.saket.telephoto.zoomable.internal.ContentPlacementKt.calculateTopLeftToOverlapWith-x_KDEd0(contentPlacement.kt:45)
at me.saket.telephoto.zoomable.ZoomableState$coerceWithinBounds$1.invoke-MK-Hz9U(ZoomableState.kt:331)
at me.saket.telephoto.zoomable.ZoomableState$coerceWithinBounds$1.invoke(ZoomableState.kt:329)
at me.saket.telephoto.zoomable.internal.DimensKt.withZoomAndTranslate-aysBKyA(dimens.kt:54)
at me.saket.telephoto.zoomable.ZoomableState.coerceWithinBounds-8S9VItk(ZoomableState.kt:329)
at me.saket.telephoto.zoomable.ZoomableState.access$coerceWithinBounds-8S9VItk(ZoomableState.kt:88)
at me.saket.telephoto.zoomable.ZoomableState$transformableState$1.invoke-0DeBYlg(ZoomableState.kt:260)
at me.saket.telephoto.zoomable.ZoomableState$transformableState$1.invoke(ZoomableState.kt:197)
at me.saket.telephoto.zoomable.internal.DefaultTransformableState$transformScope$1.transformBy-0DeBYlg(transformableState.kt:111)
at me.saket.telephoto.zoomable.internal.TransformScope$-CC.transformBy-0DeBYlg$default(transformableState.kt:66)
at me.saket.telephoto.zoomable.ZoomableState$fling$2$1.invoke(ZoomableState.kt:470)
at me.saket.telephoto.zoomable.ZoomableState$fling$2$1.invoke(ZoomableState.kt:469)
at androidx.compose.animation.core.SuspendAnimationKt.doAnimationFrame(SuspendAnimation.kt:361)
at androidx.compose.animation.core.SuspendAnimationKt.doAnimationFrameWithScale(SuspendAnimation.kt:339)
at androidx.compose.animation.core.SuspendAnimationKt.access$doAnimationFrameWithScale(SuspendAnimation.kt:1)
at androidx.compose.animation.core.SuspendAnimationKt$animate$6.invoke(SuspendAnimation.kt:251)
at androidx.compose.animation.core.SuspendAnimationKt$animate$6.invoke(SuspendAnimation.kt:239)
at androidx.compose.animation.core.SuspendAnimationKt$callWithFrameNanos$2.invoke(SuspendAnimation.kt:304)
at androidx.compose.animation.core.SuspendAnimationKt$callWithFrameNanos$2.invoke(SuspendAnimation.kt:303)
at androidx.compose.runtime.BroadcastFrameClock$FrameAwaiter.resume(BroadcastFrameClock.kt:42)
at androidx.compose.runtime.BroadcastFrameClock.sendFrame(BroadcastFrameClock.kt:71)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:517)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:510)
at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:34)
at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1035)
at android.view.Choreographer.doCallbacks(Choreographer.java:845)
at android.view.Choreographer.doFrame(Choreographer.java:775)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1022)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7870)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.ui.platform.MotionDurationScaleImpl@b094cc0, androidx.compose.runtime.BroadcastFrameClock@4d85df9, StandaloneCoroutine{Cancelling}@458113e, AndroidUiDispatcher@2b46b9f]

Yea I've seen this happen a few times, but this particular crash has proven to be especially elusive. I recently made a change that will cause the crash to happen earlier in the call chain. Posting it here if someone is able to spot something obvious: https://github.com/saket/telephoto/blob/612c5a4ec26071e9f79628ecd330f02f0878159d/zoomable/src/commonMain/kotlin/me/saket/telephoto/zoomable/ZoomableState.kt#L332-L334
Can you also confirm telephoto's version in this crash report?

We are using telephoto 0.5.0, and I confirm that we observe some crash reports with the check:
For instance:
Unspecified size, but how? Unscaled content = Rect.fromLTRB(0.0, 0.0, 756.0, 1008.0), proposed zoom = ContentZoom(baseZoom=ScaleFactor(1.4, 1.4), userZoom=1.3603797)

or
Unspecified size, but how? Unscaled content = Rect.fromLTRB(0.0, 0.0, 960.0, 1280.0), proposed zoom = ContentZoom(baseZoom=ScaleFactor(1.1, 1.1), userZoom=1.4155316)

I spent a few hours but this crash has become even more difficult to reproduce. I believe I have a better understanding of what might be causing it, but I'm still shooting in the dark.
To help myself, I've added some more debug information to the exception. @ganfra @bmarty possible for you to try out 0.6.0-SNAPSHOT in your apps and share any following crash reports here?

Is the 0.6.0-SNAPSHOT version published somewhere? I tried bumping our local version to test this myself, but gradle couldn't find it and it's not in sonatype's snapshot repository.

it's not in sonatype's snapshot repository.

Hmmm that doesn't sound right. Can you try again? You can find the snapshot artifacts here:
https://oss.sonatype.org/content/repositories/snapshots/me/saket/telephoto/zoomable-image-coil/0.6.0-SNAPSHOT/
allprojects {
  repositories {
    google()
    mavenCentral()
    maven { url = "https://oss.sonatype.org/content/repositories/snapshots/" }
  }
}

I did run into this crash but haven't been able to reproduce it since.
I was just doing a lot of zoom and double tap gestures in random order, and right before it crashed I tried to do a double tap
Hope this helps at all

java.lang.IllegalStateException: Can't coerce an infinite offset
    proposedZoom = ContentZoom(baseZoom=ScaleFactor(1.0, 1.0), userZoom=1.1901567)
    rawTransformation = RawTransformation(offset=Offset(113.4, 199.6), zoom=ContentZoom(baseZoom=ScaleFactor(1.0, 1.0), userZoom=1.1901567), lastCentroid=Offset(327.0, 897.5), contentSize=Size(720.0, 1249.0))
    contentTransformation = ZoomableContentTransformation(isSpecified=true, contentSize=Size(720.0, 1249.0), scale=ScaleFactor(1.2, 1.2), rotationZ=0.0, offset=Offset(-134.9, -237.5), transformOrigin=TransformOrigin(packedValue=0))
    contentScale = androidx.compose.ui.layout.ContentScale$Companion$Fit$1@418e67e
    contentAlignment = BiasAlignment(horizontalBias=0.0, verticalBias=0.0)
    isReadyToInteract = true
    unscaledContentLocation = me.saket.telephoto.zoomable.ZoomableContentLocation$SameAsLayoutBounds@848b7df
    unscaledContentBounds = Rect.fromLTRB(0.0, 0.0, 720.0, 1249.0)
    contentLayoutSize = Size(720.0, 1249.0)
    zoomSpec = ZoomSpec(maxZoomFactor=3.0, preventOverOrUnderZoom=true)
    Device = SM-A127F
    Android version = 33
    Display resolution = Point(720, 1600)
    Current window bounds = Rect(0, 0 - 720, 1600), insets = Insets{left=0, top=45, right=0, bottom=28}

Thanks @igorilin13! Can you also share the full stacktrace? coerceWithinBounds() is called from 3 places so I need to make sure I'm pulling the right thread.

at me.saket.telephoto.zoomable.ZoomableState.coerceWithinBounds-8S9VItk(ZoomableState.kt:339)
at me.saket.telephoto.zoomable.ZoomableState.access$coerceWithinBounds-8S9VItk(ZoomableState.kt:91)
at me.saket.telephoto.zoomable.ZoomableState$transformableState$1.invoke-0DeBYlg(ZoomableState.kt:269)
at me.saket.telephoto.zoomable.ZoomableState$transformableState$1.invoke(ZoomableState.kt:200)
at me.saket.telephoto.zoomable.internal.DefaultTransformableState$transformScope$1.transformBy-0DeBYlg(transformableState.kt:109)
at me.saket.telephoto.zoomable.internal.TransformScope$DefaultImpls.transformBy-0DeBYlg$default(transformableState.kt:64)
at me.saket.telephoto.zoomable.ZoomableState$fling$2$1.invoke(ZoomableState.kt:500)
at me.saket.telephoto.zoomable.ZoomableState$fling$2$1.invoke(ZoomableState.kt:499)
at androidx.compose.animation.core.SuspendAnimationKt.doAnimationFrame(SuspendAnimation.kt:361)
at androidx.compose.animation.core.SuspendAnimationKt.doAnimationFrameWithScale(SuspendAnimation.kt:339)
at androidx.compose.animation.core.SuspendAnimationKt.access$doAnimationFrameWithScale(SuspendAnimation.kt:1)
at androidx.compose.animation.core.SuspendAnimationKt$animate$6.invoke(SuspendAnimation.kt:251)
at androidx.compose.animation.core.SuspendAnimationKt$animate$6.invoke(SuspendAnimation.kt:239)
at androidx.compose.animation.core.SuspendAnimationKt$callWithFrameNanos$2.invoke(SuspendAnimation.kt:304)
at androidx.compose.animation.core.SuspendAnimationKt$callWithFrameNanos$2.invoke(SuspendAnimation.kt:303)
at androidx.compose.runtime.BroadcastFrameClock$FrameAwaiter.resume(BroadcastFrameClock.kt:42)
at androidx.compose.runtime.BroadcastFrameClock.sendFrame(BroadcastFrameClock.kt:71)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:517)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:510)
at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:34)
at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1299)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1309)
at android.view.Choreographer.doCallbacks(Choreographer.java:923)

Huh these logs suggest that I've been investigating in the wrong direction all this time. The infinite offset isn't being calculated by any division by zero errors, but rather an infinite velocity tracked by the gesture receiver. I've added a few more logs to confirm this. Please keep sending the stacktraces, and thanks again!

We have another recent stacktrace here:
Exception java.lang.IllegalStateException:
  at me.saket.telephoto.zoomable.ZoomableState$coerceWithinBounds$1.invoke-MK-Hz9U (ZoomableState.kt:332)
  at me.saket.telephoto.zoomable.ZoomableState$coerceWithinBounds$1.invoke (ZoomableState.kt:330)
  at me.saket.telephoto.zoomable.internal.DimensKt.withZoomAndTranslate-aysBKyA (Dimens.kt:54)
  at me.saket.telephoto.zoomable.ZoomableState.coerceWithinBounds-8S9VItk (ZoomableState.kt:330)
  at me.saket.telephoto.zoomable.ZoomableState.access$coerceWithinBounds-8S9VItk (ZoomableState.kt:89)
  at me.saket.telephoto.zoomable.ZoomableState$transformableState$1.invoke-0DeBYlg (ZoomableState.kt:261)
  at me.saket.telephoto.zoomable.ZoomableState$transformableState$1.invoke (ZoomableState.kt:198)
  at me.saket.telephoto.zoomable.internal.DefaultTransformableState$transformScope$1.transformBy-0DeBYlg (DefaultTransformableState.java:111)
  at me.saket.telephoto.zoomable.internal.TransformScope.transformBy-0DeBYlg$default (TransformScope.java:66)
  at me.saket.telephoto.zoomable.ZoomableState$fling$2$1.invoke (ZoomableState.java:473)
  at me.saket.telephoto.zoomable.ZoomableState$fling$2$1.invoke (ZoomableState.java:472)
  at androidx.compose.animation.core.SuspendAnimationKt.doAnimationFrame (SuspendAnimation.kt:361)
  at androidx.compose.animation.core.SuspendAnimationKt.doAnimationFrameWithScale (SuspendAnimation.kt:339)
  at androidx.compose.animation.core.SuspendAnimationKt.access$doAnimationFrameWithScale (SuspendAnimation.kt:1)
  at androidx.compose.animation.core.SuspendAnimationKt$animate$6.invoke (SuspendAnimation.kt:251)
  at androidx.compose.animation.core.SuspendAnimationKt$animate$6.invoke (SuspendAnimation.kt:239)
  at androidx.compose.animation.core.SuspendAnimationKt$callWithFrameNanos$2.invoke (SuspendAnimation.kt:304)
  at androidx.compose.animation.core.SuspendAnimationKt$callWithFrameNanos$2.invoke (SuspendAnimation.kt:303)
  at androidx.compose.runtime.BroadcastFrameClock$FrameAwaiter.resume (BroadcastFrameClock.java:42)
  at androidx.compose.runtime.BroadcastFrameClock.sendFrame (BroadcastFrameClock.kt:71)
  at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke (Recomposer.kt:555)
  at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke (Recomposer.kt:548)
  at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame (AndroidUiFrameClock.android.kt:41)
  at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch (AndroidUiDispatcher.java:109)
  at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch (AndroidUiDispatcher.java:41)
  at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame (AndroidUiDispatcher.android.kt:69)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1229)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1239)
  at android.view.Choreographer.doCallbacks (Choreographer.java:899)
  at android.view.Choreographer.doFrame (Choreographer.java:827)
  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1214)
  at android.os.Handler.handleCallback (Handler.java:942)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:201)
  at android.os.Looper.loop (Looper.java:288)
  at android.app.ActivityThread.main (ActivityThread.java:7918)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936)

Does that stacktrace not contain any message? The line numbers seem to point to https://github.com/saket/telephoto/commit/bb4929b7dfa461ce11af899726a146f10725907e, which is an old snapshot build before any debug information was added to the exceptions.

No worries, I should have bumped up the snapshot version to avoid this confusion.
FWIW I was able to reproduce a situation where quick zooms would result in a division by zero error and it looks awfully similar to this crash. I'm not 100% sure it's the same one because @igorilin13's stacktrace in https://github.com/saket/telephoto/issues/41#issuecomment-1701315404 indicates that a fling was made before the crash occurred, but 🤞! I'll make a new release soon.

We got some new logs for a crash:
Exception: java.lang.IllegalArgumentException: Cannot coerce value to an empty range: maximum 700 is less than minimum 1030.
at coil.size.-Sizes.coerceIn(SourceFile:7)
at kotlinx.coroutines.flow.FlowKt__DelayKt$debounceInternal$1.invokeSuspend(SourceFile:584)
at kotlinx.coroutines.flow.FlowKt__DelayKt$debounceInternal$1.invoke(SourceFile:65)
at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1$2.invokeSuspend(SourceFile:35)
at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1$2.invoke(SourceFile:13)
at kotlinx.coroutines.AbstractCoroutine.start$enumunboxing$(SourceFile:28)
at kotlinx.coroutines.JobKt.launch$default(SourceFile:35)
at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1.emit(SourceFile:105)
at me.saket.telephoto.zoomable.ZoomableImageKt$ZoomableImage$lambda$5$$inlined$filter$1$2.emit(SourceFile:83)

Interesting, can you include the full stacktrace? It is unclear where the crash is happening.

Interesting, can you include the full stacktrace? It is unclear where the crash is happening.

I edited the stacktrace above, but now that I look at it again this might be an actual bug in our code that I mistook for this issue. I saw IllegalArgumentException and coerceIn and I assumed it was the same issue, but looking at the previous stacktraces, it should be IllegalStateException and coerceWithingBounds instead.

Haha no worries!

FWIW I was able to reproduce a situation where quick zooms would result in a division by zero error and it looks awfully similar to this crash. I'm not 100% sure it's the same one because @igorilin13's stacktrace in https://github.com/saket/telephoto/issues/41#issuecomment-1701315404 indicates that a fling was made before the crash occurred, but 🤞! I'll make a new release soon.

Has anyone received any new crash reports since ^ this change was published?

@jmartinesp is it possible that your crash is related to https://github.com/saket/telephoto/issues/49? The presence of coil.size.-Sizes in your stacktrace suggests otherwise but I wonder if your crash reporting service is somehow mangling your crash stacktraces?

@FilippoVigani this was very helpful, thank you!
I think I'm close to marking these crashes as resolved after this and https://github.com/saket/telephoto/issues/53.

I am using ZoomableAsyncImage in a LazyColumn fyi.

How are you finding its performance? Modifier.zoomable() uses Modifier.composed() underneath so it is not super performant yet. Migrating it to Modifier.Node is on my todo list.

0.7.1 should hopefully mark the end of this issue. I'll keep this open for a few months just to be sure.

I haven't received any more crash reports so I'm going ahead and closing this one. Please feel free to reopen if you see anything in your crash monitoring system.


"Color": Indicators about scale aren't switched until popup window is reopened

Steps to reproduce:

Go to Bubble chart.
Select "Color"->"CO2 emissions" for example.
Try to switch between linear and logarithmic scales.

Actual result:
Color on chart is changed.
But indicator isn't switched.
Expected result:
Indicator should be switched.

Retested. Fixed.


fix(eas-cli): implement variadic --platform flag when creating EAS updates

Why
Fixes ENG-9308

This PR assumes that https://github.com/expo/expo/pull/23621 is going to be merged and released.

How

Added warning when users create EAS update bundles with expo.web.bundler = "metro"
Added version detection to use the new variadic --platform flag
Added explicit expo export --platform android --platform ios flags when creating EAS update bundles

Test Plan

$ yarn create expo ./test-updates -t tabs@49 (comes with Metro web)
$ cd ./test-updates
$ eas update
→ should create exports for android and ios, not web

Any progress? in updates i have to cancel web and send ios and android at the same time. this pr seems to solve it.


Warning for future deprecation in Scala 2.13.3

What's the problem?
When using +? operator to add a query param to an Uri value in Scala 2.13.3 the following warning is raised:
[warn] ${BASE}/Test.scala:14:37: multiarg infix syntax looks like a tuple and will be deprecated
[warn]   val uri = uri"localhost" / "test" +? ("key", "value")
[warn]                                     ^

The warning only dissapears if no-infix syntax is used:
(uri"localhost" / "test").+?("key", "value")

...which completely breaks the goal of those operators.
Possible solution
Changing the +? operator to directly receive a tuple. It would break back-compatibility but it shouldn't break many codebases since there is no difference between the two params infix syntax and the one param tuple one.
def +?[K: QueryParamKeyLike, T: QueryParamEncoder](param: (K, T)): Self =
  +?(param._1, param._2 :: Nil)

For anyone that bumps into this error and is using -Xfatal-warnings (or just wants to get rid of the warning) you can suppress it by adding the following to your build.sbt:
scalacOptions += "-Wconf:cat=lint-multiarg-infix:silent"

How to test?
Just create a simple project with these two files:
//build.sbt

scalaVersion := "2.13.3"
libraryDependencies += "org.http4s" %% "http4s-core" % "0.21.7"

//Test.scala

import org.http4s._
import org.http4s.syntax.literals._

object Test {

  val uri = uri"localhost" / "test" +? ("key", "value")

}

I don't love these operators in the first place.  It feels DSLish, and if we're into DSL land, I wonder where is the = to go with the ?.  But I think people do like them, and this solution looks as good as any.
I'm in favor either of this, or of deprecation.

The proposal here is probably a smoother transition than deprecation.  Let's give it a try.  Volunteers?

I can do it 😸


MINOR: Adjust test params pursuant to KAFKA-4514.

https://github.com/apache/kafka/pull/2267 Introduced support for Zstandard compression. The relevant test expects values for num_nodes and num_producers based on the (now-incremented) count of compression types.
Passed the affected, previously-failing test:
ducker-ak test tests/kafkatest/tests/client/compression_test.py

I will go ahead and merge since the build does not verify system tests.

The update looks good.


Add validation for parameters passed with  command

kind bug
What does does this PR do / why we need it:
Adds Validation on parameters passed with odo config set  commands
Which issue(s) this PR fixes:
Fixes #3036

Couple of things:
$ odo config set ports "8080/TCP/UDP" -f
E0529 11:36:57.513401    6790 config.go:690] Validation failed for the provided arguments, Error: unable to parse the port string 8080/TCP/UDP
 ✗  unknown parameter :'' is not a parameter in local odo config

IMO, we should simply print the error message. Details about error number, line where it occurred, etc. should not be shown to the user.
Also, why is it showing the error unknown parameter :'' is not a parameter in local odo config? I'm little confused there. Error: unable to parse the port string 8080/TCP/UDP looks good, however.
IMO, below should fail because I've not provided TCP or UDP to port 9090:
$ odo config set ports "8080/TCP,9090" -f
 ✓  Local config successfully updated

Run `odo push --config` command to apply changes to the cluster

$ odo config view
COMPONENT SETTINGS
------------------------------------------------
PARAMETER         CURRENT_VALUE
Type              nodejs
Application       app
Project           default
SourceType        local
Ref
SourceLocation    ./
Ports             8080/TCP,9090
Name              nodejs-nodejs-ex-wcxj
MinMemory
MaxMemory
DebugPort
Ignore
MinCPU
MaxCPU

Another thing from code point of view - please add a comment describing what IsValidLArgumentList is doing.

@dharmit
odo config set ports "8080/TCP,9090" -f

is not failing because the port validator function accepts it.
I'm using existing validation utilities so that the validation behavior remains uniform. Should I create a different validator ?
https://github.com/openshift/odo/blob/6bd0d73dc67e014e34f7e92a35dab26734163afc/pkg/odo/util/validation/validators.go#L60

Should I create a different validator ?

Nope. My bad. Should have read the comments that said it's a valid value.

If I remember correctly not providing TCP/UDP defaults to TCP I think in most tools

If I remember correctly not providing the protocol in <PORT>TCP/UDP defaults to TCP I think in most tools

Behind the scenes, it does. I tried creating a URL for port without protocol info in config.yaml and it works. It doesn't show up in odo config view, however. Not an issue, IMO.

If I remember correctly not providing the protocol in <PORT>TCP/UDP defaults to TCP I think in most tools

Behind the scenes, it does. I tried creating a URL for port without protocol info in config.yaml and it works. It doesn't show up in odo config view, however. Not an issue, IMO.

I think would help with respect to clarity for the user to specify that in odo config view

I think it would help to be clear with the user if we specify that in odo config view

Or, it could be mentioned in the CLI documentation or actual documentation. If we'd want to make it clear in the output of odo config view, we would have to modify the validation function.

@dev-gaur CI failing

CI seem to fail but code is good hence, please fix the tests if need be.
/approve

/kind bug

@dev-gaur any update on the comments made by chris?

/retest


Add eraser button and functionality

Description
Add an eraser tool to replace use case of painting with background label:

Added an eraser button in toolbox, resized the toolbox to make the UI consistent with before.
Add erase function using paint to use background label
Disabled user from using background label
Experiment alternate keys for temporary mode switching

Type of change

New feature (non-breaking change which adds functionality)

References
Desired behavior is discussed here: https://github.com/napari/napari/issues/1142
How has this been tested?

The test suite for my feature covers cases of erasing labels with different brush size
Manually run through using the new eraser tool, as well as changing between tools

Final checklist:

[X] My PR is the minimum possible work for the desired functionality
[X] I have commented my code, particularly in hard-to-understand areas
[X] I have made corresponding changes to the documentation
[X] I have added tests that prove my fix is effective or that my feature works

Following discussion in team meeting, I think the recommendation was to switch to option click instead of right click for rapid switching to erase. It would be great if @tlambert03 and @jni can weigh in here on the intuitiveness of the keybindings/ mouse function modifiers and with any approvals/ recommendations.
Code looks good to go, so once we agree on keybindings/ mouse function modifiers and @tlambert03 updates the icons this will be ready for merge. Thanks @ziyangczi, great work here again!

just update this with new buttons.  I also changed the fill button to a paint bucket, since that had been discussed in the past:

couple remaining thoughts after playing with it:

right click is still deleting, in addition to option click now
I'm not sure what the "right" behavior is, but just want to point out that when "preserve labels" is checked, there's no way to use the eraser (without clicking shift to temporarily uncheck that button).  While that "preserve labels" makes a lot of sense for drawing new labels... i wonder whether that block on erasing might not be confusing?  If we want to keep that behavior, it might be nice to "notify" the user somehow that preserve labels is checked... maybe flash the label or something?

maybe also worth revisiting the order of the buttons?

I made it so that if a user tries to erase something with preserve labels checked, the label for the checkbox goes temporarily red:

I love having a visual warning but I don't like turning the label red, makes it hard for me to read.
Could we maybe add a red X icon that would be the ~size of the checkbox and have show up to the right of the checkbox only when happens. Or maybe it would overlay on the checkbox if it has a transparent background?

maybe also worth revisiting the order of the buttons?

Yeah, thats fine. I'd probably go - from RIGHT to LEFT, mag, paint, erase, pick, fill, shuffle
What are your thoughts @tlambert03?

While that "preserve labels" makes a lot of sense for drawing new labels... i wonder whether that block on erasing might not be confusing?

Actually maybe this is just too confusing and preserve labels should not be functional when the eraser tool is selected, then we wouldn't need any red warnings right?

makes it hard for me to read.

also... just curious did you test this locally?  or just looking at the GIF?  (the gif looks a lot worse)

I'm going to quickly fix the merge conflict and reorder the buttons, I think this will then be ready for a final review from @jni and could still go in to 0.3.3, which I think will be nice for @constantinpape who had mentioned the having an erase button for his annotation tool

@sofroniewn, as mentioned in https://github.com/napari/napari/pull/1288#issuecomment-636035691, right click and drag is still deleting ... I thought we decided against that behavior?

@tlambert03 I just updated this PR to fix merge conflicts, reoder the buttons, and drop the "right click" behavior. I've also changed it so that you can have the selected_label be 0 to enable fill with 0 again.
Playing more with it I think that the current behavior of preserve labels with the erase button is sub optimal, and I want to throw out a new option, especially now with the hotkey opt to rapidly enable it.
Consider the use case that you have a label - say 7 selected and preserve labels turned on and are painting with it, I think if you switch to the erase key using the opt key it should ONLY erase label 7 while preserving all others, so you could rapidly change what you're working on - i.e. label 7, without fear of changing all the other labels.
How does that sound @tlambert03 @jni @ziyangczi?

if you switch to the erase key using the opt key it should ONLY erase label 7 while preserving all others, so you could rapidly change what you're working on

i like that

I've now given this a final update, making preserve_labels behave as noted above, and extending the preserve to the fill case too. I've also dropped the red warning if nothing changes. I'm happy to add the red warning back in if people think it is too confusing that nothing happens on a click somethings.
I think it is ready for final review and merge, would be great if @tlambert03 and @jni could give it a spin and an approve :-)

Just found a bug in the nD labels case, will make a quick fix

@sofroniewn

Yeah, thats fine. I'd probably go - from RIGHT to LEFT, mag, paint, erase, pick, fill, shuffle

I'm curious about the rationale? I kinda think paint and fill should be together, as they are two forms of adding labels. New proposal: mag, pick, paint, fill, erase, shuffle.

btw all the new functionality here is pretty damn cool, thank you all. =)

I'm curious about the rationale? I kinda think paint and fill should be together, as they are two forms of adding labels. New proposal: mag, pick, paint, fill, erase, shuffle.

Will change
Note nD bug slipped in with #1299, my fault!!, easy to fix I will add a test to catch now too :-) update coming right up

Ok this fixes bug from #1299 - are we good for a final approve and merge @jni? Then I will update release notes and we can make 0.3.3 release?

Would be good to have some thorough testing of all the labels functionality as @constantinpape will need that working. I've tried my hardest to break it now, nD different buttons etc and it seems good

Great, thanks for the thorough testing @jni, i've updated doc string only in last commit, will wait for tests to pass and then merge!


postgresql: add readme with eol-policy

This was discussed and agreed on in https://github.com/NixOS/nixpkgs/pull/310580#discussion_r1597284693.
@Ma27 @mweinelt
Feedback welcome!

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

Putting it in manual will make it less visible for the random package updater, though.

I can only speak for me here, but I usually just do nix edit -f. postgresql to edit the expressions (or use find) and I can't recall having checked for a README once (also because I'm not aware of READMEs in pkgs-subdirs being a thing).
I think it's where I would've put it and having it in a manual kinda makes sense. But at the end of the day, I think we'll have to link it to anyone who asks anyways.