move required eslint dependencies from devdependencies

…ndencies

Issue:
What I did

See https://github.com/dpc-sdp/vic-gov-au/actions/runs/6020485857/job/16331884500?pr=1036
Adding these to dependencies should prevent needing to add them in a project

How to test

Checklist

For all PR's

[ ] I've added relevant changes to the project Readme if needed.
[ ] I've updated the documentation site as needed.
[ ] I have added unit tests to cover my changes (if not applicable, please state why in a comment)

For new components only

[ ] I have added a story covering all variants
[ ] I have checked a11y tab in storybook passes
[ ] Any events are emitted on the event bus

Also:

[x] Fixed the dependency issue that was causing jest-axe to fail on test-runner
[x] Updated all storybook deps to latest


Update list of allowed countries for chargeprice

[ ] Finland
[ ] Lithuania
[ ] Lattiva
[ ] Estonia
[ ] Liechtenstein
[ ] Romania
[ ] Slovakia
[ ] Poland
[ ] Serbia
[ ] Bulgaria
[ ] Kosovo
[ ] Montenegro
[ ] Albania
[ ] Greece
[ ] Portugal
[ ] Iceland

Where did you get this list from? Is this the list of countries where Chargeprice shows charging stations on the map, or where they actually have reliable data about prices (including plans from local providers)?
For example it seems that Chargeprice doesn't have any pricing information for most chargers in Iceland (except for Tesla Superchargers and Virta). Same for Portugal, where Shell Recharge is usually the only provider listed.

Where did you get this list from? Is this the list of countries where Chargeprice shows charging stations on the map, or where they actually have reliable data about prices (including plans from local providers)?
For example it seems that Chargeprice doesn't have any pricing information for most chargers in Iceland (except for Tesla Superchargers and Virta). Same for Portugal, where Shell Recharge is usually the only provider listed.

I looked on the Chargeprice map, and every country that is cited in my first post contains chargers with chargeprice price comparaison support

Yeah, but if you actually try to get prices for those chargers you will often see that there is not much useful information there.

Yeah, but if you actually try to get prices for those chargers you will often see that there is not much useful information there.

If I remember correctly I found for each country a charger that has at least more than 2 pricing options... so it is useful and will probably expand in the future

For Iceland: Virta seems to have a lot of chargers there! (And for the other chargepoints it often is written soon)
For Portugal: This charger for example contains a lot of different tarifs https://www.chargeprice.app/?poi_id=d0e51f7b-1bc9-4227-a22f-e17a1b1989ba&poi_source=chargeprice

Thats's great, thanks for the update!


"Keep Screen On" not working as expected on Android

Godot version
4.0 Beta 2
System information
Ubuntu 16.04
Issue description
Keep Screen On option in Project Settings > Display > Window has no effect on exported Android builds. The issue was present from the first Alpha release of Godot 4.0 that I tested (4.0 Alpha 6)
Steps to reproduce

Create a mobile project, got to Project Settings > Display > Window. Check Keep Screen On option.
Export and run the project on Android device.
The screen turns off after default screen timeout of Android.

Minimal reproduction project
No response

Keep Screen On is supposed to be implemented on Android: https://github.com/godotengine/godot/issues/18683
Does it work in 3.5?

Have not tested it on Godot 3.5 since but was working on 3.2 as I remember.
I have tested this particular bug on Android 10 & 11, both on Xiaomi Mi A3.
I can test on other devices too, but as far as I have searched by grep, I could not find any known implementation of "Keep Screen On" not on XML nor Java part of compiled templates, so my best guess is that there should be basically absent from generated code somehow.

https://github.com/godotengine/godot/blob/2846ea1ffafddfc447036b37d255f72cb278b677/platform/android/java/lib/src/org/godotengine/godot/Godot.java#L319-L327
https://github.com/godotengine/godot/blob/2846ea1ffafddfc447036b37d255f72cb278b677/platform/android/java/lib/src/org/godotengine/godot/Godot.java#L302
I wonder why "True" has an uppercase "T" here…

That should be the root ...

Relevant source code:
https://github.com/godotengine/godot/blob/2846ea1ffafddfc447036b37d255f72cb278b677/platform/android/java/lib/src/org/godotengine/godot/Godot.java#L319-L327
https://github.com/godotengine/godot/blob/2846ea1ffafddfc447036b37d255f72cb278b677/platform/android/java/lib/src/org/godotengine/godot/Godot.java#L302
I wonder why "True" has an uppercase "T" here…

That should be the root ...

https://github.com/godotengine/godot/blob/2846ea1ffafddfc447036b37d255f72cb278b677/platform/android/java/lib/src/org/godotengine/godot/Godot.java#L302
I wonder why "True" has an uppercase "T" here…

Seems like getGlobal() in Java always returns a string and not a Variant, so it depends on the Variant to String conversion.
JNIEXPORT jstring JNICALL Java_org_godotengine_godot_GodotLib_getGlobal(JNIEnv *env, jclass clazz, jstring path) {
        String js = jstring_to_string(path, env);

        return env->NewStringUTF(GLOBAL_GET(js).operator String().utf8().get_data());
}

We used the print booleans as True and False, and this changed in Godot 4.0, so this code is now broken.
It's pretty brittle to rely on such String conversion, but I imagine it's not easy / worth the effort to reimplement a Variant equivalent in Java just for this.

We used the print booleans as True and False, and this changed in Godot 4.0, so this code is now broken.
It's pretty brittle to rely on such String conversion, but I imagine it's not easy / worth the effort to reimplement a Variant equivalent in Java just for this.

Ah so since Godot 4.0, the string representation of bools has changed? This kind of bug could quickly be avoided by replacing the hard coded "True" with the similar conversion of the Godot bool true to string then, e.g. another output of getGlobal?

Yes just changing "True" to "true" in the code Calinou linked should be sufficient. If you can test it, then feel free to make a PR with that fix.
And checking the only other use of getGlobal, I found the reason for #68048 too, I'll make a PR to fix both.


1.19 support

Minecraft 1.19 just released, followed by Fabric & Quilt.
Now, we just need an update for Retino. 😄

Chances are it already works! Could you try sticking the 1.18 jar in a 1.19 instance?

Seems to work fine, however I don't have a Retina Mac to test it. (M1 Mac mini)

Nice! Yeah, the mod is generally compatible across versions. I'll update CF and Modrinth to reflect that it supports 1.19 :)


Reference is undefined

I get the error !reference [.sh_functions, wait_for] is undefined when running gitlab-ci-local.
It works fine in the normal GitLab CI.
Minimal .gitlab-ci.yml illustrating the issue
.gitlab-ci.yml
include:
  - project: ci-help
    file:
      - /functions/sh_functions.yml

test:minimal:
  image: php:8.2-alpine
  script:
    - !reference [ ".sh_functions", "wait_for" ]

/functions/sh_functions.yml
.sh_functions:
  version:
    # Useful for testing version compatibility (e.g. 2.0.0 > 1.9.9)
    # From https://stackoverflow.com/a/37939589
    - function version { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; }
  wait_for:
    # Repeats the specified command until it successfully returns, or times out
    #
    # Example (Waiting for Elasticsearch to be available):
    #  `wait_for curl -s elasticsearch:9200`
    - >
      function wait_for {
        local X=1
        until "${@}"; do
          if [ "${X}" -gt 60 ]; then
            echo "The command did not complete within 60 seconds"
            return 1
          fi

          X=$((X + 3))
          sleep 3
        done
      }

Expected behavior
No errors
Host information
macOS Sonoma 14.1.2 (Apple Silicon M1 Pro)
gitlab-ci-local 4.45.2

Do you see any yellow warnings in your terminal output?

Do you see any yellow warnings in your terminal output?

No, I don't. !reference [ ".sh_functions", "version" ] works fine, though!

Oh, I added ref: master to the top, and it worked. I then removed it, and it worked again.
It seems like it might be a caching issue.

Oh, it might be an issue with figuring out ref: "develop".
wait_for isn't in main yet.

I'm confused. Can we close this issue or not?

I'm confused. Can we close this issue or not?

The issue is that specifying ref: "develop" doesn't seem to include the file from the develop branch, it always seems to pull from main.

https://github.com/firecow/gitlab-ci-local/blob/master/src/parser-includes.ts#L187
That is not technically possible.


[VariableName Sniff] Improve error message differentiation in the sniff.

Ensures that static class properties get the Object property...  version of the error message rather than the Variable ...  version.
Includes additional unit tests to verify that the differentiation works properly.
Also:

Slightly simplifies the in_class check
Fixes one // Bad on the wrong line issue in the unit test file
Fixes one inconsistent error message (missing "valid" in the sentence).

Closes #555

ping anyone willing to review this PR ?


add advisory speed to the custom capnp

as openpilot suggests, remain back compatability

What is the purpose of this?

custom.capnp is meant to be left empty upstream and used in forks.


Perception Bindable bindings cause body re-evaluations

Description
It seems that SwiftUI does not consider bindings created from @Perception.Bindable to be equivalent across updates in the same way as bindings created from @SwiftUI.Bindable. Consider this example:
@Perceptible
class DemoState {
    var count = 0
    var isOn = false
}

struct DemoView: View {
    @Perception.Bindable var state = DemoState()

    var body: some View {
        WithPerceptionTracking {
            VStack {
                ToggleView(isOn: $state.isOn)

                Button("Increment") {
                    state.count += 1
                }

                Text("Count: \(state.count)")
            }
        }
    }

    struct ToggleView: View {
        @Binding var isOn: Bool
        var body: some View {
            let _ = Self._printChanges()
            Toggle("isOn", isOn: $isOn)
        }
    }
}

This view has a counter that can be incremented, and a toggle bound to a bool. Ideally, updates to count and isOn can be tracked independently. But it seems that when count is incremented by tapping the button, the binding to isOn changes as well, and we see it reported in the log:
DemoView.ToggleView: @self, _isOn changed.

When replacing @Perception.Bindable with @SwiftUI.Bindable the ToggleView body is no longer evaluated on each button press.
Checklist

[X] I have determined that this bug is not reproducible using Swift's observation tools. If the bug is reproducible using the @Observable macro or another tool from the Observation framework, please file it directly with Apple.
[X] If possible, I've reproduced the issue using the main branch of this package.
[X] This issue hasn't been addressed in an existing GitHub issue or discussion.

Expected behavior
When tapping "Increment", the ToggleView is not re-evaluated.
Actual behavior
When tapping "Increment", the ToggleView is re-evaluated.
Steps to reproduce
Run the example in the description in an app or preview, and tap the "Increment" button.
Perception version information
main
Destination operating system
iOS 17
Xcode version information
Version 15.1 (15C65)
Swift Compiler version information
swift-driver version: 1.87.3 Apple Swift version 5.9.2 (swiftlang-<IP_ADDRESS>.56 clang-15<IP_ADDRESS>.5)
Target: arm64-apple-macosx14.0

Hi @watt, I'm not sure there is going to be much we can do to fix this. Who knows why SwiftUI's bindings are special. We'll try to find some time to investigate more, but in the meantime please do share if you uncover anything.

Sure thing. I've done some experiments while adding SwiftUI support to Workflow, and had success avoiding this by caching bindings. I'll follow up when I can provide a more concrete example of that.

@watt We have a fix for this and will be PR'ing it soon.


fix comment space

Q
A

Is bugfix?
no

New feature?
no

Breaks BC?
no

Tests pass?
no

Fixed issues
None, just remove the extra space in comments.

Merged. Thanks!

@samdark Thanks for your attention.


bug forwarder from Debain

Hello here a bug from a Debian user
Hi,
I'm running Debian testing and have installed Spyder3 from unstable (as there is currently no testing version of spyder3). When trying to run it, I got this error:
$ spyder3
Traceback (most recent call last):
File "/usr/bin/spyder3", line 3, in
start.main()
File "/usr/lib/python3/dist-packages/spyder/app/start.py", line 103, in main
from spyder.app import mainwindow
File "/usr/lib/python3/dist-packages/spyder/app/mainwindow.py", line 49, in
requirements.check_qt()
File "/usr/lib/python3/dist-packages/spyder/requirements.py", line 41, in check_qt
actual_ver = qtpy.PYQT_VERSION
AttributeError: module 'qtpy' has no attribute 'PYQT_VERSION'
It turns out that, although qtpy does not have PYQT_VERSION, it does have version which seems to return the pyqt version. Changing the line above to actual_ver = qtpy.version makes it work. I don't know if this is a quirk of installing the unstable version in testing or just a bug from the switch from qt4 to qt5, but I thought you may want to know.
Regards,
Keziah Milligan

Thanks for reporting. You need to update qtpy to 1.1.0 or a higher version to fix this error :-)
If the Debian version is older than that, please ask the Debian maintainers to update it.


Clang is enforcing std::complex<> only accepting native floating-point types, find a solution

First AppleClang and now regular Clang are enforcing that std::complex<> is undefined when the template parameters are not native floating-point types.
This will kill all complex<> use cases of Universal floating-point types, of which there are many:

cfloat
areal
dd
qd
efloat
posit
takum
lns
dbns
dfloat
fixpnt
deci

We need to find a solution to this problem that side-steps this std::complex<> library specification.

I'm looking around for alternatives and thinking about requirements for a custom complex class.
Deciding on what customization points are wanted will help guide any design.
A std compatible scalar complex class is relatively straightforward.
Then, std::complex has design flaws and limitations that can be addressed in a custom class.
Vectorization could be an important consideration.
Should separate real and imag arrays be supported, as in BLAS calls?
Possibly via an array specialization, complex<S[N]>?
However, that raises an issue; what is the return type of subscripting a complex array type?
Indexing an array returns a modifyable lvalue, by convention.
This implies that a complex view type is needed to collect the separated real and imag parts.
Or, simply don't support indexing.
On the other hand there's a proposal for std::simd to work with std::complex
P2663 Interleaved complex values support in std::simd
taking the pragmatic approach to work with 'interleaved' storage of real and imag (as per usual)
despite this limiting parallelism opportunity on current hardware.
There's a complex specialization in this library by Joel Falcou
https://github.com/jfalcou/kyosu
done as an alias of a more generic Caley-Dickson type here
https://github.com/jfalcou/kyosu/blob/main/include/kyosu/types/complex.hpp
designed to work with his EVE simd library
(a long time metaprogrammer the code is... very clever...)
I don't find anything useful in Boost yet.
(Boost::math has some TR1-era extensions to std::complex)
(Boost::units has an example units-compatible complex type).
In fact, I don't find any useful alternative third-party code yet.
There's a complex class in Stan math library, but it also (ab)uses std::complex.

FYI I kicked off a discussion on cpplang slack #general channel, including a response from C++ luminary Howard Hinnant.
Alfredo is a US national lab HPC coder and author of the boost-multi array library.

Alfredo: @willw for std complex to be a serious type to do high performance numerics, it would have to be trivially default constructible to begin with. For serious applications one ends up with a custom complex type or hacking around the initialization of complex elements in array containers.

howard.hinnant: std::complex was standardized in C++98 and has been largely untouched since then.  Meanwhile the C++ language has changed dramatically.  An interesting exercise would be to do a clean-sheet design of a complex class by people intimately familiar with both the subject matter and modern C++, and then do a diff between that result and std::complex.  Maybe there is a migration path....

Alfredo @howard.hinnant I agree with the assessment and also hope for a bright future. Unfortunately, recent history is not promising. CUDA Thrust had the opportunity to make thrust complex trivially constructible and did not take it. They are designing cuda::complex (in libcudacxx) and I hope they don’t make the same mistake. https://github.com/NVIDIA/cccl/issues/1010, not sure if this more modern view is coming across.

Mikhail Kandel: wonder if there is some advantage to making it a primitive type :-)

Alfredo: in C99 it is a built-in type, e.g. float _Complex, the class std::complex could, and in some cases is, implemented in terms of it.

I will start with the simpler problem of siphoning off the complex regression tests from the individual arithmetic type regression suites and collect them in their own build target, something like BUILD_COMPLEX. We can then also nicely compartmentalize the complex<> library development work.


CI deployment of the website is incomplete

After merging https://github.com/lf-lang/lf-lang.github.io/pull/124, the newly added entry "Generic Reactors" under "Writing Reactos" in the handbook sidebar did not appear, although the page is there (https://www.lf-lang.org/docs/handbook/generics?target=cpp). A similar issue occurred in (https://github.com/lf-lang/lf-lang.github.io/pull/121), where renaming an entry let to CI errors. In both cases, the website compiled and run fine locally, but not in CI... This indicates that there must be some issue with our deployment process.

When built locally, the page also does not show up in the menu on my end. Could there be some uncommitted state that you have but we don't?

I tried again with the current main branch, and it works fine on my end. I simply run yarn start and got this:

My git status is empty. I am also certain that I committed all the changes that I made by hand. If there are any other changes missing, they are both auto-generated and ignored by git.

Strange. The menu entry does not show up for me...

Is there any guideline on how new pages are supposed to be added? Maybe I missed something, but it looks to me like all the information should be available to the tools.

Did you consult the README.md?

I was not aware of this document. I now noticed that it is linked from the main README, but it is not too obvious.
Apparently, the file I edited manually in #124 gets automatically generated when running yarn bootstrap. It is strange to me that a file located in scr/lib gets generated, but Ok. I now edited the correct file and pushed a fix to main.

We inherited a lot of useful things but also quite a few strange ones, I agree...


Define a module value object?

Following https://github.com/jhipster/jhipster-lite/pull/1760 and to prepare https://github.com/jhipster/jhipster-lite/issues/1666 and https://github.com/jhipster/jhipster-lite/issues/1565 I think a Module domain object can be a good idea.
A module holds all information for a specific... module in JHipster Lite (example: init, cache, ...). The idea would be to enforce modules invariants, ease modules creation / maintenance and avoid the big ApplicationService (which is a very bad smell).
I gave a try to a build API, ended up with something like that:
Module.forProject(TestUtils.tmpProject())
  .filesFrom("server/springboot/core").to("src/main/java")
    .add("application.properties.mustache")
    .add("IntegrationTest.java.mustache")
    .add("MainApp.java.mustache", "MyApp.java")
  .and().filesFrom("server/javatool/base").to("src/main/java/com/company/myapp")
    .add("Assert.java.mustache")
    .add(""
  .and().javaDependencies()
    //...

The idea will then be to create a domain service using the current ProjectRepository to create a module (this is a first step, the next one would be to move that in a dedicated repository and to delete ProjectRepository)
What do you think of this idea? I give it a try to create a very simple new module (ex: one with a git cheat sheet)?

as discussed together with @hdurix @matthieulapatate : we're in a good direction here, as it will simplify a lot all the code in DomainService
So yes let's do it

After some iterations the API now looks like this:
moduleForProject(new JHipsterProjectFolder(FileUtils.tmpDirForTest()))
  .context()
    .put("packageName", "com.test.myapp")
    .and()
  .files()
    .add(from("init/gitignore"), to(".gitignore"))
    .batch(from("server/javatool/base"), to("src/main/java/com/company/myapp/errors"))
      .add("Assert.java.mustache")
      .add("AssertionException.java.mustache")
      .and()
    .add(from("server/springboot/core/MainApp.java.mustache"), to("src/main/java/com/company/myapp/MyApp.java"))
    .and()
  .build();

Still not perfect but looks like ti's the best version we got so far :)

So a part of it done and starts to be used. Next step seems to be https://github.com/jhipster/jhipster-lite/issues/1787 and we'll then need lots of other thinks (npm dependencies, replacements, etc...). Dunno how you want to handle this particular issuer lifecycle

@DamnClin : I have some question about the module system here.
I'm working on refactoring the Init context:

for adding new files, it's OK and it works well
but I need to launch git init -> https://github.com/jhipster/jhipster-lite/blob/main/src/main/java/tech/jhipster/lite/generator/init/domain/InitDomainService.java#L40

How should I do this?
1st solution:

improve the module system, so the git init will be launch when calling apply

2nd solution:

adding a new method gitInit here https://github.com/jhipster/jhipster-lite/blob/main/src/main/java/tech/jhipster/lite/generator/module/domain/JHipsterModulesRepository.java
calling it from applicationService, as it is used to orchestrate. It could look like:

Any advices?

I'll say 3rd solution :) wait for https://github.com/jhipster/jhipster-lite/issues/1787 since I'll have to refactor this part to handle this kind of action and you'll then be able to make a git init. Hopefully I'll work on this tomorrow (unless the weather's too good to stay inside...)

cc @pascalgrimaud how do you want to handle this issue lifecycle?

increasing the bounty for all the huge work
closing this as it's done

@DamnClin : approved :)


Punctuation is joint if followed by other punctuation

Fixes #10.

Fauxenstream has a very different definition of punctuation here. I would stick with this conservative interpretation unless someone confirms that https://github.com/rust-lang/rust/pull/40939 behaves differently.

Fair. It makes sense to keep a more conservative definition for now.
I don't remember why I decided to use the more permissive definition of an operator character.
@jseyfried would probably know what rustc will consider an operator.

Thanks!


fix: after, before and first helpers can process strings now

Context
https://hpinc.kanbanize.com/ctrl_board/55/cards/14614/details/

Congrats! The repository doesn't have any security vulnerability issues.

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


postcss-import breaks ordering

This code:
primary.css
:root {
  --primary: {
    background: blue;
    color: white;

    &:hover {
      background: red;
    }

    &:active {
      background: pink;
    }
  };
}

Button.css
@import "./primary.css";

.__base {
  appearance: none;
  border: none;
  border-radius: 3px;

  &:hover {
    text-decoration: none;
  }

  &:focus {
    outline: none;
  }

  &::-moz-focus-inner {
    border: 0;
  }
}

.--primary {
  composes: __base;
  @apply --primary;
}

is compiled to:
.Button--primary:active{
      background: #008ecc
}.Button__base {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  border: none;
  border-radius: 3px
}

.Button__base:hover{
      text-decoration: none
}

.Button__base:focus{
      outline: none
}

.Button__base::-moz-focus-inner{
      border: 0
}

.Button--primary {
    background: #008ecc;
    color: #fff;
}

.Button--primary:hover{
      background: #056aab
}

As you can see, .Button--primary:active should be at the bottom of document. Maybe postcss-import breaks ordering IMO.
Tools: webpack 2, css-loader, postcss-loader, latest<EMAIL_ADDRESS>

We can continue this conversation, but I’m closing the issue for now because this is not the Import, Apply, or Nesting plugins.
Please see: https://github.com/jonathantneal/postcss-tests/tree/master/postcss-nesting-test-00
You can clone that repo, install from the test directory, and run that test yourself.
This is the result: https://github.com/jonathantneal/postcss-tests/blob/master/postcss-nesting-test-00/test.expect.css
I notice you are using composes: __base;. Is that from CSS Modules? You may want to look into that plugin.


Support token based authentication

Github announced that they will deprecate credential based auth in August.
To keep josh usable with github we need to implement a supported alternative.

From what I understand, this seems to be a server side change, which should not affect the client (and thus the proxy).
https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token
Using a token on the command line

Once you have a token, you can enter it instead of your password when performing Git operations over HTTPS.

For example, on the command line you would enter the following:

    $ git clone https://github.com/username/repo.git
    Username: your_username
    Password: your_token

See also:
https://docs.github.com/en/github/authenticating-to-github/about-authentication-to-github
You can work with all repositories on GitHub over HTTPS, even if you are behind a firewall or proxy. Every time you use Git to authenticate with GitHub, you'll be prompted to enter your credentials to authenticate with GitHub, unless you cache them with a credential helper. When Git prompts you for your password, enter your personal access token (PAT) instead. Password-based authentication for Git is deprecated, and using a PAT is more secure. For more information, see "Creating a personal access token."

Just tested this with GitHub using a Personal Access Token (PAT) for a private repository, works as expected. (However, ssh support would be awesome #22  :+1:)

Thanks @jstriebel for trying this out and letting us know.
#22 Is not really doable with josh-proxy, but we are thinking about a standalone version that will also include ssh support.

Nothing to fix.


Guess the number game

I want to add the guess the number game made with Html, Css, Javascript. Kindly assign me this issue and assign a hacktoberfest tag to it.

@its-puneet assign this issue to me . Also plz add hactoberfest tag to it.


Website documentation refinement

Good to merge!

Let's also delete version and regenerated 0.11 in this branch to reflect the changes

Do you need more verification

Do you need more verification

Nope just deleted old website stuff.


Wrong ERRORLEVEL when combining /warnaserror, multi-proc build with a file logger

> msbuild /warnaserror project.proj /m /fileLogger /fileloggerparameters:LogFile="LogFile.log";verbosity=diagnostic

<!-- project.proj -->
<Project>

  <Target Name="Build">
	    <Warning Text="This should block the build." />
   </Target>

</Project>

Expected: %ERRORLEVEL% to be 1
Actual: %ERRORLEVEL% is 0
If I remove the /m or the file logger, then the error level is set to 1 as expected.
> msbuild /warnaserror project.proj /fileLogger /fileloggerparameters:LogFile="LogFile.log";verbosity=diagnostic

-or-
> msbuild /warnaserror project.proj /m

The "overall" result is overridden here if there were warnings treated as errors.  I swear I tested multi-proc when I implemented.  I'll try and debug this to figure out why the exit code is zero.  @davkean does the build still fail?

I originally thought this was a the file logger that was a problem, but I'm pretty sure it's just the multi-proc build:
With multiproc
D:\>msbuild /warnaserror project.proj /m
Microsoft (R) Build Engine version 15.1.548.43366
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 03/06/17 11:46:39 AM.
     1>Project "D:\project.proj" on node 1 (default targets).
     1>D:\project.proj(6,6): error : This should block the build.
     1>Done Building Project "D:\project.proj" (default targets).

Build succeeded.

       "D:\project.proj" (default target) (1) ->
       (Build target) ->
         D:\project.proj(6,6): error : This should block the build.

    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:00.02```

Without '/m':

D:>msbuild /warnaserror project.proj
Microsoft (R) Build Engine version 15.1.548.43366
Copyright (C) Microsoft Corporation. All rights reserved.
Build started 03/06/17 11:46:58 AM.
Project "D:\project.proj" on node 1 (default targets).
D:\project.proj(6,6): error : This should block the build.
Done Building Project "D:\project.proj" (default targets).
Build FAILED.
"D:\project.proj" (default target) (1) ->
(Build target) ->
D:\project.proj(6,6): error : This should block the build.
0 Warning(s)
1 Error(s)

Time Elapsed 00:00:00.02

This turned out to be a lot tougher to track down because it only repro'd when using an official Visual Studio installation.  Our local builds did not have the problem unless I built Release and ngen'd the binaries.  But I have finally fixed the issue.

Thanks!


[fix] (compaction) fix time series compaction policy

Proposed changes
Fix the issue introduced by #38220
Issue Number: close #xxx

run buildall


I think you should create a features for cloudflare

Describe your suggested feature
Today I am taking about same 9anime extension there is a matter is this
There is no  this type error like

But now is like this

Other details
This change in matter is appear today so i think you should create a features for cloudflare bypass
So almost all problems solved

Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open issue.
[X] I have written a short but informative title.
[X] If this is an issue with an extension, I should be opening an issue in the extensions repository.
[X] I have updated the app to version <IP_ADDRESS>.
[x] I will fill out all of the requested information in this form.

@Adi432144 refer to this guide: https://aniyomi.jmir.xyz/help/guides/troubleshooting/#solving-the-cloudflare-issue


Embed base64 image into the Excel

Is it possible to embed an <img> with base64 source into the Excel? ie. open the Excel with image show normally.

I tested this by directly editing file created by excellentexport, it seems excel 2007 doesn't support base64 encoded images. Only properly linked images work, eg  but i didnt'e test if excellentexport support exporting them from website code

I have the same requirement, hope has a solution.

To remove the Images from the Export (and Links), you can use
var filter = function (table_content){
    // Remove Images
    table_content = table_content.replace(/(<img([^>]*)[^<]+>)/gi, '');
    //var replace_img_with_class = /(<img[^<]+class=[\"'][^<]*\s*thumbnail\s*[^<]*[\"'][^<]+>)/ig;
    // Remove Links
    table_content = table_content.replace(/(<a(?:(?!\/a>).|\n)*(?=\/a>)...)/gi, '');
    return table_content;

}
excel: function(anchor, table, name) {
table = get(table);
var ctx = {worksheet: name || 'Worksheet', table: filter(table.innerHTML)};
}

Duplicated #65


Staging next

Motivation for this change
Another iteration is here (docs): https://hydra.nixos.org/job/nixpkgs/staging-next/unstable#tabs-constituents (soon)
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Relase notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

cmake boot fails to build on aarch64-darwin https://github.com/NixOS/nixpkgs/pull/130849#issuecomment-889189251

Reverted the cmake update, cancelled jobs, and started new evaluation.

Channel blockers through some tests (if merged, not visible above):

[ ] https://hydra.nixos.org/job/nixpkgs/staging-next/mailutils.x86_64-linux
[ ] https://hydra.nixos.org/job/nixpkgs/staging-next/rpm.x86_64-linux

Channel blockers through some tests (if merged, not visible above):

[ ]  hydra.nixos.org/job/nixpkgs/staging-next/mailutils.x86_64-linux
[ ]  hydra.nixos.org/job/nixpkgs/staging-next/rpm.x86_64-linux

Both fail with
 /nix/store/56c1fr54c9613hhaf4bpbs7a6drm7hrb-coreutils-8.32/bin/mkdir -p '/nix/store/6shwpgha1ghyik2mawcp7c6a632cihk3-python3-3.9.6/lib/python3.9/site-packages/mailutils'
/nix/store/56c1fr54c9613hhaf4bpbs7a6drm7hrb-coreutils-8.32/bin/mkdir: cannot create directory '/nix/store/6shwpgha1ghyik2mawcp7c6a632cihk3-python3-3.9.6/lib/python3.9/site-packages/mailutils': Permission denied

The GitHub UI is slightly annoying for our staging workflow, and with the frequent merges it only got worse :-/

rpm build failure bisects to 46306d2971bae52201aa8acb8ad694ee1ce523e4

git bisect start
# bad: [610ef47b2030813fcc9017eeda5bfd7621851bc3] Merge master into staging-next
git bisect bad 610ef47b2030813fcc9017eeda5bfd7621851bc3
# good: [717538e9082a42d97dce9f53740045a73865b18e] python3Packages.torchvision: added cudaSupport option (#132917)
git bisect good 717538e9082a42d97dce9f53740045a73865b18e
# bad: [caf6816da79bfa18ee50776c755ec57404aa54a6] aspell: fix buffer overflow in objstack
git bisect bad caf6816da79bfa18ee50776c755ec57404aa54a6
# good: [b3d8b04d6a6d0f6f4f84fadc8e72cc51a06965ac] Merge pull request #131535 from r-ryantm/auto-update/at-spi2-core
git bisect good b3d8b04d6a6d0f6f4f84fadc8e72cc51a06965ac
# good: [8ae4b01d9a9987d5a64a6dfe8183014ef00e219c] Merge staging-next into staging
git bisect good 8ae4b01d9a9987d5a64a6dfe8183014ef00e219c
# good: [c09b6109012b2eedaf9c85e9844966e19d7111ce] Merge staging-next into staging
git bisect good c09b6109012b2eedaf9c85e9844966e19d7111ce
# good: [f97fb96ea06132a8a5be528d2151216c8de772e4] python3Packages.scipy: fix build on aarch64-darwin
git bisect good f97fb96ea06132a8a5be528d2151216c8de772e4
# good: [69762341e4a233beaadb12e0962585ecf8446c3f] gnupatch: replace name with pname&version
git bisect good 69762341e4a233beaadb12e0962585ecf8446c3f
# bad: [46306d2971bae52201aa8acb8ad694ee1ce523e4] automake: 1.16.3 -> 1.16.4
git bisect bad 46306d2971bae52201aa8acb8ad694ee1ce523e4
# first bad commit: [46306d2971bae52201aa8acb8ad694ee1ce523e4] automake: 1.16.3 -> 1.16.4

New features added [in 1.16.4]

The PYTHON_PREFIX and PYTHON_EXEC_PREFIX variables are now set from
Python's sys.prefix and sys.exec_prefix; use the new configure options
--with-python_prefix and --with-python_exec_prefix to specify explicitly.

That should be the commit in automake https://github.com/autotools-mirror/automake/commit/ed8daa069a6c8ed34f7856c42402ec46f305e670

So we simply revert this automake update for now?  I can't immediately see anything better.

Tracker seems to crash and then timeout. It's a dependency of gnome / gtk3/4.
https://hydra.nixos.org/build/149333507
Not sure if it's a blocker though.

Not sure if it's a blocker though.

tracker would certainly block the nixos-unstable channel.

@r-burns could be worth it to try a build with --enable-debug for libffi, to see if that helps anything. Might set that up this evening, but don't have much time over the weekend.

BTW, I noticed some channel blockers around docs in haskell packages: https://hydra.nixos.org/build/149919300#tabs-buildsteps

re: libffi/tracker timeouts, I bisected libffi src to https://github.com/libffi/libffi/commit/9ba559217bea0803263a9a9a0bafcf9203606f5b and didn't see an obvious fix. Might be best to revert for now and follow up separately

@r-burns maybe setting this flag is enough? https://github.com/libffi/libffi/pull/647
Might also fix ghc and gobject-introspection issues, maybe.

Ah, nice find! That fixes tracker (still building ghc), will open a PR

Haskell failures are related to this GHC-Issue with libffi 3.4. Seems like we'll have to either backport their MR fixing this ourselves or switch to the libffi bundled with GHC (which I'd like to avoid).

Haskell failures are related to this GHC-Issue with libffi 3.4. Seems like we'll have to either backport their MR fixing this ourselves or switch to the libffi bundled with GHC (which I'd like to avoid).
Edit: The linked issue mentions that --disable-exec-static-tramp may work as a workaround.

Thanks for looking into this @sternenseemann.
Given that the MR has been accepted and will make its way into the next GHC release I'd be in favor of already picking it into our GHC builds.
Can you open a PR (against this branch) to add that patch?

EDIT: Given that the patch is huge maybe that flag is the better option.

Indeed and upstream has no intention of backporting this to e. g. GHC 8.10.6 unfortunately. Given that this affects all GHC packages we have, rebasing the patch could turn out to be significant work.

What Hydra shows isn't ideal, but I think it's better not to delay anymore at this point.

The next staging iteration: https://github.com/NixOS/nixpkgs/pull/135477


/var/lib/jenkins/workspace/19_EMBEDDED_AI_SRID/Source/tensorflow/python/eager/BUILD:10:1: undeclared inclusion(s) in rule '//tensorflow/python/eager:pywrap_tfe_lib':

System information
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Ubuntu 18.04
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device:
TensorFlow installed from (source or binary): source
TensorFlow version: 1.13.0rc0
Python version: 3.6.5
Installed using virtualenv? pip? conda?: pip
Bazel version (if compiling from source): 0.21
GCC/Compiler version (if compiling from source):  5.4.0 20160609
CUDA/cuDNN version: 9.0
GPU model and memory: RTX 2070 and 8GB
Describe the problem
ERROR: /var/lib/jenkins/workspace/19_EMBEDDED_AI_SRID/Source/tensorflow/python/eager/BUILD:10:1: undeclared inclusion(s) in rule '//tensorflow/python/eager:pywrap_tfe_lib':
this rule is missing dependency declarations for the following files included by 'tensorflow/python/eager/pywrap_tensor.cc':
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/arrayobject.h'
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/ndarrayobject.h'
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/ndarraytypes.h'
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/npy_common.h'
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/numpyconfig.h'
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/_numpyconfig.h'
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/npy_endian.h'
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/npy_cpu.h'
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/utils.h'
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/_neighborhood_iterator_imp.h'
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/__multiarray_api.h'
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/npy_interrupt.h'
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/ufuncobject.h'
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/npy_math.h'
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/npy_common.h'
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/arrayobject.h'
'bazel-out/host/genfiles/external/local_config_python/python_include/numpy/__ufunc_api.h'
Target //tensorflow/tools/pip_package:build_pip_package failed to build

@abhajaswal Could you follow the installation process listed in TF website or Please follow the process listed here but use updated drivers to install TF1.13. Also, keep in mind about the tested build configurations. Please let me know how it progresses. Thanks!

Closing due to lack of recent activity. Please update the issue when new information becomes available, and we will open a new issue. Thanks!


How does the WLT adjustment impact pose data shared across a network?

A couple questions, let me know if there is a better place to ask these:

A device, let's say an iPhone, has WLT and it's camera pose is being tracked and sent over a network to a computer (not an AR device so no WLT). Should this be the world pose, thus including the WLT adjustment, the local pose, or some other property (eg FrozenFromSpongy)?

Does this change if the second device is also running WLT?

Does this change if not for the camera / not nested under the WLT_Adjustment transform? For example, if I want to network update some other asset pose?

With the MRTK and an AR experience that would not normally need it, does Teleport need to be enabled?

This is a fine place to post questions.
First some background. Unless some form of alignment/synchronization between devices is performed, the numerical values of a pose on one device are near meaningless on another device. I say "near meaningless", because relative poses (the transform between objects' spaces) can be useful.
WLT offers support for aligning/synchronizing coordinate spaces between devices. Here are three samples:

Sharing spatial info via ASA.
Synchronizing spaces by scanning common QR codes.
Manual alignment of spaces.

Now, to your questions:

A device, let's say an iPhone, has WLT and it's camera pose is being tracked and sent over a network to a computer (not an AR device so no WLT). Should this be the world pose, thus including the WLT adjustment, the local pose, or some other property (eg FrozenFromSpongy)?

Think of WLT as applying a correction to the camera transform via the WLT_Adjustment object, to make the camera's pose more consistent and stabile. Synchronization of spaces across devices also happens here. In general, then, this corrected camera pose is more useful than the uncorrected pose. While there are exceptions, unless you have some specific need, use the camera's global pose.

Does this change if the second device is also running WLT?

No, but again, in the ideal, you have the coordinate spaces between the two devices aligned, so that if the camera being at (0,0,0) on device A means that it is in the doorway, the camera being at (0,0,0) on device B also means that it is in the doorway.

Does this change if not for the camera / not nested under the WLT_Adjustment transform? For example, if I want to network update some other asset pose?

Again, there are many scenarios where what your application needs to know about an object is its relative transform. But when you want to record what the position in the world of your hologram is, then the global pose is the right metric to record and transmit.

With the MRTK and an AR experience that would not normally need it, does Teleport need to be enabled?

No, you don't need to enable teleport.
By the way, when I say "global" pose, I think I'm meaning the same thing as when you say "world" pose. Just make the substitution in your head.

A SpectatorView like scenario involves some alignment mechanism between the HoloLens and the video camera. The exact transform to transmit depends on that exact alignment mechanism.
On the dynamic QR code placement, I haven't done that, but I know that it has been done using WLT. Understand what the SpacePin feature is letting you do. It is letting you say, "I want to re-position (and orient) the global coordinate space so that the physical point here that currently has this pose, will instead have that pose." Here "this pose" is the FrozenPose (or LockedPose or SpongyPose), and "that pose" is the VirtualPose (or ModelingPose). So one way or another you have to come up with two corresponding poses (for each SpacePin), one saying what the coordinates are now, and the other saying what you want the coordinates to be.
WLT samples cover a number of ways of establishing these pose pairs, but ultimately it's up to the client application (that's you).

does it matter if you scan a single a QR Code or multiple -- does using more than one QR code increase the alignment accuracy across devices?

This is a great question. Yes, multiple SpacePins increases the alignment accuracy, in several ways.
First off, the position data from scanning a QR code is much more accurate than the orientation data. But when you use the positions from two or more scanned QR codes, WLT can discard any scanned orientation data, and infer orientation from the relative positions. Because of the lever arm effect, the improved orientation at the SpacePins means improved positioning away from the SpacePins (assuming you're using SpacePinOrientable).
Secondly, with a single SpacePin, tracking error will accumulate as you move away from the SpacePin. With multiple SpacePins, you can bound the error as the system interpolates from one established position to another. See this article for more details.

Ah, I see. Yes, I agree, the global camera pose (updated via WLT_Adjustment) is the one you want. It will be more consistent with the actual offset between the HL and the camera in physical space.

How about a scenario where you can use QR Codes but you do not know their relationships in advance (say a QR code is placed on the ground and two are placed on stands in arbitrary positions / rotations in a room, or in a field).

I've been thinking about this. As I said, there are ways to make this work, but if you don't know ahead of time the relationship between the QR code placements in physical space, it makes me wonder if QR codes are really the right synchronization mechanism?
But, sticking with QR codes for a minute, how could you make them work in your dynamic scenario? The following workflow might be instructive and give you some ideas. I've got to make some assumptions about the application's requirements, and those assumptions might be totally inappropriate for your case, but again, this workflow is meant more to be instructive than a recipe for success.
Assumptions:

You'll have one person do the setup (the curator). They have to do extra work.
The process is extremely easy for all other users (the clients).
You have some way of passing data between devices, at least offline during setup.
No communications between devices is available during runtime.

The workflow:

Curator affixes a small number of printed QR codes in the physical environment at arbitrary locations.
Curator scans the QR codes and gets a global space position for each.
These QR code name - position pairs are stored in a file which the clients can read at runtime (or baked into the application or whatever).
(Note that these position coordinates are entirely arbitrary, depending only on where the curator was at startup. If desired, SpacePins could be used by the curator to manually align the coordinate space to the physical environment before scanning the QR codes.)
Clients go through a calibration phase at startup, which consists of:
a. Scan some or all of the QR codes
b. For each scanned QR code, get a global space position.
c. Look up the QR code name in the table of name/position pairs.
d. The position just scanned is the FrozenPose (what the pose is now). The position from the table is the VirtualPose (what we want the pose to be).
e. Create a SpacePinOrientable and feed it that FrozenPose/VirtualPose pair.

At the end of all this, all of the clients will have coordinate spaces aligned with each other and with the curator.
Let me know if I left out any important details, but I've probably gone on too long already.

Thanks for all the above!
"I've been thinking about this. As I said, there are ways to make this work, but if you don't know ahead of time the relationship between the QR code placements in physical space, it makes me wonder if QR codes are really the right synchronization mechanism?"
What are the synchronization alternatives? A few parameters would be:

multi-device and platform, HoloLens, iOS, HoloLens attached to video cameras, PCs (non-AR)
camera-mounted devices have limited setup time windows and interaction is via the cumbersome device portal or through network commands (via Photon or MLAPI)
Internet connectivity is not guaranteed, so can't rely on ASA
Can't leave permanent markers (wall, floors), and synchronization markers need to be in range of camera-mounted devices with limited mobility
Trying to precisely measure marker offsets in advance is difficult
Can do some advance setup work, but overall setup speed is critical
devices are all network connected and able to update each other with any required data

I couldn't see a way to place or raycast markers in the room (not possible with the camera-mounted HoloLens). It may be possible to prescan a space with a  head-mounted HoloLens and upload it to other camera-mounted HoloLens, but I didn't think this would work for iOS devices -- though as long as they can be aligned with the HLs having different strategies for different devices would be OK.
It seemed like QR codes were the best option given the above (if accurate enough maybe even just a single QR code), but would love to find any better solution possible.

An external tracking solution like VR-gaming solutions use?

@genereddick , it might help me understand your situation better if you point out the specifics where the dynamic QR code workflow I proposed above doesn't fit your requirements?

@fast-slow-still First, I want to say that WLT is amazing, just a huge improvement overall on a single device with almost no effort. However, for more complex scenarios my understanding remains, well, spongy is probably an appropriate word.
I have implemented your suggestions, more or less, and I have a few additional clarification questions:
For this, I'm testing with 3 devices:

2 iPhones and a PC (not an AR device).
All devices are using the MRTK
All devices are networked and can get messages from others on load and at runtime.
I'm initially testing with 3 QR codes (QR_1, QR_2, QR_3), but in reality it is just using ARKit's image recognition so a picture of a flower or a dog would be the same.
The scene has 3 three gameObjects (QR_1_GO, QR_2_GO, QR_3_GO) each with a SpacePinOrientable component in the Unity scene, currently all at the origin.
I have an asset I will instantiate at runtime

In this scenario, I  want the devices to agree on a fixed world origin and orientation. We will instantiate an object at the pose of QR Code 1 then it will move to QR Code 2 then to QR Code 3. Each iPhone should see them in the same pose and the same on the PC relative to the origin.
Question 1: Is there a way to change the world origin on each device to a fixed pose. For example, I start iPhone 1 and it's world origin is at position (0,0,0), I start iPhone 2 rotated 90 degrees from iPhone 1, it's world origin is also (0,0,0). I scan a QR code one meter in front of iPhone 1 in Z (0,0,1) but on iPhone 2 it is at (-1,0,0). Is there a way to make that new Z position the origin so that the WLT global position on both devices reports it as (0,0,0) but iPhone 1 now says that it's  camera is at (0,0,-1) and iPhone 2 says it's camera is at (1,0,0)? The intention here is that each device is reporting its WLT pose relative to the shared origin.

Step 1: To start, I place the physical QR Codes images in random places in a room. Turn on iPhone 1 and run a curation step and scan each QR Code. The image recognition sees the QR code image and places a visualization asset on top. I record this location, so for QR_Code_1:
var globalPose = trackedImage.transform.GetGlobalPose())

and save/send it to iPhone 2 and the PC and set the matching gameObjects on iPhone 1 in the scene to that pose.
QR_1_GO.transform.SetGlobalPose(globalPose);

Question 2: How do you know if an asset's pose is using the WLT versus the pose from APIs? For example trackedImage transforms are instantiated and positioned using the AR Foundation ARTrackedImageManager. Does this imply that on each update the trackedImage global pose would need to be updated to the correct WLT frozen pose?

Question 3: Is there a way to test if a particular pose (from image tracking or other) is from the raw API or has already been adjusted by WLT, say by comparing a pair of poses?

Step 2: The other devices receive the curated pose positions (either on start or when updated) and set their own local instances of QR_n_GO to the same virtual positions.
Step 3: In parallel, iPhone 1 sets the SpacePin at each QR_n_GO location.
QR_1_GO.SpacePinOrientable.SetFrozenPose(frozenPose);

Question 4: Is modeling pose the same as virtual pose? Does the SpacePin modeling pose need to be reset in some way prior to assigning it a new modeling / virtual pose? When would you need to use ResetModelingPose()?

Step 4: iPhone 2 now scans the QR Codes. Each matching gameObject already has its virtual pose set and now we just have to set the frozen pose to the pose from the scanned QR Code:
QR_1_GO.SpacePinOrientable.SetFrozenPose(frozenPose);

Question 5: Does anything change in terms of the poses sent to the PC?

Additional Questions:
My mental model is that, for placement accuracy, I want SpacePins at positions where I will place assets or other actions I care about. And, I want to scan the area so that there are anchors around where assets will be placed -- so with the visualizer tools I want to see anchor markers bounding all the positions where I have placed SpacePins (at a minimum).
Question 6: Is this the right way to think about anchors / pins? Or should pins also be bounding areas I care about (and, if so than how do they differ from anchors in usage)?

Persistence on Mobile devices. The docs say that automatic persistence only works on HoloLens or if you are using ASA.
Question 7: Is this some fundamental limitation due to the way the WLT creates and stores anchors internally? Just outside of the scope of the WLT? Assuming the latter, any high level thoughts on how you could persist the data on mobile?

@fast-slow-still sorry, I didn't mean to close this, can you reop

Hi @genereddick, I've been out of the office on vacation, and won't be back to work until March 21, but those are excellent questions, and I will try to get answers to them written up here today.

Question 1:

I'm not sure I understand this question. Your description seems exactly what SpacePins do. Have your tried some of the SpacePin samples? Even ones that aren't appropriate for your scenario might give you a better feel for what SpacePins do.
It's important to understand that the only difference between the SpacePin examples is the UX.
The system needs to know what point in space you are talking about. That's the FrozenPose (or equivalently SpongyPose/LockedPose, since they all differ by known transforms). And it needs to know what coordinates you would like to assign to that point in space (position & orientation). That's the VirtualPose, which is the same as the Modelling Pose.
So I might have better named them FrozenPose ==> CurrentPose, and VirtualPose ==> DesiredPose. But I didn't, so you'll have to translate in your head. Sorry about that.
So the only difference between the SpacePins sample and the RayPins sample, is that in the SpacePins sample you grab the SpacePins and manipulate them by hand into the current location. In the RayPins sample, you click on the environment's spatial mesh and do a ray cast to find the current location. With the QRSpacePins you scan a QR code to get the current location.
In all those samples, the desired pose is the pose the corresponding Transform is given in the Unity scene. Once the current pose that we are talking about is established by one of the mechanisms above (or even some other mechanism you come up with), then all of the samples are the same, they pass the "current pose"==FrozenPose and the "desired pose"==VirtualPose==ModelingPose as a pair to the AlignmentManager.
The point is, that even a sample that doesn't collect the "current pose" the same way that you intend to (e.g. RayPins collects by ray cast but you want to collect from QR codes), might help you get a feel for what is going on. And give you a better sense of what to expect.
Because your example of iPhone 1 and iPhone 2 is, if I am understanding it correctly, exactly what you should expect.

Question 2:

Any API should be reporting things in Unity's current global coordinate space, or else document what coordinate space it is reporting in. Sadly, this is not the case. Any API that ignores the camera's global transform (including its parent's transform) is incorrect, and in a perfect world would be fixed.
However, we don't live in a perfect world, so there are APIs that report in the space relative to the camera's parent but think they are reporting in Unity's global coordinates. These APIs usually don't document what coordinate space they are reporting in. I have dealt with APIs that aren't even consistent about what space they report in (e.g. some functions return coordinates in Unity global space while other functions return coordinates relative to the camera).
The owners of APIs that are inconsistent are usually quite interested in learning that, and pretty quick to fix them. So if you see inconsistent behavior, please do report it.
But for the most part, I find it safest to test APIs that I will depend on to verify what space they are working in. The easiest way to do that is to set up the simplest possible project using an API to be tested (no WLT). Have the camera attached to a dummy object. Run your test app and use your API. Offset the camera's dummy parent by some amount (e.g. (20,30,40)) and rerun your test with the same camera starting position/orientation. Compare your results from first test and offset.
For example, if your ARTrackedImageManager. If you get back the same pose on both tests, it is ignoring the camera's parent pose, and you need to use FrozenFromSpongy to transform its return values to global Unity coordinate space. If the second run the returned pose is offset by (20,30,40), then it is taking the camera's global pose into account, and no correction is necessary.
Sorry there isn't a more automated way.

Question 3

I think I just answered this with Question 2. But to emphasize, WLT only adjusts the camera's transform. Other APIs can either take the camera's full global pose into account, or ignore it and operate relative to the camera's local pose. They should document which they are doing, but you should verify.

Question 4:

Yes, VirtualPose == ModelingPose. The ModelingPose.
The underlying mechanics changed under the hood slightly with release v1.5.8, to make for a more robust experience with changing the modeling pose at runtime, so I do recommend v1.5.8.
The modeling pose is captured at Start() with a call to ResetModelingPose(). If you change the SpacePin object's local pose, you must call ResetModelingPose() for it to be captured, and then SetFrozenPose() (or SpongyPose or LockedPose) for it to take effect.
Pre-v1.5.8, if you changed the SpacePin's parent's pose, then you also needed ResetModlingPose() as above. But from 1.5.8 onward, this is no longer necessary.

Question 5:

I don't think so, but see answer to Question 2.

Question 6:

No, not really. The right way to think of it is that anchors are used to stabilize the global space relative to the physical world. They don't give you any control over what the coordinates are at a given location, they only promise that the coordinates there won't change.
SpacePins don't do anything to stabilize the coordinate space (because the underlying anchor graph has already done that). SpacePins just give you control over what the coordinates are at selected locations.
So, it's best to scan the area where the users are going to be. It's not important to scan the areas where the assets will be placed. Often, those are the same areas, but it's really just where the users are that's important.
The big difference between the anchor and SpacePin distribution through the area is that you want the anchor graph to be where the users will be, but you want the SpacePins to form a border around where the users will be.

Question 7:

Persistence on Mobile. That's a great question. Persistence on Android doesn't appear to be an option yet, except through APIs that would be redundant with ASA. Persistence on iPhone (ARKit) seems to be possible, but I haven't investigated it thoroughly. I'll add a work item to myself to at least scope the work so it can be prioritized onto the roadmap.

Question 8:

No, you are better off using all of your SpacePins to define the global space. The AlignSubtree should only be used where it's required that a sub-set of your scene have a different coordinate space than the global.

Feel free to ask for clarifications on any of this, but keep in mind that I am out on vacation until Monday. Have a great week!

#274

Re Question 2.  Per your guidance, to test, first I got the pose of the trackedImage with WLT active:
void OnTrackedImagesChanged(ARTrackedImagesChangedEventArgs eventArgs)
{
    foreach (var trackedImage in eventArgs.added)
    {
    //etc.

and got:
    trackedImage position: -0.75, -0.77, -0.50

Then, leaving most things in place, I deactivated the WLT Manager and put a position on the WLT_Adjustment transform of 10, 10, 10. On getting a tracked image, I compared the GlobalPose of the trackedImage with the GlobalPose of the camera, the camera parent (MixedRealityPlayspace) and the parent parent (WLT_Adjustment). The result being:
WLT_Adjustment position: 10, 10, 10
MixedRealityPlayspace position: 10, 10, 10
Camera position: 9.51, 10.06, 9.50 (having moved the phone a little bit from start to see the image)

but, the pose of the trackedImage was the same:
trackedImage position: -0.75, -0.77, -0.50

So, if I understand correctly this means that AR Foundation is setting the trackedImage Global pose to a value based on an offset to the camera's current local pose, rather than the camera's global pose?
In which case, when I go to set the position of the QR Code, I need to do something like:
var spongyPose = trackedImageTransform.GetGlobalPose();
Pose frozenPose = WorldLockingManager.GetInstance().FrozenFromSpongy.Multiply(spongyPose);
//Set QR Code position to frozenpose

And any transforms poses associated with the trackedImage would need to be similarly adjusted.
Does this seem correct?

@genereddick , yes, your work looks correct to me.

I still feel like I'm missing something, or perhaps my expectations are unrealistic.
I have a scene with 5 images placed randomly around the room. The scene has gameObjects -- Pin 0 - 5, each with a child axis and a spacePin  component. I start a device, detect an image position and instantiate a new axis (and marker) to follow the image as it is updated by AR Foundation. I immediately pin it.
//I instantiate a displayAxis gameObject at the same position as the AR Foundation tracked Image,
//Its axis is centered over the image
displayAxis.transform.transform.SetGlobalPose(trackedImage.transform.GetGlobalPose());

//I set the space pin, at this point both axes (for the image and the space pin) should overlap
 spacePin.transform.SetGlobalPose(displayAxis.transform.GetGlobalPose());
 spacePin.ResetModelingPose();
 spacePin.SetFrozenPose(displayAxis.transform.GetGlobalPose());

//If the image tracking determines an image has moved -- fairly frequently -- I repeat the process
//Iincluding calling ResetModelingPose

I repeat the process above with each image. However, as I add more images I start to get divergence between paired axes -- more than I would have expected: These are two images placed on walls about 5 meters apart. If perfectly accurate both axis would completely overlap:

A few things I have considered:

I need to do a more thorough scan to get a better spatial map and accurate distances around the room, as well as scanning close to the surface of the image to deal with the AR Kit image tracking quality?

I initially assumed that the trackedImage.transform was being created in spongy space and so converting that to frozen, but the code below seemed to create greater inaccuracy so I went back to assuming the tracked image it is in frozen space, but maybe I'm not correctly getting/setting the correct poses values?
var frozenPose = wlt.FrozenFromSpongy.Multiply(trackedImage.transform.GetGlobalPose());
displayAxis.transform.transform.SetGlobalPose(frozenPose);

Perhaps the flow is wrong: currently I'm setting the pin global position, calling ResetModelingPose, then immediately pinning (all the pins start at the origin). maybe I need to curate -- set all the global positions / resets -- before I pin any of them?

Maybe something to do with the rotations, as you mentioned the axis out of the image/QR Code is less accurate and perhaps using the rotation values is adding error?


⚠ Bofrost.at has degraded performance

In 591ed93, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 2063 ms

Resolved: Bofrost.at performance has improved in ab41c35.


IdentityServer4 with .net core Identity AuthenticationScheme: "Identity.Application" was not authenticated

I am trying to implement .net core Identity with IdentityServer 4. Front end is angular2 client. It works with in memory users.
In logs I can see problem:
AuthenticationScheme: "Identity.Application" was not authenticated
I am not sure what should I set up for this?
Startup.cs:
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddApplicationInsightsTelemetry(Configuration);

            services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("Database")));

            services.AddIdentity<ApplicationUser, IdentityRole>()
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultTokenProviders();

            services.AddMvc();

            services.AddIdentityServer()
                .AddInMemoryClients(Config.GetClients())
                .AddInMemoryIdentityResources(Config.GetIdentityResources())
                .AddInMemoryApiResources(Config.GetApiResources())
                //.AddTestUsers(Config.GetUsers())
                .AddAspNetIdentity<ApplicationUser>()
                .AddTemporarySigningCredential();
        }

        public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(LogLevel.Debug);
            app.UseDeveloperExceptionPage();

            app.UseIdentity();
            app.UseIdentityServer();

            app.UseStaticFiles();
            app.UseMvcWithDefaultRoute();
        }

My client config:
new Client

                {
                    ClientName = "angular2client",
                    ClientId = "angular2client",
                    AccessTokenType = AccessTokenType.Reference,
                    //AccessTokenLifetime = 600, // 10 minutes, default 60 minutes
                    AllowedGrantTypes = GrantTypes.Implicit,
                    AllowAccessTokensViaBrowser = true,
                    RequireConsent = false,

                    RedirectUris = new List<string>
                    {
                        "https://localhost:5000",
                        "http://localhost:5000",

                    },
                    PostLogoutRedirectUris = new List<string>
                    {
                        "https://localhost:5000/Unauthorized"
                    },
                    AllowedCorsOrigins = new List<string>
                    {
                        "https://localhost:5000",
                        "http://localhost:5000"
                    },
                    AllowedScopes = new List<string>
                    {
                        "openid",
                        "gymApi"
                    }
                }

Relevant parts of the log file
2017-04-09 14:17:17.897 +01:00 [Verbose] Creating userinfo response
2017-04-09 14:17:17.899 +01:00 [Debug] Scopes in access token: "openid gymApi"
2017-04-09 14:17:17.900 +01:00 [Debug] Requested claim types: "sub"
2017-04-09 14:17:17.901 +01:00 [Debug] Get profile called for subject "1" from client "angular2client" with claim types ["sub"] via "UserInfoEndpoint"
2017-04-09 14:17:17.901 +01:00 [Information] Profile service returned to the following claim types: ""
2017-04-09 14:17:17.902 +01:00 [Debug] End userinfo request
2017-04-09 14:17:17.902 +01:00 [Verbose] Invoking result: "IdentityServer4.Endpoints.Results.UserInfoResult"
2017-04-09 14:17:17.903 +01:00 [Debug] Connection id ""0HL3V9AMUIP23"" completed keep alive response.
2017-04-09 14:17:17.903 +01:00 [Information] Request finished in 70.25ms 200 application/json
2017-04-09 14:18:38.807 +01:00 [Debug] Connection id ""0HL3V9AMUIP23"" received FIN.
2017-04-09 14:18:38.808 +01:00 [Debug] Connection id ""0HL3V9AMUIP23"" disconnecting.
2017-04-09 14:18:38.808 +01:00 [Debug] Connection id ""0HL3V9AMUIP23"" sending FIN.
2017-04-09 14:18:38.811 +01:00 [Debug] Connection id ""0HL3V9AMUIP23"" sent FIN with status "0".
2017-04-09 14:18:38.813 +01:00 [Debug] Connection id ""0HL3V9AMUIP23"" stopped.
2017-04-09 14:18:56.093 +01:00 [Information] You are using the in-memory version of the persisted grant store. This will store consent decisions, authorization codes, refresh and reference tokens in memory only. If you are using any of those features in production, you want to switch to a different store implementation.
2017-04-09 14:18:56.111 +01:00 [Debug] Using hosting application's CookieAuthentication middleware with scheme: "Identity.Application"
2017-04-09 14:18:56.234 +01:00 [Information] User profile is available. Using '"C:\Users\amel\AppData\Local\ASP.NET\DataProtection-Keys"' as key repository and Windows DPAPI to encrypt keys at rest.
2017-04-09 14:18:56.251 +01:00 [Debug] Hosting starting
2017-04-09 14:18:56.297 +01:00 [Debug] Hosting started
2017-04-09 14:18:56.418 +01:00 [Debug] Connection id ""0HL3V9BSVFAMF"" started.
2017-04-09 14:18:56.479 +01:00 [Information] Request starting HTTP/1.1 GET http://localhost:5001/
2017-04-09 14:18:56.546 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:18:56.555 +01:00 [Verbose] No endpoint entry found for request path: "/"
2017-04-09 14:18:56.560 +01:00 [Debug] The request path "/" does not match a supported file type
2017-04-09 14:18:56.646 +01:00 [Debug] Request successfully matched the route with name '"default"' and template '"{controller=Home}/{action=Index}/{id?}"'.
2017-04-09 14:18:56.704 +01:00 [Debug] Executing action "IdentityServer4.Quickstart.UI.HomeController.Index (Gym.IdentityServer)"
2017-04-09 14:18:56.754 +01:00 [Information] Executing action method "IdentityServer4.Quickstart.UI.HomeController.Index (Gym.IdentityServer)" with arguments (null) - ModelState is Valid
2017-04-09 14:18:56.757 +01:00 [Debug] Executed action method "IdentityServer4.Quickstart.UI.HomeController.Index (Gym.IdentityServer)", returned result "Microsoft.AspNetCore.Mvc.ViewResult".
2017-04-09 14:18:56.820 +01:00 [Debug] View lookup cache miss for view '"Index"' in controller '"Home"'.
2017-04-09 14:18:56.838 +01:00 [Debug] Code generation for the Razor file at '"/Views/Home/Index.cshtml"' started.
2017-04-09 14:18:57.090 +01:00 [Debug] Code generation for the Razor file at '"/Views/Home/Index.cshtml"' completed in 250.3219ms.
2017-04-09 14:18:57.092 +01:00 [Debug] Compilation of the generated code for the Razor file at '"/Views/Home/Index.cshtml"' started.
2017-04-09 14:18:57.728 +01:00 [Debug] Compilation of the generated code for the Razor file at '"/Views/Home/Index.cshtml"' completed in 634.8216ms.
2017-04-09 14:18:57.732 +01:00 [Debug] Code generation for the Razor file at '"/Views/_ViewStart.cshtml"' started.
2017-04-09 14:18:57.743 +01:00 [Debug] Code generation for the Razor file at '"/Views/_ViewStart.cshtml"' completed in 11.466ms.
2017-04-09 14:18:57.743 +01:00 [Debug] Compilation of the generated code for the Razor file at '"/Views/_ViewStart.cshtml"' started.
2017-04-09 14:18:57.763 +01:00 [Debug] Compilation of the generated code for the Razor file at '"/Views/_ViewStart.cshtml"' completed in 19.758ms.
2017-04-09 14:18:57.768 +01:00 [Debug] The view '"Index"' was found.
2017-04-09 14:18:57.769 +01:00 [Information] Executing ViewResult, running view at path "/Views/Home/Index.cshtml".
2017-04-09 14:18:57.839 +01:00 [Debug] View lookup cache miss for view '"_Layout"' in controller '"Home"'.
2017-04-09 14:18:57.840 +01:00 [Debug] Code generation for the Razor file at '"/Views/Shared/_Layout.cshtml"' started.
2017-04-09 14:18:57.876 +01:00 [Debug] Code generation for the Razor file at '"/Views/Shared/_Layout.cshtml"' completed in 36.7173ms.
2017-04-09 14:18:57.877 +01:00 [Debug] Compilation of the generated code for the Razor file at '"/Views/Shared/_Layout.cshtml"' started.
2017-04-09 14:18:57.935 +01:00 [Debug] Compilation of the generated code for the Razor file at '"/Views/Shared/_Layout.cshtml"' completed in 58.4442ms.
2017-04-09 14:18:57.945 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:18:58.003 +01:00 [Information] Executed action "IdentityServer4.Quickstart.UI.HomeController.Index (Gym.IdentityServer)" in 1297.4578ms
2017-04-09 14:18:58.013 +01:00 [Debug] Connection id ""0HL3V9BSVFAMF"" completed keep alive response.
2017-04-09 14:18:58.016 +01:00 [Information] Request finished in 1552.417ms 200 text/html; charset=utf-8
2017-04-09 14:19:01.462 +01:00 [Information] Request starting HTTP/1.1 GET http://localhost:5001/connect/endsession?id_token_hint=eyJhbGciOiJSUzI1NiIsImtpZCI6IjMyMTVhMjlmYmJiZjlhODVmZTU3ODc5NjZhOTEwNGI0IiwidHlwIjoiSldUIn0.eyJuYmYiOjE0OTE3NDM4MzMsImV4cCI6MTQ5MTc0NDEzMywiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1MDAxIiwiYXVkIjoiYW5ndWxhcjJjbGllbnQiLCJub25jZSI6Ik4wLjIyNzI0MzA3Mzg4MTAyNTYxNDkxNzQzODMxNjIyIiwiaWF0IjoxNDkxNzQzODMzLCJhdF9oYXNoIjoiM1QzNzB3NWVzVVJwWUg0X3drRFZVQSIsInNpZCI6IjNjNTk3OGNlNTI1OGJhZjE4ZWNhNWI1YzIzNjU3M2FiIiwic3ViIjoiMSIsImF1dGhfdGltZSI6MTQ5MTc0MzgzMywiaWRwIjoibG9jYWwiLCJhbXIiOlsicHdkIl19.KnT-VEe0M6wj8-0KIKC09iACf06O6AjbVCQaK6LzuPjpi4A2SIRESAEiVXcviFQGmgpDOWj8O1aGK3EMpjjqN_ieNjarWoBDofKVRKg_sGkiVkwslMIws-7e8v7sfEtWoNYj--NCZc2pSqR-O6uj4Na2nF641HzKBhntKxs_8N35J-YA3uGrkDfH0q6dFiJoMyWp6h6lyT0_a6kYjtcT4AEnb3ROXenG8H_6RKfe05b9TQomjL63ojoW17ZyUllTpDdlW7ek__9_Y-qYInDRBsP18oLk9MVNm_XW8b79yxtePb1dlFqr_TCJGSVA6aOIJG-oImZG3CT32_Yjge1xgg&post_logout_redirect_uri=http://localhost:5000/Unauthorized
2017-04-09 14:19:01.462 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:19:01.463 +01:00 [Debug] Request path "/connect/endsession" matched to endpoint type EndSession
2017-04-09 14:19:01.464 +01:00 [Debug] Mapping found for endpoint: EndSession, creating handler: "IdentityServer4.Endpoints.EndSessionEndpoint"
2017-04-09 14:19:01.522 +01:00 [Information] Invoking IdentityServer endpoint: "IdentityServer4.Endpoints.EndSessionEndpoint" for "/connect/endsession"
2017-04-09 14:19:01.533 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:19:01.533 +01:00 [Debug] Processing signout request for "anonymous"
2017-04-09 14:19:01.536 +01:00 [Debug] Start end session request validation
2017-04-09 14:19:01.540 +01:00 [Debug] Start identity token validation
2017-04-09 14:19:01.629 +01:00 [Debug] Client found: "angular2client" / "angular2client"
2017-04-09 14:19:01.739 +01:00 [Error] JWT token validation error: "Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10501: Signature validation failed. Unable to match 'kid': '3215a29fbbbf9a85fe5787966a9104b4',
token: '{\"alg\":\"RS256\",\"typ\":\"JWT\",\"kid\":\"3215a29fbbbf9a85fe5787966a9104b4\"}.{\"nbf\":1491743833,\"exp\":1491744133,\"iss\":\"http://localhost:5001\",\"aud\":\"angular2client\",\"nonce\":\"N0.22724307388102561491743831622\",\"iat\":1491743833,\"at_hash\":\"3T370w5esURpYH4_wkDVUA\",\"sid\":\"3c5978ce5258baf18eca5b5c236573ab\",\"sub\":\"1\",\"auth_time\":1491743833,\"idp\":\"local\",\"amr\":[\"pwd\"]}'.
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(String token, TokenValidationParameters validationParameters)
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(String token, TokenValidationParameters validationParameters, SecurityToken& validatedToken)
   at IdentityServer4.Validation.TokenValidator.<ValidateJwtAsync>d__11.MoveNext()"
2017-04-09 14:19:01.760 +01:00 [Error] Error validating JWT
"{
  \"ClientId\": \"angular2client\",
  \"ClientName\": \"angular2client\",
  \"ValidateLifetime\": false
}"
2017-04-09 14:19:01.768 +01:00 [Information] End session request validation failure: Error validating id token hint
"{
  \"SubjectId\": \"unknown\",
  \"Raw\": {
    \"id_token_hint\": \"eyJhbGciOiJSUzI1NiIsImtpZCI6IjMyMTVhMjlmYmJiZjlhODVmZTU3ODc5NjZhOTEwNGI0IiwidHlwIjoiSldUIn0.eyJuYmYiOjE0OTE3NDM4MzMsImV4cCI6MTQ5MTc0NDEzMywiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1MDAxIiwiYXVkIjoiYW5ndWxhcjJjbGllbnQiLCJub25jZSI6Ik4wLjIyNzI0MzA3Mzg4MTAyNTYxNDkxNzQzODMxNjIyIiwiaWF0IjoxNDkxNzQzODMzLCJhdF9oYXNoIjoiM1QzNzB3NWVzVVJwWUg0X3drRFZVQSIsInNpZCI6IjNjNTk3OGNlNTI1OGJhZjE4ZWNhNWI1YzIzNjU3M2FiIiwic3ViIjoiMSIsImF1dGhfdGltZSI6MTQ5MTc0MzgzMywiaWRwIjoibG9jYWwiLCJhbXIiOlsicHdkIl19.KnT-VEe0M6wj8-0KIKC09iACf06O6AjbVCQaK6LzuPjpi4A2SIRESAEiVXcviFQGmgpDOWj8O1aGK3EMpjjqN_ieNjarWoBDofKVRKg_sGkiVkwslMIws-7e8v7sfEtWoNYj--NCZc2pSqR-O6uj4Na2nF641HzKBhntKxs_8N35J-YA3uGrkDfH0q6dFiJoMyWp6h6lyT0_a6kYjtcT4AEnb3ROXenG8H_6RKfe05b9TQomjL63ojoW17ZyUllTpDdlW7ek__9_Y-qYInDRBsP18oLk9MVNm_XW8b79yxtePb1dlFqr_TCJGSVA6aOIJG-oImZG3CT32_Yjge1xgg\",
    \"post_logout_redirect_uri\": \"http://localhost:5000/Unauthorized\"
  }
}"
2017-04-09 14:19:01.769 +01:00 [Error] Error processing end session request "Invalid request"
2017-04-09 14:19:01.769 +01:00 [Verbose] Invoking result: "IdentityServer4.Endpoints.Results.EndSessionResult"
2017-04-09 14:19:01.774 +01:00 [Debug] Connection id ""0HL3V9BSVFAMF"" completed keep alive response.
2017-04-09 14:19:01.774 +01:00 [Information] Request finished in 313.1762ms 302
2017-04-09 14:19:01.777 +01:00 [Information] Request starting HTTP/1.1 GET http://localhost:5001/account/logout
2017-04-09 14:19:01.777 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:19:01.777 +01:00 [Verbose] No endpoint entry found for request path: "/account/logout"
2017-04-09 14:19:01.777 +01:00 [Debug] The request path "/account/logout" does not match a supported file type
2017-04-09 14:19:01.777 +01:00 [Debug] Request successfully matched the route with name '"default"' and template '"{controller=Home}/{action=Index}/{id?}"'.
2017-04-09 14:19:01.783 +01:00 [Debug] Action '"IdentityServer4.Quickstart.UI.AccountController.Logout (Gym.IdentityServer)"' with id '"dfdfcd98-6dd1-4b24-a260-b9c75fb6a6a8"' did not match the constraint '"Microsoft.AspNetCore.Mvc.Internal.HttpMethodActionConstraint"'
2017-04-09 14:19:01.784 +01:00 [Debug] Executing action "IdentityServer4.Quickstart.UI.AccountController.Logout (Gym.IdentityServer)"
2017-04-09 14:19:01.822 +01:00 [Information] Executing action method "IdentityServer4.Quickstart.UI.AccountController.Logout (Gym.IdentityServer)" with arguments ([""]) - ModelState is Valid
2017-04-09 14:19:01.825 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:19:01.830 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:19:01.831 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:19:01.850 +01:00 [Information] AuthenticationScheme: "Identity.Application" signed out.
2017-04-09 14:19:01.851 +01:00 [Debug] Executed action method "IdentityServer4.Quickstart.UI.AccountController.Logout (Gym.IdentityServer)", returned result "Microsoft.AspNetCore.Mvc.ViewResult".
2017-04-09 14:19:01.851 +01:00 [Debug] View lookup cache miss for view '"LoggedOut"' in controller '"Account"'.
2017-04-09 14:19:01.866 +01:00 [Debug] Code generation for the Razor file at '"/Views/Account/LoggedOut.cshtml"' started.
2017-04-09 14:19:01.888 +01:00 [Debug] Code generation for the Razor file at '"/Views/Account/LoggedOut.cshtml"' completed in 21.6018ms.
2017-04-09 14:19:01.888 +01:00 [Debug] Compilation of the generated code for the Razor file at '"/Views/Account/LoggedOut.cshtml"' started.
2017-04-09 14:19:01.907 +01:00 [Debug] Compilation of the generated code for the Razor file at '"/Views/Account/LoggedOut.cshtml"' completed in 19.3731ms.
2017-04-09 14:19:01.908 +01:00 [Debug] The view '"LoggedOut"' was found.
2017-04-09 14:19:01.908 +01:00 [Information] Executing ViewResult, running view at path "/Views/Account/LoggedOut.cshtml".
2017-04-09 14:19:01.913 +01:00 [Debug] View lookup cache miss for view '"_Layout"' in controller '"Account"'.
2017-04-09 14:19:01.916 +01:00 [Information] Executed action "IdentityServer4.Quickstart.UI.AccountController.Logout (Gym.IdentityServer)" in 130.8798ms
2017-04-09 14:19:01.916 +01:00 [Debug] Connection id ""0HL3V9BSVFAMF"" completed keep alive response.
2017-04-09 14:19:01.916 +01:00 [Information] Request finished in 138.9607ms 200 text/html; charset=utf-8
2017-04-09 14:19:05.173 +01:00 [Information] Request starting HTTP/1.1 GET http://localhost:5001/
2017-04-09 14:19:05.174 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:19:05.174 +01:00 [Verbose] No endpoint entry found for request path: "/"
2017-04-09 14:19:05.174 +01:00 [Debug] The request path "/" does not match a supported file type
2017-04-09 14:19:05.174 +01:00 [Debug] Request successfully matched the route with name '"default"' and template '"{controller=Home}/{action=Index}/{id?}"'.
2017-04-09 14:19:05.174 +01:00 [Debug] Executing action "IdentityServer4.Quickstart.UI.HomeController.Index (Gym.IdentityServer)"
2017-04-09 14:19:05.174 +01:00 [Information] Executing action method "IdentityServer4.Quickstart.UI.HomeController.Index (Gym.IdentityServer)" with arguments (null) - ModelState is Valid
2017-04-09 14:19:05.174 +01:00 [Debug] Executed action method "IdentityServer4.Quickstart.UI.HomeController.Index (Gym.IdentityServer)", returned result "Microsoft.AspNetCore.Mvc.ViewResult".
2017-04-09 14:19:05.175 +01:00 [Debug] View lookup cache hit for view '"Index"' in controller '"Home"'.
2017-04-09 14:19:05.175 +01:00 [Debug] The view '"Index"' was found.
2017-04-09 14:19:05.175 +01:00 [Information] Executing ViewResult, running view at path "/Views/Home/Index.cshtml".
2017-04-09 14:19:05.175 +01:00 [Debug] View lookup cache hit for view '"_Layout"' in controller '"Home"'.
2017-04-09 14:19:05.176 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:19:05.176 +01:00 [Information] Executed action "IdentityServer4.Quickstart.UI.HomeController.Index (Gym.IdentityServer)" in 1.6664ms
2017-04-09 14:19:05.176 +01:00 [Debug] Connection id ""0HL3V9BSVFAMF"" completed keep alive response.
2017-04-09 14:19:05.176 +01:00 [Information] Request finished in 2.5395ms 200 text/html; charset=utf-8
2017-04-09 14:19:11.813 +01:00 [Information] Request starting HTTP/1.1 GET http://localhost:5001/connect/authorize?response_type=id_token%20token&client_id=angular2client&redirect_uri=http://localhost:5000&scope=gymApi%20openid&nonce=N0.253205651524951671491743951806&state=14917439518060.07873038847686775
2017-04-09 14:19:11.813 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:19:11.813 +01:00 [Debug] Request path "/connect/authorize" matched to endpoint type Authorize
2017-04-09 14:19:11.813 +01:00 [Debug] Mapping found for endpoint: Authorize, creating handler: "IdentityServer4.Endpoints.AuthorizeEndpoint"
2017-04-09 14:19:11.815 +01:00 [Information] Invoking IdentityServer endpoint: "IdentityServer4.Endpoints.AuthorizeEndpoint" for "/connect/authorize"
2017-04-09 14:19:11.820 +01:00 [Debug] Start authorize request
2017-04-09 14:19:11.820 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:19:11.823 +01:00 [Debug] No user present in authorize request
2017-04-09 14:19:11.825 +01:00 [Debug] Start authorize request protocol validation
2017-04-09 14:19:11.852 +01:00 [Debug] Calling into custom validator: "IdentityServer4.Validation.DefaultCustomAuthorizeRequestValidator"
2017-04-09 14:19:11.852 +01:00 [Verbose] Authorize request protocol validation successful
2017-04-09 14:19:11.863 +01:00 [Information] ValidatedAuthorizeRequest
"{
  \"ClientId\": \"angular2client\",
  \"ClientName\": \"angular2client\",
  \"RedirectUri\": \"http://localhost:5000\",
  \"AllowedRedirectUris\": [
    \"https://localhost:5000\",
    \"http://localhost:5000\"
  ],
  \"SubjectId\": \"anonymous\",
  \"ResponseType\": \"id_token token\",
  \"ResponseMode\": \"fragment\",
  \"GrantType\": \"implicit\",
  \"RequestedScopes\": \"gymApi openid\",
  \"State\": \"14917439518060.07873038847686775\",
  \"Nonce\": \"N0.253205651524951671491743951806\",
  \"Raw\": {
    \"response_type\": \"id_token token\",
    \"client_id\": \"angular2client\",
    \"redirect_uri\": \"http://localhost:5000\",
    \"scope\": \"gymApi openid\",
    \"nonce\": \"N0.253205651524951671491743951806\",
    \"state\": \"14917439518060.07873038847686775\"
  }
}"
2017-04-09 14:19:11.864 +01:00 [Verbose] ProcessInteractionAsync
2017-04-09 14:19:11.866 +01:00 [Information] Showing login: User is not authenticated
2017-04-09 14:19:11.867 +01:00 [Verbose] End authorize request. result type: "IdentityServer4.Endpoints.Results.LoginPageResult"
2017-04-09 14:19:11.867 +01:00 [Verbose] Invoking result: "IdentityServer4.Endpoints.Results.LoginPageResult"
2017-04-09 14:19:11.872 +01:00 [Debug] Connection id ""0HL3V9BSVFAMF"" completed keep alive response.
2017-04-09 14:19:11.872 +01:00 [Information] Request finished in 58.7468ms 302
2017-04-09 14:19:11.875 +01:00 [Information] Request starting HTTP/1.1 GET http://localhost:5001/account/login?returnUrl=%2Fconnect%2Fauthorize%2Flogin%3Fresponse_type%3Did_token%2520token%26client_id%3Dangular2client%26redirect_uri%3Dhttp%253A%252F%252Flocalhost%253A5000%26scope%3DgymApi%2520openid%26nonce%3DN0.253205651524951671491743951806%26state%3D14917439518060.07873038847686775
2017-04-09 14:19:11.875 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:19:11.875 +01:00 [Verbose] No endpoint entry found for request path: "/account/login"
2017-04-09 14:19:11.875 +01:00 [Debug] The request path "/account/login" does not match a supported file type
2017-04-09 14:19:11.875 +01:00 [Debug] Request successfully matched the route with name '"default"' and template '"{controller=Home}/{action=Index}/{id?}"'.
2017-04-09 14:19:11.876 +01:00 [Debug] Action '"IdentityServer4.Quickstart.UI.AccountController.Login (Gym.IdentityServer)"' with id '"418ffd90-780c-4e1a-aecd-0dcddd263e6a"' did not match the constraint '"Microsoft.AspNetCore.Mvc.Internal.HttpMethodActionConstraint"'
2017-04-09 14:19:11.876 +01:00 [Debug] Executing action "IdentityServer4.Quickstart.UI.AccountController.Login (Gym.IdentityServer)"
2017-04-09 14:19:11.896 +01:00 [Information] Executing action method "IdentityServer4.Quickstart.UI.AccountController.Login (Gym.IdentityServer)" with arguments (["/connect/authorize/login?response_type=id_token%20token&client_id=angular2client&redirect_uri=http%3A%2F%2Flocalhost%3A5000&scope=gymApi%20openid&nonce=N0.253205651524951671491743951806&state=14917439518060.07873038847686775"]) - ModelState is Valid
2017-04-09 14:19:11.901 +01:00 [Verbose] returnUrl is valid
2017-04-09 14:19:11.903 +01:00 [Verbose] returnUrl is valid
2017-04-09 14:19:11.904 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:19:11.904 +01:00 [Debug] Start authorize request protocol validation
2017-04-09 14:19:11.905 +01:00 [Debug] Calling into custom validator: "IdentityServer4.Validation.DefaultCustomAuthorizeRequestValidator"
2017-04-09 14:19:11.905 +01:00 [Verbose] Authorize request protocol validation successful
2017-04-09 14:19:11.905 +01:00 [Verbose] AuthorizationRequest being returned
2017-04-09 14:19:11.906 +01:00 [Verbose] AuthorizationRequest being returned
2017-04-09 14:19:11.909 +01:00 [Debug] Executed action method "IdentityServer4.Quickstart.UI.AccountController.Login (Gym.IdentityServer)", returned result "Microsoft.AspNetCore.Mvc.ViewResult".
2017-04-09 14:19:11.909 +01:00 [Debug] View lookup cache miss for view '"Login"' in controller '"Account"'.
2017-04-09 14:19:11.909 +01:00 [Debug] Code generation for the Razor file at '"/Views/Account/Login.cshtml"' started.
2017-04-09 14:19:11.938 +01:00 [Debug] Code generation for the Razor file at '"/Views/Account/Login.cshtml"' completed in 28.5181ms.
2017-04-09 14:19:11.938 +01:00 [Debug] Compilation of the generated code for the Razor file at '"/Views/Account/Login.cshtml"' started.
2017-04-09 14:19:12.044 +01:00 [Debug] Compilation of the generated code for the Razor file at '"/Views/Account/Login.cshtml"' completed in 106.1833ms.
2017-04-09 14:19:12.044 +01:00 [Debug] The view '"Login"' was found.
2017-04-09 14:19:12.045 +01:00 [Information] Executing ViewResult, running view at path "/Views/Account/Login.cshtml".
2017-04-09 14:19:12.053 +01:00 [Debug] View lookup cache miss for view '"_ValidationSummary"' in controller '"Account"'.
2017-04-09 14:19:12.053 +01:00 [Debug] Code generation for the Razor file at '"/Views/Shared/_ValidationSummary.cshtml"' started.
2017-04-09 14:19:12.056 +01:00 [Debug] Code generation for the Razor file at '"/Views/Shared/_ValidationSummary.cshtml"' completed in 2.947ms.
2017-04-09 14:19:12.056 +01:00 [Debug] Compilation of the generated code for the Razor file at '"/Views/Shared/_ValidationSummary.cshtml"' started.
2017-04-09 14:19:12.072 +01:00 [Debug] Compilation of the generated code for the Razor file at '"/Views/Shared/_ValidationSummary.cshtml"' completed in 16.0364ms.
2017-04-09 14:19:12.099 +01:00 [Verbose] Performing unprotect operation to key {3a0578f7-1e9f-4375-8bf8-7cfdb9aa2e7d} with purposes "('D:\CodeGym\GymApp\Gym.IdentityServer\Dev\src\Gym.IdentityServer', 'Microsoft.AspNetCore.Antiforgery.AntiforgeryToken.v1')".
2017-04-09 14:19:12.109 +01:00 [Debug] Reading data from file '"C:\Users\amel\AppData\Local\ASP.NET\DataProtection-Keys\key-3a0578f7-1e9f-4375-8bf8-7cfdb9aa2e7d.xml"'.
2017-04-09 14:19:12.114 +01:00 [Debug] Found key {3a0578f7-1e9f-4375-8bf8-7cfdb9aa2e7d}.
2017-04-09 14:19:12.123 +01:00 [Debug] Considering key {3a0578f7-1e9f-4375-8bf8-7cfdb9aa2e7d} with expiration date 2017-05-29 11:10:11Z as default key.
2017-04-09 14:19:12.130 +01:00 [Debug] Decrypting secret element using Windows DPAPI.
2017-04-09 14:19:12.136 +01:00 [Debug] Opening CNG algorithm '"AES"' from provider 'null' with chaining mode CBC.
2017-04-09 14:19:12.141 +01:00 [Debug] Opening CNG algorithm '"SHA256"' from provider 'null' with HMAC.
2017-04-09 14:19:12.148 +01:00 [Debug] Using key {3a0578f7-1e9f-4375-8bf8-7cfdb9aa2e7d} as the default key.
2017-04-09 14:19:12.159 +01:00 [Verbose] Performing protect operation to key {3a0578f7-1e9f-4375-8bf8-7cfdb9aa2e7d} with purposes "('D:\CodeGym\GymApp\Gym.IdentityServer\Dev\src\Gym.IdentityServer', 'Microsoft.AspNetCore.Antiforgery.AntiforgeryToken.v1')".
2017-04-09 14:19:12.162 +01:00 [Debug] An antiforgery cookie token was reused.
2017-04-09 14:19:12.236 +01:00 [Debug] View lookup cache hit for view '"_Layout"' in controller '"Account"'.
2017-04-09 14:19:12.236 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:19:12.239 +01:00 [Information] Executed action "IdentityServer4.Quickstart.UI.AccountController.Login (Gym.IdentityServer)" in 363.1149ms
2017-04-09 14:19:12.239 +01:00 [Debug] Connection id ""0HL3V9BSVFAMF"" completed keep alive response.
2017-04-09 14:19:12.239 +01:00 [Information] Request finished in 364.61ms 200 text/html; charset=utf-8
2017-04-09 14:19:24.772 +01:00 [Information] Request starting HTTP/1.1 POST http://localhost:5001/account/login?returnUrl=%2Fconnect%2Fauthorize%2Flogin%3Fresponse_type%3Did_token%2520token%26client_id%3Dangular2client%26redirect_uri%3Dhttp%253A%252F%252Flocalhost%253A5000%26scope%3DgymApi%2520openid%26nonce%3DN0.253205651524951671491743951806%26state%3D14917439518060.07873038847686775 application/x-www-form-urlencoded 527
2017-04-09 14:19:24.775 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:19:24.775 +01:00 [Verbose] No endpoint entry found for request path: "/account/login"
2017-04-09 14:19:24.775 +01:00 [Debug] "POST" requests are not supported
2017-04-09 14:19:24.775 +01:00 [Debug] Request successfully matched the route with name '"default"' and template '"{controller=Home}/{action=Index}/{id?}"'.
2017-04-09 14:19:24.776 +01:00 [Debug] Action '"IdentityServer4.Quickstart.UI.AccountController.Login (Gym.IdentityServer)"' with id '"74bfe920-656f-4a67-9283-17925f8ae760"' did not match the constraint '"Microsoft.AspNetCore.Mvc.Internal.HttpMethodActionConstraint"'
2017-04-09 14:19:24.777 +01:00 [Debug] Executing action "IdentityServer4.Quickstart.UI.AccountController.Login (Gym.IdentityServer)"
2017-04-09 14:19:24.797 +01:00 [Verbose] Performing unprotect operation to key {3a0578f7-1e9f-4375-8bf8-7cfdb9aa2e7d} with purposes "('D:\CodeGym\GymApp\Gym.IdentityServer\Dev\src\Gym.IdentityServer', 'Microsoft.AspNetCore.Antiforgery.AntiforgeryToken.v1')".
2017-04-09 14:19:24.797 +01:00 [Verbose] Performing unprotect operation to key {3a0578f7-1e9f-4375-8bf8-7cfdb9aa2e7d} with purposes "('D:\CodeGym\GymApp\Gym.IdentityServer\Dev\src\Gym.IdentityServer', 'Microsoft.AspNetCore.Antiforgery.AntiforgeryToken.v1')".
2017-04-09 14:19:24.798 +01:00 [Debug] Antiforgery successfully validated a request.
2017-04-09 14:19:24.820 +01:00 [Information] Executing action method "IdentityServer4.Quickstart.UI.AccountController.Login (Gym.IdentityServer)" with arguments (["IdentityServer4.Quickstart.UI.LoginInputModel"]) - ModelState is Valid
2017-04-09 14:19:24.824 +01:00 [Verbose] returnUrl is valid
2017-04-09 14:19:24.824 +01:00 [Verbose] returnUrl is valid
2017-04-09 14:19:24.824 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:19:24.824 +01:00 [Debug] Start authorize request protocol validation
2017-04-09 14:19:24.824 +01:00 [Debug] Calling into custom validator: "IdentityServer4.Validation.DefaultCustomAuthorizeRequestValidator"
2017-04-09 14:19:24.824 +01:00 [Verbose] Authorize request protocol validation successful
2017-04-09 14:19:24.824 +01:00 [Verbose] AuthorizationRequest being returned
2017-04-09 14:19:24.824 +01:00 [Verbose] AuthorizationRequest being returned
2017-04-09 14:19:24.824 +01:00 [Debug] Executed action method "IdentityServer4.Quickstart.UI.AccountController.Login (Gym.IdentityServer)", returned result "Microsoft.AspNetCore.Mvc.ViewResult".
2017-04-09 14:19:24.824 +01:00 [Debug] View lookup cache hit for view '"Login"' in controller '"Account"'.
2017-04-09 14:19:24.825 +01:00 [Debug] The view '"Login"' was found.
2017-04-09 14:19:24.825 +01:00 [Information] Executing ViewResult, running view at path "/Views/Account/Login.cshtml".
2017-04-09 14:19:24.825 +01:00 [Debug] View lookup cache hit for view '"_ValidationSummary"' in controller '"Account"'.
2017-04-09 14:19:24.832 +01:00 [Verbose] Performing protect operation to key {3a0578f7-1e9f-4375-8bf8-7cfdb9aa2e7d} with purposes "('D:\CodeGym\GymApp\Gym.IdentityServer\Dev\src\Gym.IdentityServer', 'Microsoft.AspNetCore.Antiforgery.AntiforgeryToken.v1')".
2017-04-09 14:19:24.832 +01:00 [Debug] An antiforgery cookie token was reused.
2017-04-09 14:19:24.834 +01:00 [Debug] View lookup cache hit for view '"_Layout"' in controller '"Account"'.
2017-04-09 14:19:24.834 +01:00 [Debug] AuthenticationScheme: "Identity.Application" was not authenticated.
2017-04-09 14:19:24.836 +01:00 [Information] Executed action "IdentityServer4.Quickstart.UI.AccountController.Login (Gym.IdentityServer)" in 58.1909ms
2017-04-09 14:19:24.836 +01:00 [Debug] Connection id ""0HL3V9BSVFAMF"" completed keep alive response.
2017-04-09 14:19:24.836 +01:00 [Information] Request finished in 63.0097ms 200 text/html; charset=utf-8

Please close this. Problem was that I didn't implement accountController.cs (aka I didn't use quick start controller examples, so it was still trying to perform in memory users instead communicating with database). Didn't understand concept. Now I do.