[BUG] CMD+Shift+Up/Down and Tab broken for moving/indenting lists and sublists in certain pages

Describe the bug
In certain large files, with long, complicated, highly nested lists/outlines, (1) CMD+Shift+Up/Down fails to move list/sublist up/down, respectively, and instead highlights text through top/bottom of page, and (2) Tab and Shift+Tab don't indent a list and its children, but rather only the bullet that I'm on. See screen recording for examples.
After seeing other issues, I hypothesized that this was due to inconsistent indentation in my file, empty lines, and so on, so with python, I looked for such cases (empty lines and lines that weren't 0 mod 4, since this is my tab size). I found a case of 25 spaces, and I corrected it to 24, and I found several cases of empty lines in lists (they looked like - after some number of indents, ending a list), and I deleted these lines. This fixed the problem for me.
To Reproduce
However, I can't actually reproduce this behavior by creating smaller lists that have the properties I had to fix in the above lists (empty lines and inconsistent indentation), so it feels like the plugin is successfully accounting for these things except in lists that are very long or complicated.
Expected behavior
I'd expect these hot keys to account for inconsistent indentation by rounding to the nearest indentation suggested by the number of spaces(e.g., consider 1 space 0 spaces, consider 3 spaces 4 spaces) and to be fine with empty lines. Indeed, they don't break the hotkeys when I manufacture small lists with the same properties.
Screenshots
If applicable, add screenshots to help explain your problem.
Environment (please complete the following information):

OS: macOS Sonoma 14.5
Obsidian Version: 1.6.7
Plugin Version: 4.8.1

Additional context
Add any other context about the problem here.
https://github.com/user-attachments/assets/4ec45840-693e-4a9a-b992-84036425871f

For me, it seems to happen if somehow the indentation was mixed (spaces, and tabs).
I'm not sure how it happened in the first place, and I suspect it was from copy/paste, I experience the same with the following observations.
I found the following workaround to resolve it:

Copy the text to another text editor e.g. Sublime, and fix the indentation to either all spaces or all tabs
Paste the text back into Obsidian

I found that the issue can be reproduced with the text below.
Note that all of the lists below look ok in Obsidian, but for the "mixed" lists, the sublist indentation, and the item moving features seem to break.
All spaces
- Level 1
    - Level 2.1
        - Item 2.1.1
        - Item 2.1.2
        - Item 2.1.3
    - Level 2.2
        - Item 2.2.1
        - Item 2.2.2
        - Item 2.2.3

All tabs
- Level 1
	- Level 2.1
		- Item 2.1.1
		- Item 2.1.2
		- Item 2.1.3
	- Level 2.2
		- Item 2.2.1
		- Item 2.2.2
		- Item 2.2.3

Mixed - all spaces with one tab line
- Level 1
	- Level 2.1
        - Item 2.1.1
        - Item 2.1.2
        - Item 2.1.3
    - Level 2.2
        - Item 2.2.1
        - Item 2.2.2
        - Item 2.2.3

Mixed - all tabs with one spaces line
- Level 1
	- Level 2.1
		- Item 2.1.1
		- Item 2.1.2
		- Item 2.1.3
    - Level 2.2
		- Item 2.2.1
		- Item 2.2.2
		- Item 2.2.3

This has become an issue for me, disabling plugin until fixed.

Thank you so much for this clear explanation of the problem! But the clean-up process is too grueling. It would be great if the Outliner plugin could highlight problem areas of a page and even better would be to suggest changes or as users permit, auto-correct to make the page compliant with Outliner's needs. Without those helps, it is too difficult to clean up imported files.
Opening pages in Visual Studio Code and turning on all of the Whitespace characters (spaces, tabs) makes it possible to see where spaces have gotten added among tabs. But it is still quite time-consuming! And it still isn't obvious if the number of tabs is appropriate for each line until the file is open in Obsidian. Even after cleaning up spaces/tabs in files, Outliner still didn't work for me often. Or it would work in some parts of the page and not in others.
I have been exploring migrating from Logseq but the time required to clean up all of my pages, which all render fine in Logseq, is too much.
One particular item to note in moving from Logseq is all of the collapse:true lines to be deleted. If you do a replace all for these, it is important to make sure that they aren't leaving spaces behind that will break Outliner's functionality


or logic in filtering

In my db I have something like this:
[
  {
    "id": "89be578a-ef59-4cf2-96ca-5911bf95d959",
    "count": 1
  },
  {
    "id": "464e2921-2a44-4bfb-b533-89f2a75f8ba5",
    "count": 5
  },
  {
    "id": "111837ad-7b91-4fd3-b7c8-daa7b194e8fa",
    "count": 6
  },
  {
    "id": "111837ad-7b91-4fd3-b7c8-daa7b194e8fa",
    "count": 8
  },
  {
    "id": "111837ad-7b91-4fd3-b7c8-daa7b194e8fa",
    "count": 10
  }
]

And I would like to request like this
/connections?count=1&count_gte=8

and get items with count 1,8 and 10.
Currently it seems that json-server applies some kind of "and" logic and this request become mutually exclusive. As a result I get empty array
Proposal
allow "or" request

@typicode what do you think about it?

I would love to see such an option! Maybe someone may fork this project #1219 ?

How would you define an "or" in the parameter?
Maybe with _or_: /connections?count=1_or_count_gte=8?

I can imagine something like this:
/connections?count=1&count_or_gte=8
Inspired by:
https://gt-tech.bitbucket.io/spring-data-querydsl-value-operators/README.html
https://gt-tech.bitbucket.io/spring-data-querydsl-value-operators/EXAMPLE_APPLICATION.html

I like. What about multiple fields? How is that done in spring? E.g.:
?idA=123_or_idB=123

Would be magic if can consider the Lucene or ElasticSearch syntax, it's really useful

How does the syntax look exactly?

Obviously it's add more complexity:
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html

Any updates on this?


Data Science with Python : Complete Overview of Regression

Welcome to 'DSWP' Team, good to see you here
This issue will helps readers in acquiring all the knowledge to learn about getting involved with Regression. Tutorial to Regression and how it's applied using visual representations and sample code, techniques you can follow up with regression and it's usage.
To get assigned to this issue, add your serial numbers mentioned in the spreadsheet of "Data Science with Python", the approach one would follow and choice you prefer (Documentation, Audio, Video). You can go with all three or any number of options you're interested to work on.
This issue is created for beginners and who aren't assigned to any issues yet.
If you had referred any resources, add them up in "DS Resources". Similarly if you had used datasets, include them in "DS Datasets".
Domain : Machine Learning
Mentors Assigned : Yash Goel / Kareem Negm
Points to Note :
The issues will be assigned on a first come first serve basis, 1 Issue == 1 PR.
"Issue Title" and "PR Title should be the same. Include issue number along with it.
Changes should be made inside the Datascience_With_Python/ directory & Datascience_With_Python branch.
Follow Contributing Guidelines & Code of Conduct before start Contributing.
This issue is only for 'GWOC' contributors of 'DSWP' domain.
All the best. Enjoy your open source journey ahead. 😎

Yash Kataria (Serial no - 861)
Approach : What is Regression, evaluating regression, linear regression(in detail), polynomial regression
Type : Documentation

Issue assigned to @yashh18 for documentation

I want to apply for video.
Name - Pradipta Nandi

I want to contribute in issue #735
Name - Pradipta Nandi
S.No. - 250
Type - Video
Approach - Introduction to Regression, Linear Regression, Polynomial Regression, Classification Regression

Issue assigned to @ProMinato500 for video contribution

name : Mohit Kumar
Approach: What is Regression, evaluating regression, linear regression(in detail), polynomial regression
Type : Documentation

@m0hit-kumar, issue is assigned to documentation, video. If you are ok, you can take audio.

i want to contribute only for documentation, if its already assigned why there is a label of documentation.

Hello, the mentor here for any help

I want to contribute to this issue :
Name-Bhaswati Roy
Domain-Data Science with Python
Batch-19
Serial No-787
Issue Number-735
Type-Audio
Contribution Approaches-what is regression, types of regression like linear, multiple, polynomial, lasso ridge, why logistic regression is called regression

I want to contribute in this issue under documentation.

i want to contribute only for documentation, if its already assigned why there is a label of documentation.

Labels are tagged for issues that are been assigned to. @m0hit-kumar

@BhaswatiRoy, you want to work for audio contribution?

@BhaswatiRoy, you want to work for audio contribution?

Sorry maam but I am already working on multiple issues rn....

Hello, I am Deepthi M with serial number:172, Batch-5. I would like to do audio on this issue.
My approach: a detailed explanation

Issue assigned to @deepthi1107 for audio contribution


Cannot open valut in Obsidian v0.9.0

The workflow works perfectly for opening a vault with Obsidian v0.8.15. However, it gave the error message like: "Cannot find the vault" with Obsidian v0.9.0, if there are spaces in the vault name, e.g. "Obsidian Help".

It should now work and also updated to use Obsidian's new url scheme.


Internal Service Error when adding multiple objects in one query

I'm getting the error edgedb.errors.InternalServerError: column Person~2.7adf6daf-a0c8-11ec-8579-db52b929793f does not exist when I'm bulk adding Person objects.
My code for adding (the field values are meaningless as I created a testing system that uses random values):
WITH
    model_0 := (INSERT Person { first_name := <str>$first_namegraphORM0, last_name := <str>$last_namegraphORM0, tags := array_unpack(<array<str>>$tagsgraphORM0), ordered_tags := <array<str>>$ordered_tagsgraphORM0, created_at := <datetime>$created_atgraphORM0, slug := <str>$sluggraphORM0 }),

    model_1 := (INSERT Person { first_name := <str>$first_namegraphORM1, last_name := <str>$last_namegraphORM1, tags := array_unpack(<array<str>>$tagsgraphORM1), ordered_tags := <array<str>>$ordered_tagsgraphORM1, created_at := <datetime>$created_atgraphORM1, slug := <str>$sluggraphORM1 }),

    models := (model_0 UNION model_1)

 SELECT models { slug, last_name, inserted_at, tags, ordered_tags, created_at, full_name, id, first_name }

and the query variables are:
{'first_namegraphORM0': 'Jon0', 'last_namegraphORM0': 'Quack0', 'tagsgraphORM0': ['yaaas', 'hey'], 'ordered_tagsgraphORM0': ['coding', 'python'], 'created_atgraphORM0': datetime.datetime(2022, 3, 22, 17, 36, 29, 903700, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')), 'sluggraphORM0': '73uAr7gH5p', 'first_namegraphORM1': 'Jon1', 'last_namegraphORM1': 'Quack1', 'tagsgraphORM1': ['yaaas', 'hey'], 'ordered_tagsgraphORM1': ['coding', 'python'], 'created_atgraphORM1': datetime.datetime(2022, 3, 22, 17, 36, 29, 904712, tzinfo=zoneinfo.ZoneInfo(key='America/New_York')), 'sluggraphORM1': '8NHUm8YEtN'}

I don't get this error every time, but I get it most times right now. I am using a Digital Ocean server running v1.2.
The person schema is:
  type Person {
    required property first_name -> str;
    property last_name -> str;
    multi property tags -> str;
    property ordered_tags -> array<str>;
    required property inserted_at -> datetime {
        readonly := true;
        default := datetime_current();
    }
    property created_at -> datetime;
    multi link people_i_follow -> Person {
        on target delete allow;
    }
    required property slug -> str {
        constraint exclusive;
    }
    multi link my_followers := .<people_i_follow[is Person];
    link best_friend -> Person {
        on target delete allow;
    }
    property full_name :=
      .first_name ++ ' ' ++ .last_name
      if exists .last_name
      else .first_name;
  }

It appears to be something to do with the SELECT at the end because when I just bulk add I'm currently not getting this error.

The bug seems to be in fetching a computed property of a union of inserts.
Looks like it works if you drop full_name from the select.


When stock level reaches zero locations are cleared

Came across a bug where when stock levels are tracked and purchased then the locations are being cleared on the stock update and so it disappears from the admin for users that are location restricted.
Does:
https://github.com/tastyigniter/TastyIgniter/blob/a53def5edfc2da5982181e72673dcb9f8ecd3a2c/app/admin/traits/ManagesOrderItems.php#L33
need a with('locations') or anything to stop them being purged?

I doubt not eager loading the relation is the issue, maybe something else?

I was clutching at straws a bit :)
Just seeing it a lot - menu items losing their locations which then means users restricted to locations aren't able to see them in their list. Leave the issue open and I'll investigate more, eventually I'll find the reason!

Its happened again for my client this weekend - its definitely related to the stock tracking as the locations get lost at that point. Any directions you can point me to?

Yea did some digging and the culprit seems to be the Locationable trait. I'll tweak the base Model so we can set relations directly without using model event observers.

Thanks! 👍

This should have been fixed in v3.04-beta.24.4, please confirm.
See d81bed80c3b7c97f4da1681f9805c7274c29067e and tastyigniter/flame@d197dd951a67ddbaa1a9e1c79a410d6d0aff50b3

It will be after Christmas before I can upgrade the install that was having issues. So let’s mark as closed for now and I can reopen if it crops up again.
Thank you.

On 27 Nov 2020, at 22:37, Sam Poyigi<EMAIL_ADDRESS>wrote:

This should have been fixed in v3.04-beta.24.4, please confirm.
See d81bed8 and tastyigniter/flame@d197dd9
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


Slow network wrong data being shown on tabs

I am showing rows of data via tabs using view good table.
While in fast network the table rendering is good, however when network is slow and there is large amount of data to be fetched it does not show the correct data.
For example
I have two tabs shown via vue good table
a) received
Shows entries that were received by current logged in user.
b) forwarded
Which were forwarded by current logged in user.
Received section may get empty when each table is forwarded using check box and will be listed under forwarded tab.
Forwarded contain thousands of entries that were forwarded.
Now when I open my Chrome Dev tools and set network to 3G slow and switch fast between these two tabs, the data in forwarded will start showing under received tab.
I found a similar issue in vuejs forum
https://forum.vuejs.org/t/slow-when-hiding-component-with-large-content/27277/9
Thanks

@sarath49 when you have some time, could you try the beta build and see if this problem exists for that build as well?
documentation: https://github.com/xaksis/vue-good-table/tree/new-build
upgrade guide: https://github.com/xaksis/vue-good-table/wiki/Guide-to-upgrade-from-1.x-to-v2.0

closing.


An error occurred while RSpec/FilePath cop was .rb

Expected behavior
No bug
Actual behavior
Bug
Steps to reproduce the problem
Runned bundle exec rubocop after updating to the version 0.88.0
RuboCop version
An error occurred while RSpec/FilePath cop was inspecting /data/jenkins/workspace/PROJECT_NAME/app/mailers/application_mailer.rb.
(omitted, same error)

9 errors occurred:
An error occurred while RSpec/FilePath cop was inspecting /data/jenkins/workspace/PROJECT_NAME/app/mailers/application_mailer.rb.
(omitted, same error)

Errors are usually caused by RuboCop bugs.
Please, report your problems to RuboCop's issue tracker.
https://github.com/rubocop-hq/rubocop/issues

Mention the following information in the issue report:
0.88.0 (using Parser <IP_ADDRESS>, rubocop-ast 0.3.0, running on ruby 2.7.1 x86_64-linux)

Maybe dup with #999 and rubocop-rspec 1.43.1 has been released. Can you bump rubocop-rspec to 1.43.1? Thank you!

Thanks, @koic

You're welcome!


Distinguish between years and numeric values

4-digit values are currently special-cased to omit commas in case they're years. If we had a way of distinguishing value types (since years can work for both range and categorical filters), we'd omit them from years but allow them to display for all other numeric values.

Perhaps a number formatting function (or format string) should be part of the configuration to facilitate this.


refactor odinson index code into an interface and provide implementation that supports incremental indexing

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Update New-SPEnterpriseSearchSecurityTrimmer.md

Fixed example and parameter formatting.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sharepoint/sharepoint-ps/sharepoint-server/New-SPEnterpriseSearchSecurityTrimmer.md
:white_check_mark:Succeeded
View (sharepoint-ps)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


SwiftUI demo app

Would be great to have a simple SwiftUI demo app showcasing common features like function call and RAG

We do! In the llama-stack-apps repo: https://github.com/meta-llama/llama-stack-apps/tree/main/examples/ios_calendar_assistant


undefined method `coverage' for #SimpleCov::SourceFile

I'm logging this bug as well as a solution for anyone who encounters this.
I ran a bundle update and I've been getting the following error when my CI system tried to send the coverage results to Coveralls:
Coveralls encountered an exception:

NoMethodError
undefined method `coverage' for #<SimpleCov::SourceFile:0x000000000cb4b610>
Did you mean?  coverage_data

/home/travis/build/haiafara/haiafara-ro/vendor/bundle/ruby/2.6.0/gems/coveralls-0.7.1/lib/coveralls/simplecov.rb:50:in `block in format'
/home/travis/.rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/forwardable.rb:230:in `each'
/home/travis/.rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/forwardable.rb:230:in `each'
/home/travis/build/haiafara/haiafara-ro/vendor/bundle/ruby/2.6.0/gems/coveralls-0.7.1/lib/coveralls/simplecov.rb:40:in `format'
/home/travis/build/haiafara/haiafara-ro/vendor/bundle/ruby/2.6.0/gems/simplecov-0.18.5/lib/simplecov/result.rb:49:in `format!'
/home/travis/build/haiafara/haiafara-ro/vendor/bundle/ruby/2.6.0/gems/simplecov-0.18.5/lib/simplecov/configuration.rb:196:in `block in at_exit'
/home/travis/build/haiafara/haiafara-ro/vendor/bundle/ruby/2.6.0/gems/simplecov-0.18.5/lib/simplecov.rb:214:in `run_exit_tasks!'
/home/travis/build/haiafara/haiafara-ro/vendor/bundle/ruby/2.6.0/gems/simplecov-0.18.5/lib/simplecov.rb:202:in `at_exit_behavior'
/home/travis/build/haiafara/haiafara-ro/vendor/bundle/ruby/2.6.0/gems/simplecov-0.18.5/lib/simplecov/defaults.rb:27:in `block in <top (required)>'

This is because it seems simplecov 0.18 dropped the coverage property from their SourceFile object.

The solution was to switch to tagliala/coveralls-ruby-reborn which is a well maintained gem, as opposed to this.
For those curious the fix was here: https://github.com/tagliala/coveralls-ruby-reborn/commit/46b2949e0e79b936e640146076f95ead0d322fad#diff-07e218a680913917fbacbf63ea2056e2R47
Thanks for this issue's thread: https://github.com/lemurheavy/coveralls-ruby/issues/130

I have this same issue.


Fix and change siteUrl to url

According to the output on the console as well as per testing: --SiteUrl do not exist anymore it was changed to --url

Thank you for submitting your change to the project, we really appreciate your help.
For us to be able to review and merge your changes as quickly as possible, please review our pull request process.
(DELETE THIS PARAGRAPH AFTER READING)

Pull Request Title
Please ensure that you have included a meaningful title describing your change.
For example...

Adds 'spo orgassetslibrary remove' command. Closes #1042
Extends 'spo site list' command with support for returning deleted sites. Closes #1335
Fixes 'spo listitem add' command. Closes #1297

(DELETE THIS SECTION AFTER READING)

Linked Issue
Please ensure that your change is related to an open issue, we will not accept changes without a related issue.
You should link your pull request to an open issue using the Closes keyword, referencing the issue using # and the issue id. This will ensure that the issue is automatically closed when your pull request is merged.
(DELETE THIS SECTION AFTER READING)

Closes #

One PR = One Commit
We prefer to review pull requests that contain a single commit as this makes it easier to keep the history clear for everyone and track what's changed.
If you are new to git, we'll squash your commits for you when merging your changes.

(DELETE THIS SECTION AFTER READING)

New Command = Five Files
If your pull request contains the changes for a new command, it should contain five changed files.
For example, a pull request for adding 'teams tab add' command, would include...

src/m365/teams/commands.ts
src/m365/teams/commands/tab/teams-tab-add.ts
src/m365/teams/commands/tab/teams-tab-add.spec.ts
docs/src/config/sidebars.js
docs/docs/cmd/teams/tab/tab-add.mdx

(DELETE THIS SECTION AFTER READING)

Main Branch Only
You should only submit your changes to the main branch.
Pull requests submitted to other branches will be rejected.
(DELETE THIS SECTION AFTER READING)

Merge Conflicts
Merge conflicts occur when the branch you want to merge is out of date. To ensure this does not happen, you should ensure that your branch is up-to-date before submitting your pull request by executing the below git commands.
git checkout main
git pull upstream main
git push origin main
git checkout <your-branch>
git rebase main
git push origin <your-branch> -f
(DELETE THIS SECTION AFTER READING)

Hi @StfBauer
Looking at the code used in this command seems like the option is called siteUrl.
https://github.com/pnp/cli-microsoft365/blob/31581480ee11b33adda233dea7f442e0f47575d6/src/m365/spo/commands/site/site-appcatalog-add.ts#L37-L39
Are you sure you are targeting the latest version of CLI (v6.8.0)?

Yeah you are right. Outdated version


Don't run ./build-mac.sh on Linux

The script assumes it's only ever executed on a Mac. When it runs on Linux it builds a Linux library.

This reverts a bit of my earlier PR: https://github.com/cashapp/zipline/pull/1298/files

CI failure seems legitimate. Something else is broken.


ui/helper.c error

Yo UP how are you, just tweaking colours and noticed the bell icon jumps a pixel. Photo explaination.

Thank you for OEFW!!!

It's not an OEFW bug. The original has the same issue according to Ghidra. It only affects the "clearing" of the "1" / "2" rendering.

It's not an OEFW bug. The original has the same issue according to Ghidra. It only affects the "clearing" of the "1" / "2" rendering.

Copy that!


[Enhancement] Cache and Events refactor

Looking into the events and cache system to refact it for better useability & efficiency

+1
Listeners really need refactoring to be separable and reusable

In what way? You can already make a listener in a separate function/file.

This Issue is being closed as I am holding it off till post v2.0 stable release.


Add missing sass requires

Looks like some of this files reference ::Sass but don't ever require it. The load of these files is kinda undefined, so its probably best to just for each one to be explicit and require sass if they intend to use ::Sass
cc @rafaelfranca @lucasmazza

Should fix the build fail under https://github.com/rails/sass-rails/pull/317


Feature Request: Auto Switch VPN Profiles

Description:
I use a VPN when on WiFi or Mobile Data (WireGuard through the OVPN application).
Thanks to This application ~ which I just found ~ I no longer need to manyally stop Gnirehtet on the phone.
But I still need to restart the VPN service every time after I connected using Gnirehtet.
Thank you a lot for that. I just installed gnirehtetx and am amazed by how well-made it is 🌟
Proposed Solution:
Detect active VPN Connections before creating gnirehtet's connection ~ and restarting the previously active VPN after gnirehtet disconnects.
I hope this is possible.
It would make my life a bit easier ~ and surely for others too :blush:
Even if what I described isn't possible. It would still be pretty helpful to automatically open the previous VPN application (in my case that would be all that's needed since OVPN autoconnects upon start).
Thank you Very Much for this great application and for Your time.
Greetings from Germany
Bela. 🐯

I don't think it's possible to generically restart a previous VPN connection (If you know of a way, feel free to show me). I have set up a similar thing for NetGuard for myself: https://github.com/ReVanced/revanced-patches-template/pull/1581 using an Automation App (https://f-droid.org/en/packages/com.jens.automation2/) which executes the command on USB disconnect. Not sure if that works for OVPN, too. But it should be possible with the Automation App to start another application on USB disconnect, if that's enough for you.


AWS_LWA_READINESS_CHECK_PORT not being picked up correctly

Minor issue - according to the docs, AWS_LWA_READINESS_CHECK_PORT defaults to whatever the value of AWS_LWA_PORT is. However, in testing I see a behaviour where if I don't set AWS_LWA_READINESS_CHECK_PORT to 8000 explicitly, the Lambda wont function, leading me to think, resolution of the AWS_LWA_READINESS_CHECK_PORT env var might be incorrect, or the docs could be worded better.
This times out:

This does not:

Oh, the code is in main branch, but not yet released. We'll cut a minor release soon.

We are working on a few updates to the deployment pipeline. Once that is done, we will publish the new release.

v0.7.1 is released.


FFXIV client crash

I don't know if this is caused by XIVAlexander or not, but I thought I'd throw the log here in case it is.
XivAlexander_20211118_113909_145.log

Which map did you try to teleport to? Also, check if the newest release (will be there very soon) fixes the problem, and try launching game via the official launcher too.

So far I have not yet seen this recur but I will keep an eye out. It seems to happen rarely when teleporting places, but the destination does not appear to affect it as far as I can tell.
I'll keep using the latest version and update if anything happens.


Warning: The JavaFrame figure property will be removed in a future release.

Hello,
I am a loyal academia user since 2011. I have recently seen this error pop up on R2019b. Are there plans to update export_fig to work around this future issue?

You are using an old version of export_fig - update your version.


XCFramework & Catalyst Build

Hello,
My App should support iOS/iPad / Emulator and Catalyst support. Unfortunately, AudioKit pod's do not support mac catalyst. I didn't went into the details but I can understand that the build process and the CocoaPod system is complex and require a lot of work, so I definitively do not blame you for this.
Since I moved my libraries to the XCFramework I felt that using this setup for linking AudioKit would be the easiest way to support this 3 architectures (mostly because I know understand a little the build process). I rebuild the 4.9.5 branch with the XCFramework support. When I linked with catalyst support, I got the following error:

(Screenshot from a SO question here: https://stackoverflow.com/questions/61308037/compilation-error-when-porting-audiokit-ios-app-to-catalyst-macos-app/61479464#61479464 )
I am not sure weither it is an error in the build configuration of AudioKit or if it is caused by a bug in XCodebuild (This is something I will lt you figure out) but it happens that the
SwiftInterface exported in the framework for the Catalyst Architecture is bugged.
Fortunately, it can be fixed by hand with a plain text editor. For my usage, I had to make the following change by hand:

Remove the empty .init initializer in AKSampler interface:
Go to @objc open class AKSampler : AKPolyphonicNode, AKComponent { section and remove the line @objc override dynamic public init().
In the enableMIDI prototypes, replace  = midi.client, by  = AudioKit.midi.client,.
Replace (node: AKNode? = output, by (node: AKNode? = AudioKit.output, in AKNodeRecorder prototype.

This process will apply to the different swift interface files you are using. For example x86_64-apple-ios-macabi.swiftinterface.
I do not pretend that this is sufficient to fix all the problem that arrised during the export. it seams that all this can be fixed by renaming the AudioKit class to something else. Since this is a major breaking change, some peoples may prefer to edit the XCFramework and fix the swift interface by hand. I choose to let the information here so that both your team and the AudioKit user knows about this problem and the corresponding workaround. It may also be helpful for your team when you will come to officially support XCFramework.
@megastep

You should use our v5-develop branch for proper Catalyst support. We also have a beta pod you can use from our beta pod repo at https://github.com/AudioKit/Specs.
The problem is the Swift interface files need to be properly fixed and as a result we had to rename some classes in v5. But it's an easy migration.

FYI you are correct in your assessment and we basically renamed the AudioKit class to AKManager in v5 for this purpose.

Hello,
I'm trying to use AudioKit with React-Native on Mac using Catalyst, but couldn't be able to find out a way around the error below:

I've tried it with:

installing the latest stable version (v4.9.5) via pod
building from source
using catalyst builds from xcframework.zip
and lastly, as you guys suggested above, pod installing v5.0.b1.
All returns the same error.

Without AudioKit, React-Native builds successfully with the warning on the screenshot above. The only difference is the error.
Could you point me in the right direction?

Looking at that last screenshot I think you might still be using the AKSettings class which was renamed to AKManager in the AK 5.0 beta. Maybe look for that?

At this stage I haven't implemented AudioKit at all. This is happening at the build right after adding the framework / installing the pod.

Hello again @megastep ,
Have you had a chance to look into this? Is this an AudioKit related problem, or is it related to smth else?
Do you think I should open a new issue for this?

I haven't had a chance to take a close look at this yet, but it looks to me like a possible mismatch in Xcode versions maybe? If you use the 5.0 beta pod it shouldn't reference AKSettings. And these other errors might be coming from using a different version of Swift, so maybe using an older version of Xcode?

I'm using Xcode 11.4 with Swift version 5.0.

Hello @megastep ,
I got AudioKit v4.9.5 and v5.0.b1 to be successfully built with Catalyst in an Objective-C project with React-Native on top of it.
Now I'm trying to just build an example audio I/O app, copying the code from AudioKit Examples; to input sound from a headphone mic and output it from headphone speakers. Yet I get no output sound, netiher from mic nor from oscillator.
I'm getting these errors:
2020-05-13 00:16:34.966261+0300 ObjCTrial2[22685:368459] [User Defaults] Couldn't write values for keys (
    ApplicationAccessibilityEnabled
) in CFPrefsPlistSource<0x600002c04b80> (Domain: com.apple.Accessibility, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: Yes): setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access
2020-05-13 00:16:34.970072+0300 ObjCTrial2[22685:368459] [User Defaults] Couldn't write values for keys (
    FullKeyboardAccessFocusRingEnabled
) in CFPrefsPlistSource<0x600002c04b80> (Domain: com.apple.Accessibility, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: No): setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access
2020-05-13 00:16:34.973566+0300 ObjCTrial2[22685:368459] [User Defaults] Couldn't write values for keys (
    ApplicationAccessibilityEnabled
) in CFPrefsPlistSource<0x600002c04b80> (Domain: com.apple.Accessibility, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: No): setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access
2020-05-13 00:16:35.112237+0300 ObjCTrial2[22685:368459] Metal API Validation Enabled
2020-05-13 00:16:35.288575+0300 ObjCTrial2[22685:368459] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x60000025a260> F8BB1C28-BAE8-11D6-9C31-00039315CD46
2020-05-13 00:16:35.332341+0300 ObjCTrial2[22685:368459]  HALC_ShellDriverPlugIn::Open: Can't get a pointer to the Open routine
2020-05-13 00:16:35.332764+0300 ObjCTrial2[22685:368459]  HALC_ShellDriverPlugIn::Open: Can't get a pointer to the Open routine
2020-05-13 00:16:35.333207+0300 ObjCTrial2[22685:368459]  HALC_ShellDriverPlugIn::Open: Can't get a pointer to the Open routine
2020-05-13 00:16:35.388869+0300 ObjCTrial2[22685:368459] [settings] AKSettings.swift:setSession(category:with:):309:Cannot set AVAudioSession.setActive to true Error Domain=AVAudioSessionErrorDomain Code=561015905 "Error: Cannot activate session when app is in background." UserInfo={NSLocalizedDescription=Error: Cannot activate session when app is in background.} (AKSettings.swift:setSession(category:with:):309)
2020-05-13 00:16:35.389063+0300 ObjCTrial2[22685:368459] [general] AKManager.swift:output:77:Could not set session category: Error Domain=AVAudioSessionErrorDomain Code=561015905 "Error: Cannot activate session when app is in background." UserInfo={NSLocalizedDescription=Error: Cannot activate session when app is in background.} (AKManager.swift:output:77)
2020-05-13 00:16:35.391460+0300 ObjCTrial2[22685:368459] [settings] AKSettings.swift:setSession(category:with:):309:Cannot set AVAudioSession.setActive to true Error Domain=AVAudioSessionErrorDomain Code=561015905 "Error: Cannot activate session when app is in background." UserInfo={NSLocalizedDescription=Error: Cannot activate session when app is in background.} (AKSettings.swift:setSession(category:with:):309)
2020-05-13 00:16:36.789774+0300 ObjCTrial2[22685:368459] Stop oscillators
2020-05-13 00:16:38.018679+0300 ObjCTrial2[22685:368459] Start oscillators
2020-05-13 00:16:38.488316+0300 ObjCTrial2[22685:368459] Stop oscillators

The code I'm using is from the HelloObjectiveC example app:
https://gist.github.com/0xmtn/480af10146e3ed00c7e203b288a980cf
If I use the commented code in the gist above, which I was experimenting with, the log becomes:
2020-05-13 00:08:13.104920+0300 ObjCTrial2[22643:364307] [User Defaults] Couldn't write values for keys (
    ApplicationAccessibilityEnabled
) in CFPrefsPlistSource<0x600002c00200> (Domain: com.apple.Accessibility, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: Yes): setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access
2020-05-13 00:08:13.107042+0300 ObjCTrial2[22643:364307] [User Defaults] Couldn't write values for keys (
    FullKeyboardAccessFocusRingEnabled
) in CFPrefsPlistSource<0x600002c00200> (Domain: com.apple.Accessibility, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: No): setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access
2020-05-13 00:08:13.109929+0300 ObjCTrial2[22643:364307] [User Defaults] Couldn't write values for keys (
    ApplicationAccessibilityEnabled
) in CFPrefsPlistSource<0x600002c00200> (Domain: com.apple.Accessibility, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: No): setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access
2020-05-13 00:08:13.300604+0300 ObjCTrial2[22643:364307] Metal API Validation Enabled
2020-05-13 00:08:13.501454+0300 ObjCTrial2[22643:364307] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x60000025caa0> F8BB1C28-BAE8-11D6-9C31-00039315CD46
2020-05-13 00:08:13.559324+0300 ObjCTrial2[22643:364307]  HALC_ShellDriverPlugIn::Open: Can't get a pointer to the Open routine
2020-05-13 00:08:13.560049+0300 ObjCTrial2[22643:364307]  HALC_ShellDriverPlugIn::Open: Can't get a pointer to the Open routine
2020-05-13 00:08:13.560596+0300 ObjCTrial2[22643:364307]  HALC_ShellDriverPlugIn::Open: Can't get a pointer to the Open routine
2020-05-13 00:08:13.729940+0300 ObjCTrial2[22643:364307] [avas] AVAudioSession_MacOS.mm:258:-[AVAudioSession getChannelsFromAU:PortName:PortID:]: ERROR in getting channel layout for auScope<PHONE_NUMBER> element 1
2020-05-13 00:08:13.732381+0300 ObjCTrial2[22643:364307] [avas] AVAudioSession_MacOS.mm:258:-[AVAudioSession getChannelsFromAU:PortName:PortID:]: ERROR in getting channel layout for auScope<PHONE_NUMBER> element 1
2020-05-13 00:08:13.734886+0300 ObjCTrial2[22643:364307] [avas] AVAudioSession_MacOS.mm:258:-[AVAudioSession getChannelsFromAU:PortName:PortID:]: ERROR in getting channel layout for auScope<PHONE_NUMBER> element 0
2020-05-13 00:08:13.736923+0300 ObjCTrial2[22643:364307] Input Devices: (
    "<Device: CADefaultDeviceAggregate-22643-0 (CADefaultDeviceAggregate-22643-0)>"
)
2020-05-13 00:08:13.737038+0300 ObjCTrial2[22643:364307] Output Devices: (
    "<Device: CADefaultDeviceAggregate-22643-0 (CADefaultDeviceAggregate-22643-0)>"
)
2020-05-13 00:08:13.800938+0300 ObjCTrial2[22643:364307] [avas] AVAudioSession_MacOS.mm:258:-[AVAudioSession getChannelsFromAU:PortName:PortID:]: ERROR in getting channel layout for auScope<PHONE_NUMBER> element 1
2020-05-13 00:08:13.805909+0300 ObjCTrial2[22643:364307] [avas] AVAudioSession_MacOS.mm:258:-[AVAudioSession getChannelsFromAU:PortName:PortID:]: ERROR in getting channel layout for auScope<PHONE_NUMBER> element 0
2020-05-13 00:08:13.806204+0300 ObjCTrial2[22643:364307] Output Device: <Device: CADefaultDeviceAggregate-22643-0 (CADefaultDeviceAggregate-22643-0)>
2020-05-13 00:08:13.809111+0300 ObjCTrial2[22643:364307] [settings] AKSettings.swift:setSession(category:with:):309:Cannot set AVAudioSession.setActive to true Error Domain=AVAudioSessionErrorDomain Code=561015905 "Error: Cannot activate session when app is in background." UserInfo={NSLocalizedDescription=Error: Cannot activate session when app is in background.} (AKSettings.swift:setSession(category:with:):309)
2020-05-13 00:08:13.809341+0300 ObjCTrial2[22643:364307] [general] AKManager.swift:output:77:Could not set session category: Error Domain=AVAudioSessionErrorDomain Code=561015905 "Error: Cannot activate session when app is in background." UserInfo={NSLocalizedDescription=Error: Cannot activate session when app is in background.} (AKManager.swift:output:77)
2020-05-13 00:08:13.810804+0300 ObjCTrial2[22643:364307] [settings] AKSettings.swift:setSession(category:with:):309:Cannot set AVAudioSession.setActive to true Error Domain=AVAudioSessionErrorDomain Code=561015905 "Error: Cannot activate session when app is in background." UserInfo={NSLocalizedDescription=Error: Cannot activate session when app is in background.} (AKSettings.swift:setSession(category:with:):309)
2020-05-13 00:08:16.522940+0300 ObjCTrial2[22643:364307] Stop oscillators
2020-05-13 00:08:17.095790+0300 ObjCTrial2[22643:364307] Start oscillators
2020-05-13 00:08:17.547562+0300 ObjCTrial2[22643:364307] Stop oscillators
2020-05-13 00:08:17.940112+0300 ObjCTrial2[22643:364307] Start oscillators

My Audio Midi Setup is like this:

I looked up for the error messages separately without any luck. I wonder if I'm missing something here or is it because of the prematurity of Catalyst?

Did you try changing the format to 44.1KHz?

Yes, the default was 44.1KHz, same errors. Then I changed it to 48.0KHz just to try, same thing again.
Does this have any significance? Error: Cannot activate session when app is in background.
This is a maccatalyst app, runnning on "My Mac". Why the message says "app is in background"?

Are you using SwiftUI? If so check my comments in the ContentView.swift file for drums:
https://github.com/AudioKit/AudioKit/blob/fddc10e2f30c20af56ddf2f771fc1bee16d5bfc6/Examples/iOS%2BCatalyst/Drums/Drums/ContentView.swift#L36
// Important to start AudioKit after the app has moved to the foreground on Catalyst
      self.conductor.start()

This may be an Apple bug, but you have to wait for things to appear before starting AudioKit, for now.


Light reflections in VR while static light toggle is enabled.

Using the "First" environment although the lights remain static in vr (no lazers or ring movement), you can still see the reflection of color & flickering off some of the environment. Though while static on Desktop everything is fine and no color or flickering can be seen.

This is a known issue that I chose to ignore - I looked around for a decent while trying to figure out what causes those things to light up to no avail


Memguard must manage memory allocation to work

See HN article for more detail. TL;DR, golang does not specify any particular semantics about memory addresses. Calling mlock on a go-managed memory address provide little to nothing in the way of guarantees, because that memory will be copied and moved around as the runtime sees fit.
This is pretty much unavoidable. The address you call mlock on isn't even guaranteed to be the address passed in via memlock.Lock(b).

I've been reading all of the comments, and I do realise that there's a lot of things that I've missed.
Luckily this is version v0.1.0 and I plan to have all of these issues fixed soon.

Might be prudent to post a warning in the README so nobody ends up using this for truly sensitive data.

To be clear: it's not that this isn't ready for use in production. It's that this doesn't work. That's a bigger concern here.

So I've had to deal with a problem very similar to this (for encryption keys in Go). The other commenters are correct, you need to allocate and release the memory yourself. I took the approach of using a call to unix.Mmap to create the buffer and unix.Munmap in your Cleanup/Wipe/Destroy function (along with zeroing the buffer in a for loop). Specifically, the following call to unix.Mmap:
prot := unix.PROT_READ | unix.PROT_WRITE
flags := unix.MAP_PRIVATE | unix.MAP_ANONYMOUS | unix.MAP_LOCKED
buffer, err := unix.Mmap(-1, 0, length, prot, flags)

According to the MAP_LOCKED section of the mmap() man page this does the same thing as mlock/munlock.
I only did this for Linux, but NetBSD has MAP_WIRED. For Darwin, FreeBSD, OpenBSD, or Solaris you might just have to use mmap + mlock then later munlock + munmap. Darwin also has wired memory, but I don't know how to use it from Go.
Windows is sort of weird there is VirtualAlloc and VirtualFree (along with VirtualLock and VirtualUnlockwhich you are already using).VirtualAllocandVirtualFree` aren't part of x/sys/windows, so that might be a bug.

@josephlr Yep, on Unix there's also Mprotect which is available on all the kernels since it seems to be available in the sys package. And on Windows there's VirtualProtect too, in addition to VirtualLock.
However, VirtualProtect isn't available in sys/windows either, so we'll see how that's going to be handled.

Looking more into it, MAP_PRIVATE is COW, which might cause problems. Also, I'd be wary of using the MAP_LOCKED flag since it's ignored on older kernels and isn't as resilient as using mlock(2) itself. Mmap for allocations with it being strictly PROT_NONE unless being written to or read from sounds like a decent start.

@libeclipse To spell this out more clearly, none of those calls matter. The issue is you can't use any of them with memory allocated by the Go runtime because it owns those buffers and can move them at will without telling you. For this to work you need to fundamentally rework the API such that "protected" data lives in memory allocated some other way, probably directly by libc's malloc. This is further complicated by the fact that you can't ever return data from a safe buffer to an unsafe one or you lose the game. So every API that consumes a locked buffer will have to understand whatever custom data structure you come up with. This feels like a losing proposition to me but if you want to go for it, then 👍.

@libeclipse It doesn't seem like mprotect or VirtualProtect deals with preventing data from being paged to disk. You don't need to worry about COW with MAP_PRIVATE as the mapping would be anonymous anyway. Also, you really don't want to use PROT_NONE as that makes everything segfault, for example:
buffer, err := unix.Mmap(-1, 0, 10, unix.PROT_NONE, unix.MAP_PRIVATE|unix.MAP_ANONYMOUS)
if err != nil {
	panic(err)
}
// This will SEGSEGV
buffer[0] = 1

As for using MAP_LOCKED for an anonymous mapping, it does the exact same thing as mmap + mlock without the potential race condition (as the MAP_LOCKED flag is older than the oldest Linux kernel that Go supports, so you don't have to worry about things being ignored). But you're right in that doing mmap + mlock would be simpler across all of the unix platforms.
@coderanger It would probably be easier to just use unix.Mmap (or windows equivalent) instead of spinning up cgo just to make a call into malloc.
It seems like if you simplified the API to just have two functions:
func Make(length int) (data []byte, err error) {}
func Destroy(data []byte) (err error) {}

or perhaps using a containing struct to make it harder to mess up:
type LockedBuffer struct {
	buffer []byte
}
func Make(length int) (*LockedBuffer, error) {}
func (b *LockedBuffer) Destory() (error) {}

you could get something working.

@josephlr Having something throw a SIGSEGV is not such a bad thing, imo. It means that if anything tries to modify or access the data that is protected, the program will crash. This is similar to the view libsodium takes on things. Then when the user wishes to read/write, he/she can explicitly unlock it and then lock it again. Mprotect can be used to change the permissions.
And good point about MAP_LOCKED. The flag is available in the golang stdlib so I'm not sure if they handle the cases where it's not available on the kernel, by mlocking specifically maybe, but to just be more explicit (and for ease of implementation) doing mmap + mlock separately is probably best.
For Windows, there is this library by one of the Golang contributors that implements VirtualAlloc, VirtualFree, and VirtualProtect.


P1 vs P2 plan deployment

how is the difference made between a plan P1 and a P2 deployment. Assuming you want to use both plans in one tenant?

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

ID: 65f58c48-23a1-29e6-4358-7733b12668c8
Version Independent ID: 27f7f229-ae73-3cd0-287f-8592aaa3928b
Content: Set up and configure Microsoft Defender for Endpoint Plan 1
Content Source: microsoft-365/security/defender-endpoint/mde-p1-setup-configuration.md
Product: m365-security
Technology: mdep1
GitHub Login: @denisebmsft
Microsoft Alias: deniseb

@denisebmsft Please help us in resolving this issue. Thanks

Hello,
Same question from my side on this topic: https://github.com/MicrosoftDocs/microsoft-365-docs/issues/7414
We do have multiple licenses Plan 1 and Plan 2 and Defender Azure and now it is full mess, what is supported? how to stay license compliant? completely unclear :)

Hello @lightupdifire @svinusje and thank you so much for posting this good question. Currently, whenever a customer has multiple subscriptions, the highest subscription takes precedence.
For example, suppose that you're using Microsoft Defender for Business, and you start a trial or purchase Microsoft Defender for Endpoint Plan 2. Your tenant experience will now reflect Defender for Endpoint Plan 2, and you won't see the Defender for Business experience. It works the same way with Defender for Endpoint Plan 1. If you have licenses for Defender for Endpoint Plan 2, you'll see all the capabilities of Plan 2.
That said, you're asking a very good question about how to stay license compliant, and I'll look into that.

Hello again @lightupdifire @svinusje. I just wanted to let you know that our product team is working on this issue at priority.


[WIP] Issue native tokens to initial miners for testing.

We need some tokens for testing, so issue some to initial miners.

Merged branch cli-for-grpc-style-contract for cli testing.


[WIP, experimental] Async Git Repository class

This is an experimental spike of an alternate GitRepository class that uses nodegit rather than git-utils. We would love to speed up the responsiveness of various aspects of Atom (tree-view, etc) by doing more Git operations asynchronously, and it would also be nice to get out of the business of maintaining our own libgit2 wrapper.
Here are a few notes about the reasoning behind some decisions here:

It follows the existing GitRepository API closely, changing everything sync to Promise-based async.

The assumption is that having a close mapping between the sync and aysnc APIs will make it less painful to refactor client packages.
I'm not 100% sure we should keep this design, so it's a tradeoff between design quality and incurred labor. Ideally we'll keep this private and experimental all the way until Atom 2.0 so that we can change it as we need to.

The class is written in ES6, because Coffeescript, while lovely, is the past, and the community seems to have consensus on transpilers like babel.

This includes an .eslintrc, because I've found it extremely useful.
The spec is still in coffee because I thought it might be easier to just modify it as I go to make sure I had the same coverage on both classes, though at the moment I wish I'd run it through a coffee -> js converter first.

I haven't done a lot of ES6 or constructed a Promise-based API for anything serious before, so I'm sure to misuse some APIs.
We'll need to keep the sync GitRepository class around for backwards compat, so I haven't decided quite how to integrate this with the current provider system.

Perhaps we add a private method on the sync repo like GitRepository.async that returns the Promise for an async repo, so that internal callers can use async without changing anything in the GitRepositoryProvider?

Documentation is sparse because I wasn't sure this was a good path to follow until today. I'll flesh it out more as I go.

cc @atom/core @orderedlist

What's the plan for transitioning to this API? I was thinking our existing synchronous GitRepository could always have an async property that points to this new version. We can then encourage users of today's APIs to use the async version like this:
let repository = someMethodReturningARepository().async

When we hit Atom 2.0 and transition to the repository always being async, we can retain the async property and just point it to self, such that repository.async === repository returns true.
However, I'm not sure how this all meshes with your idea of keeping this API private for a while. In my mind, we should start transitioning the community to any async APIs we feel confident about. We might not want to make every method on the class public, but I'd like to deprecate existing synchronous functionality as soon as we can.

I was thinking our existing synchronous GitRepository could have an async property that points to this new version.

Yep, I agree with this, it's suggested in the bullet points above.

However, I'm not sure how this all meshes with your idea of keeping this API private for a while. In my mind, we should start transitioning the community to any async APIs we feel confident about.

This is not necessarily a conflict with how I feel, I'm just not expecting we'll feel confident about the APIs for a while.

:zap: Thanks for moving us in the right direction on this.

it's suggested in the bullet points above.

Sorry, I didn't comprehend it initially for some reason. Of course async will have to be a promise, and when we transition all our repository-returning APIs to be asynchronous, we'll have to have an async property on the returned promise that references the original promise.

Oh hey, this will be excellent for packages that integrate with git. :+1: :grin:

:heart: ES6 instead of :coffee:script!

Thought: it seems like a good place to start using this in prod & packages is to proxy all the did-change-status events from the sync implementation to the async implementation. At this moment I'm just writing tests that assert the events fire correctly in async-land at all and calling through from sync to async in a few methods (e.g. getPathStatus(path)) just so the side-effects happen, but ultimately we could remove anything solely concerned with generating events out of the sync implementation entirely and just re-emit the ones generated by the async implementation.

Thanks for the feedback @steelbrain!

You guys really hate placing semicolons don't you? :D

By not adding semi colons, are you adding overhead to the JIT?

On Oct 23, 2015, at 12:04 PM, Alex Cruz<EMAIL_ADDRESS>wrote:
You guys really hate placing semicolons don't you? :D
—
Reply to this email directly or view it on GitHub https://github.com/atom/atom/pull/9213#issuecomment-150619013.

@SeanJM I don't know why github doesn't use them in their code, is this because they have most of their code in Ruby?

https://www.quora.com/Are-there-performance-differences-between-using-semi-colons-and-not-using-semi-colons-in-JavaScript https://www.quora.com/Are-there-performance-differences-between-using-semi-colons-and-not-using-semi-colons-in-JavaScript
According to this the answer is no.

On Oct 23, 2015, at 1:11 PM, Alex Cruz<EMAIL_ADDRESS>wrote:
@SeanJM https://github.com/SeanJM I don't know why github doesn't use them in their code, is this because they have most of their code in Ruby?
—
Reply to this email directly or view it on GitHub https://github.com/atom/atom/pull/9213#issuecomment-150636085.

 In any case this is starting to come together nicely.

but there are a bunch of :red_circle: on travis

You may want to run tests against the current released version rather than master locally just in case that's a factor.

Whoops! @nathansobo i meant to post that comment on the tree-view PR. Tabs are hard.

Over in #9469 as of this moment I have just the buffer callback stuff implemented (i.e. the specs that are weirdly flaky on this branch) and consistently green. I'm not sure what the essential difference is though. One difference is that I implemented ::relativize in that PR rather than just proxying to the git-utils version, but I'm not sure how that's relevant. I also implemented the specs slightly differently, with some gentle use of async/await. In any case, tomorrow I'll port some of the differences over to this branch and see if it makes things green here, else I'll port things from here to there one section of specs at a time and see if any one area starts to make async-land flaky.

So I think this branch is in a pretty good spot now.

Ported more tests to JS.
Moved from Jasmine waiting to async/await as much as I know how.
Fixed a race between file writing/git reading.

The tests seem to consistently pass locally now. I'd be really curious to know how they behave for you now too :pray:
My plan for Monday was to:

[ ] Continue porting tests to JS.
[ ] Make terribleWait and terribleSleep less terrible.
[ ] See about getting CI building again so we can have some consistency to testing.

If you wanted, we could divide and conquer that.

Fixed a race between file writing/git reading.

😻

If you wanted, we could divide and conquer that.

Sure thing, let me attack this CI thing first.

The last build failed on a bunch of license checks, at least a couple related to eslint & standard added as devDependencies. One could argue that those libs are only used to develop, not in the distribution, so it's fine that their licenses aren't permissive. though I'm not 100% sure that holds water. For now I'll just take them out of the package.json (but leave in the config for standard) and see if that clears up this check license task.

So the tests are in a pretty good spot now, I think. There's still a potential race condition but I haven't seen in practice. I'm thinking over how to best fix it.
But the more pressing problem is that CI is timing out.
master currently builds in ~1200s, where this is timing out at 1800s. So somehow this added ~10 minutes to the build.
I'm not entirely sure where the time's being spent. Anecdotally we seem to spend a lot of time in the Installing apm... phase. We're using node-pre-gyp to download the nodegit binary (or at least, that happens locally; unclear how to verify that from CI output).
@atom/feedback Anyone have ideas? If not I'll probably try to break some of the steps down and time them.

nodegit takes forever to build in apm because there aren't any binaries. This is probably something we should fix in nodegit.

Also, atom.io can have high latency sometimes, and we hit it many times to install core packages. I do plan to do a performance pass there at some point in the future, but in any case it would be so cool if we could just bundle / cache those dependencies rather than going over the network.

nodegit takes forever to build in apm because there aren't any binaries. This is probably something we should fix in nodegit.

nodegit uses node-pre-gyp to provide binaries, but it looks like it special-cases Electron apps to always build from source: https://github.com/nodegit/nodegit/blob/b259b0587c6e44e3939e49055b90845fbfce9221/lifecycleScripts/install.js#L27 Presumably because Electron wasn't supported until fairly recently? https://github.com/mapbox/node-pre-gyp/pull/175

but in any case it would be so cool if we could just bundle / cache those dependencies rather than going over the network

I'd love to do some sort of binary caching but I'd really love for it to not block this.

@joshaber I brought up the Installing apm... thing in chat the other day because it takes forever on my laptop as well though it "should be fast", worth looking into. Though it would be a shame to yak shave too much. The nodegit node-gyp path seems like the lowest-hanging fruit.

Installing nodegit actually has to compile libgit2 as well, which takes some time. Realistically, an apm binary for nodegit would make this wayyyyy faster.

Yeah I'm looking into adding Electron binaries to nodegit.

@orderedlist is right with building libgit2 but it's even worse than that. NodeGit has to build libgit2/libssh2/openssl which is as horrible as you think it is. Luckily we don't have a C++11 requirement anymore but it's still super slow.
Anyways, so nodegit/nodegit#783 is in and ready to go so really the next step is to have the CI build/publish binaries for linux/darwin/win32 during a release. That way everything is just automated and ready to go. The only thing that would break is if a new version of electron is released there's no way for nodegit to pick up on that and we won't be able to grab a binary for the latest.
The only way around that (that I can think of right now) is just having a box that hooks into releases of electron and automates building/publishing for nodegit.
This might not be too much of a problem when Electron gets to v1 but still, it's going to be a pain to always go back and build/publish this guy when Electron gets a version bump.

:metal: Tests are passing, just need to get build times down so it doesn't time out :metal:

Alright, I believe this is ready for review :pray: @atom/feedback
There are two caveats:

The Windows builds are still timing out because we're having issues getting Windows nodegit binaries. Still a work in progress. I won't merge this until that's taken care of.
Submodule support is incomplete. I'm working on it, but I think this can land without it, so long as everyone's aware.

My current plan is:

Add submodule support once a new nodegit version is out.
Convert tree-view, status-bar, and git-diff to async.

Alright, I believe this is ready for review :pray: /cc @atom/feedback

Gave it a review pass, left some comments. I know a lot of this code was ported over from the original sync version so I apologize if any of the comments pertain to things that were legacy and are just showing up in the diff because of the movement.

:heart: This looks great.

@kevinsawicki Thanks! :sparkling_heart: I think I :hammer:'d them all.
Any other feedback is welcome. Otherwise this is just waiting on Windows nodegit binaries.

Any other feedback is welcome.

Took another pass, left a few minor comments. This is looking really good though :+1:

:zap: :eyes:

Thanks @YuriSolovyov!

Look at that lovely green checkmark :heart_eyes:

I've verified Mac and Windows binaries are working. Linux will have to wait until after the new year.

Coincidentally, 2016 is the year of Linux on the desktop, so that works out great.

:penguin: :fire:

Even though it's not yet 2016, I verified that the Linux build is working :metal: :penguin:

Hoping to merge this tomorrow :pray:

There's reportedly a problem with the Linux nodegit binaries.
From @johnhaley81:

It seems to only affect LTS linux...
It's very strange. Like it's executing a CPU instruction that's not available to older versions of ubuntu.

So I'm going to hold off on merging this until that's resolved.

I'll keep you posted as I find out more.

CPU instructions are not bound to software, but to hardware. If Linux binaries are not working on LTS Ubuntu (as there is no such thing as LTS Linux) it means you're using unavailable libraries (most probably). ldd should be enough to check that.

FWIW, it worked fine for me in testing on Ubuntu 64-bit <IP_ADDRESS>

The LTS Linux was a typo. I meant Ubuntu. The issue was when requiring the NodeGit library it would throw a SIGILL. It throws this when it's initializing OpenSSL for the library but not at a specific line of code. It dies when it returns from the first method in the call stack after init is called.
This happens with the prebuilt binary off of Travis. I'm attempting to configure a VM to allow @joshaber to have a consistent repo since it seems to be a heisenbug as well.

SIGILL errors are expected in OpenSSL. Check https://www.openssl.org/docs/faq.html#PROG17

That says under debugger situations which we aren't in. We're in a full production build without an attached debugger. Is that expected under that scenario as well?

Ahh I re-read it and it's saying that during it's query for a CPU's capabilities it could get a SIGILL. Running the code though it was happening during a request to dev/random and it did successfully get a result from that. It dies when it pops the function from the call stack.

@alexandernst here's the ldd -v output for each binary. The shared libs looks the same to me. Also, are those hex values the address in the binary where the lib is loaded?
https://gist.github.com/johnhaley81/617f36595b35513cc2a4

@johnhaley81 Can we get the backtrace too?

@alexandernst https://gist.github.com/johnhaley81/abbc6dd801eca780ae7f

@johnhaley81 It looks either like nodegit was compiled for the wrong arch (can you show me how is it compiled?) or an OpenSSL bug (less likely, but possible).

@alexandernst this is the prebuilt binary compilation log: https://travis-ci.org/nodegit/electron-npg-automator/jobs/97494428

Also so you know, I have a "magic" Ubuntu box that's configured the same way that works. Clearly not everything is the same but it's a clean install, no updates, only those packages are install, same env-variables and same compiler and compiler version. And that works. I can give you any outputs from that machine that you like.

@johnhaley81 Just to make sure I understand the situation. The bug you're getting exist only in a VM that you use to test? Or can you repro the bug easily in any LTS Ubuntu?

@alexandernst I've had reports of users experiencing this across multiple versions of Ubuntu. I have only been able to repro this consistently on this on 2 VMs and only when running Ubuntu. Mint and CentOS work.

Also my local install of Ubuntu works fine with either build.

@alexandernst @joshaber mentioned that the disassmble of the running app might help

(gdb) x/i $pc
=> 0x7fc83ef3851c <lh_new+332>:    vxorps %xmm0,%xmm0,%xmm0

This seems to be the instruction it's SIGILL'ing on.

@johnhaley81 @joshaber http://www.felixcloutier.com/x86/XORPS.html
Do the users's CPUs that are reporting the problem support AVX?
Also, I'm yet to see how nodegit is exactly compiled (the link @johnhaley81 posted doesn't have that info). Are you compiling with -march=native or something?

@alexandernst that travis box loads the repo from github and then we have the GYP file loaded https://github.com/nodegit/nodegit/blob/master/vendor/libgit2.gyp which sets the flags. That is how the makefile is generated. We then use node-gyp to compile the module.

@alexandernst as far as AVX support, I'll get back to you on that. Looking into it as much as I can now.

Maybe something weird is going on in the Makefile. Can we get a copy of the generated Makefile?
About the AVX, check if available with cat /proc/cpuinfo| grep avx

Also, the version of clang, if possible.

The definitely are lacking avx. So here's a potential fix: https://github.com/nodegit/electron-npg-automator/commit/d4a8725b7d42011cd39edf938d1927f97500eb04
The use_obsolete_assembly should force OpenSSL to NOT use that but I think that setting it to true might have not set the flag correctly? Trying this out now.

There you go, it's a compiler flag. That's why it was working on your machine (which I guess it does support AVX) and not in the machines of some of your users. Find how to force the compilation process to avoid using unsupported CPU ops.

Compiler flag didn't fix. Turns out it's possibly a bug in OpenSSL. Potential fix: https://github.com/nodegit/nodegit/pull/855

Indeed, turns out it's an OpenSSL bug :)
https://github.com/openssl/openssl/commit/817ddb9fb07e78b451e838a77b2b272b0dd23e5f

Confirmed, that fixes it.

Bumping to NodeGit 0.7.0 should resolve that linux issue and make this PR gtg :)

Hm, I guess I didn't cross-reference this here: https://github.com/atom/atom/pull/10352
^ This is a fix for ::relativize on this branch that still needs a little polish

I'm seeing intermittent failures about file watching, e.g.:
>> GitRepositoryAsync
>>   .checkoutHeadForEditor(editor)
>>     it does not display a dialog when confirmation is disabled
>>       Error: Leaking subscriptions for paths: /private/var/folders/gw/_2jq29095y7b__wtby9dg_5h0000gn/T/atom-working-dir116011-49688-dfmojy/a.txt
>>         at ensureNoPathSubscriptions (/Users/travis/build/atom/atom/spec/spec-helper.coffee:122:15)
>>         at [object Object].<anonymous> (/Users/travis/build/atom/atom/spec/spec-helper.coffee:115:3)
>>         at process._tickCallback (node.js:368:9)
>>   .destroy()
>>     it throws an exception when any method is called after it is called
>>       Error: Leaking subscriptions for paths: /private/var/folders/gw/_2jq29095y7b__wtby9dg_5h0000gn/T/atom-working-dir116011-49688-1pr3ez3/a.txt
>>         at ensureNoPathSubscriptions (/Users/travis/build/atom/atom/spec/spec-helper.coffee:122:15)
>>         at [object Object].<anonymous> (/Users/travis/build/atom/atom/spec/spec-helper.coffee:115:3)
>>
>>

GitRepositoryAsync itself doesn't do any file watching directly. Is this a bug somewhere else? Some cleanup we're not doing? @atom/core

I moved some stuff around which maybe fixed that? I dunno.
I think we're just waiting on #10352, and then :tada: :balloon: :birthday:

Awesome work here :+1:

w00t!

Does this address #2456?

@martindale it would be great if you could download the 1.7.0 beta and find out :).

Subjectively, the problem appears to be worse with 1.7.0 beta.  Atom now completely hangs when launching it inside of a remote mount, and eventually requests direction on whether to close or keep waiting.

Same problem here, Atom 1.6.0 or 1.7.0 beta now hangs up when trying to open a big git repository inside of a remote mount making Atom unusable in this configuration :cry:

Can't use Atom anymore. Probably because of this feature. I mounted a vagrant via SSHFS and Atom freezes when opening a file. Could you release a fix for this, please.

I'm wondering why we switched to using nodegit. I realize that maintaining a wrapper around a git executable is lame but nodegit wraps libgit2 which is glacial in comparison to git. This is completely anecdotal but I've always found it far slower.
Perhaps using something like https://www.npmjs.com/package/simple-git instead?

@mehcode Before nodegit we were already using libgit2, with a sync api wrapper we were maintaining ourselves (https://github.com/atom/git-utils) - so we can't blame any performance regressions on libgit2 here.

Ah. I was under the impression we were just doing shell execution.


Build darwin/arm64 binary

I use MacBook with Apple Silicon. So, I want to use darwin/arm binary!

I have used it too.

I have used it too.


New Pod Owners

Currently, I'm the only one who deploys Moya releases.
So, I'm looking for existing contributors who are willing and able to occasionally release a new Moya version. It's not a huge job at all, but I feel like it's a bigger responsibility than being a contributor, so there's absolutely no pressure to accept. @petester42 @colinta @esttorhe @aschuch anyone interested?
(I would need to add some documentation around how to make a release as well.)

I'm not at all opposed to helping out with this, would love to have someone else involved to "have my back" (look over the release, sanity check that it's good to go, etc).

I'd be down to help with releases.

I could help as well if needed.

Awesome, I've added you three :tada: Thanks so much. I'll submit a doc about deploying this weekend.

It's basically just rake release["X.Y.Z"] and mostly everything else is automatic.

interesting; github did not notify me of this
aaaaanyways; If you need more hands i'm down to help with this as well


Change to one Ask A Librarian link instead of separate form and FAQs

eg, the ASK link is single, previously was a form and an FAQ link. (SJT)


createdFromEntity type error i EntityFormOptions

The openForm method do not take a standard EntityFormOptions as input in createFromEntity.
https://docs.microsoft.com/en-us/power-apps/developer/component-framework/reference/entityformoptions
"createFromEntity" is an EntityReference (https://docs.microsoft.com/en-us/power-apps/developer/component-framework/reference/entityreference), while openForm expect it to be a LookupValue(entityType, id, and name).
Either OpenForm should expect a EntityReference in the EntityFormOption or EntityFormOptions createFormOptions should be a Lookup.
Please resolve this error.

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

ID: 93ccf76e-5d32-121a-80e1-b8d748859145
Version Independent ID: 86b5ec1f-d259-82b2-dd64-a785b0ac26f0
Content: EntityReference in Microsoft Dataverse - Power Apps
Content Source: powerapps-docs/developer/component-framework/reference/entityreference.md
Service: powerapps
Sub-service: pcf
GitHub Login: @noazarur-microsoft
Microsoft Alias: noazarur

Thanks for your comment, @krihvi. This issue has been assigned to the doc author for review.

Paraphrasing and expanding here to make sure I understand.
The context.navigation.openForm(options, parameters) method has an options parameter that is of type EntityFormOptions.
From a documentation point of view, I note that the description for this type is in-line within the table, not a link to the EntityFormOptions. Need to understand if that was intentional or some oversight.
Within the table, it says that the createFromEntity parameter is a Lookup, and defines a lookup as an object that has the following string parameters: entityType, id, and name.
However, an EntityReference has the following parameters:

etn: string
id: object
name: string

@krihvi , I think you are asking that the content for context.navigation.openForm(options, parameters) method should not have a separate, slightly different definition for EntityFormOptions in the table.
Actions that could be taken in the docs:
In the Parameters table for context.navigation.openForm(options, parameters) method, for the row that describes the options parameter.

Replace the EntityFormOptions text value in the Type column with a link to EntityFormOptions.
Replace the redundant information in the Description column to simply be 'Form options for opening the form.'

The only difference is whether the EntityFormOptions.createFromEntity property is actually an EntityReference that has an etn property or a Lookup that has an entityType property
@krihvi, are you saying that using context.navigation.openForm(options, parameters) method will fail if the options.createFromEntity is set to an EntityReference rather than a 'Lookup'?

Hello. I also have this problem for more than a year in a PCF.
We have been using ts-ignore before entityType as a workaround but Microsoft needs to fix this issue.

This stuff is unbelievable, a year and a half with invalid type definitions and docs. We have a similar (related?) problem with EntityReference which is documented to have the etn prop, but getNamedReference which is documented as returning the EntityReference but actually returns something with the entityType prop etc, so I assume a LookupValue too, so we have to cast it. Total mess.

@pjramirez-ms updated the type definitions.
These changes to the docs should be visible this afternoon:

This new type was added to the docs: LookupValue and the EntityFormOptions.createFromEntity property now refers to this.


Rendering Kubernetes Cluster Config using loginapp.

I want to render K8s Cluster Config using latest loginapp image from "quay.io/fydrah/loginapp" as I see the 'loginapp' has been updated 3 months back.
I updated 'loginapp-deploy.yml' file to use image 'quay.io/fydrah/loginapp:latest' instead of "objectiflibre/login-app:latest" but the pod fails to start with following logs on K8s cluster.
NAME:
   loginapp - A new cli application
USAGE:
   Web application for Kubernetes CLI configuration with OIDC
COMMANDS:
     serve    Run loginapp application
     help, h  Shows a list of commands or help for one command
OPTIONS:
   --help, -h     show help
   --version, -v  print the version

Following are my "loginapp-cm.yml" & "loginapp-deploy.yml" files.
File: 'loginapp-cm.yml'
kind: ConfigMap
apiVersion: v1
metadata:
  name: ndp
  namespace: auth
data:
  config.yaml: |
    debug: false
    client_id: "loginapp"
    client_secret: 4TORGiNV9M54BafduFSaI6hUjfjr
    issuer_url: "https://dex.k8s.my.example.com:32000/dex"
    issuer_root_ca: "/etc/ssl/ca.pem"
    redirect_url: "https://dex.k8s.my.example.com:32004/callback"
    listen: "https://<IP_ADDRESS>:5555"
    tls_cert: "/etc/loginapp/tls/tls.crt"
    tls_key: "/etc/loginapp/tls/tls.key"
    disable_choices: false
    extra_scopes: "groups"
    app_name: "Kubernetes Auth"
    clusters:
      - name: k8s.my.example.com
        server: https://api.k8s.my.example.com
        certificate-authority: |
          -----BEGIN CERTIFICATE-----
          MIIC0zCCAbugAwIBAgIMFbJwywDTOJDQnUzEMA0GCSqGSIb3DQEBCwUAMBUxEzAR
          DW6CCCsGMWfV20tNXZgCPA6SKe3JY/CZ7DxD2aPSBu1hgPT4B+UikKNiuZ5/Un7T
          ACsOLBeW6A==
          -----END CERTIFICATE-----
        insecure-skip-tls-verify: false

File: 'loginapp-deploy.yml'
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: loginapp-new
  namespace: auth
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: loginapp-new
    spec:
      containers:
      - image: quay.io/fydrah/loginapp:latest
        name: loginapp-new
        #command: ["/loginapp", "serve", "/app/config.yaml"]
        ports:
        - name: http
          containerPort: 5555
        volumeMounts:
        - name: ca
          mountPath: /etc/ssl/
        - name: config
          mountPath: /app/
        - name: tls
          mountPath: /etc/loginapp/tls
      volumes:
      - name: ca
        configMap:
          name: ca
          items:
          - key: ca.pem
            path: ca.pem
      - name: config
        configMap:
          name: ndp
          items:
          - key: config.yaml
            path: config.yaml
      - name: tls
        secret:
          secretName: login.k8s.example.org.tls

I even tried to pass command to new image when it starts by adding 'command: ["/loginapp", "serve", "/app/config.yaml"]' however it still failed starting pod with following error.
{"level":"warning","msg":"format \"\" not available, use json|text. Using json format","time":"2019-07-29T13:40:39Z"}
{"level":"warning","msg":"log level \"\" not available, use debug|info|warning|error. Using Info log level","time":"2019-07-29T13:40:39Z"}
{"level":"error","msg":"no name specified","time":"2019-07-29T13:40:39Z"}
{"level":"error","msg":"no client id specified","time":"2019-07-29T13:40:39Z"}
{"level":"error","msg":"no client secret specified","time":"2019-07-29T13:40:39Z"}
{"level":"error","msg":"no redirect url specified","time":"2019-07-29T13:40:39Z"}
{"level":"error","msg":"no issuer url specified","time":"2019-07-29T13:40:39Z"}
{"level":"error","msg":"no issuer root_ca specified","time":"2019-07-29T13:40:39Z"}
{"level":"fatal","msg":"error while loading configuration","time":"2019-07-29T13:40:39Z"}

Let me know what have I missed or doing wrong. I want to produce Cluster Config details once the user authenticate to LDAP.

Hi @nirmalpathak,
There was a lot of changes in loginapp since the beginning of this repository.
Check a example configuration file for loginapp here
For your configuration, it should be:
log:
  level: debug
name: "Kubernetes Auth"
listen: "https://<IP_ADDRESS>:5555"
oidc:
  client:
    id: "loginapp"
    secret: 4TORGiNV9M54BafduFSaI6hUjfjr
    redirect_url: "https://dex.k8s.my.example.com:32004/callback"
  issuer:
    url: "https://dex.k8s.my.example.com:32000/dex"
    root_ca: "/etc/ssl/ca.pem"
  extra_scopes:
    - groups
tls:
  enabled: true
  cert: "/etc/loginapp/tls/tls.crt"
  key: "/etc/loginapp/tls/tls.key"
clusters:
  - name: k8s.my.example.com
    server: https://api.k8s.my.example.com
    certificate-authority: |
        -----BEGIN CERTIFICATE-----
        MIIC0zCCAbugAwIBAgIMFbJwywDTOJDQnUzEMA0GCSqGSIb3DQEBCwUAMBUxEzAR
        DW6CCCsGMWfV20tNXZgCPA6SKe3JY/CZ7DxD2aPSBu1hgPT4B+UikKNiuZ5/Un7T
        ACsOLBeW6A==
        -----END CERTIFICATE-----
    insecure-skip-tls-verify: false
web_output:
  main_client_id: "loginapp"
  main_username_claim: "email"

Thanks for update. The updated config fixed the issue.


NIFI-6968 Create Connection Model Allows Multiple Adds

Thank you for submitting a contribution to Apache NiFi.
Please provide a short description of the PR here:
Description of PR

fixes bug NIFI-6968 Create Connection Model Allows Multiple Adds
Root Cause: In the process of creation of connection, the add / apply button is not disabled , due to which, when the network is slow & when the button is clicked twice unknowingly, the requests are sent multiple times , so multiple connections are created.
Fix: Disable the buttons when the add/update connection is in progress, enable them back after the action.
Impacted Areas: the same issue in case of configuring connections & clicking on Update, also the cancel button should also be disabled when the creation or modification is in process
Tested in : Add Connection, Update connection scenarios using the chrome's network throttling feature making the network very slow
After Fix: the screenshots are taken during the progress, so they are disabled

Update Connection -

Add Connection -

In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[x] Is there a JIRA ticket associated with this PR? Is it referenced
in the commit message?

[x] Does your PR title start with NIFI-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.

[x] Has your PR been rebased against the latest commit within the target branch (typically master)?

[x] Is your initial contribution a single, squashed commit? Additional commits in response to PR reviewer feedback should be made on this branch and pushed to allow change tracking. Do not squash or use --force when pushing to allow for clean monitoring of changes.

For code changes:

[ ] Have you ensured that the full suite of tests is executed via mvn -Pcontrib-check clean install at the root nifi folder?
[ ] Have you written or updated unit tests to verify your changes?
[ ] Have you verified that the full build is successful on both JDK 8 and JDK 11?
[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?
[ ] If applicable, have you updated the LICENSE file, including the main LICENSE file under nifi-assembly?
[ ] If applicable, have you updated the NOTICE file, including the main NOTICE file found under nifi-assembly?
[ ] If adding new Properties, have you added .displayName in addition to .name (programmatic access) for each of the new properties?

For documentation related changes:

[ ] Have you ensured that format looks appropriate for the output in which it is rendered?

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and submit an update to your PR as soon as possible.

LGTM +1

Reviewing...

I used Google Chrome Developer Tools to simulate a slow connection and verified that the buttons are disabled during the API call. Ran contrib-check and all tests pass. +1, merging.

TYSM @andy


fix indentation to 2 spaces in serviceWorkers

This just fixes indentation. 2 space tabs are followed everywhere by CRA, this creates unwanted diff changes.

These lines are a continuation of the previous line (L12 ends in a boolean OR), and are currently properly indented.

This is controlled by Prettier. If you'd like to change this formatting, please file an issue with them.
Thanks!

Oops. Sorry I use prettier too. the extension was disabled somehow. Sorry

Oops. Sorry I use prettier too. the vs extension was disabled somehow, which was replaced by vscode native formatter. I thought prettier made the change. Sorry


Negative Slime

New Slime Suggestion
Negative Slime
What will this slime look like?
A very rare type of slime, what looks like a normal slime, but with inverted colors, it's chance will be 0.2 %.
What kind of slime is it?

[X] Ranchable Slime - A slime that can be ranched
[ ] Utility Slime - A slime that provides some functionality to the ranch
[ ] Pet Slime - A slime that can follow you around and do some tasks

Diet & Favorite Food
Special Negative Fruits, Veggies and Meat.
Plort
Same as normal Plorts, but with inverted colors
Favority Toy
Same, as toys for normal slimes
Slime Technical Sheet
Type

[ ] Normal – Just your ordinay slime.
[X] Mutation – Rare versions of other slimes, like the Albino which is a mutation of the Pink Slime.
[ ] Ancient – Slimes that have lived for a very long time, like the gold slime, it is an ancient being almost as old as the planet
[ ] Fossil – Slimes that can only be found as fossils (or in the case of the saber as descendants). It will be possible to use their DNA, from the fossils, to bring them back.
[ ] Godly – Slimes that have great power and can use some energy similar to magic. They are seen as gods by the other slimes as they keep the slime world alive with their energy.
[ ] Special – Slimes like the Tarr or Twinkle slime are seen as special cause they aren’t normal and don’t fit into any other category.

Mutation of what slime? (If you choose Mutation above)
Mutations of all Slimes
Behavior

[ ] Passive – Does not damage the rancher in any way. The aggitation will not cause difference in behaviours.
[ ] Neutral – Might damage the rancher indirectly. The aggitation might cause aggressive behaviour similar to the rolling of the rock slime.
[ ] Aggressive – Attacks the rancher directly.

Risk for the rancher? (If you choose something other than Passive above)
Activity Pattern

[ ] Diurnal – Only survives in the light / during the day
[ ] Nocturnal – Only survives in the dark / during the night
[X] Metatunal – Survives in the Dark and Light
[ ] Crepuscular – Is active only during Dusk and Dawn. Disappears during the inactive time.
[ ] Matitunal – Is active only during Dawn. Disappears during the inactive time.
[ ] Vespertine – Is active only during Dusk. Disappears during the inactive time.

Can become a largo?

[X] Yes - This slime can become a largo with any slime that normally can.
[ ] Specific - This slime can only become a largo with specific slimes.
[ ] No - This slime cannot become a largo.

Largo Specification (If you choose specific above)
Location?
Everywhere
Condition to find?
It's very rare
Environment?

[ ] Land – Anywhere on land, does not need a special condition for it
[ ] Water – Anywhere on water, does not need a special condition for it
[ ] Deep Water – On water, requires a place where the water pressure is higher (deep water)
[ ] Lava – On land, requires Lava or a region that contains lava to survive
[ ] Arid – On land, requires a arid/dry zone to survive
[X] Other - Make a suggestion of a new environment

Environment Specification (If you choose other above)
Everywhere
Temperature

[ ] Cold – Requires cold temperatures (below 15°C/59°F)
[ ] Hot – Requires hot temperatures (above 30°C/86°F)
[ ] Moderated – Requires moderated temperatures (between 10°C/50°F and 35°C/95°F)
[X] Indifferent – It doesn’t matter the temperature

Vaccable?

[X] Yes - Can be vacced normally
[ ] Upgrade - Requires an upgrade to be vacced
[ ] Conditional - Can only be vacced under certain conditions
[ ] No - This slime can't be vacced

Vac Upgrade or Condition (If you choose Upgrade or Conditional above)
Synergies
No
Possible names for the slime? (Optional)
Negative Type of Slimes
Additional context

I know this isn't much of a slime that needs a description, but I really feel as though I don't know the slime much, maybe add more details and such to help people get a better idea of what the slime is.

Negative Slim


Avoid ERR_INVALID_ARG_TYPE error on Node.js >= 9

Problem
From https://github.com/nodejs/node/commit/e5c290bed9775bdddd74650995f3358373af8097 that is shipped with Node.js 9, fs.WriteStream#close() requires a callback function as its first argument and throws an error when no arguments are provided to it.
Here is a small example to reproduce the error:
'use strict';

const {createWriteStream} = require('fs');
const {PassThrough} = require('stream');
const pump = require('pump');

const firstStream = new PassThrough();
firstStream.end(Buffer.alloc(99999999));

pump([
  firstStream,
  // Writing contents to `__dirname` should always fail with EISDIR error.
  createWriteStream(__dirname)
], err => {
  console.log(err.message);
});

With Node.js 8.9.1, it works as expected.
$ node --version
v8.9.1

$ node exmaple.js
EISDIR: illegal operation on a directory, open '/Users/shinnn/github/pump'

But with Node.js 9.2.0, it throws a TypeError like below:
$ node --version
v9.2.0

$ node exmaple.js
events.js:180
    throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'listener', 'Function');
    ^

TypeError [ERR_INVALID_ARG_TYPE]: The "listener" argument must be of type Function
    at _addListener (events.js:180:11)
    at WriteStream.addListener (events.js:240:10)
    at WriteStream.close (fs.js:2302:10)
    at /Users/shinnn/github/pump/index.js:40:37
    at call (/Users/shinnn/github/pump/index.js:50:3)
    at Array.forEach (<anonymous>)
    at /Users/shinnn/github/pump/index.js:70:25
    at f (/Users/shinnn/github/pump/node_modules/once/once.js:25:25)
    at WriteStream.<anonymous> (/Users/shinnn/github/pump/index.js:29:21)
    at WriteStream.f (/Users/shinnn/github/pump/node_modules/once/once.js:25:25)

Solution
I added a noop function to the fs.WriteStream#close() argument to avoid the ERR_INVALID_ARG_TYPE error.

YUUUUS, 1.0.3

Glad of your quick release :)


review of manuscript

The authors present Trixi.jl, a Julia package for adaptive high-order simulation of hyperbolic PDEs in 1-3 dimensions, discontinuous Galerkin methods, adaptive meshing, and method-of-lines time-integration. The capabilities and design of Trixi.jl are discussed and illustrated with several two-d quasilinear and nonlinear PDEs with cartesian and complex geometries. Detailed perfomance comparisons to a comparable MPI-based Fortran code run in serial mode are presented for simulations of the incompressible Euler equations and ideal magnetohydrodynamics in a 3d Cartesian cube with periodic boundary conditions. In these serial runs, Trixi.jl is shown to outperform the Fortran code by roughly a factor of two across a wide range of polynomial degree for the spectral elements (3 to 15). The authors provide a frank assessment of the pros, cons, and unknowns of developing and using PDE simulation code in Julia versus the more traditional choices of C, C++, and Fortran.
I think this is an excellent paper that partially addresses a major question: Does Julia hold promise for simplifying scientific software development for large-scale, high-performance supercomputing, without sacrificing efficiency? That the authors wrote a general-purpose hyperbolic PDE simulator in Julia in one person-year attests to the simplifying power of an modern, expressive, high-level language with interoperable packages. The results of the Julia-Fortran comparisons on 3d Euler equations and MHD show that Julia's expressive power does not necessarily come at the cost of a performance overhead. In fact, here we see a well-written Julia code can run faster than an equivalent Fortran code, at least in serial. However, as the authors note in the pro/con section, distributed-memory parallelism is more complicated. For production parallel codes, Julia currently relies on, and is limited by, the same MPI libraries used by C, C++, and Fortran.
I have two suggestions for improving the paper. First I think the paper should make it abundantly clear at the outset that Trixi.jl is a serial code, and that the comparisons are to an MPI-HPC code run in serial mode. Nowhere in the paper is it explicitly stated that Trixi.jl is a serial code. The word "serial" only comes up as "serial performance", not to the code itself. For example, from the Introduction "[W]e compare the serial performance with a mature high-performance computing (HPC) Fortran code..." I have to admit the first time I read the paper I assumed that Trixi.jl had distributed-memory parallelism and was just compared to Fortran in serial runs, until I hit the discussion of the difficulties of distributed-memory parallelism in Julia in section 4.2. I have a feeling I'm not alone in pretty much assuming a multi-d PDE simulator is distributed-memory until told otherwise, and that it would do readers a service to be clearer about this up front. I recommend that the Introduction explicitly state that Trixi.jl is a serial code, and that the comparisons are to an MPI-based Fortran code running in serial mode.
Second, I would find it helpful to have a little more information about the spatial domain and discretization for the comparison runs in Section 3.1. These are described as a periodic box [-1]^3, whose interior is warped by a combination of a sine and cosine functions, and four spectral elements in each spatial direction. Does that mean the physical domain of the Euler or MHD problem is still a periodic cube, but the interior grid is a Cartesian product of some irregularly distributed 1d grids? Or that the physical domain of the equations is a shape obtained by mapping a periodic cube through some function involving sines and cosines, with a grid determined by mapping the regular cubic grid through the same function? If the latter it would have to have some pretty specific constraints to preserve the boundaries and match the fluxes across them. If possible, a figure illustrating (a projection of) the mesh and a computed solution (like figs 1,2 and 3) would be nice.
More minor suggestions:
It would be nice to have indication of the size of the computation in terms of numbers of degrees of freedom. For the [-1,1]^3 domain with four elements per dimension, that's a cube divided into 4^3 = 64 subcubes, and in each a cartesian products of (polydeg+1) polynomials in the three directions? For Euler equations with 5 variables (3 velocity components, 1 pressure, 1 energy) and polydegree=15, that's 64 * 16^3 * 5 = 1.3 million degrees of freedom, or about 84 MB of data per Runge-Kutta step. Correct?
In section 3.2, I'm not entirely comfortable with this statement in section 3.2. "We would like to emphasize that Julia code can be at least as fast as code written in these traditional scientific computing languages." It might be wise to change that to "well-written Julia code" or "properly-written". Also, I'm not sure if in these comparisons, the greater speed of Julia is due the MPI overhead of the Fortran code running in serial mode. Maybe you could reference a paper that contains the Julia Benchmarks, which make the same point with more head-to-head comparison of identical serial algorithms.
Lastly a few grammatical/typo suggestions
pg 3 "positivity-preserving limiting"
pg 4 "step-by-step" and "summation-by-parts finite-difference methods"
pg 5 "kinetic-energy preserving"
https://github.com/JuliaCon/proceedings-review/issues/77

Thank you very much for your review and your nice comments, @johnfgibson. We are working on a revision based on your comments in #21.

@johnfgibson We merged #21 and improved the paper based on your comments above. Please let me know whether the revised version looks good to you.

Great! I'm happy with all the revisions and ready to sign off on the review with a :+1: Currently I can't edit the review checklist, if that's necessary to complete the review. I have pinged @carstenbauer about that.

Thanks a lot! In this case, I will close this issue.


Deployment notification error with capistrano

We're starting to see a deployment error after updates to
capistrano (3.18.0)
rollbar (3.4.1)
rollbar:deploy_succeeded
Setting deployment status to succeeded in Rollbar
ERROR Error reporting to Rollbar: #<ArgumentError: wrong number of arguments (given 0, expected 1..3)>
Thank you

yes, same problem

Same here

Hi all, thank you for these reports. Can you report what versions worked before upgrading, if any?
Also, if anyone can reproduce using this branch in your Gemfile: https://github.com/rollbar/rollbar-gem/tree/waltjones/capistrano-backtrace
It includes the backtrace in the error message. The error is so generic, at least we can know where the error is coming from.
I've tested with:
capistrano 3.18.0
rails 7.1.0
rollbar-gem 3.4.2
ruby 3.2.2
I've also tested capistrano 3.18.0 with rails 6.x and ruby 2.7.

@waltjones  Hello, I think the problem was on the Rollbar side. Because today deploy passed without errors


Convert ContractTestSuite to JUnit 4.x

The JUnit 5.x way of doing this would probably involve switching to using the @Tag annotation, but this at least drops JUnit 3.x.

See what you make of this, @sfount

Closing for now (with @rhowe's blessing). We're currently doing work on the integration tests and will come back to this.


Help!  What caused the leader election lost?

What did you do?
I use Leader-with-lease in my operator code.
What did you expect to see?
A clear and concise description of what you expected to happen (or insert a code snippet).
What did you see instead? Under which circumstances?
A clear and concise description of what you expected to happen (or insert a code snippet).
leader election lost” will appear every other time.
2019-08-12T03:05:56.866Z	ERROR	cmd	Manager exited non-zero	{"error": "leader election lost"}
github.com/go-logr/zapr.(*zapLogger).Error
	redis-operator/vendor/github.com/go-logr/zapr/zapr.go:128
main.main
	redis-operator/cmd/manager/main.go:174
runtime.main

Environment

operator-sdk version: 0.9.1
insert release or Git SHA here: master

Kubernetes version information: v.1.12
insert output of kubectl version here

Kubernetes cluster kind:

Additional context
Add any other context about the question here.

@AllenZMC based on that error message, it sounds like you're using the leader election built into the controller-runtime Manager. Is that correct? If so, here is where that error is coming from.
Are you attempting to run multiple replicas of your operator? It sounds like another instance is getting the leader lock and the instance with this log is losing that election.

@joelanford , Yes. I am using the leader election built into the controller-runtime Manager.
I only run one replica of my operator. I will continue to pay attention to it.

@AllenZMC Sounds good. Yeah my guess is that you have a rogue replica running somewhere. Maybe an old in-cluster replica that didn't get cleaned up or something running in another terminal or in the background locally with up local?
If you're sure you're only running one replica and you keep seeing this, and it does turn out to be a bug, let us know and we'll help you out with an issue or PR upstream in controller-runtime.

I guess the reason is that LeaseDuration or RenewDeadline  is too short. @joelanford

@AllenZMC I'm not sure. I'm definitely not an expert on controller-runtime's leader election internals, but I don't think a single replica should ever lose an election, which seems to be the case here.

@joelanford  Thanks, I think I have found the problem.

Hi @AllenZMC , what's the root cause please?

Hi @AllenZMC , what's the root cause please?

Hi @AllenZMC  , what's the root cause please?

Since we migrated to operator-sdk 1.0.0, there have been many container restarts caused by the leader election lost error. We use a single replica of an operator on openshift v3.11.170 and kubernetes v1.11.0+d4cacc0.
The issue has been resolved by increasing the 'LeaseDuration' to '30s' and the 'RenewDeadline' to '20s'.

yes @snorwin

Since we migrated to operator-sdk 1.0.0, there have been many container restarts caused by the leader election lost error. We use a single replica of an operator on openshift v3.11.170 and kubernetes v1.11.0+d4cacc0.
The issue has been resolved by increasing the LeaseDuration to 30s and the RenewDeadline to 20s.

It just slowed down the frequency and did not solve the problem