Update local runner to use login shell when running as non-root / non-current user

Before this change when a local runner action resulted in using sudo (e.g. action runner is running as root, but the action is ran as stanley or when user requests action to run as a different non-system / root user), the command would not run using login shell (bash_profile is not sourced, etc.) which would result in an unexpected behavior.
This means that $HOME variable would reflect the value of the user which ran sudo and not the value of the actual user under which the command ran, etc. This behavior also already resulted in some confusion for our users in the past.
This change is backward incompatible since it changes the local runner behavior so it should be included in v1.2 and not v1.1.x.
This also fixes an issue with some of our end to end and deploy tests (stanley not being able to write to /root/, etc. - for details, see Slack).
TODO:

[ ] Tests
[ ] Update docs
[ ] Update upgrade notes

It turns out this will require a bit more work - now that using -i, variables which are passed to the subprocess are not preserved (st2_action_api_url, etc.) so I need to fix / change that.

Another option is to use -H instead of -i. The end result is not the same since -H just sets $HOME, but at least it resolves some sudo related issues.
      -H, --set-home
                 Request that the security policy set the HOME environment variable to the home directory specified
                 by the target user's password database entry.  Depending on the policy, this may be the default
                 behavior.

What do other people think? Another option to work around -E and -i is to explicitly set all the environment variables using export inside the sudo command, but I'm not big fan of that, even though we do a similar thing in the remote runner (there are less variables to be set and inherited in the remote runner)...

I thought about it some more and I think we should just go with -H for now.
It's not ideal, but for the most part it's a small and not breaking change and solves the most pressing problem with home directory not being set to the selected user.
Using -i without preserving existing variables (-E which doesn't work directly with -i) would also probably break some existing deployments - I know some users who set environment variables for stanley user and with this change those variables wouldn't be available when running as non stanley user.

Alright, discussed this with @manasdk on Slack - we will proceed with -i and I will make the change to add all the environment variables before the command, similar as we do in the new remote runner.
In short - yes, change is breaking in some scenarios, but we believe is the right path forward.

+1 for -i change.

Closing. Reopen if you need it.


doesent work after Version 0.0.7

Version 0.0.7 work on ubuntu
0.1.0 and 0.1.1 doesent load pokemons

same problem one laptop.


Minimizer was missing from API reference

Adds an entry so recently introduced Minimizer protocol in included in the API reference. Algorithms such as VQE can take an optimizer based on this protocol and so while the typehints showed this it was not a clickable link. And since the docs for Minimzer __call__ are not included in the html I added similar information to its main docstring.
Also added it, and another missing class to the __all__ section.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

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

Files with Coverage Reduction
New Missed Lines
%

qiskit/extensions/quantum_initializer/squ.py
2
79.78%

Totals

Change from base Build<PHONE_NUMBER>:
-0.003%

Covered Lines:
56314

Relevant Lines:
67001

💛  - Coveralls


[FEATURE REQUEST] OCR PROBLEM

Ocr engine of this app is unable to Detect Indian Currency Sign "₹" .
Can you fix it ?
It is detecting "₹" as number "7" .
Please fix it as soon as possible.

@Kumar808 Sorry  i cant fix it. You can look at tesseract. It is the OCR engine


ESL update

:tada: This PR is included in version 1.0.0-beta.7 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Improve type safety in stake state module

Problem
Many stake state methods use catch-all match cases for remaining variants, so a new variant could be unintentionally unhandled.
Brought up by @behzadnouri in https://github.com/anza-xyz/agave/pull/2453#discussion_r1705974342
Summary of Changes
Add explicit match cases for all stake state variants.
Fixes #

What do you think about taking it a step further and adding #![deny(clippy::wildcard_enum_match_arm)] at the top of the file to catch future occurrences?

Sounds like a great idea to me. We should probably use that more often in the codebase. I just updated the PR with that clippy config and an additional refactor to remove another instance of a wildcard arm

Needs a rebase on master


Post image base64 to bot-framework occurs "ajax error 400"

Hi team,
I got an error when post image base64 as an attachment:

Post method:

Timestamp(UTC):
12/2/2019, 6:50:52.579 AM - 12/2/2019, 7:00:00.579 AM
Conversation Id:
BjLrX2HlHsE6jpjasNFSNb-l
The image base64 string is too large to paste here, will cause this page crash.
The size of this image/png is :

Does it caused by the base64 string too long and not allowed to post?
Can you tell me the limited size of the image?
Looking forward to your insight.

Additionally, it can be uploaded successfully if I save the base64 string as an image then post to bot-framework.

I don't believe 281 KB would be an issue.
Can you expand the request portion of that error message to see if your attachment was included appropriately?
Does your contentUrl (base64 image string) formatted like data:image/png,<theBase64String>? Note that the data:image/png, part is required.
If you have that, can you send me a link to the image so I can try to repro?

@mdrichardson
I saved the image  base64 string as a text file and post to GitHub. Please try to access it.
I am sure the contentUrl starts with "data:image/png," I have a conditional sentence for this

Request partion:

@shunyh I was able to successfully post using your base64 string, so that doesn't seem to be the issue.
Can you set a breakpoint or console.log() contentUrl to ensure it looks as it should? Maybe it's duplicating the data:image... part?
Are you able to send messages that don't have that image?
If you can share your code (taking out any sensitive information), I might be able to help more.

@mdrichardson I can post text message and some images that base64 string is smaller than the above one.

And I print the contentUrl by console.log(), the format is correct.

BTW, our services are in Mooncake, but bot-framework service is hosting on Global Azure, does it affect the attachment message pipeline?
`postActivityWithAttachment(from, contentUrl) {
   console.log(contentUrl);
   this.hidePasteImageModal();
   this.props.startLoading();
   let thumbnails = [];
   thumbnails[0] = contentUrl;
  this.botConnection
  .postMessageWithAttachments({
    type: "message",
    text: "Send a screenshot.",
    from: {
      id: from.id,
      name: from.name
    },
    attachments: [
      {
        contentType: "image/png",
        contentUrl: contentUrl,
        name: 'screenshot.png'
      }
    ],
    channelData: {
      thumbnails: thumbnails
    }
  }).subscribe(
    id => {
      this.props.stopLoading();
      Logger.trackEvent('PasteEvent', {
        message: 'Paste image from clipboard and send succeed.'
      });
    },
    error => {
      this.props.stopLoading();
      Logger.trackEvent('PasteEventError', {
        message: 'Paste image from clipboard but send failed.',
        fromId: from.id
      });
      console.log(error);
    }
  );
}`

Background:
Directly paste images from the clipboard.
`// retrieve image and convert to base64
function retrieveImageFromClipboardAsBase64(pasteEvent, callback, imageFormat) {
      if (pasteEvent.clipboardData == false) {
      if (typeof (callback) == "function") {
      callback(undefined);
       }
    };

 var items = pasteEvent.clipboardData.items;

 if (items == undefined) {
     if (typeof (callback) == "function") {
      callback(undefined);
    }
 };

for (var i = 0; i < items.length; i++) {
// Skip content if not image
if (items[i].type.indexOf("image") == -1) continue;
// Retrieve image on clipboard as blob
var blob = items[i].getAsFile();

// Create an abstract canvas and get context
var mycanvas = document.createElement("canvas");
var ctx = mycanvas.getContext('2d');

// Create an image
var img = new Image();
var maxSize = 480;
// Once the image loads, render the img on the canvas
img.onload = function () {
  // Update dimensions of the canvas with the dimensions of the image
  // mycanvas.height = img.height > img.width ? maxSize : ~~(img.height / img.width * maxSize);
  // mycanvas.width = img.width > img.height ? maxSize : ~~(img.width / img.height * maxSize);
  mycanvas.width = this.width;
  mycanvas.height = this.height;

  // Draw the image
  ctx.drawImage(img, 0, 0, mycanvas.width, mycanvas.height);

  // Execute callback with the base64 URI of the image
  if (typeof (callback) == "function") {
    callback(mycanvas.toDataURL(
      (imageFormat || "image/png")
    ));
  }
};

// Crossbrowser support for URL
var URLObj = window.URL || window.webkitURL;

// Creates a DOMString containing a URL representing the object given in the parameter
// namely the original Blob
img.src = URLObj.createObjectURL(blob);
}
}`

@shunyh I'm not familiar with Mooncake and can't seem to find out anything about them through a quick search, so I'm not sure. If you can try hosting your services elsewhere and are still able to reproduce the issue, that might narrow it down.
Your code and base64 all look fine and I'm not able to reproduce this, so I'm guessing the issue is with Mooncake somehow.

@mdrichardson thanks for your patiently reply, you help me a lot.
We have to deploy services on Mooncake due to our users can't access the service on Global Azure, they will be blocked by the firewall.
I will limit the size or downscale the image before posting to the bot-framework to avoid this error.
And I am looking forward to your team release the 'Directly paste images from clipboard' feature.
Thank you again.

@shunyh You're welcome. Just note that I'm not 100% sure that the issue is a Mooncake problem, maybe 80%. If you decide to test with another service and still run into the issue, feel free to re-open this.


[LocalNet] Fix/localnet regenesis

Summary
Human Summary
make localnet_regenesis copies configuration files to the wrong directory, copying them to localnet/poktrolld/config/config instead of localnet/poktrolld/config.
This lead to the validator not able to locate genesis.json when deploying the actors from a clean repo (that does not have previous files in the right directory)

The PR also fixes the location of some off-chain actors interfaces that were badly referenced in Makefile's go_mockgen
AI Summary
reviewpad:summary
Type of change
Select one or more:

[ ] New feature, functionality or library
[x] Bug fix
[ ] Code health or cleanup
[ ] Documentation
[ ] Other (specify)

Testing

[x] Run all unit tests: make go_develop_and_test
[x] Run E2E tests locally: make test_e2e
[ ] Run E2E tests on DevNet: Add the devnet-test-e2e label to the PR. This is VERY expensive, only do it after all the reviews are complete.

Sanity Checklist

[x] I have tested my changes using the available tooling
[x] I have performed a self-review of my own code
[ ] I have commented my code, updated documentation and left TODOs throughout the codebase

@Olshansk , Fixed, I added find command to generate pkg interface mocks


Add PR number badge for internal builds

Details

This PR customises the environmental badge for internal builds. The internal builds are going to run on staging environment, but there will be a badge with information from which PR the app was built.
The PR doesn't include screenshots, since a real internal builds would have to be checked to test it properly.
@AndrewGable Could you run the testBuild workflow against this PR to see if everything is fine?
Fixed Issues

$ https://github.com/Expensify/App/issues/13993
Tests

[x] Verify that no errors appear in the JS console
[x] Check if the correct badge is visible near "Chats", when building the app directly from a PR

Offline tests

QA Steps

[x] Verify that no errors appear in the JS console
[x] On Staging "Stg" badge should be visible, on production no badge expected

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

Mobile Web - Chrome

Mobile Web - Safari

Desktop

iOS

Android

:test_tube::test_tube: Use the links below to test this build in android and iOS. Happy testing! :test_tube::test_tube:

android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/16735/index.html
https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/16735/index.html

desktop :computer:
web :spider_web:

https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/16735/NewExpensify.dmg
https://16735.pr-testing.expensify.com

I can probably checkout the branch, then push my own version?

Yep, I think that would be the easiest solution!

:test_tube::test_tube: Use the links below to test this build in android and iOS. Happy testing! :test_tube::test_tube:

android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/16735/index.html
https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/16735/index.html

desktop :computer:
web :spider_web:

https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/16735/NewExpensify.dmg
https://16735.pr-testing.expensify.com

@AndrewGable There was a tiny bug I haven't spotted before. The .env.staging file was not edited in the previous build, because double quotes  in echo command ended in the wrong place... Could you pull  the newest changes and run the workflow again? Sorry for that, and thanks for the help!

Yes, will do. Updated internal-build-pr-badge branch and will re-run now.

Build: https://github.com/Expensify/App/actions/runs/4598086291

:test_tube::test_tube: Use the links below to test this build in android and iOS. Happy testing! :test_tube::test_tube:

android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/16735/index.html
https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/16735/index.html

desktop :computer:
web :spider_web:

https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/16735/NewExpensify.dmg
https://16735.pr-testing.expensify.com

Hi @AndrewGable! Thanks for running the workflow, it seems that everything works as expected :)

From the QR code I still see the stg badge when logging in:

Also the "About" page from settings still shows the non adhoc version

@AndrewGable, sorry about the About page, I didn't know it has to be changed there too. It won't be a problem, I'll fix it tomorrow. If it comes to the badge on the screen with logging in I can change it. I just want to inform that for now it is an svg, so I'll have to modify this element a bit to use the EnvironmentBadge component instead. Although if you'd like to modify changes the SplashScreen too, the implementation may be more complex :)

I think no splash screen is fine for now, I can get you a replacement SVG for AdHoc that looks similar to the Staging one.

@AndrewGable That would be great!

@Expensify/design or @ADeWitt - Would it be possible to get https://github.com/Expensify/App/blob/main/assets/images/new-expensify-dev.svg in another variant? Ideally it would say "AdHoc", if that does not fit, maybe we could do "PR"? The "pill" color could be a different color if we have another brand color to use, otherwise we can use the "Dev" color.

Do we need that for all of the icon possibilities? Like the desktop icon as well?

Going to let @staszekscp confirm, but I think yes.

@AndrewGable @shawnborton Yes, I think it we could swap the stg badge with adhoc wherever it is necessary :)

Use the links below to test this build in android and iOS. Happy testing!

It's failing to build, looking into it

New build: https://github.com/Expensify/App/actions/runs/4672621863

Use the links below to test this build in android and iOS. Happy testing!

Use the links below to test this build in android and iOS. Happy testing!

Hi @AndrewGable! I see the previous build failed, I suppose git history was not correctly aligned between your branch and my PR... Could you have a look at it?

Build here (I think it's working): https://github.com/Expensify/App/actions/runs/4690785038

:test_tube::test_tube: Use the links below to test this build in android and iOS. Happy testing! :test_tube::test_tube:

android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/16735/index.html
https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/16735/index.html

desktop :computer:
web :spider_web:

❌ FAILED ❌
https://16735.pr-testing.expensify.com

The QR code can't be generated, because the Desktop build failed

I'm going to fully test this tomorrow, but I'm curious why we're not creating the Android app icon with the built-in Android Studio Image Asset tool? This will ensure the icon looks correct on all Android versions and ROMS.

:test_tube::test_tube: Use the links below to test this build in android and iOS. Happy testing! :test_tube::test_tube:

android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/16735/index.html
https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/16735/index.html

desktop :computer:
web :spider_web:

❌ FAILED ❌
https://16735.pr-testing.expensify.com

The QR code can't be generated, because the Desktop build failed

@staszekscp - Can you check if this desktop build error is related to these changes?
• electron-builder  version=23.5.0 os=21.6.0
  ⨯ Invalid ELECTRON_ENV!  failedTask=build stackTrace=Error: Invalid ELECTRON_ENV!
    at Object.<anonymous> (/Users/runner/work/App/App/config/electronBuilder.config.js:31:11)
    at Module._compile (node:internal/modules/cjs/loader:[110](https://github.com/Expensify/App/actions/runs/4690785038/jobs/8316839984#step:7:111)5:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at readConfig (/Users/runner/work/App/App/node_modules/read-config-file/src/main.ts:19:14)
    at Object.getConfig (/Users/runner/work/App/App/node_modules/app-builder-lib/src/util/config.ts:44:34)
    at Packager.build (/Users/runner/work/App/App/node_modules/app-builder-lib/src/packager.ts:314:27)
    at Object.executeFinally (/Users/runner/work/App/App/node_modules/builder-util/src/promise.ts:12:14)

Trying again here: https://github.com/Expensify/App/actions/runs/4692202389

:test_tube::test_tube: Use the links below to test this build in android and iOS. Happy testing! :test_tube::test_tube:

android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/16735/index.html
https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/16735/index.html

desktop :computer:
web :spider_web:

https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/16735/NewExpensify.dmg
https://16735.pr-testing.expensify.com

:test_tube::test_tube: Use the links below to test this build in android and iOS. Happy testing! :test_tube::test_tube:

android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/16735/index.html
https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/16735/index.html

desktop :computer:
web :spider_web:

https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/16735/NewExpensify.dmg
https://16735.pr-testing.expensify.com

Thanks for running the builds! I think I've just fixed the last issue with badge color and everything should work fine :) Additionally I'm going to add different icons and splash screens for the AdHoc build in this PR, but I think here we're ready to go :) If you'd like to see the correct badge color you can run the build one more time :)

I'm curious why we're not creating the Android app icon with the built-in Android Studio Image Asset tool?

Oh I see, the icon is only shown within the app currently... Can we make is show in the OS home page too? We can use the existing tools to create these and it will help simplify switching between apps varients locally.

Thanks @Julesssss! I'm going to apply separate icons while working on flavors - I don't want to do it in this PR, because it would have to be solved differently. Therefore I would like to avoid adding this feature in this PR :)

Cool thanks, sounds fine to me.

It seems that wrong file was taken to execute workflow - have you pulled the newest changes from this branch? The problem was fixed in this commit Maybe accidently you've taken wrong branch to execute the workflow?

I see that in Andrew's run 17 hours ago everything was built correctly, and the only thing I changed since then were badge colors: https://github.com/Expensify/App/pull/16735/commits/30fe055ff5018cb31180bfcb2b3304b5f6aa909c

hey @staszekscp maybe I'm missing something, but it looks like my PR include the last commit 30fe055ff5018cb31180bfcb2b3304b5f6aa909c? (fix badge colour)

:test_tube::test_tube: Use the links below to test this build in android and iOS. Happy testing! :test_tube::test_tube:

android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/16735/index.html
https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/16735/index.html

desktop :computer:
web :spider_web:

❌ FAILED ❌
https://16735.pr-testing.expensify.com

The QR code can't be generated, because the Desktop build failed

Hmm... Have you chosen Branch: jules-test16735 instead of main here?

Hmm... Have you chosen Branch: jules-test16735 instead of main here?

Yep, that's it. Trying again here

@Julesssss I think it failed already 😄 The number in the input should be 16735, I think you've typed 17453 😄

3rd time lucky 🤞

:test_tube::test_tube: Use the links below to test this build in android and iOS. Happy testing! :test_tube::test_tube:

android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/16735/index.html
https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/16735/index.html

desktop :computer:
web :spider_web:

https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/16735/NewExpensify.dmg
https://16735.pr-testing.expensify.com

Good news - seems to work fine :)

Hey @Julesssss! I had to resolve a small conflict, and now the PR is ready to merge :)

Reviewer Checklist

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

Mobile Web - Chrome

Mobile Web - Safari

Desktop

iOS

Android

The desktop theoretically should be fixed, but we would have to run a build to make sure if everything was fine :) The __DEV__ env is a RN variable, but it has to be set manually by webpack for the desktop app. I haven't noticed that there is a regex that parses the .env file to decide what should be the value of __DEV__.

I kicked off a new ci build here.

Hey thanks for the run! Actually it already failed, because the PR number in the input was 17573 instead of 16735 :) An alternative solution would be to add Ready to build to your PR :)

Actually it already failed, because the PR number in the input was 17573 instead of 16735 :)

Oh I made the same mistake last time 😁

Maybe we can simplify the CI input labels? Even with context I've messed up twice now.
New run: https://github.com/Expensify/App/actions/runs/4734387668

:test_tube::test_tube: Use the links below to test this build in android and iOS. Happy testing! :test_tube::test_tube:

android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/16735/index.html
https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/16735/index.html

desktop :computer:
web :spider_web:

https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/16735/NewExpensify.dmg
https://16735.pr-testing.expensify.com

Hi @Julesssss, thanks for the run! I've just merged the newest main, and the desktop app works, so hopefully it can be finally merged :) Fingers crossed!

I'm just a bit confused why the Android AdHoc build doesn't contain the purple pill like the other platforms. I can only see the PR info on the settings page 😕
I used this link, from here is that correct?

Thanks, triggered another build here

:test_tube::test_tube: Use the links below to test this build in android and iOS. Happy testing! :test_tube::test_tube:

android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/16735/index.html
https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/16735/index.html

desktop :computer:
web :spider_web:

https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/16735/NewExpensify.dmg
https://16735.pr-testing.expensify.com

@Julesssss all of them seem to be working fine now 😄

Okay, thanks. Confirmed I see the pill now.
I've updated the checklist will all platforms except iOS mWeb -- which I'm struggling with for some reason. Both in Safari and Chrome:

That is strange, on my iPhone everything works just fine... I've just double checked it to make sure. Could you try a bit later?

One screenshot is from Safari, second from Chrome

Hey, I noticed you changed some webpack configuration files. This can break production builds. Did you remember to run a production build locally to verify they still work?

@AndrewGable maybe you wanna review again

@staszekscp @AndrewGable We have no easy way to confirm variety of build for this PR. Do you mind QA-ing it internally?

Yes, you can mark it off. We tested the steps for this PR before merging.

🚀 Deployed to staging by https://github.com/Julesssss in version: 1.3.3-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/mountiny in version: 1.3.3-2 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Support async/await

Consider providing async/await api to types where it makes sense.
If supporting pre-iOS 15, the implementation will need to handle the absence of AsyncPublisher with a custom way to get values/events out of publishers to bridge into the async world.

Doing this while avoiding any concurrency warnings or errors in swift 6 mode (which i'd want to do to be as safe as we can) would be a tall order, and would probably require rewriting a lot of the library, so until an async/await successor is more feasible we won't worry about this for now (beyond perhaps some simple async helpers for reading/writing a characteristic where it may make sense to do so).


Print application logs only after start-up

Summary
Previously[1] it was (wrongly) assumed, that method isRunning of class QuarkusManagedResource is run only once right after start, so it is safe to put log output into it. In reality, this method is called several times during test lifecycle, including at the time of teardown.
Logs for OpenShiftQuarkusApplicationManagedResource are retrieved from OCP cluster. Since connection to the cluster may be already closed during teardown, this leads to hard-to-reproduce exceptions. This change addresses this by making sure, that logs are printed only once during start up and not in (supposedly) pure isRunning method.
[1] https://github.com/quarkus-qe/quarkus-test-framework/pull/213
Please check the relevant options

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Dependency update
[x] Refactoring
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] This change requires a documentation update
[ ] This change requires execution against OCP (use run tests phrase in comment)

Checklist:

[ ] Example scenarios has been updated / added
[x] Methods and classes used in PR scenarios are meaningful
[x] Commits are well encapsulated and follow the best practices

run tests

run tests

jvm failure is due to
2023-06-30T17:22:44.1302497Z [ERROR] Failed to execute goal io.quarkus:quarkus-maven-plugin:999-SNAPSHOT:build (default) on project examples-debug: Execution default of goal io.quarkus:quarkus-maven-plugin:999-SNAPSHOT:build failed: An API incompatibility was encountered while executing io.quarkus:quarkus-maven-plugin:999-SNAPSHOT:build: java.lang.NoSuchMethodError: 'void io.quarkus.bootstrap.app.AugmentResult.<init>(java.util.List, io.quarkus.bootstrap.app.JarResult, java.nio.file.Path)'

which doesn't look connected


disk_block_cache: put blocks in working set if sync cache is full

Previously, if the sync cache was full, the overall cache put would fail (without logging an error, due to the unnamed return param). However, this means that when your synced directory is bigger than your disk cache, performance crawls to a halt in that directory because all new blocks need to be fetched again, even if there's room in the working set cache.
So, if the sync cache put fails, just put it in the working set and let eviction take care of it later.

@jzila: I can't remember if there was a good reason we did it the previous way.  If so, I can rethink this, but it was making performance pretty bad on my private repo (which is synced).


Fix windows build

Checklist

[x] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

@conda-forge-admin, please rerender

Hi @zklaus.  I wasn't able to merge this since it's a draft, and you seem to have gone offline, and I need to get this release out the door today if possible, so... I have copied your changes to my own fork, and am working on merging them in PR https://github.com/conda-forge/slim-feedstock/pull/27.  Sorry; it would be better if your changes were correctly attributed to you in Git, but this really needs to happen today for some external reasons.  Thank you again for your help!

Hi @bhaller, that's fine. For the future, if you want to give credit, you can set the author on a git commit (which is distinct from the committer), or include a line like the following in the commit message to share authorship
Co-authored-by: Max Mustermann<EMAIL_ADDRESS>

Hi @bhaller, that's fine. For the future, if you want to give credit...

Aha, I didn't know about these options, thanks for the info!


Fix autotiling bug added at #19127

I've introduced a bug for autotiles on #19127 without being aware of that, this PR fixes that bug and when autotiling the old undo logic is used.

I'm not sure if this is gonna work, try drawing with a normal tile over a big autotile area and then undo it (can't try myself right now)

@MarianoGnu Yeah, just tried that, doesn't works as expected. Maybe we could use the optimized undo only if the tileset has no autotiles?

That would "work" but at the same time woudn't, since wont fix the original problem when you have a big map with autotiles, the Editor will freeze

I don't think this is that hacky, it's simply using a better undo way for single tiling.
For whoever that reviews this if this PR is not accepted #19127 should be reverted.

Sounds like maybe this one should be reverted until a proper fix is found?

Sounds like maybe #19127 should be reverted until a proper fix is found?

Agreed for now, I've reverted #19127 in #19159.
We'll still need a new fix for #18996 (which could end up being #19127 again + this #19146 if we don't find a better path).


Web - Send money - User is not directed in correct chat after send money

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

Action Performed:

Go to staging.new.expensify.com
Log in to any account
Click on the green plus button in the LHN.
Select Send money
Enter an amount in the big number pad page
Click on the next button
Select an attendee from the list (that you have access to)
Add a comment, then select the confirmation button
Select Pay as I'll settle up elsewhere option

Expected Result:
User is directed in correct chat after send money
Actual Result:
User is not directed in correct chat after send money
Workaround:
Unknown
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platform:

Where is this issue occurring?

Web
iOS
Android
Desktop App
Mobile Web

Version Number: <IP_ADDRESS>
Reproducible in staging?: Yes
Reproducible in production?: Yes
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/93399543/189162636-06d75212-ff23-4a32-80c4-5ee3f5a4fc12.mp4
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

It is expected, It was logged before here.

Commented in another issue where this was already fixed


Feature Request: Format-List add -skipEmpty parameter

Some times you have an list of psobject with empty properties values (which will distract you from the important properties). I think it should be possible with format-list to skip such properites without any third-party function
I'm not alone:
https://stackoverflow.com/a/44370806/410540
I propose:
-skipEmty will not show you the noteProperties which have null or empty strings
or may be:
-skipPattern "^$|^\s+$"
Simulating the expected output:
New-Object PSObject -Property @{"a"=$null; "b"="b"; "c"="c"} | fl | out-string -Stream |  sls -NotMatch "^[^:]*:\s+$"
Thank you!

We have Where-Object cmdlet for filtering. It is not clear why we should move Where-Object functionality to formatting cmdlets.

Sorry I did not explain (this is not a where-object funcionality). See this example ($person have a list of person data):

$person | fl
Name: Jorge
City: Jaen
Telephone:
Name: Juan
City: Málaga
Telephone: 666555444

$person | fl -skipEmpty
Name: Jorge
City: Jaen
Name: Juan
City: Málaga
Telephone: 666555444

See Telephone of Jorge is not presente because It is empty
The same idea could be with -skipPattern
This parameter apply better with objects with many noteProperties like those created with importfrom-csv using a csv with many columns
Sorry for my english

For the case you can do:
$person | Where-Object Telephone | fl

For the case you can do:
$person | Where-Object Telephone | fl

I have not powershell to exec this now but I think It would skip Jorge info (not only not show Telephone in the output)
I Will test ir later
Think about a larger csv import. If there are many empty properties this parameter would be very useful to inspect the data from command line
Thank you very much!

I have not powershell to exec this now but I think It would skip Jorge info (not only not show Telephone in the output)

That's correct. Where-Object is not designed to skip individual properties on objects, only whole objects based on a given condition.
This request is different, I think. Asking Format-List to simply skip individual properties on every object if they're null or empty is definitely useful in some cases, there are cases where some objects may have many null properties that the user doesn't care to display.
Currently the closest thing you can do here is something like this:
$PropertiesShown = $person.PSObject.Properties.Where{$_.Value}.Name
$person | Select-Object -Property $PropertiesShown | Format-List

We could definitely stand to add a switch to make this more accessible.

I have not powershell to exec this now but I think It would skip Jorge info (not only not show Telephone in the output)

That's correct. Where-Object is not designed to skip individual properties on objects, only whole objects based on a given condition.
This request is different, I think. Asking Format-List to simply skip individual properties on every object if they're null or empty is definitely useful in some cases, there are cases where some objects may have many null properties that the user doesn't care to display.
Currently the closest thing you can do here is something like this:
$PropertiesShown = $person.PSObject.Properties.Where{$_.Value}.Name
$person | Select-Object -Property $PropertiesShown | Format-List

It is (but with foreach ($p in $person) ir similar loop)
Thank you!


This tutorial needs to be updated

This tutorial needs to be updated so that it compiles, and preferentially without warnings about depricated means being used in the actual tutorial.
I am more than willing to try to nudge this into the right direction by using elbow grease, but I don't yet have the brains to do so - so if I could tap into someone else's, that might get things going in the right direction.
Having smooth running first tutorial(s) might actually be the ramping needed to get the footfall going upwards.
These tutorials could also serve two purposes at the same time, introduce newbies ( like me) to this great ecosystem, AND at the same time provide a readymade testbed for test cases supporting the difficult task of replicating real issues people are running into.
Companies often can't share the source code for replicating issues, it is private, business/legally sensitive and it can often be hard to pull out a meaningful test case from a large complex system.
Having a really smooth tutorial, that doubles as a test bed for replicating test cases means that these tutorials get improved importance and will be nurtured and maintained better as they suddenly make sense to both the newbies and the veterans, though serving two different purpose or role at the same time.
Anyway, enough of ranting... :-)
I tried to go through this tutorial, and this is what I got.
====

Checking out https://github.com/absinthe-graphql/absinthe_tutorial.git

$ git clone https://github.com/absinthe-graphql/absinthe_tutorial.git
Cloning into 'absinthe_tutorial'...
remote: Enumerating objects: 357, done.
remote: Total 357 (delta 0), reused 0 (delta 0), pack-reused 357
Receiving objects: 100% (357/357), 108.11 KiB | 595.00 KiB/s, done.
Resolving deltas: 100% (140/140), done.

And then what?

The README.md does not give any hints regarding what the next step should be
for following the tutorial.
The docs are in *.md format, shouldn't they be in html or even just plain txt format?
And where are the documents?
Tried the following from the absinthe_tutorial/ root:
$ find . -name "*.md"
./LICENSE.md
./README.md

$ find . -name "*.txt"
gives nothing

find . -name "*.html"
gives nothing

The README.md gives https://hexdocs.pm/absinthe/ which is redirected to
https://hexdocs.pm/absinthe/overview.html which is fine.
But what if the docs at https://hexdocs.pm/absinthe/overview.html are updated?
Then the version I have checked out might be out of sync with the version online
at https://hexdocs.pm/absinthe/overview.html - not good.
For example if you are a company and are running certain version locally, and
referring to the docs https://hexdocs.pm/absinthe/overview.html you might be
suddenly running into trouble when those get updated, and then the help forums get overwhelmed with silly requests... which would be a totally uneccesary timewasting pitfall.

Going ahead - without any hints coming from the actual tutorial material I just checked out (if I hadn't actually gone through material from a v. good book, I would have been lost at this stage...)

$ mix deps.get
warning: found quoted keyword "test" but the quotes are not required. Note that keywords are always atoms, even when quoted. Similar to atoms, keywords made exclusively of Unicode letters, numbers, underscore, and @ do not require quotes
  mix.exs:61

Resolving Hex dependencies...
Dependency resolution completed:
Unchanged:
  absinthe 1.4.0
  absinthe_ecto 0.1.3
  absinthe_plug 1.4.0
  argon2_elixir 1.2.9
  comeonin 4.0.3
  connection 1.0.4
  cowboy 1.1.2
  cowlib 1.0.2
  db_connection 1.1.2
  decimal 1.4.1
  ecto 2.2.6
  elixir_make 0.4.0
  gettext 0.13.1
  mime 1.1.0
  phoenix 1.3.0
  phoenix_ecto 3.3.0
  phoenix_pubsub 1.0.2
  plug 1.4.3
  poison 3.1.0
  poolboy 1.5.1
  postgrex 0.13.3
  ranch 1.3.2
* Getting phoenix (Hex package)
* Getting phoenix_pubsub (Hex package)
* Getting phoenix_ecto (Hex package)
* Getting ecto (Hex package)
* Getting postgrex (Hex package)
* Getting gettext (Hex package)
* Getting cowboy (Hex package)
* Getting absinthe (Hex package)
* Getting absinthe_plug (Hex package)
* Getting absinthe_ecto (Hex package)
* Getting comeonin (Hex package)
* Getting argon2_elixir (Hex package)
* Getting elixir_make (Hex package)
* Getting plug (Hex package)
* Getting mime (Hex package)
* Getting cowlib (Hex package)
* Getting ranch (Hex package)
* Getting connection (Hex package)
* Getting db_connection (Hex package)
* Getting decimal (Hex package)
* Getting poolboy (Hex package)
* Getting poison (Hex package)

This warning above about quoted keyword "test" should be fixed - for a newby it is scary...
it should be inviting and reassuring experience to run through a first tutorial like this.

Muddling along...

$ mix ecto.setup
warning: found quoted keyword "test" but the quotes are not required. Note that keywords are always atoms, even when quoted. Similar to atoms, keywords made exclusively of Unicode letters, numbers, underscore, and @ do not require quotes
  mix.exs:61

==> connection
Compiling 1 file (.ex)
Generated connection app
==> gettext
Compiling 1 file (.yrl)
Compiling 1 file (.erl)
Compiling 20 files (.ex)
warning: Enum.chunk/2 is deprecated. Use Enum.chunk_every/2 instead
  lib/gettext/po/parser.ex:58

warning: Enum.partition/2 is deprecated. Use Enum.split_with/2 instead
Found at 3 locations:
  lib/gettext/extractor_agent.ex:64
  lib/gettext/po/parser.ex:44
  lib/gettext/po/parser.ex:71

warning: String.lstrip/1 is deprecated. Use String.trim_leading/1 instead
  lib/gettext/po/parser.ex:65

warning: String.strip/1 is deprecated. Use String.trim/1 instead
Found at 2 locations:
  lib/gettext/po/parser.ex:47
  lib/gettext/po/parser.ex:55

warning: String.to_char_list/1 is deprecated. Use String.to_charlist/1 instead
  lib/gettext/po/tokenizer.ex:147

Generated gettext app
===> Compiling ranch
src/ranch_ssl.erl:128: Warning: ssl:ssl_accept/2: deprecated; use ssl:handshake/2 instead

==> poolboy (compile)
Compiled src/poolboy_worker.erl
Compiled src/poolboy_sup.erl
src/poolboy.erl:59: Warning: erlang:get_stacktrace/0: deprecated; use the new try/catch syntax for retrieving the stack backtrace
Compiled src/poolboy.erl
==> decimal
Compiling 1 file (.ex)
Generated decimal app
==> absinthe
Compiling 2 files (.erl)
/Users/ben/.asdf/installs/erlang/20.1/lib/erlang/lib/parsetools-2.1.5/include/yeccpre.hrl:60: Warning: erlang:get_stacktrace/0: deprecated; use the new try/catch syntax for retrieving the stack backtrace
Compiling 216 files (.ex)
warning: "not expr1 in expr2" is deprecated. Instead use "expr1 not in expr2" if you require Elixir v1.5+, or "not(expr1 in expr2)" if you have to support earlier Elixir versions
  lib/absinthe/phase/document/validation/scalar_leafs.ex:69

warning: System.stacktrace/0 outside of rescue/catch clauses is deprecated. If you want to support only Elixir v1.7+, you must access __STACKTRACE__ inside a rescue/catch. If you want to support earlier Elixir versions, move System.stacktrace/0 inside a rescue/catch
  lib/absinthe/pipeline/batch_resolver.ex:97

warning: "not expr1 in expr2" is deprecated. Instead use "expr1 not in expr2" if you require Elixir v1.5+, or "not(expr1 in expr2)" if you have to support earlier Elixir versions
  lib/absinthe/schema/rule/default_enum_value_present.ex:44

warning: calling super for GenServer callback handle_info/2 is deprecated
  lib/absinthe/subscription/registry.ex:966

warning: unused alias Blueprint
  lib/absinthe/type/built_ins/directives.ex:5

warning: function parse_boolean/1 is unused
  lib/absinthe/type/built_ins/scalars.ex:107

warning: function parse_float/1 is unused
  lib/absinthe/type/built_ins/scalars.ex:77

warning: function parse_date/1 is unused
  lib/absinthe/type/custom.ex:105

warning: function parse_id/1 is unused
  lib/absinthe/type/built_ins/scalars.ex:96

warning: function parse_datetime/1 is unused
  lib/absinthe/type/custom.ex:74

warning: function parse_int/1 is unused
  lib/absinthe/type/built_ins/scalars.ex:69

warning: function parse_naive_datetime/1 is unused
  lib/absinthe/type/custom.ex:90

warning: function parse_string/1 is unused
  lib/absinthe/type/built_ins/scalars.ex:88

warning: function parse_time/1 is unused
  lib/absinthe/type/custom.ex:120

warning: function parse_with/2 is unused
  lib/absinthe/type/built_ins/scalars.ex:115

Generated absinthe app
warning: String.strip/1 is deprecated. Use String.trim/1 instead
  /Users/Friddev/dev/FloatingFront/elixir/absinthe_tutorial3/absinthe_tutorial/deps/poison/mix.exs:4

==> poison
Compiling 4 files (.ex)
warning: Integer.to_char_list/2 is deprecated. Use Integer.to_charlist/2 instead
  lib/poison/encoder.ex:173

Generated poison app
==> elixir_make
Compiling 1 file (.ex)
Generated elixir_make app
==> argon2_elixir
mkdir -p priv
cc -std=c89 -pthread -O3 -Wall -g -Iargon2/include -Iargon2/src -Ic_src -I/opt/local/lib/erlang/erts-10.1/include -march=native -dynamiclib -undefined dynamic_lookup  argon2/src/argon2.c argon2/src/core.c argon2/src/blake2/blake2b.c argon2/src/thread.c argon2/src/encoding.c c_src/argon2_nif.c argon2/src/opt.c -o priv/argon2_nif.so
Compiling 3 files (.ex)
Generated argon2_elixir app
==> comeonin
Compiling 2 files (.ex)
Generated comeonin app
==> db_connection
Compiling 23 files (.ex)
warning: outdented heredoc line. The contents inside the heredoc should be indented at the same level as the closing """. The following is forbidden:

    def text do
      """
    contents
      """
    end

Instead make sure the contents are indented as much as the heredoc closing:

    def text do
      """
      contents
      """
    end

The current heredoc line is indented too little
  lib/db_connection.ex:572

warning: function slice/1 required by protocol Enumerable is not implemented (in module Enumerable.DBConnection.Stream)
  lib/db_connection.ex:9

warning: function slice/1 required by protocol Enumerable is not implemented (in module Enumerable.DBConnection.PrepareStream)
  lib/db_connection.ex:25

Generated db_connection app
==> phoenix_pubsub
Compiling 12 files (.ex)
Generated phoenix_pubsub app
===> Compiling cowlib
src/cow_multipart.erl:392: Warning: call to crypto:rand_bytes/1 will fail, since it was removed in 20.0; use crypto:strong_rand_bytes/1

===> Compiling cowboy
src/cowboy_websocket.erl:147: Warning: erlang:get_stacktrace/0: deprecated; use the new try/catch syntax for retrieving the stack backtrace
src/cowboy_websocket.erl:645: Warning: erlang:get_stacktrace/0: deprecated; use the new try/catch syntax for retrieving the stack backtrace
src/cowboy_websocket.erl:755: Warning: erlang:get_stacktrace/0: deprecated; use the new try/catch syntax for retrieving the stack backtrace

src/cowboy_rest.erl:69: Warning: erlang:get_stacktrace/0: deprecated; use the new try/catch syntax for retrieving the stack backtrace
src/cowboy_rest.erl:1006: Warning: erlang:get_stacktrace/0: deprecated; use the new try/catch syntax for retrieving the stack backtrace

src/cowboy_handler.erl:87: Warning: erlang:get_stacktrace/0: deprecated; use the new try/catch syntax for retrieving the stack backtrace
src/cowboy_handler.erl:116: Warning: erlang:get_stacktrace/0: deprecated; use the new try/catch syntax for retrieving the stack backtrace
src/cowboy_handler.erl:235: Warning: erlang:get_stacktrace/0: deprecated; use the new try/catch syntax for retrieving the stack backtrace
src/cowboy_handler.erl:290: Warning: erlang:get_stacktrace/0: deprecated; use the new try/catch syntax for retrieving the stack backtrace

==> mime
Compiling 1 file (.ex)
warning: String.strip/1 is deprecated. Use String.trim/1 instead
  lib/mime.ex:28

Generated mime app
==> plug
Compiling 1 file (.erl)
Compiling 44 files (.ex)
warning: calling super for GenServer callback handle_info/2 is deprecated
  lib/plug/upload.ex:166

warning: System.stacktrace/0 outside of rescue/catch clauses is deprecated. If you want to support only Elixir v1.7+, you must access __STACKTRACE__ inside a rescue/catch. If you want to support earlier Elixir versions, move System.stacktrace/0 inside a rescue/catch
  lib/plug/error_handler.ex:82

warning: System.stacktrace/0 outside of rescue/catch clauses is deprecated. If you want to support only Elixir v1.7+, you must access __STACKTRACE__ inside a rescue/catch. If you want to support earlier Elixir versions, move System.stacktrace/0 inside a rescue/catch
  lib/plug/conn/wrapper_error.ex:21

warning: System.stacktrace/0 outside of rescue/catch clauses is deprecated. If you want to support only Elixir v1.7+, you must access __STACKTRACE__ inside a rescue/catch. If you want to support earlier Elixir versions, move System.stacktrace/0 inside a rescue/catch
  lib/plug/conn/wrapper_error.ex:26

warning: "not expr1 in expr2" is deprecated. Instead use "expr1 not in expr2" if you require Elixir v1.5+, or "not(expr1 in expr2)" if you have to support earlier Elixir versions
  lib/plug/conn.ex:422

warning: "not expr1 in expr2" is deprecated. Instead use "expr1 not in expr2" if you require Elixir v1.5+, or "not(expr1 in expr2)" if you have to support earlier Elixir versions
  lib/plug/conn.ex:446

warning: "not expr1 in expr2" is deprecated. Instead use "expr1 not in expr2" if you require Elixir v1.5+, or "not(expr1 in expr2)" if you have to support earlier Elixir versions
  lib/plug/conn.ex:506

warning: "not expr1 in expr2" is deprecated. Instead use "expr1 not in expr2" if you require Elixir v1.5+, or "not(expr1 in expr2)" if you have to support earlier Elixir versions
  lib/plug/conn.ex:1033

warning: "not expr1 in expr2" is deprecated. Instead use "expr1 not in expr2" if you require Elixir v1.5+, or "not(expr1 in expr2)" if you have to support earlier Elixir versions
  lib/plug/conn.ex:1057

warning: "not expr1 in expr2" is deprecated. Instead use "expr1 not in expr2" if you require Elixir v1.5+, or "not(expr1 in expr2)" if you have to support earlier Elixir versions
  lib/plug/conn.ex:1089

warning: "not expr1 in expr2" is deprecated. Instead use "expr1 not in expr2" if you require Elixir v1.5+, or "not(expr1 in expr2)" if you have to support earlier Elixir versions
  lib/plug/conn.ex:1111

warning: System.stacktrace/0 outside of rescue/catch clauses is deprecated. If you want to support only Elixir v1.7+, you must access __STACKTRACE__ inside a rescue/catch. If you want to support earlier Elixir versions, move System.stacktrace/0 inside a rescue/catch
  lib/plug/debugger.ex:115

warning: Code.get_docs/2 is deprecated. Code.get_docs/2 always returns nil as its outdated documentation is no longer stored on BEAM files. Use Code.fetch_docs/1 instead
  lib/plug/debugger.ex:288

warning: Enum.partition/2 is deprecated. Use Enum.split_with/2 instead
  lib/plug/adapters/cowboy.ex:46

Generated plug app
==> absinthe_plug
Compiling 18 files (.ex)
warning: outdented heredoc line. The contents inside the heredoc should be indented at the same level as the closing """. The following is forbidden:

    def text do
      """
    contents
      """
    end

Instead make sure the contents are indented as much as the heredoc closing:

    def text do
      """
      contents
      """
    end

The current heredoc line is indented too little
  lib/absinthe/plug/document_provider/compiled.ex:45

warning: unused alias Blueprint
  lib/absinthe/plug/types.ex:56

Generated absinthe_plug app
warning: found quoted keyword "docs" but the quotes are not required. Note that keywords are always atoms, even when quoted. Similar to atoms, keywords made exclusively of Unicode letters, numbers, underscore, and @ do not require quotes
  /Users/Friddev/dev/FloatingFront/elixir/absinthe_tutorial3/absinthe_tutorial/deps/phoenix/mix.exs:138

==> phoenix
Compiling 74 files (.ex)
warning: "not expr1 in expr2" is deprecated. Instead use "expr1 not in expr2" if you require Elixir v1.5+, or "not(expr1 in expr2)" if you have to support earlier Elixir versions
  lib/phoenix/router/helpers.ex:181

warning: invalid type annotation. When using the | operator to represent the union of types, make sure to wrap type annotations in parentheses: {:ok, pid()} | {:error, reason :: term()} :: :ignore
  lib/phoenix/presence.ex:110

warning: function init/1 required by behaviour GenServer is not implemented (in module Phoenix.CodeReloader.Proxy).

We will inject a default implementation for now:

    def init(init_arg) do
      {:ok, init_arg}
    end

You can copy the implementation above or define your own that converts the arguments given to GenServer.start_link/3 to the server state.

  lib/phoenix/code_reloader/proxy.ex:3

warning: System.stacktrace/0 outside of rescue/catch clauses is deprecated. If you want to support only Elixir v1.7+, you must access __STACKTRACE__ inside a rescue/catch. If you want to support earlier Elixir versions, move System.stacktrace/0 inside a rescue/catch
  lib/phoenix/endpoint/render_errors.ex:51

warning: Enum.partition/2 is deprecated. Use Enum.split_with/2 instead
Found at 3 locations:
  lib/mix/phoenix/schema.ex:235
  lib/mix/tasks/phoenix.gen.model.ex:155
  lib/phoenix/endpoint/handler.ex:39

Generated phoenix app
==> postgrex
Compiling 62 files (.ex)
warning: function slice/1 required by protocol Enumerable is not implemented (in module Enumerable.Postgrex.Stream)
  lib/postgrex/stream.ex:22

warning: Enum.partition/2 is deprecated. Use Enum.split_with/2 instead
  lib/postgrex/error_code.ex:14

Generated postgrex app
==> ecto
Compiling 70 files (.ex)
warning: "not expr1 in expr2" is deprecated. Instead use "expr1 not in expr2" if you require Elixir v1.5+, or "not(expr1 in expr2)" if you have to support earlier Elixir versions
  lib/ecto/repo.ex:106

warning: "not expr1 in expr2" is deprecated. Instead use "expr1 not in expr2" if you require Elixir v1.5+, or "not(expr1 in expr2)" if you have to support earlier Elixir versions
  lib/ecto/schema.ex:1854

warning: function slice/1 required by protocol Enumerable is not implemented (in module Enumerable.Ecto.Adapters.SQL.Stream)
  lib/ecto/adapters/sql/stream.ex:12

warning: "not expr1 in expr2" is deprecated. Instead use "expr1 not in expr2" if you require Elixir v1.5+, or "not(expr1 in expr2)" if you have to support earlier Elixir versions
  lib/ecto/changeset.ex:1567

warning: function init/1 required by behaviour GenServer is not implemented (in module Ecto.Migration.Runner).

We will inject a default implementation for now:

    def init(init_arg) do
      {:ok, init_arg}
    end

You can copy the implementation above or define your own that converts the arguments given to GenServer.start_link/3 to the server state.

  lib/ecto/migration/runner.ex:1

warning: System.stacktrace/0 outside of rescue/catch clauses is deprecated. If you want to support only Elixir v1.7+, you must access __STACKTRACE__ inside a rescue/catch. If you want to support earlier Elixir versions, move System.stacktrace/0 inside a rescue/catch
  lib/ecto/query/planner.ex:1248

warning: System.stacktrace/0 outside of rescue/catch clauses is deprecated. If you want to support only Elixir v1.7+, you must access __STACKTRACE__ inside a rescue/catch. If you want to support earlier Elixir versions, move System.stacktrace/0 inside a rescue/catch
  lib/ecto/repo/preloader.ex:378

warning: Inspect.Algebra.surround_many/5 is deprecated. Use Inspect.Algebra.container_doc/6 instead
Found at 3 locations:
  lib/ecto/changeset.ex:2396
  lib/ecto/query/inspect.ex:15
  lib/ecto/query/inspect.ex:29

Generated ecto app
==> absinthe_ecto
Compiling 1 file (.ex)
Generated absinthe_ecto app
==> phoenix_ecto
Compiling 6 files (.ex)
Generated phoenix_ecto app
==> blog
Compiling 21 files (.ex)
warning: unused alias Resolvers
  lib/blog_web/schema/account_types.ex:4

== Compilation error in file lib/blog_web/schema.ex ==
** (Absinthe.Schema.Error) Invalid schema:
Elixir.BlogWeb.Schema:0: The root query type must be implemented and be a of type Object

  #Example
  defmodule MyApp.Schema do
    use Absinthe.Schema

    query do
      #Fields go here
    end
  end

  --------------------------------------
  From the graqhql schema specifiation

  A GraphQL schema includes types, indicating where query and mutation
  operations start. This provides the initial entry points into the type system.
  The query type must always be provided, and is an Object base type. The
  mutation type is optional; if it is null, that means the system does not
  support mutations. If it is provided, it must be an object base type.

  Reference: https://facebook.github.io/graphql/#sec-Initial-types

    lib/absinthe/schema.ex:294: Absinthe.Schema.__after_compile__/2
    (stdlib) lists.erl:1263: :lists.foldl/3
    (stdlib) erl_eval.erl:680: :erl_eval.do_apply/6
    (elixir) lib/kernel/parallel_compiler.ex:208: anonymous fn/4 in Kernel.ParallelCompiler.spawn_workers/6

Now this is not as it should be, lots of warnings about depricated stuff, and finally the
query used in the tutorial doesn't actually compile:
= Compilation error in file lib/blog_web/schema.ex ==
** (Absinthe.Schema.Error) Invalid schema:
Elixir.BlogWeb.Schema:0: The root query type must be implemented and be a of type Object

  #Example
  defmodule MyApp.Schema do
    use Absinthe.Schema

    query do
      #Fields go here
    end
  end

  --------------------------------------
  From the graqhql schema specifiation

  A GraphQL schema includes types, indicating where query and mutation
  operations start. This provides the initial entry points into the type system.
  The query type must always be provided, and is an Object base type. The
  mutation type is optional; if it is null, that means the system does not
  support mutations. If it is provided, it must be an object base type.

  Reference: https://facebook.github.io/graphql/#sec-Initial-types

    lib/absinthe/schema.ex:294: Absinthe.Schema.__after_compile__/2
    (stdlib) lists.erl:1263: :lists.foldl/3
    (stdlib) erl_eval.erl:680: :erl_eval.do_apply/6
    (elixir) lib/kernel/parallel_compiler.ex:208: anonymous fn/4 in Kernel.ParallelCompiler.spawn_workers/6

Everyone can see that this is not as it should be, I understand that there are more pressing issues than fixing tutorial material 101 for newbies - but it could be so much better and server twofold purpose in providing bug replicating testbed for test cases - then everyone would see benefit of having great tutorial material and the silly support issues would go down, and everyone be happy :-)

I really struggled the other day trying to get up and going with Absinthe given the current docs while testing what it would be like to switch from Apollo Server/node. First impressions were not great as the library appeared broken to me

For people who stumble here...
asdf local erlang 22.0
asdf local elixir 1.8
rm mix.lock
# add {:plug_cowboy, "~> 1.0"} and {:jason, "~> 1.1"} dependencies
mix deps.get
# sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
mix ecto.create
mix phx.server

Please update this repo and the tutorial. I understand this is probably unpaid work, but I feel this should be easy for beginners. I suggest getting it working with the most recent phoenix, removing postgres as a dependency, and dockerizing it. It could help with adoption (and eventually more maintainers 😃 ).
If there isn't time to work on this, maybe make a list of tasks and a point-of-contact big-and-visible?

I bought the book. Stuck on chapter 2 - preparing the application.
Same experience as the first commenter when installing the tutorial.
Now experiencing buyers remorse.

Hey folks, this tutorial definitely needs to be updated, I'll see if I can find some time over the holidays.
@alenm Notably, this tutorial has nothing to do with the book. The code for the book can be found on the prag prog website.

@benwilson512 The code from the book was producing similar errors. That's how I arrived on this github issue.
Re: Book
I spent an afternoon creating a new phoenix project (latest Elixir and Phoenix) adding the dependencies, migrations,  seeds and everything else from the book just to get it running.
With that said, this book is fantastic. I'm already on chapter 4, the content is easy to follow and I can see why GraphQL is so popular.
Thank you for putting the book together.


Modify travis' badge

close #58

Coverage remained the same at 96.09% when pulling 3a4cb87267fa763023515d41244e7a98c5dd4cc3 on modify-readme into 0384b25a8a8e01c912fad98363a4c37deec8bc18 on master.


Remove unused function

Let's setup the CI first (https://github.com/certik/dftatom/issues/33), then merge this.


[communication] Update jwt-decore to 4.0

Packages impacted by this PR

@azure/communication-common

Issues associated with this PR

#27594

Describe the problem that is addressed by this PR
Upgrades from 3.x to 4.x for jwt-decode.  This includes a breaking change of the default exports versus single exports.
What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen?
Are there test cases added in this PR? (If not, why?)
Provide a list of related PRs (if any)
Command used to generate this PR:**(Applicable only to SDK release request PRs)
Checklists

[x] Added impacted package name to the issue description
[ ] Does this PR needs any fixes in the SDK Generator?** (If so, create an Issue in the Autorest/typescript repository and link it here)
[ ] Added a changelog (if necessary)

API change check
API changes are not detected in this pull request.


supported-browsers

this is 1.7.3-release version

Hello, @yxz1025
This won't happen if you use the supported browsers for Pinpoint-Web.
If still does show above message, Please try to rebuild Pinpoint-Web.
No problem has been reported for 1.7.3.

I have same problem

check "Permission denied"
if you use nginx


Statusbar behind dimmer layer

Any chance to have the statusbar behind the dimmer layer?

You can set the statusBarAppearance to hidden on the bulletin manager before presenting if you don’t want the status bar to show over the dimming layer.
Let me know if that works for your case.

This is not a common use case, as far as I understand. Is there anything specific you want to achieve that would require the user to not easily see the status bar?
One option could be to set the backgroundViewStyle to blurred(style: UIBlurEffectStyle.dark, isDark: false) on the manager to force the dark status bar; though this is not a recommended approach because the contrast wouldn't be enough for some visually impaired users, who need to see the status bar.

Thanks! I will just go with the blurred bar :-)


Remove 'isCI' test in Package.swift to resolve CXShim build issue

I got a build issue with CXShim when using native Combine with 'Any iOS Device' target selected. This is due to isCI test yields false in Package.swift and thus low platforms that may not have native Combine support are targeted.

This pull request tries to fix this issue.

I somehow forget why we need this flag in the first place. But everything seems to work just fine. I'll fix the ci before merging this.

My PR just remove isCI flag from the if statement but not the variable itself, though it's not being used in any other places.
By the way, seems linux:latest CI tests fail due to Swift 5.4 or something related.

I just remembered why we need this flag. Supported platform is applied to both CombineX and CXShim. For users only use CombineX, system requirement doesn't make sense.
The best solution I can think of is to move CXShim to a separate repo. For now please use environment variable CX_CONTINUOUS_INTEGRATION.

Moving CXShim out could be a solution, but I think that current setup won't affect users that only uses CombineX since system requirements are only tuned up for those uses native Combine.
Actually , I found that #if canImport(Combine) is not a reliable test on Apple platforms, it's always true with latest SDK. After adding extra if #available() test, now combineImp resolves its default correctly and won't block users that only use CombineX.

Moving CXShim out could be a solution, but I think that current setup won't affect users that only uses CombineX since system requirements are only tuned up for those uses native Combine.
Actually , I found that #if canImport(Combine) is not a reliable test on Apple platforms, it's always true with latest SDK. After adding extra if #available() test, now combineImp resolves its default correctly and won't block users that only use CombineX.

Unfortunately this wont't work, currently it seems there's no better way to solve this problem.

Hi, https://github.com/cx-org/CXShim is available now. Would you mind give it a try?


Create Inverse of Matrix Calculator

Design a code/logic to calculate Inverse of Matrix
Your can use either of any methods:

Inverse of a Matrix using Elementary Row Operations (Gauss-Jordan)
Inverse of a Matrix using Minors, Cofactors and Adjugate

Keep in mind!
Design a code in the way, so that we can easily show steps for what we are doing.

I would like to give this a go if you don't mind. I am relatively new to contribution in open source so I won't mind if you decide to do this yourself either.

should I assign this issue to you?

Yes

Thanks for showing interest, your every contribution is valuable. Feel free to ask your doubts if any.

Thanks. I will look into the codebase some more and come up with questions before I start working on the solution.
Do you have any contributing, branch naming or commit guidelines?

You can make a PR directly into main branch .
Kindly Read:
README.md
CONTRIBUTING.md

I might take a few days to get this done, do you have any deadline for this? Asking this because I won't be able to deliver this urgently.

Sure, I will give you next 3 days more.
Have you understood the codebase or may I help?

I will try my best to get done in three days but there is a good chance I won't be able to finish it this week as I am busy in my day job.

Take your time, I will not remove assignment, until someone else wants to work on it.

Can you please tell are you a GSSOC'21 participant?
Read

I am not.

Can i have this issue to solve ?

Feel Free to ask your doubts, if any

@SravanKumarBattu Any Update?

hello!
I am a GSSoC'21 participant, can I work on this issue.

Feel free to ask your doubts, if any
Deadline 21 March,2021 (11:59 PM IST)

am a GSSoC'21 participant , can i work on this issue

@mrunalvilas any update?

Hi, I would like to work on this issue under GSSOC'21. Kindly assign this issue to me.

Go ahead!
Feel free to ask your doubts, if any
Deadline 28 March,2021 (11:59 PM IST)

Hii sir, please tell me whether I need to show the inverse of the matrix or steps too?

Hey @sairish2001 , I would like to work on this issue under Gssoc'21 participant , Please assign to me .

Hi sir, I am working on the issue but I want more time to complete it.Kindly extend the deadline.

@sairish2001, please tell me whether I need to show the steps of finding the inverse also?

Yes , you have to show steps

Deadline extended 5 April,2021

@sairish2001 please review the implementation.

Sir, please tell me that how should I add the case when the inverse doesn't exist i.e |A|=0.

Everything is fine, just use
.toFixed(3) to set the precision of float number

Sir, please tell me that how should I add the case when the inverse doesn't exist i.e |A|=0.

You can run the determinant code before it's execution, make a check using if else

Does that mean I need to write the code for determinant also or somehow I can use it from the above function? Please tell.

Make a PR ,this condition will be treated in next issue

Okay sir

@sairish2001 sir, .toFixed(3) method is not working for some steps. Please see.

may be because it's a string
try to convert it into Float and then apply fixed precision
parseFloat(____).toFixed(3)


Delete Editor from Editor Quick Pick

Is your feature request related to a problem? Please describe.
I believe the Edit Editors text file can become redundant.
Describe the solution you'd like
Open Editor Quick Pick -> Select Editor -> Hit Delete key -> Harpooned Editor is deleted
Describe alternatives you've considered
Opening the Edit Editors view and deleting the line there. This takes 3 extra steps: deleting the line, saving, and closing the tab.

Hello there, thank you for your interest in the project.
As far as I'm aware, it doesn't seem to be possible to create keybindings as you suggest in a quick pick selection.
If you know of some way to do this, I would gladly implement it for you, however I don't and I'm unable to find any docs on doing it.

I've not developed a VSCode extension myself, but checked a few things.
As far as I can see, it's indeed not possible at the moment to catch key events in the Quick Pick menu.

One solution could be to create a multi-step quick pick

Open quick pick -> Select Editor -> Enter -> Open / Delete option,
but I don't think this is ideal as it introduces an extra step to open the file.

I also found there are "buttons" you can add to the Quick Pick selector https://code.visualstudio.com/api/references/vscode-api#QuickPickItem

Anyway, I've bound alt+shift+[1-4] to harpoon tabs, and alt+[1-4] to fetch them, and it works amazingly well for me :)
I can simply overwrite the harpoons that I want to "delete", and am using it without the harpoon list menus at the moment.
Thanks a bunch for this extension I didn't know I need this badly :)

1. One solution could be to create a multi-step quick pick

Open quick pick -> Select Editor -> Enter -> Open / Delete option, but I don't think this is ideal as it introduces an extra step to open the file.

Yeah i agree this would not be idea, as it would introduce a possibly unwanted step for all users of the extension.

2. I also found there are "buttons" you can add to the Quick Pick selector https://code.visualstudio.com/api/references/vscode-api#QuickPickItem

This sounds like an interesting idea, I will test it out when I get find the time for it.

Thanks a bunch for this extension I didn't know I need this badly :)

No problem! I'm just happy that people are using it :smile:

I have implemented this through the button we talked about. It will there in the next release


error

When i try to upload a file or create a folder, i get an error 404 Not Found.

We're not aware of such a flaw since we tried these features multiple times and everything seems to work great, we'd appreciate it if you can give us more info.


Add image processing feature to store images

Description:
This image processing platform stores data from a given camera platform to disk. This is a MVP because perhaps there are more efficient ways to add timestamps, crop, or other manipulation before saving.
The interval is given by the entity which provide the data.

Pull request in home-assistant.github.io with documentation (if applicable): home-assistant/home-assistant.github.io#<home-assistant.github.io PR number goes here>
Example entry for configuration.yaml (if applicable):
camera:
  - platform: ffmpeg
    name: test
    input: /dev/video1
image_processing:
  - platform: file
    file_path: /home/user/.homeassistant/test/
    timestamp: True
    source:
      - entity_id: camera.test

Checklist:
If user exposed functionality or configuration variables are added/changed:

[ ] Documentation added/updated in home-assistant.github.io

If the code communicates with devices, web services, or third-party tools:

[x] Local tests with tox run successfully. Your PR cannot be merged unless tests pass
[x] New dependencies have been added to the REQUIREMENTS variable ([example][ex-requir]).
[x] New dependencies are only imported inside functions that use them ([example][ex-import]).
[x] New dependencies have been added to requirements_all.txt by running script/gen_requirements_all.py.
[x] New files were added to .coveragerc.

I like the idea, but think that should be not a entity. Can you make a component with a service that allow to make a snapshot. This need to be async for access to camera fetch function.

It should also not be part of image processing but instead be it's own component.

If we don't add a timestamp to the image (and thus can drop the dependency on Pillow), this can become a service of the camera platform.

It should use the new secure function to check the filepath on snapshot service if we do that like Paulus say.

If you use a full-blown service like zoneminder then this feature doesn't make sense. But I guess that it could still be useful to create a snapshot for our camera platform.
I will create a service and drop the timestamp feature.

You can always add the timestamp in the filename 👍

That was my idea because this way I don't need to check if a previous file exists and increment a counter or whatever.
First I must get some knowledge about saving an image without Pillow. Struggling with image as the type seems to be a generator. Guess that I will talk with @pvizeli first.

This PR seems to have gone stale. Closing it. You can reopen it when you're ready to finish it.

@fabaff will you consider picking this up again?
It would be really nice to be able to store the snapshot directly within HASS, especially if you will send it to clients using some notifier


Parsing surprise for values inside of tick or quote marks

When a value is inside of a tick mark or a quote mark, and there is a leading or trailing space inside of the enclosing marks, the user is most likely to expect the leading or trailing space to stay attached to the value until the application consuming the iniparser library receives the value.
Instead, lines 581 -> 595 will uniformly strip leading and trailing spaces from values inside of quote/tick marks.
A possible way to resolve this is:
else if(sscanf (line, "%[^=] = \"%[^\"]\"", key, value) == 2
     || sscanf (line, "%[^=] = '%[^\']'",   key, value) == 2)
{
    /* Usual key=value inside of tickmarks or quote marks, with or without comments */
    strcpy(key, strstrip(key));
    strcpy(key, strlwc(key));
    //Don't want to strstrip the value, because the user put a space inside the ticks delibrately.
    //strcpy(value, strstrip(value));
    /*
     * sscanf cannot handle '' or "" as empty values
     * this is done here
     */
    if (!strcmp(value, "\"\"") || (!strcmp(value, "''")))
    {
        value[0]=0 ;
    }
    sta = LINE_VALUE ;
}
else if(sscanf (line, "%[^=] = %[^;#]",     key, value) == 2)
{
    /* Usual key=value inside of tickmarks or quote marks, with or without comments */
    strcpy(key, strstrip(key));
    strcpy(key, strlwc(key));
    strcpy(value, strstrip(value));

    sta = LINE_VALUE ;
}

For the record, The issue with leading and trailing spaces has been resolved. The issue with dumping ini files not having quotes around certain valued have not.
One possible (easy) fix would be to simply include quotes around all values when dumping.

fix with commit d224e57


Web/short credentials (transferred from TheOrgBook project)

Updates for short lived credentials displaying a marker instead of a small block object that requires zooming.
Refactor timeline into smaller more manageable files for future edits.
Enable archive to show all archived credentials (previously showed no previous credentials unless they were specifically marked as archived)

@ianco - please take a look when you get a chance. I'd like to get this into IndyCat, but don't know how to test it locally.

Tested; working with test data from prod; merged.


Improve the mocking of minecraft and discord for test_main.py

Coverage increased (+0.9%) to 65.854% when pulling 811dfb4102aa1acbf22f3ed241561e9645152c25 on failing-test into 61139e993ea057e3b3933dfc797fdd30edab73e8 on master.

Coverage increased (+0.9%) to 65.854% when pulling 811dfb4102aa1acbf22f3ed241561e9645152c25 on failing-test into 61139e993ea057e3b3933dfc797fdd30edab73e8 on master.

Progress towards #3


Multiple animations in a glTF 2.0 model causes an error

When there are multiple animations in a glTF 2.0 model with different end times, there is an error in Cesium's ability to wrap around the times back to zero appropriately once the end time is passed.

@moneimne please look at this after SIGGRAPH.


migration doc detail added

Wait for app to spin up and database to be ready before running migration command. I think this might be needed?

Codecov Report

Merging #370 (0ec9d6b) into develop (daafeb0) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop     #370   +/-   ##
========================================
  Coverage    60.70%   60.70%
========================================
  Files           80       80
  Lines         2555     2555
  Branches       373      373
========================================
  Hits          1551     1551
  Misses         995      995
  Partials         9        9

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


Draft: Circular queue

TBD

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (a5b4de8) 100.00% compared to head (b8d5054) 100.00%.

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #21   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           24        24
  Lines         1511      1550   +39
  Branches       248       262   +14
=========================================
+ Hits          1511      1550   +39

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Merging with Project Committee

The Maintainers' Committee was founded to hear the concerns and suggestions of the Foundation's member projects. We feel that the mandate of the committee has been fullfilled and that our current discussions overlap with the mandate of the Project Committee. As a result, the board has voted to merge the Maintainers' Committee back into the Project Committee.
We encourage all members of the committee to attend the Project Committee meetings and continue the discussion there. Thank you for all your help and ideas.

I wrote one post in Chinese .NET community to promote Maintainer's Committee. Now, it's time to promote Project Committee.