FakePathModule.getattr raises KeyError instead of NameError

Things like hasattr only work when NameError is raised, not KeyError, here's a hotfix as example:
from pyfakefs.fake_filesystem import FakePathModule
def _fake_os_path_getattr(self, name):
    return getattr(self._os_path, name)
FakePathModule.__getattr__ = _fake_os_path_getattr

I'm sorry, I'm not quite clear about your example.

I had a module that calls hasattr(os.path, '__path__'). The current FakePathModule.__getattr__ raises a KeyError and hasattr only catches NameError so instead of returning False, hasattr raises KeyError. Switching from this to getattr would fix that.


name change

👷 Deploy Preview for joharehawkins processing.

Name
Link

🔨 Latest commit
ea50e50ec7551b58aaea07227d8f5d610b2f20a7

🔍 Latest deploy log
https://app.netlify.com/sites/joharehawkins/deploys/66ddf9f3eff2ad0009c16962


Nop build is slow

A build of my (quite small) app with no changes using cross takes 5 seconds. Using cargo build it only takes 0.1 second.
It would be nice if a nop cross build were as fast as that, so that I can have subsequent steps in my build process depend on it. Currently it makes editing files further down in the build DAG very annoying because you always have to wait 5 seconds for cross, even if you didn't change anything it consumes.

Here's an example command:
$ cross build --target x86_64-unknown-linux-musl --release --verbose
+ "rustc" "--print" "sysroot"
+ "rustup" "toolchain" "list"
+ "rustup" "target" "list" "--toolchain" "1.36.0-x86_64-unknown-linux-gnu"
+ "rustup" "component" "list" "--toolchain" "1.36.0-x86_64-unknown-linux-gnu"
+ "cargo" "fetch" "--manifest-path" "/path/to/Cargo.toml"
+ "docker" "run" "--userns" "host" "--rm" "--user" "501:20" "-e" "XARGO_HOME=/xargo" "-e" "CARGO_HOME=/cargo" "-e" "CARGO_TARGET_DIR=/target" "-e" "USER=timh" "-e" "RUST_BACKTRACE" "-e" "RUST_LOG" "-e" "CROSS_RUNNER=" "-v" "/Users/me/.xargo:/xargo:Z" "-v" "/Users/timh/.cargo:/cargo:Z" "-v" "/cargo/bin" "-v" "/path/to:/project:Z,ro" "-v" "/Users/timh/.rustup/toolchains/1.36.0-x86_64-unknown-linux-gnu:/rust:Z,ro" "-v" "/path/to/target:/target:Z" "-w" "/project" "-i" "-t" "image:cross_capnp" "sh" "-c" "PATH=$PATH:/rust/bin \"cargo\" \"build\" \"--target\" \"x86_64-unknown-linux-musl\" \"--release\" \"--verbose\""
       Fresh unicode-xid v0.1.0
       Fresh cc v1.0.45
       Fresh semver-parser v0.7.0
       Fresh ppv-lite86 v0.2.5
...
    Finished release [optimized] target(s) in 5.80s

It's the bit between docker run and the first Fresh that takes all the time.
Docker is part of the slowness, but not all:
$ time "docker" "run" "--userns" "host" "--rm" "--user" "501:20" "-e" "XARGO_HOME=/xargo" "-e" "CARGO_HOME=/cargo" ... "-t" "image:cross_capnp" "sh" "-c" "PATH=$PATH:/rust/bin \"cargo\" \"--help\""

...
real    0m1.309s
user    0m0.041s
sys     0m0.023s

Ok I figured out the magic to show what cargo is doing (set CARGO_LOG=DEBUG, or INFO).
One thing that is slow is this:
[build-dependencies.prost-build]
git = "https://github.com/Timmmm/prost.git"
branch = "write_if_changed"

Means that for some reason Cargo updates submodules on every build...
2019-11-28T18:05:39Z DEBUG cargo::core::registry] load/missing  https://github.com/Timmmm/capnproto-rust.git?branch=writeifchanged#548580ea
[2019-11-28T18:05:39Z DEBUG cargo::core::registry] loading source https://github.com/Timmmm/capnproto-rust.git?branch=writeifchanged#548580ea
[2019-11-28T18:05:39Z DEBUG cargo::sources::config] loading: https://github.com/Timmmm/capnproto-rust.git?branch=writeifchanged#548580ea
[2019-11-28T18:05:39Z INFO  cargo::sources::git::utils] update submodules for: "/cargo/git/checkouts/capnproto-rust-f8e69caed208a9ec/548580e/"

Another slow bit is this:
[2019-11-28T18:07:53Z DEBUG cargo::core::package] byteorder v1.3.2 doesn't need a download
[2019-11-28T18:07:53Z DEBUG cargo::core::package] bytes v0.4.12 doesn't need a download
[2019-11-28T18:07:53Z DEBUG cargo::core::package] capnp v0.10.3 doesn't need a download
[2019-11-28T18:07:53Z DEBUG cargo::core::package] crossbeam v0.7.2 doesn't need a download
[2019-11-28T18:07:53Z DEBUG cargo::core::package] failure v0.1.5 doesn't need a download
[2019-11-28T18:07:53Z DEBUG cargo::core::package] log v0.4.8 doesn't need a download
[2019-11-28T18:07:53Z DEBUG cargo::core::package] once_cell v1.2.0 doesn't need a download
[2019-11-28T18:07:53Z DEBUG cargo::core::package] prost v0.5.0 doesn't need a download
[2019-11-28T18:07:53Z DEBUG cargo::core::package] rayon v1.2.0 doesn't need a download
[2019-11-28T18:07:53Z DEBUG cargo::core::package] serde v1.0.101 doesn't need a download
[2019-11-28T18:07:53Z DEBUG cargo::core::package] serde_json v1.0.41 doesn't need a download
[2019-11-28T18:07:53Z DEBUG cargo::core::package] iovec v0.1.2 doesn't need a download
[2019-11-28T18:07:53Z DEBUG cargo::core::package] libc v0.2.62 doesn't need a download
....

And this:
[2019-11-28T18:08:25Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /target/release/.fingerprint/backend-a72830e1a1e3bf1a/build-script-build_script_build-a72830e1a1e3bf1a
[2019-11-28T18:08:25Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /target/release/.fingerprint/capnpc-6c64ec6c9893a323/lib-capnpc-6c64ec6c9893a323
[2019-11-28T18:08:25Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /target/release/.fingerprint/capnp-6347cddcc05443b1/lib-capnp-6347cddcc05443b1
[2019-11-28T18:08:25Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /target/release/.fingerprint/prost-build-ceb00d518a2dba38/lib-prost_build-ceb00d518a2dba38
[2019-11-28T18:08:25Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /target/release/.fingerprint/bytes-b792317d722014f8/lib-bytes-b792317d722014f8
[2019-11-28T18:08:25Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /target/release/.fingerprint/byteorder-645a09eaac5177bf/lib-byteorder-645a09eaac5177bf
[2019-11-28T18:08:25Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /target/release/.fingerprint/byteorder-c1a7daf969c40e14/run-build-script-build_script_build-c1a7daf969c40e14
[2019-11-28T18:08:25Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /target/release/.fingerprint/byteorder-12980b5944ba5f95/build-script-build_script_build-12980b5944ba5f95
[2019-11-28T18:08:25Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /target/release/.fingerprint/iovec-7a3553a0d530b566/lib-iovec-7a3553a0d530b566
[2019-11-28T18:08:25Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /target/release/.fingerprint/libc-a80b83aa86cfb4bd/lib-libc-a80b83aa86cfb4bd
[2019-11-28T18:08:25Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /target/release/.fingerprint/libc-448b86d881f39794/run-build-script-build_script_build-448b86d881f39794
[2019-11-28T18:08:25Z DEBUG cargo::core::compiler::fingerprint] fingerprint at: /target/release/.fingerprint/libc-e5df394485c7591c/build-script-build_script_build-e5df394485c7591c
...

A non-cross cargo build still does all those, but for some reason it is way way faster.
I think those three things account for most of the cargo time.

Aha! I found a solution to my particular problem. It turns out Cargo outputs a file in target/.../foo.d that lists all of the file dependencies for foo. This can be used with the dependencies' mtimes to work out if cargo needs to be run.
I'd recomment using the cached and delegated options anyway (on Linux they do nothing).

Nice find, I guess in this case

delegated: the container’s view is authoritative (permit delays before updates on the container appear in the host)

would be preferrable in terms of performance for the container.

Ah, you're using delegated for the target directory already, missed that.

Note that this actually doesn't have any effect anymore with cached and delegated options (and have since been removed from the documentation). You can check my logic on macOS if you wish, since I've published a working version that will mount all volumes using either cached or delegated.
These options only had an effect on macOS, and were removed when the backend was changed.


Adding fields to validator programatically - best approach

More of a question than an issue really, about the best way to achieve what we are doing.
We have a multi page form, where the pages of fields are displayed and not using a v-if. The forms are large and the v-if is important for performance. The user can submit the form at any time, regardless of which page they are on. When they submit the form we need to validate all fields, regardless of whether or not they exist in the DOM at that time. We are using the persist modifier which works well, but only persists the field once it has been in the DOM at least once (which makes sense). What about fields that are on future pages the user has not got to yet?
Right now we are working around this with the validator API and the attach method. We loop through all the pages and fields once on page load and add the validate-able fields to the validator instance with a call that looks like this;
this.$validator.attach({
    name : field.id,
    alias : field.label,
    initialValue : field.value,
    persist : true,
    rules : {
        required : true
    }
});

(we are working on including other rule types in the rules object at the moment).
This seems to work (still testing), but while researching I have noticed suggestions that this may not be the way to achieve what we are trying to do and that the attach method may get removed from the API altogether in the future. So my question is this. Is this the right way to achieve the goal?
If so, is there anything else we should be ideally sending in the fieldOptions object above?
If not, is there a better, more recommended way? Should we be using verify instead? If so, is there an example of that which allows us to pass a name and an alias (for use in error messages) so that we get nice output, etc?
Thanks in advance for the advice, and the library, its really great.

I suggest using Validator.verify as the validation components actually use this internally and newer iterations of the directive will also use it.
What's great about it is that the low API surface you have to deal with, and the "field/errors" state is left to the developer to handle as they see fit. Also, it removes the headache of different input types, we are just interested in a value passes a certain rule set.

You can pass names, cross-field values like this:
const { valid, errors } = await v.verify('email|confirmed:otherEmail'<EMAIL_ADDRESS>{
  name: 'myField',
  values: {
    otherEmail<EMAIL_ADDRESS>
  }
});

I have question about verify how can I chain it and validate multiple values against different rules?

      const {valid, errors} = await this.validator.verify(i.value, i.rules);
      return valid;
    }));```

I have question about verify how can I chain it and validate multiple values against different rules?

Try this:
const resolvedErrors = await Promise.all(this.validationFields.map(async (i: any) => {
      const {valid, errors} = await this.validator.verify(i.value, i.rules);
      return valid;
}));

get validationFields() {
    return [
      {
        rules: 'required|email',
        value: this.field1
      },
      {
        rules: 'required',
        value: this.field2
      }
    ];
  }


Refactor examples

Deprecate perspective-examples module in favor of a top-level examples/ directory.

Changes applied, thanks!


Huge build times

Hi,
I've just cloned this repo and started it following the readme.
My problem is that each build takes ~30/40 seconds, even on hot reloads. Every time I get something between 150 and 750 warnings.
Basically it stays on the webpack building... message for those 30/40 seconds and then dumps all the warnings and the bundle is now VALID message.
I'm on Ubuntu 15.10, psci is version <IP_ADDRESS> (if it matters)
Thanks!

You should only be getting warnings on the first build. Subsequent builds in watch mode shouldn't trigger a huge amount of warnings. The warnings are from the purescript compiler, and are because most modules haven't been updated to using specified imports which started generating warnings in purescript 0.8.
The build times are a separate issue. There's two problems:

The first is that builds are triggered twice due to a bug in how purs-loader and purescript-webpack-plugin works. I have written my own loader which solves this and I should be publishing that very soon.
A full purescript recompile is being done on every webpack build. This can be sped up by using new per-file rebuild features in purescript 0.8. My loader that I'm releasing soon implements this as well.

So TLDR hang tight and I should have both those issues resolves.

Hi, thanks for the answer!
I'm confused now as I had people on slack telling me they had around 2/3 seconds build time on hot reload!
Yeah, I noticed the the build is triggered twice. The first one takes most of the time (pratically all of it) and the second one is < 1 sec.
Thanks for your hard work!

@alexmingoia I'm looking forward to the new loader with per-file-build-speedup. Currently I have a re-build time of ~11 seconds on the unmodified starter-app, which neutralizes the advantages of hot reloading a bit. Thanks for your great work!

An update on the new loader: I've made a PR to the existing purs-loader module: ethul/purs-loader/pull/47
If that's not accepted I'll release it as a separate module and update the starter-app accordingly.

The new release is using<EMAIL_ADDRESS>which should be much quicker, solves the double-compilation issue, and has optional experimental support for instant-rebuilds using psc-ide (https://github.com/ethul/purs-loader#instant-rebuilds-experimental)


Add header-based auth methods

This change adds support for using CI tokens and deploy tokens to authenticate requests, by adding a constructor, NewHeaderAuthClient, that accepts a header and token.

If #970 is accepted, I will close this PR in favor of the change I suggest in that issue.

Thanks and sorry for leaving this open for so long without giving any update. I think that by now we support all the tokens you tried to support using this PR. I understand it's a bit less flexible and might have a tiny bit of duplicate code, but for now I'm not really willing to make any big changes around this point. So sorry, but I will not be merging this PR...


chore: Remove getting started example

:tada: This PR is included in version 6.11.5 :tada:
The release is available on:

v6.11.5
GitHub release

Your semantic-release bot :package::rocket:


Buffering of messages while offline can now be toggled on/off via options...

...for example when a service is already using a persistent queue

As a heads up, I also added PR #97 that can support this by setting the queue size to 0, along with supporting other possible queue sizes

hI, @beyond-code-github, does PR #97 solve your problem?

@pladaria yup I think that would work just fine, happy to close this in light of #97 :)

close?


kubeadm/cilium: bump tested versions

In this PR, we bump the cilium version to latest v1.11.0 and we give the ability to set the version from the cilium-cli directly, since it has been introduced in the CLI.
This PR aims to have a more recent version of the tested cilium in order to prepare the introduction of a new test to validate the behavior of IPSec + cilium.
Testing done

tests on EM with kubeadm.v1.23.0.cilium.base

[x] Changelog entries added in the respective changelog/ directory (user-facing change, bug fix, security fix, update)

I grepped for cilium and found kola/tests/kubeadm/testdata/master-cilium-amd64-config.yml:102: url: https://github.com/cilium/cilium-cli/releases/download/v0.9.0/cilium-linux-amd64.tar.gz. Should version be also updated there?

That's not an issue, it's a testdata file used to unittest the template generation:
https://github.com/flatcar-linux/mantle/blob/2f39bbdd42f8bed7e3e729955a1dfc43aaf1c519/kola/tests/kubeadm/kubeadm_test.go#L89
We only check that uploaded templates on worker/controller are correctly rendered.

Ok, thanks for checking!


Back/Forward navigation broken. About screen broken

OS:
Windows 10
v3.4.0 (I think, see below)
Issue Descriptions:
Issue 1. The Back and Forward buttons on my mouse navigated back and forth in previous versions of the program. v3.4.0 broke this functionality.
Issue 2. The "About" screen in the app no longer displays. (So I can't check which exact version I just updated to)
Steps to Reproduce:
Issue 1. Self explanatory.
Issue 2.

Right click the Windows 10 notification icon.
Click Help > About.
Nothing pops up.

I'm unable to reproduce issue 2, and I can't reproduce 1 because of lack of buttons on the mouse.

My sincere apologies. Issue 2 seems to have not been an issue. The "about" screen displays IN the software, rather than as separate, pop up window. My mistake. Issue 1 however was still relevant. Although now the bug has been marked closed and looks to have been addressed.


Bar width with grouped Datasets

bars are cutted off when there are several bars grouped.
https://stackblitz.com/edit/chart-bar-width?file=src/app/app.component.ts
there are 2 datasets as example
EDIT this occurs only when there are 2 or less datasets, with 3 datasets its ok (example provided)

The offset limit comes from here: #8560
Maybe the 25% is too restrictive.

You can set bounds: 'ticks' to make sure the whole days are included in the time span.


yLockers Front End (2 months)

Scope

build backend services (APIs and feeds) to support new data requirements
build FE according to design specs / Figma
reliable hosting infra

Plan
The queue for FE work via MOM has grown too long for the short timeline needed to ship the new yLockers UI. This budget will be used to fund work performed by non-MOM FE developers.
This budget is for a term of exactly 2 months.

First month: sprint to get from nothing to fully functional website with all core features and excellent UX.
Second month: Focus on adding missing features, responding to user feedback / bugs, transition into low-maintenance mode

Deadline
2024-05-15
People

Marco
Muderteeth

Money
35,000 DAI (as sDAI)
Amount (Total)
35,000
Wallet address
0x4444AAAACDBa5580282365e25b16309Bd770ce4a
Reporting
Weekly

just to clarify, if this is approved I will not renew my docs budget for the next months and would focus exclusively on this one


HTTPS for integration tests

We should provide a way to test HTTPS endpoints. This currently fails because the test client cannot accept the default self signed certificate from the server.
The stack currently uses MST as an Integration Test framework which has this known issue (https://github.com/MicroShed/microshed-testing/issues/17). The proposed solution for MST is to start a pebble container, which would not work for us in a K8s environment.
Potential options:
1. Have tests auto-accept certs or bypass cert verification.
I looked into plugins like "wagon" for this, but could not get this to work. This also may not be a pattern we want to promote.
2. Get a signed cert for the server to use during testing.
OL has an acmeCA-2.0 feature for grabbing certs on behalf of the server. https://openliberty.io/docs/<IP_ADDRESS>/reference/feature/acmeCA-2.0.html. We could explore this and use LetsEncrypt as a CA.
There is also a LetsEncrypt Operator (needs to be built and deployed) here: https://www.redhat.com/en/blog/dynamic-ssl-certificates-using-letsencrypt-openshift. With this you can easily edit your HTTPS route to have a cert generated automatically. This may not be the right option since HTTPS should work internally without needing a route.

@awisniew90  for 1.  I'm not too familiar with this.. one example I happen to be aware of is:
https://github.com/OpenLiberty/open-liberty/blob/8ce89f5f53d7480c4ccaa14ca8d561221096c1b1/dev/com.ibm.ws.jbatch.utility/src/com/ibm/ws/jbatch/utility/http/HttpUtils.java#L82-L108
I'm not sure how well that aligns with the paths we'd want to use it through via MST.   Perhaps it's worth a bit more of a look.

@awisniew90  for 1.  I'm not too familiar with this.. one example I happen to be aware of is:
https://github.com/OpenLiberty/open-liberty/blob/8ce89f5f53d7480c4ccaa14ca8d561221096c1b1/dev/com.ibm.ws.jbatch.utility/src/com/ibm/ws/jbatch/utility/http/HttpUtils.java#L82-L108
I'm not sure how well that aligns with the paths we'd want to use it through via MST.   Perhaps it's worth a bit more of a look.


I have a problem when installing GooglePlayService.Auth 120.3.0 not compatible with monoAndroid 11.0

Please help

https://github.com/xamarin/GooglePlayServicesComponents/issues/596


Phone Gap Build id unique

PhoneGap Build requires a unique id for naming/finding/using a plugin.  The previous id was used by pushplugin so it cannot be used again.  Changing the id field should allow us to include the file when we build our app.
Honestly, this is the first thing I have ever tried in GitHub and I don't know phonegap that well.  I'm not sure what I am doing is right.  We will see....

Hi @dclarkconsulting Not sure if this would be enough, I guess you would have to register the plugin too?
At the moment this repo only exists due to some errors in the "official" repo, and its dedicated the Meteor package raix:push - I guess you are not using Meteor since you use the phonegap build tool?


Set default for view-port or programmatically set view-port?

I have a view-port for the toolbar in my application. Several of my routes use the same toolbar and I would like to remove the redundancy in route config.

Is there a way to set a default moduleId for a view-port (if not I might open a new issue for this one). So if it's not defined, instead of an error, it fills in with the default.

Can I programmatically insert a view-port?

I tried this one but unsuccessfully. I added a preActivateStep and tried both navigationInstruction.addViewPortInstruction and navigationInstruction.config.viewPorts.toolbar =  but it didn't work.
Thanks in advance!

BTW, I tried asking on the gitter channel with no response. Also, maybe I should've tried Stackoverflow but I kinda feel like that's a blackhole unless it's for a popular framework. If there were a forum, I would ask there. Thanks for the great project and community around it!

This isn't exactly a duplicate, but as we discussed in chat, I think this dovetails with this issue: https://github.com/aurelia/router/issues/482. Moving the conversation there.


override the onTap method

If user wants to perform some other activity without extending the text, then user will not able to do this with current code, We can make a optional parameter where user can override the existing onTap method and can perform other task.

I have similar use case. callback does help in adding the functionality but not with override.

Do you have any API proposal?

https://github.com/Blocship/readmore

Fixed in 3.0.0
You can set "isExpandable: false"


docker-wintercms - Admin password generation vs. docs

Winter CMS Build: hiltonbanes/wintercms:build.v1.1.2
PHP Version:
Database Engine: mariadb:10.4
Plugins Installed: none

Description:

The Quick Start says:

Login to the backend with the username admin and password admin.

After install it a random password is generated, which is a problem not only because it is not matching the docs but also when using tools like Portainer, where the generated password is not easy to retrieve.
Steps To Reproduce:

Install WinterCMS with the docker-compose file with database support.
Run:
$ docker-compose up -d
$ docker-compose exec web php artisan winter:up

...

Winter.Demo
 - v1.0.1:  First version of Demo
Seeded System
Seeded Backend

\Backend\Database\Seeds\DatabaseSeeder reported:
 - The following password has been automatically generated for the "admin" account: Tnq1g8Uj45itsKnYIkVC7p

Go to the backend page.
Try admin:admin as specified on the docs.
It doesn't work.
Spected Behaviour
Use admin:admin as specified on the docs to access the backend.

@pablorq Please submit an issue to @hiltonbanes to adjust the Docker build. One thing I would suggest he does is set up the build process to run php artisan winter:passwd on first entry and set the password from an environment variable (or set it to admin / admin by default).

I can't (nobody can, really) submit issues to @mik-p on docker-wintercms.
This is why I submit it here.

Yes I have used this suggestion previously and can add some ways to fix. For your issue you may also run:
docker exec -it container_name winter passwd admin admin
After container start. I will look into the github issue thing not sure what's the go there

(Moved to https://github.com/mik-p/docker-wintercms/issues/)


Daily Email with # of crashes

Describe the solution you'd like
In HockeyApp, I used to receive a daily email that summarizes the number of crashes for each of my apps from the previous day. This was very useful in monitoring any breakdowns of the apps. I would like to see this feature in AppCenter as well.
Describe alternatives you've considered
Email updates on new crash groups. This is not helpful in monitoring the status, though.
Additional context
N/A

Please have a look at #853. This looks like a duplicate. Good news over there though, it's almost ready!

I don't think this is a duplicate - #853 (now closed) appears only to solve for new crash groups, whereas the primary use case for me (and OP) is to have your finger on the pulse of overall crash trends - did my new release break something? did an OS update break something? etc. That's possibly, but certainly not necessarily, related to new crash groups - we need a daily email that shows overall crash report trends, new and existing.

Yes, that’s exactly what I meant, and #853 indeed doesn’t address my question.
Thanks for clarifying @stephent

Thanks for feedback! This is a common scenario we've heard before and we're currently exploring ways to make it easier for users to keep up to date on their app trends (via some dashboard or email). We don't have concrete plans yet but will post here with any updates. Thanks!

Thanks! Unfortunately, for me, the transition from Hockeyapp to Appcenter has decreased the Value-Add enormously. In the past, I would receive a daily email with the number of crashes all my apps had, and I was able to quickly spot problems. In Appcenter, I now have to go into the dashboard of each of the of my 40+ apps to look at the crashes. Lot's of additional work, and I'm considering going to another platform when I don't see improvements soon.

This would still be excellent to have, we are also considering moving to another platform (for other reasons also) but this would help a lot in the monitoring sense

This is still an issue and this ticket should be closed

This is still an issue and this ticket should be closed

^”should NOT be closed” is what’s intended I think, and I agree.
What is the point of “stale bot”? It’s like an electronic ostrich, sticking its head in the sand thinking “if I ignore it, I can make it go away”. Well, not really…

It is still an issue , but simply being ignored by the development team. Since almost 2 years ! This is a significant degradation compared to hockeyapp in the past, where the feature was available. Why is this ignored ???

Staling this will not make it go away...

Bump.

Still very much a needed feature, no need to stale this out. Any report if this couls be done in the near future? @winnie

Staling this will not make it go away...

Like @PGHM said.

Making the compulsory comment again

Bump, still not stale. After almost 3 years we are still waiting for a solution here. What is so difficult about this? The daily email with hockeyapp was a real value add and allowed us to track for any abnormal behavior. Now the developers have to actively click through all their apps to get a status.
microsoft , please address this !!!

Bump, still not stale. After 3 years (!!!) we are still waiting for a solution here, or at least a response.
The daily email with hockeyapp was a real value add and allowed us to track for any abnormal behavior. Now the developers have to actively click through all their apps to get a status.
microsoft , please address this !!!

Let the dance continue.
@winnie, could you please provide some kind of update of any plans?

Bump, still not stale. After 3,5 years (!!!) we are still waiting for a solution here, or at least a response.

Well, we decided to give up using AppCenter, good work on not listening to the customers :)

Yeah, same here. Removed it from all our apps. Not listening to customers, and since we implemented the latest build, the Dashboard doesn't show crash information anymore, it shows an error (see attached). This has been since 1.5 weeks already, and also there, there is apparently nobody that takes care... Seems like a dead project. Such a pity that we don't have HockeyApp anymore, that worked great.

Not stale.. 4 years and waiting for a response from Microsoft


Laravel Linter

This pull request includes changes and recommendations for crafting your application "The Laravel Way". Feel free to commit any additional changes to the shift-78475 branch.
Before merging, you need to:

Checkout the shift-78475 branch
Review all pull request comments for additional changes
Thoroughly test your application (no tests?, no CI?)

Much of the lint detected may be automatically fixed by running the Laravel Fixer or tasks within the Shift Workbench.

:x: The following configuration files differ from the Laravel defaults. If you are modifying configuration values directly, consider using an environment variable instead to keep these files maintainable. You should compare your configuration files against the latest version and merge any updates.

[ ] config/app.php
[ ] config/auth.php
[ ] config/broadcasting.php
[ ] config/cache.php
[ ] config/database.php
[ ] config/filesystems.php
[ ] config/hashing.php
[ ] config/logging.php
[ ] config/mail.php
[ ] config/services.php
[ ] config/session.php

:information_source: Starting with Laravel 8, the model property within factories may be removed when your models are stored within a conventional location such as app/Models. Unless your factory is for a model outside of this location, you may remove this property.

:warning: The following controllers contain actions outside of the 7 resource actions (index, create, store, show, edit, update, destroy). For more details, review the docs or watch Cruddy by Design to see if you may rework these into resource controllers.

[ ] app/Http/Controllers/LoginController.php

:warning: Shift found inline validation in the following controllers. Unless you require this level of control, you should use a Form Request to encapsulate this validation logic and keep your controller clean. You may automate this conversion with the Laravel Fixer.

[ ] app/Http/Controllers/NewsletterController.php
[ ] app/Http/Controllers/RegisterController.php
[ ] app/Http/Controllers/SessionsController.php

:information_source: Shift detected controller namespaces being set in your RouteServiceProvider. Laravel 8 began registering routes using static class references instead of namespace prefixes and action strings.

:information_source: As noted, much of the lint detected above can be automatically fixed using the Laravel Fixer. Save yourself time and clean up your codebase quickly with this new Shift.


Wrong Order (per schema) of SessionExpiryType and SessionExpiryInSeconds

In the very first code example on the page, the <SessionExpiryType> and <SessionExpiryInSeconds> parameters are shown with <SessionExpiryInSeconds> listed first and <SessionExpiryType> listed second, but this won't pass schema validation because the schema stipulates the tags have to appear in the order of <SessionExpiryType> first and <SessionExpiryInSeconds> second. The rest of the code examples on the page swap the order.
It's a small thing, but if someone's getting started and following best practices of using the provided schema file, the docs shouldn't steer them into a case where it fails to validate.

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

ID: 9627f2fa-6005-9c15-2824-03b7bcd4aae9
Version Independent ID: 619e1eea-ed67-994b-7eee-469123e9b7ef
Content: Configure session behavior - Azure Active Directory B2C
Content Source: articles/active-directory-b2c/session-behavior.md
Service: active-directory
Sub-service: b2c
GitHub Login: @msmimart
Microsoft Alias: mimart

Oops; not sure what I was reading but I'm incorrect. All code examples look correct.


Verify extent for copy image

See Spec section 18.3:
Copying to or from block-compressed images is typically done in multiples of the block. For this reason the extent must be a multiple of the block dimension. There is one exception to this rule which is required to handle compressed images created with dimensions that are not a multiple of the block dimensions. If the srcImage is compressed and if extent.width is not a multiple of the block width then (extent.width + srcOffset.x) must equal the subresource width, if extent.height is not a multiple of the block height then (extent.height + srcOffset.y) must equal the subresource height and if extent.depth is not a multiple of the block depth then (extent.depth + srcOffset.z) must equal the subresource depth. Similarily if the dstImage is compressed and if extent.width is not a multiple of the block width then (extent.width + dstOffset.x) must equal the subresource width, if extent.height is not a multiple of the block height then (extent.height + dstOffset.y) must equal the subresource height and if extent.depth is not a multiple of the block depth then (extent.depth + dstOffset.z) must equal the subresource depth.
When copy image is called, param checker should validate that the above is true which is a fairly straightforward set of if statements.

I'd like to request a further enhancement to verification of ranges, e.g. in VkBufferImageCopy.
It would be great to keep track of image size and mip levels and catch an invalid extent, for example:
const uint32_t          mipLevel = 1;
const VkBufferImageCopy region   =
{
    0ull,                                                                     // VkDeviceSize                bufferOffset;
    0u,                                                                       // uint32_t                    bufferRowLength;
    0u,                                                                       // uint32_t                    bufferImageHeight;
    makeImageSubresourceLayers(VK_IMAGE_ASPECT_COLOR_BIT, mipLevel, 0u, 1u),  // VkImageSubresourceLayers    imageSubresource;
    makeOffset3D(0, 0, 0),                                                    // VkOffset3D                  imageOffset;
    makeExtent3D(width, height, 1),                                           // VkExtent3D                  imageExtent;
};               ↑
                 oops, width is for level 0, so we're out of bounds now!

These checks are in validation with PR #1796, and are mip-level aware.


Manage apt::holds in hiera, like apt::sources

It's nice to be able to manage holds with hiera as well, just like sources.
Usage:
apt::holds:
  facter:
    version: 2.3.*
  hiera:
    version: 1.3.*
  puppet:
    version: 3.7.*
  puppet-common:
    version: 3.7.*

@emning ping?

Sorry, I don't have the time to sit down and learn how to do tests right now. If it's still open I should be able to get to this in a couple of months, however.
Should we close this and I can come back with a new pull request, or leave this open for now?

A couple of months is a long time, especially considering all the apt rework we're doing right now. The code you'll be looking at by then will likely differ quite a bit from now so I'm closing this for the time being.


Multiple paths

Hello,
How would I include multiple paths? I have this now but gives me errors.
new PurifyCSSPlugin({
paths: [
glob.sync(path.join(__dirname, '.php')),
glob.sync(path.join(__dirname, 'partials/.php')),
],
minimize: inProduction
}),
Any help would be appreciated!
Thanks in advance.

Now you have an array of arrays. It expects a flat array. Most likely you want to concatenate the result of those glob.sync calls or flatten it.

I think I found a workaround and use https://github.com/jpillora/node-glob-all instead of the regular glob. This allows me to look into multiple paths. My code looks like this now:
paths: glob.sync([
path.join(__dirname, '.php'),
path.join(__dirname, 'partials/.php')
]),
This seems to do the trick for me.

@JPortegijs Cool. Please PR a README fix. 👍

Example not working for me, the CSS simpy isn't being built when I try to use an array. Otherwise it works fine.

@stephan-v Can you open a separate issue? There's not enough information to debug.

@bebraw I have create a stackoverflow post since I think that was preferred in another issue:
https://stackoverflow.com/questions/44301416/purifycss-webpack-not-creating-css-output-with-multiple-paths


ValueError: 1 taxid not found

Thank you very much for your kind instruction
on the installation of mob_suite.
I've installed mob_suite in a server, but the following
test command caused an error of "ValueError: 1 taxid not found".
Could you let me know how to fix it?
(mob_suite) [k-yahara@gc016 plasmid-jp_Ohsumi]$ mob_typer
usage: mob_typer [-h] -i INFILE -o OUT_FILE [-a ANALYSIS_DIR] [-n NUM_THREADS] [-s SAMPLE_ID] [-f] [-x] [--min_rep_evalue MIN_REP_EVALUE]
[--min_mob_evalue MIN_MOB_EVALUE] [--min_con_evalue MIN_CON_EVALUE] [--min_length MIN_LENGTH] [--min_rep_ident MIN_REP_IDENT]
[--min_mob_ident MIN_MOB_IDENT] [--min_con_ident MIN_CON_IDENT] [--min_rep_cov MIN_REP_COV] [--min_mob_cov MIN_MOB_COV]
[--min_con_cov MIN_CON_COV] [--min_overlap MIN_OVERLAP] [-k] [--debug] [--plasmid_mash_db PLASMID_MASH_DB] [-m PLASMID_META]
[--plasmid_db_type PLASMID_DB_TYPE] [--plasmid_replicons PLASMID_REPLICONS] [--repetitive_mask REPETITIVE_MASK]
[--plasmid_mob PLASMID_MOB] [--plasmid_mpf PLASMID_MPF] [--plasmid_orit PLASMID_ORIT] [-d DATABASE_DIRECTORY]
[--primary_cluster_dist PRIMARY_CLUSTER_DIST] [--secondary_cluster_dist SECONDARY_CLUSTER_DIST] [-V]
$ mob_typer --infile test_rep.fas --out_file test_rep.mob_typer.out
2020-08-30 06:25:41,501 mob_suite.mob_typer INFO: Running Mob-typer version 3.0.0 [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/mob_typer.py:163]
2020-08-30 06:25:41,501 mob_suite.mob_typer INFO: Processing fasta file test_plasmid.fas [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/mob_typer.py:165]
2020-08-30 06:25:41,502 mob_suite.mob_typer INFO: SUCCESS: Found program blastn at /home/k-yahara/miniconda3/bin/blastn [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/utils.py:571]
2020-08-30 06:25:41,502 mob_suite.mob_typer INFO: SUCCESS: Found program makeblastdb at /home/k-yahara/miniconda3/bin/makeblastdb [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/utils.py:571]
2020-08-30 06:25:41,502 mob_suite.mob_typer INFO: SUCCESS: Found program tblastn at /home/k-yahara/miniconda3/bin/tblastn [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/utils.py:571]
2020-08-30 06:25:41,502 root INFO: Creating Lock file /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/databases/ETE3_DB.lock [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/utils.py:438]
2020-08-30 06:25:41,503 root INFO: Testing ETE3 taxonomy db /yshare2/home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/databases/taxa.sqlite [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/utils.py:441]
Traceback (most recent call last):
File "/home/k-yahara/miniconda3/bin/mob_typer", line 10, in
sys.exit(main())
File "/home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/mob_typer.py", line 316, in main
dbstatus = ETE3_db_status_check(1, ETE3_LOCK_FILE, ETE3DBTAXAFILE, logging)
File "/home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/utils.py", line 444, in ETE3_db_status_check
lineage = ncbi.get_lineage(taxid)
File "/home/k-yahara/miniconda3/lib/python3.7/site-packages/ete3/ncbi_taxonomy/ncbiquery.py", line 238, in get_lineage
raise ValueError("%s taxid not found" %taxid)
ValueError: 1 taxid not found
The input file test_rep.fas is as follows:
>test_rep
TTGAAAAAAATATGTGTACTTATGAAGAAGGAACTTGTTGTCAAAGACAATGCACTAATAAATGCCAGTTATAATTTAGACCTTTCAGAACAACGTCTAATATTGTTAGCAATCCTTGAAGCTAGACAATCAAACACACCCAATGATAAAGATTTAACAATTCATGCTGAAAGCTATATCAACCATTTTAACGTTCATAGAAATACAGCCTATAAAGTCCTTAAAGATGCATGTAAGAGTCTATTTGATCGTAGATTCAGCTATCAAAAACTAACTCAGAAGGGCAACATTGAAAATGTAATAAGCCGATGGGTACAACGCATATCTTATGTTGAGAATGAAGCTCTTGTTCGTATTAAGTTTTCTGATGATGTTGTACCGTTGATTACAAACTTAGAAAAACACTTCACCAGTTATGAATTAGAACAAGTCAGTAGTTTAACCAGTGTTTACGCTATACGCTTATATGAATTGCTTATTGCATGGCGTAGTACTGGTAAAGTCATTTTGGTAGAGCTAGAAGAACTTAGATTAAAACTAGGTATAGAATCCCATGAATATAAGAGAATGGGGCAATTTAAAGAAAAAGTTTTACACCTTGCTATTGATCAAATAAACAAATACACCGATATAAAAGCAGAGTATGAACAACACAAACGTGGCCGTTCGATTATTGGCTTTTCATTTAAGTTTAAACAGAAACAACAACCCCAAAAAGCAGATTCCAAGCGAGCCCCTAACACCCCAGACTTCTTTGTCAAAATGACCGATGCACAACGCCATCTATTCGCCAATAAAATGTCTGAGATGCCTGAAATGAGCAAATATTCACAAGGCACAGAAAGCTATCAACAGTTTGCTATCCGTATCGCTGACATGCTTTTAGAGCCTGAAAAGTTTAGAGAGCTTTATCCAATCTTAGAAAAAGCAGGGTTTAAAGGTTAA
Many thanks again.
Koji Yahara

MOB-suite uses the ETE3 NCBI taxonomy database and uses taxid 1 as a simple query to make sure that the database is in good health. If it is failing on that taxid, then I would suspect something is wrong with your ETE3 databases. Can you run mob_init and see if that runs successfully?  If it does, then try running command again and if not can you post what the error message is?

Thank you very much for your quick answer.  The messages after "mob_init" are as follows.  At the end, an error message of "Inserting synonyms:<PHONE_NUMBER>-09-01 05:04:29,745 mob_suite.utils ERROR: Init of ete3 library failed with error UNIQUE constraint failed: synonym.spname, synonym.taxid. Removing lock file [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/mob_init.py:230]" appears.
mob_suite) [k-yahara@gc017 ~]$ mob_init
2020-09-01 05:02:04,100 mob_suite.utils INFO: Database directory folder already exists at /yshare2/home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/databases [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/mob_init.py:131]
2020-09-01 05:02:04,119 mob_suite.utils INFO: Placed lock file at /yshare2/home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/databases/.lock [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/mob_init.py:142]
2020-09-01 05:02:04,119 mob_suite.utils INFO: Initializing databases...this will take some time [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/mob_init.py:165]
2020-09-01 05:02:04,119 mob_suite.utils INFO: Downloading databases...this will take some time [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/mob_init.py:178]
2020-09-01 05:02:04,119 mob_suite.utils INFO: Trying mirror https://share.corefacility.ca/index.php/s/rYaAH7oxrSVtilN/download [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/mob_init.py:182]
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100  450M  100  450M    0     0  15.0M      0  0:00:29  0:00:29 --:--:-- 16.8M
2020-09-01 05:02:34,249 mob_suite.utils INFO: Downloading databases successful, now building databases at /yshare2/home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/databases [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/mob_init.py:191]
2020-09-01 05:02:34,249 mob_suite.utils INFO: Decompressing /yshare2/home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/databases/data.tar.gz [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/mob_init.py:107]
2020-09-01 05:02:49,926 mob_suite.utils INFO: Building repetitive mask database [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/mob_init.py:204]
2020-09-01 05:02:50,874 mob_suite.utils INFO: Building complete plasmid database [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/mob_init.py:208]
2020-09-01 05:03:13,742 mob_suite.utils INFO: Sketching complete plasmid database [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/mob_init.py:212]
2020-09-01 05:03:21,819 mob_suite.utils INFO: Init ete3 library ... [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/mob_init.py:224]
Downloading taxdump.tar.gz from NCBI FTP site (via HTTP)...
Done. Parsing...
Loading node names...
2269838 names loaded.
226442 synonyms loaded.
Loading nodes...
2269838 nodes loaded.
Linking nodes...
Tree is loaded.
Updating database: /yshare2/home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/databases/taxa.sqlite ...
2269000 generating entries...
Uploading to /yshare2/home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/databases/taxa.sqlite
Inserting synonyms:<PHONE_NUMBER>-09-01 05:04:29,745 mob_suite.utils ERROR: Init of ete3 library failed with error UNIQUE constraint failed: synonym.spname, synonym.taxid. Removing lock file [in /home/k-yahara/miniconda3/lib/python3.7/site-packages/mob_suite/mob_init.py:230]

Hello, I've also got a similar error using ete3 library. Apparently there is a bug in that library when building a taxonomy sqlite database detailed here and (here)[https://github.com/etetoolkit/ete/issues/469]. The easiest way is to make sure to install ete3>=3.1.2 as it incorporates bug fix with duplicated taxid.  This new ete3 version was only released 3 days ago. Theoretically conda recipe for mob-suite should pull the newest ete3 library, but due to very recent ete3 release, install it first manually making sure the version is correct after install (conda list | grep ete3) and channel is etetoolkit (not bioconda). The following should appear after library install ete3  3.1.2  pyh39e3cac_0    etetoolkit. The newest ete3 version is currently only available from the etetoolkit conda channel and eventually will appear in the bioconda channel.
conda create -n mob_suite-3.0.0 -y
conda install -c etetoolkit ete3
conda install -c bioconda mob_suite=3.0.0=py_2  -y
mob_init

After running these commands there should be no more issues. I was able to successfully initialize mob-suite databases as below
...
Updating database: /Drives/K/kbessono/.conda/envs/mob_suite-3.0.0/lib/python3.8/site-packages/mob_suite/databases/taxa.sqlite ...
 2271000 generating entries...
Uploading to /Drives/K/kbessono/.conda/envs/mob_suite-3.0.0/lib/python3.8/site-packages/mob_suite/databases/taxa.sqlite

Inserting synonyms:      225000
Inserting taxid merges:  55000
Inserting taxids:       2270000
2020-09-01 23:23:25,811 mob_suite.utils INFO: Removed residual taxdump.tar.gz as ete3 is not doing proper cleaning job. [in /home/CSCScience.ca/kbessono/.conda/envs/mob_suite-3.0.0/lib/python3.8/site-packages/mob_suite/mob_init.py:236]
2020-09-01 23:23:25,818 mob_suite.utils INFO: MOB init completed successfully [in /home/CSCScience.ca/kbessono/.conda/envs/mob_suite-3.0.0/lib/python3.8/site-packages/mob_suite/mob_init.py:248]

Thank you so much for your quick response.  Yes, it worked!


Annotate JS source to make Closure Compiler work

With this change advanced optimizations of the Closure Compiler work and
produce working output.

LGTM


chore(Algebra/Invertible/Defs): extract a variable command

As requested by @YaelDillies

[x] depends on: #8288

maintainer merge


Instances inside Container are different in app and test enviroment

Hello,
I'm using the Library right now and during the last days I was doing some UI-tests retrieving some data market as Singleton from the SwinjectStoryboard instance.
The thing is that when I try to retrieve an unique instance from the library:
override func setUp() {
		accountStore = SwinjectStoryboard.defaultContainer.resolve(AccountStore.self)!
		super.setUp()
	}

The instance is not the same that I have on my ViewController, even when the Scope is ObjectScope.container :
class AccountStoreAssembly: Assembly {
    func assemble(container: Container) {
        container.register(AccountStoreController.self) { _ in
            AccountStoreController(dispatcher: container.resolve(Dispatcher.self)!,
                    repository: container.resolve(LumiereService.self)!)
        }.inObjectScope(ObjectScope.container)

        container.register(AccountStore.self) { _ in
            AccountStore(controller: container.resolve(AccountStoreController.self)!,
                    dispatcher: container.resolve(Dispatcher.self)!,
                    repository: container.resolve(LumiereService.self)!)
        }.inObjectScope(ObjectScope.container)
    }
}

This is normal? There is no way to keep the same instance for both places? Tests and normal application controllers? Is this an issue or it works as designed?
Thank you so much in advance!

I'm afraid I don't quite understand what is the problem - can you clarify?
What do you mean by environment in your question? How did you compare instances between these environments?


Cooldown Command Suggestion

Summary
Cooldown for Commands etc.
What is the feature request for?
The core library
The Problem
I think it is self-explaining, but I am trying to make a cooldown for some commands. 😁
I don’t know if it has been suggested yet, but yeah
The Ideal Solution
Making a commands.Cooldown(…), like in it is used in discord.py
The Current Solution
No response
Additional Context
Doesn't need to be in the library as fast as possible, but it would help me a lot, because it saves lot of time and code

The commands framework of discord.py hasn't changed. You can still use its cooldowns like before

Oh okay, thought you said thats its not integrated in the library yet. But thanks anyway!

Oh okay, thought you said thats its not integrated in the library yet. But thanks anyway!

That was about builtin support for app-command cooldowns, not cooldowns in general ^^
You're welcome

Also please give the issue a name next time😀

Oh yes, I forgot it 😅


Document merge update features

What are you changing in this pull request and why?
We have a need to be able to delete values based upon Amazon's DMS.  There is also a need to do custom updates.  This PR addresses both of them with the code here
Checklist

[x] Review the Content style guide and About versioning so my content adheres to these guidelines.
[x] Add a checklist item for anything that needs to happen before this PR is merged, such as "needs technical review" or "change base branch."

Closing as wontfix as described in https://github.com/dbt-labs/dbt-core/issues/7057


Utility Features & Stability Fixes

Stress tested plugin stability by spam-clicking options on/off and turning the plugin itself on/off quickly. After a fixing a few breaks/exceptions, the plugin seems to be fully stable.
Debug Panel

Added a toggleable DebugOverlayPanel with basic stats about path finding
Shows info about how many nodes were checked, time taken, and rough approximation of memory used
Added a warning for users that memory usage is not 100% accurate and may be off by ±5MB in the worst case
Memory info will show "N/A" when it's obvious that Garbage Collection occurred (i.e. less memory used than when pathfinding started)

Edit: Removed memory usage display, see comment below.

Old Screenshot
Additional Changes

Pathfinding is restarted when the user changes an option related to transports
Turning the plugin off & back on would hit an exception due to fairy ring transport code
Moved ExecutorService to main plugin and teardown/rebuild the executor as needed
Pathfinding thread is appropriately named
PathfindingTests doesn't need to run pathfinding on a separate thread
AtomicBoolean was unnecessary in this context and can be replaced with volatile boolean
Set gradle source compatibility to Java 11 due to usage of String.isBlank in Transport.java
Avoid processing the entire boundary queue if the target was found

Removed the memory usage debug display. It's not a measure of how much memory shortest-path uses, but rather a rough measure of how much memory was allocated across the entire game while pathfinding was running. Because of this it's a gross over-estimation of memory usage and not too relevant. I wouldn't want users being misled into thinking shortest-path is eating up memory because some other plugin in the background is leaking a ton of memory.
New panel looks like:

What do you think of only showing the debug panel if the --debug argument has been passed to the client?

What do you think of only showing the debug panel if the --debug argument has been passed to the client?
If it's something you'd prefer I can change it to toggle only during development/debugging. Included it as an option in-case there's info that'd be helpful in narrowing down bug reports and issues but it's also not too useful to most people outside of being interesting stats to look at.

For simplicity for us I think you should leave it as a config option like you intended.
I just remembered issue #26 where someone accidentally turned on Draw transports and did not know how to remove it again.

Opted to move the panel toggle to a "Debug Options" section to make it clearer to people that it's probably not something they need to toggle. Hopefully that along with the panel title being "Shortest Path Debug" make it obvious what it is and how to turn it off if needed.


Apple toolchain not working

Is there any working example using the apple toolchains? I converted a buck project to buck2 but I'm running into the following error when just trying to build a simple apple_library target:
 1: Error looking up configured node none//buck2/platform/toolchain:apple-default (prelude//platforms:default#213ed1b7ab869379) (prelude//platforms:default#213ed1b7ab869379) (my .buckconfig aliases fbsource to none).
Does the apple toolchain work at all for non-FB developers?

We haven't got the Apple toolchain working for non-FB developers - it points at internal things we haven't yet made available. It's on our todo list, but with no guarantee of when.
CC @milend @chatura-atapattu @blackm00n

@ndmitchell Thanks for the response! Unfortunately buck1 stopped working for me with the release of Xcode 14.3 and I'd definitely love to switch to buck2 as the architecture seems much easier to work with. Let me know if I can help out in any way!

@jboley: As @ndmitchell has said, we haven't yet found the bandwidth to open-source the remaining Apple bits. It's something we care about and it's on our roadmap but we've had higher priority work take precedence.

Unfortunately buck1 stopped working for me with the release of Xcode 14.3

@jboley: It's unfortunate that we stopped pushing Buck1 commits since late last year but it's certainly possible to fix Buck1 to work with Xcode 14.3.

Let me know if I can help out in any way!

Thank you for the offer – the best thing to do for now is to just wait until we open-source the remaining parts. Appreciate the patience.

@milend Hey! Do you have some roadmap or some expectation about releasing the remaining parts of Apple platform code? Looking forward to to see the improvements of Buck2 on iOS development lifecycle.
Also, would love to help if needed :)

@milend Hey! Do you have some roadmap or some expectation about releasing the remaining parts of Apple platform code?

This work is currently scheduled to be completed by the end of 2023 – although no promises, this depends on internal priorities etc.

Also, would love to help if needed :)

Thank you for the kind offer, really appreciate it! If we need some help, I'll definitely reach out on this thread.

@milend , is there a roadmap with milestones for closing the gaps between internal and open-sourced versions of buck2? Having a matrix containing a list of platforms that are currently fully supported and a list of platforms (ios, java, android) that are planned to be supported would be super helpful.
cc @ndmitchell

@milend , is there a roadmap with milestones for closing the gaps between internal and open-sourced versions of buck2?

There's no public roadmap that we can share. We cannot commit to any specific timelines as prioritisation depends on lots of internal constraints.
Having said that, we're open sourcing more of the Apple bits every single week, so we're making progress towards having things working end-to-end.

Having a matrix containing a list of platforms that are currently fully supported and a list of platforms (ios, java, android) that are planned to be supported would be super helpful. cc @ndmitchell

I can only speak for Apple platforms - those are 100% planned to be supported and fully open-source, it's just a question of time as we open up all the pieces.

We plan to support everything on that list, and basically everything in the prelude that has rules for should eventually work both internally and open source.

👋
@milend  happy to contribute the fixes required to making the buck2 prelude apple rules work if meta has priorities elsewhere, #740 did address a lot of them, not sure why it was closed however.
soon i'll have to also start working on a reindeer for spm (Package.swift) and for Xcode support a BXL w/ XcodeProj for my use case.

@huwaireb We do have all the components to make the Apple rules works outside of Meta but unfortunately, we do not have the bandwidth to prepare and open source the code at the moment.