Cannot drag the dropdown scrollbar in IE11

When the dropdown is a long list, the scrollbar appears.
However, in IE11, whenever you try to use your mouse to drag the scrollbar to scroll down, it immediately close the dropdown.
The same thing doesn't happen on Chrome though.
I think IE handles focus differently than Chrome, and it breaks the scrollbar in IE.
Still haven't got chance to debug further, but i think this is quite annoying for users on IE since you can't scroll using mouse anymore.

Which version of selectize are you using? try version 0.7.4

@furqanZafar You're right, the latest version doesn't have this issue anymore. Seems to be fixed.
Thanks.

Did something break this again? I'm still seeing this in IE11 in windows 7 with version 3.0.1
I can't reproduce it in windows 8.1 though


Android / iOS UI Test

We'd like to make sure that there are no issues using React Native to implement the same features across both platforms. The specific functionality we'd like to test are:

[ ] Standard Shabad View (test scrolling) (#94)
[X] Draggable Drawer (#93)
[ ] Search button and search modal functionality as per Figma mockup (#95)

We can modify this to make the bottom navigator https://github.com/osdnk/react-native-reanimated-bottom-sheet

Ordering of tabs: https://youtu.be/hh7vfMzHTIg

I think this issue will be deprecated as per the new design. @bhajneet?

fwiw, our tests did show that cross-platform drawer worked nicely :)

We can close this issue. I'd say it's tested well enough by now.


Waiters do not have a configurable retry / timeout strategy

Describe the bug
When using waiters the underlying operation may take considerable time that exceeds the hard-coded attempts/timeouts.  This results in the waiter throwing a TooManyAttemptsException.
For example, RdsClient.waitUntilDBSnapshotAvailable has a hard-coded retry strategy:
val strategy = StandardRetryStrategy {
        maxAttempts = 20
        tokenBucket = InfiniteTokenBucket
        delayProvider {
            initialDelay = 30_000.milliseconds
            scaleFactor = 1.5
            jitter = 1.0
            maxBackoff = 120_000.milliseconds
        }
    }

In a situation where there is a large snapshot that takes greater than the ~17m the retry strategy allows for it will fail; this is unexpected as a) the operation is still in progress (in our case, it completed successfully after ~30m) and b) waitUntilDBSnapshotAvailable isn't documented as having a timeout / doesn't offer any configurability on timeouts.
Regression Issue

[ ] Select this option if this issue appears to be a regression.

Expected behavior
Expecting that waiters either wait indefinitely (which is the implied behaviour, though not ideal) or take a default-value parameter with a retry strategy (or any alternate approach that makes it clear there are timeouts and how to configure them).
The AWS Java SDK allow waiters to be configurable: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/waiters.html
Current behavior
As described above RdsClient.waitUntilDBSnapshotAvailable (and likely other Waiters) times out unexpectedly (well, unexpected if you haven't read the code).
Steps to Reproduce
Execute a Waiter whose operation takes more than the hard-coded retry/timeout limit.
Possible Solution
Ideally the API would be more up-front and configurable for waiters to allow configurability on the timeouts and clearly document that it isn't solely waiting for the primary condition (there's also timeouts in play).
As a workaround have cobbled together the below to allow coarse-grained configurability:
    private suspend fun waitForSnapshot(snapshotId: String) {
        var retries = 0
        while (true) {
            try {
                rdsClient.waitUntilDBSnapshotAvailable(
                    DescribeDbSnapshotsRequest { this.dbSnapshotIdentifier = snapshotId }
                )
                return
            } catch (e: TooManyAttemptsException) {
                if (retries >= 3) {
                    throw e
                }
                retries++
            }
        }
    }

Context
Using the SDK to initiate an RDS snapshot, and wait for it  to complete before continuing on with upgrading the database.
AWS SDK for Kotlin version
1.3.42
Platform (JVM/JS/Native)
JVM
Operating system and version
MacOS / Linux

Thanks for the feature request! We've added an internal backlog item (SDK-KT-369) and will keep you updated on the status here.

This has been implemented and will be released in the next minor version of the SDK (v1.4), coming soon...


Redesign: Create a dora-daemon as a communication broker

Create a dora-daemon executable to manage communication per machine. The daemon allocates shared memory for messages, which makes it possible to send outputs to local receivers without copying. For remote receivers, the message is copied and sent over the network using some communication layer implementation.
The new process to send outputs looks like this:

Since the daemon handles all advanced communication, the nodes no longer need to link the communication layer. This should make building and distribution much simpler since we don't need any C++ dependencies with complex build scripts anymore (e.g. iceoryx).
If the shared memory implementation is fast and flexible enough, we might even be able to unify custom nodes and operators again.
ToDo:

[x] Adjust the node APIs for the new design

[x] Rust
[x] Python
[x] C
[x] C++

[x] Update the examples

[x] Rust
[ ] Rust with remote nodes
[x] Python
[x] C
[x] C++

[x] Update CLI command to work with the new design

[x] dora start
[x] dora stop
[x] dora up
[x] dora destroy

[x] Adjust the dora-runtime (or remove it?)
[ ] Integration tests

[ ] for stopping nodes
[ ] simulate network disconnects

Performance Improvements:

[x] Create  performance benchmark (throughput, latency)
[ ] Use RPC framework instead of custom TCP socket for coordinator <-> daemon <-> node communication
[ ] Reuse shared memory allocations instead of deallocating them after use
[ ] Construct metadata directly in node API (instead of daemon)
[x] Pass metadata through shared memory
[x] Use shared memory for control channels (instead of TCP sockets)

[x] Use Event type of raw-sync crate for synchronization

While this PR is not done yet, I think it's ready for a first round of testing.
@haixuanTao Could you take a quick look at the new Python node API? I updated Python example dataflow to the new API (e.g. object_detection.py) and it seems to work quite well, but I'm not sure about the style.

Ok! Will do, thanks !

Thanks a lot for testing! The small benchmark example that I added confirmed your suspection that the latency was higher. Interestingly, the latency was quite different depending on the OS:

On Linux, we had the highest latency with about ~80ms: https://github.com/dora-rs/dora/actions/runs/3801906682/jobs/6466862495#step:9:312
On Windows, it was much better with ~1.5ms: https://github.com/dora-rs/dora/actions/runs/3801906682/jobs/6466862648#step:9:308
On macOS, it was best with ~550µs: https://github.com/dora-rs/dora/actions/runs/3801906682/jobs/6466862562#step:9:306

It turns out that I forgot to disable Nagle's algorithm for the listener side of the connection. So the packets were buffered until the previous packet was acknowledged. This interacts badly with delayed ACKs, which allows receivers to wait for a bit in order to send a combined ACK to reduce the number of sent packets. On Linux, the default delay for ACKs is 40ms, which explains the 80ms latency (we send two messages over TCP).
With Nagle's algorithm fully disabled, we now have <200µs latencies on Linux as well: https://github.com/dora-rs/dora/actions/runs/3823854941/jobs/6505464321#step:9:315

Thanks a lot for testing! The small benchmark example that I added confirmed your suspection that the latency was higher. Interestingly, the latency was quite different depending on the OS:
...
Ok, so just for info, I have retested the python example on the latest commit and the latency is gone! Thanks a lot!

So just to be sure, the current information about communication in the dataflow in the not used anymore and specifying zenoh or iceoryx does not have any effect in this new design?
The default communication is through shared memory.

Great to hear, thanks a lot for testing!

So just to be sure, the current information about communication in the dataflow is not used anymore and specifying zenoh or iceoryx does not have any effect in this new design, right?
The communication is through shared memory regardless of the communication config, right?

Yes, the communication key is currently ignored. We will use it in the future for the communication between different daemons (iceoryx won't work for that though).

So just one thing, I notice is that there is no max queue in our current daemon design and this is probably a required feature before we can merge it.

Thanks a lot for debugging this! I pushed a number of changes to avoid this deadlock. The main change is to add an intermediate channel buffer and spawn it as background task (a9203e0). The task reads all operator inputs and buffers them in a VecDeque. When the corresponding operator is ready, it forwards the next event. When the buffer becomes too full, we drop the oldest inputs (like we already do for nodes) (0f29d26).

Yeah no worries. So, I have been trying dora-drives with the new daemon and I have noticed that under heavy load. The dataflow does not exit cleanly. Some operator does not finishes. I am able to replicate this on the python example if I run a heavy process in parallel.
It seems that the object_detection does not receive that its inputs are closed and so it keeps on waiting for new input. I have tried to figure out why it does not receive the Input is closed message but haven't found the issue yet. It might be not easy to replicate the issue.
This is the last log I receive:
received 774 images
received 603 bounding boxes
received 604 bounding boxes
received 605 bounding boxes
received 606 bounding boxes
received 607 bounding boxes
received 608 bounding boxes
received 609 bounding boxes
received 610 bounding boxes
  2023-03-01T08:01:33.960758Z DEBUG dora_daemon::listener: channel disconnected: ca7902d3-34db-42a6-9922-96016f1d5af8/webcam with connection: TcpConnection(PollEvented { io: Some(TcpStream { addr: <IP_ADDRESS>:46027, peer: <IP_ADDRESS>:56668, fd: 23 }) })
    at binaries/daemon/src/listener/mod.rs:187
    in dora_daemon::listener::tcp::handle_connection_loop

  2023-03-01T08:01:33.961177Z  INFO dora_daemon: Stopped: ca7902d3-34db-42a6-9922-96016f1d5af8/webcam
    at binaries/daemon/src/lib.rs:441

  2023-03-01T08:01:33.961677Z DEBUG dora_daemon::listener: channel disconnected: ca7902d3-34db-42a6-9922-96016f1d5af8/webcam with connection: TcpConnection(PollEvented { io: Some(TcpStream { addr: <IP_ADDRESS>:46027, peer: <IP_ADDRESS>:56660, fd: 22 }) })
    at binaries/daemon/src/listener/mod.rs:187
    in dora_daemon::listener::tcp::handle_connection_loop

  2023-03-01T08:01:33.962099Z  INFO dora_runtime: all inputs of operator object_detection/op were closed -> closing event channel
    at binaries/runtime/src/lib.rs:244
    in dora_runtime::run with operators: {OperatorId("op"): OperatorConfig { name: None, description: None, inputs: {DataId("image"): User(UserInputMapping { source: NodeId("webcam"), output: DataId("image") })}, outputs: {DataId("bbox")}, source: Python("object_detection.py"), build: None }}

  2023-03-01T08:01:33.962566Z DEBUG dora_node_api::daemon: Event stream closed
    at apis/rust/node/src/daemon/mod.rs:246

  2023-03-01T08:01:33.962759Z DEBUG dora_daemon::listener: channel disconnected: ca7902d3-34db-42a6-9922-96016f1d5af8/object_detection with connection: TcpConnection(PollEvented { io: Some(TcpStream { addr: <IP_ADDRESS>:42071, peer: <IP_ADDRESS>:50336, fd: 18 }) })
    at binaries/daemon/src/listener/mod.rs:187
    in dora_daemon::listener::tcp::handle_connection_loop

received 611 bounding boxes
  2023-03-01T08:01:34.008883Z  INFO dora_daemon: node ca7902d3-34db-42a6-9922-96016f1d5af8/webcam finished successfully
    at binaries/daemon/src/lib.rs:538

received 612 bounding boxes
received 613 bounding boxes
received 614 bounding boxes

Thanks for testing! This indeed sound similar to the stop issues of the C++ dataflow example that we currently see on the CI. It's good to know that the issue can also occur for Python operators, so it does not seem like a C++-specific issue. I'll keep looking into it!

@haixuanTao I found and fixed a deadlock that happened when the dora node was dropped before the event stream in the Rust node API. Since the other APIs build on top of the Rust API, it affected them too.

I discussed this PR with @haixuanTao. We believe that all the critical bugs are fixed now. So we decided to go ahead and merge this PR, once the CI is green. We will handle the other open tasks and the possible performance improvements in follow-up PRs.

Looks like we have some stop issues on Windows now. I'll look into it.


HingeJoint - Inspector does not allow negative target_velocity

Godot version:
3.1.dev  (master branch, as of 5/25/18)
OS/device including version:
Windows 10
Issue description:
The inspector enforces values for the HingeJoint target_velocity > 0.  This is a problem, since we want to be able to reverse the direction of the motor without having to rotate the hinge joint 180 degrees.
You can set the velocity to negative values in code, which does reverse the direction of the motor:
hinge_joint.set_param(HingeJoint.PARAM_MOTOR_TARGET_VELOCITY,velocity)

Steps to reproduce:
Add HingeJoint node. Try to set the target_velocity in the inspector to a negative value. The inspector will set the value to 0.01.

I can fix this by changing the hint range at physics_joint.cpp line#273
	ADD_PROPERTYI(PropertyInfo(Variant::REAL, "motor/target_velocity", PROPERTY_HINT_RANGE, "0.01,4096,0.01"), "set_param", "get_param", PARAM_MOTOR_TARGET_VELOCITY);
I can change "0.01" to "-4096". But the value of 4096 seems really excessive.  The velocity is in radians/sec,  The max value of 4096 give us around 650 rev/sec or 39,000  RPM
I would use a range of  -200 to 200 which gives max motor speed of  (32 rev/sec). Consider this if you are running at 60 FPS.
@AndreaCatania @akien-mga
Let me know your thoughts on changing the motor target velocity range as suggested. I will submit PR.

I'm not familiar with the feature, but yes I'm fine with reducing the min/max values as long as they still make sense for 99% of users.
If it still makes sense for some users to use values beyond the range specified, you can use the new or_greater and or_lesser hints like this: `"-200,200,0.01,or_greater,or_lesser". In 3.1+, this will limit the slider to [-200, 200] but let users input something beyond this range manually.

Fixed by #19246.


C-API Binaries for 32-bit for x86 instruction set

System information

TensorFlow version (you are using): 2.7.0
Are you willing to contribute it (Yes/No): No

Describe the feature and the current behavior/state.
Tensorflow provides Windows binaries for the C-API for 64-bit processprs for instruction set x86 (= x64), see:
https://www.tensorflow.org/install/lang_c#supported_platforms
It would be great to support this for 32-bit also.
Who will benefit with this feature?
Projects requiring to build in 32-bit and 64-bit OS.

@CometManAtGitHub,
We no longer build 64bit TF. The code assumes 64 bits in several places, so building from source might still lead into errors.

Closing as stale. Please reopen if you'd like to work on this further.

Are you satisfied with the resolution of your issue?
Yes
No


Wire Hydraulic Controller Doesn't Dupe

Describe the bug
When a wire hydraulic is created between two props, and then copied with advdupe2 (NOT area copy), depending on what you right clicked, either the two props get copied, or the controller get copied, but not all three.
To Reproduce
Steps to reproduce the behavior:

Create a wire hydraulic constraint
Right click on one of the props with advdupe2 tool
Paste the result

Expected behavior
If you copied the props, the controller will not have been included, and there should be an error (Failed to create WireHydraulic Constraint).

Applies to any wire entity that does linking as well


Enums with dots in their names cause an error

What are the steps to reproduce this issue?

Make a swagger schema with an enum that contains a dot in the name foo.bar
Use it inside a definition

{
   "web.foo": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                },
                "foo": {
                    "type": "string",
                    "enum": [
                        "high",
                        "medium",
                        "low"
                    ]
                }
            }
        }
}

What happens?
The generated code is wrong:

What were you expecting to happen?
The dot to be removed
What versions are you using?
Operating System: macOS Big Sur
Package Version: 5.4.4

I've also faced a somewhat similar issue when trying to use a string enum with some of the values being unusable in ts keys.
{
  "type": "object",
  "properties": {
    "sortOrder": {
      "type": "string",
      "enum": ["-1", "0", "1"],
    },
  },
}

The generated output will be:

With the duplicated declaration of "1"

Is there any temporary workaround? I can't really change my schema as it's autogenerated

I will take time on it today and I don't think there is a workaround

@Eddie-CooRo I did something like this it seems ok for you?

YES! That's more than enough for me.
Thanks :pray:
Though the most ideal solution would be for open API to add support for named enums :)
{
  type: "string",
  enum: [{ name: "Asc", value: 1 }, { name: "Desc", value: -1 }, { name: "None", value: 0 }],
}

And
export const SortOrder = {
  Asc: 1,
  Desc: -1,
  None: 0
}

I fixed the problem in the 5.4.6 normally

Thank you so much! Great job with this tool, been loving it!


Update block variants logic to match other helix sites (business-webs…

Resolving issue: MWPW-113305
Before: https://main--blog--adobe.hlx.page/en/drafts/seanchoi/milo-test
After: https://block-variant--blog--adobe.hlx.page/en/drafts/seanchoi/milo-test

Approved, tested the urls provided.


Settings Overhaul: Add last remaining strings for French

Adds the last setting strings (smoothing).

Thank you merging!


Suppress "Combined data file" etc

With coverage version 6+ our test framework started outputting;
Lot's of; Combined data file .coverage.DESKTOP-G28B0IU.9900.358097
and Wrote HTML report to htmlcov\index.html
The Coverage constructor has a message parameter to suppress this, the CoverageScript::command_line however unconditionally sets this message parameter to True.
Please provide a way to suppress these messages via the command line or configuration.
Running; Coverage.py, version 6.0.2 with C extension

This is now released as part of coverage 6.1.


Draft: Refactor, reorganization, and style for BilinearForm, MixedBilinearForm, BilinearFormExtension classes

NOTE: Based on #3526
Prerequisites for expanding the libCEED interface. This can be broken into further smaller PRs as desired for review when/if the time comes.

Closing now that the dependent PRs have been closed and moved to downstream repositories.


Mute is toggled when toggling deafen

When I call Toggle Mute, only mute is toggled.
When I call Toggle Deafen, both the mute and deafen is toggled.
Is this intended or a bug?

It's discord's original function.


compile errors with Xcode

I got 10 errors totaly, just like these:
cocos/scripting/js-bindings/auto/jsb_cocos2dx_extension_ImagePicker.cpp:43:53: No member named 'get' in 'mozilla::Maybe<JS::PersistentRooted<JSObject *> >'
cocos/scripting/js-bindings/auto/jsb_cocos2dx_extension_ImagePicker.cpp:186:18: No viable overloaded '='

I just worked it out and submit a pull request, it works for me, thanks for your help!

Merged, Thanks!
Maybe new JSB versions have changed API a little..


[Bug]: jest.spyOn is not tracking function calls

Version
27.1.0
Steps to reproduce

Open https://codesandbox.io/s/jest-spyon-is-not-tracked-skceq?file=/src/App.test.js
Run tests
The test fails

Expected behavior
Test shouldn't fail
Actual behavior
Test fails, because jest.spyOn(utils, "getFoo") for some reason is not tracked.
Additional context
No response
Environment
Not sure how to run it in codesandbox, but I hope the codesandbox itself is enough.

also seeing this issue

Could you create a repository I can pull down? Without react-scripts as that uses an old version of Jest.

That said, I assume this is a duplicate of #936 (specifically https://github.com/facebook/jest/issues/936#issuecomment-214939935).
I'll close since I think that's correct, but if it's not I'm happy to reopen 🙂


Update Orleans

And document orleans for a demo ;)

Will do - will produce a separate .md file/folder for you to use to give a specific demo to folks. Do you have a desirable time frame by when it'd be done?

No time frame, it works today, but when you find time.
Hmmmmm that is a good question. We always wanted to add a form post for submitting new podcasts, but never did. I am down to add new features ;)


Empty/Null message processing with JSON payloads

Receipt of a empty/null message when configured with JSON payloads causes the following error:
NatsError: Bad JSON
    at Function.errorForCode (webpack-internal:///./node_modules/nats.ws/nats.js:1:2803)     at T.fill (webpack-internal:///./node_modules/nats.ws/nats.js:1:13659)     at I.processInbound (webpack-internal:///./node_modules/nats.ws/nats.js:1:15991)     at I.messageHandler (webpack-internal:///./node_modules/nats.ws/nats.js:1:18206)     at WebSocket.a.stream.onmessage (webpack-internal:///./node_modules/nats.ws/nats.js:8:24784)
Recommend adding a special case when empty/null message (0 length), set msg data to an empty object ({}) in protocol.ts's fill method.
The use case is an empty command or event without a payload. This should be a valid use case when the subject provides all necessary context.

If the client is set to JSON payloads all the interactions from that client must be JSON. This is a common behavior for javascript clients. With that said, I want to change this behavior as well because I have run into it several times.
I believe the client shouldn't be tied to a particular encoding. This has a subtle side effect on the APIs. The publishing and data signature would take payloads as UInt8Arrays. Which means that client will be responsible for decoding/encoding. I believe this would be the correct strategy.
Currently, I have v2 branches for nats.js, nats.ts (async API), and I am working on the Deno client, which is going to create a few changes on the internals of the nats.ws, so I will address this.

Also - the reason why we cannot do this is because an empty JSON message could be null, empty string, number, string or object. JSON has specific encoding for all these, so the library cannot really make an assumption here that will be right for everyone.


Stratification for user datasets

This issue is a duplicate of #8

Waiting for the fast API scripts from @cbutsko .

The API call is implemented here https://github.com/WorldCereal/worldcereal-referencedata/blob/main/harmonization/main.py
waiting for testing/deployment from IASA side


Make families larger

allow families to include scratches with differing compilers

Worth bearing in mind that this will make the 'someone else matched this function!' banner appear when the "match" was actually on a different compiler - unsure if we want that


Upgrade to JavaFX 18 EA, re-enable hyperlinks once fix for "open URL in browser" is released.

See https://github.com/SupernautApp/SupernautFX/issues/25

Fixed by:

c142ef833f1be117e6b15459f32ad3bc2ee34437
23917039a502d375822371d472b81f7ca505bf64


Please add my school

https://www.cavendish.ac.ug/
https://www.cavendish.ac.ug/programmes/bachelors-degrees/bachelor-of-science-in-computer-science/article

@Kyasanku Pull request merged. Thank you!


api: added partial bitstream output API

Oh my God. Please, squash commits. There is no point to be iterative to this degree. For me it obscures the change and I can't review thoroughly.


Action Recongition

Is their any inbuilt action recognition in this module which would allow me to detect by pose-tracking if someone is for example sitting down ?

Hi @IBNU1, Could you please elaborate your use case with complete details. Thanks!

Hi sorry about the lack of detail. My usecase required identifying the action done by a person based on video of that person to collect data for a study. For example it has to be able to measure the time it takes for a person in view of camera to standup. It also has to be able to determin if the person is sitting down or standing up.
Is such functionality included in this framework ?

Hello @IBNU1 We are revisiting older issues.
No such functionality is included in MediaPipe framework. Although you can implement it on your own by using MediaPipe as the base solution to detect the landmarks of the subject, and then

Either create an algorithm to differentiate between different poses of the person based on landmark distance. For example, person sitting will have less distance between hip and toe landmarks compared to a person standing.
train another custom classification model to classify the pose detected as different actions


What is your license?

Hi,
I'm currently packaging nerdtree for Fedora and I'd like to know what license do you use for nerdtree, I wasn't able to find it anywhere. Also, would it be possible to make the downloaded tars to be named like nerdtree-4.2.0.tar.gz, rather than just 4.2.0?
Thank you very much,
Bohuslav.

Oh, sorry, just found it out in the file under doc directory... wtfpl :)


Move behavior from TS resolver to TS compiler wrapper

Description
This PR moves a behavior out of @rnx-kit/typescript-react-native-resolver and into @rnx-kit/typescript-react-native-compiler.
The specific behavior being moved is the prepending of the target platform to the list of platform file extensions. This is something callers are responsible for doing.
In our repo, there are two callers that use the resolver -- the CLI and the rn-tsc compiler wrapper. The CLI was already doing this, but rn-tsc was not. This change updates rn-tsc, effectively "moving" the behavior into it.
Test plan
All tests and CI loops pass.

Closing in favor of a different approach in #2071.


exact versions for all dependencies

Overview
The goal of this PR is increased stability with respect to our many dependencies. We've been bitten several times by bugs in newer versions of dependencies — we automatically picked them up owing to caret ranges.
Exact steps:

After branching from next and running npm i, I committed changes to pkg lock, all of which involved registry urls switching from http to https.

I edited embark's .npmrc file so we'll have npm's save-exact behavior by default.

I took the output of npm ls --depth=0 and used it to revise the "dependencies" and "devDependencies" of embark's pkg json.

I re-ran npm i — no changes to pkg lock (a good sign!!).

I manually changed remaining http:// registry urls to https:// (after verifying they work). There's a known npm bug, and we shouldn't commit pkg lock changes that involve switching https to http, but the reverse would be okay to commit (see Step 1).

Cool Spaceship Picture

Does NPM allow automatic bumping of minor versions?

@andremedeiros yes, that's what the caret ^ ranges do, effectively. However, we've had major headaches even from auto patch-level bumps that introduced buggy / not-working versions of dependencies.


Lambda completion on optional parameters not working

As @pq asked on https://github.com/dart-lang/sdk/issues/40202#issuecomment-583660685 I am opening this issue for provide completion for optional lambda parameters

Thanks!

I believe that the progress over years to suggest named arguments, and separately expression / block closure covers this issue.
class MyFuture {
  MyFuture.delayed(Duration d, {int Function()? operation});
}

void f() {
  MyFuture.delayed(const Duration(), ^);
}


ci: publish will trigger on commit types of docs & refactor

:tada: This PR is included in version 1.0.14 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Default .csproj template: Error CS0012:...You must add a reference to assembly ‘netstandard.

Godot version: 3.2.3-rc4 Mono

OS/device including version: Windows 10

Issue description:

A fresh mono projects fails to build with Error CS0012: The type ‘Object’ is defined in an assembly that is not referenced. You must add a reference to assembly ‘netstandard, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=...
By default <project_name>.csproj now contains:
<Project Sdk="Godot.NET.Sdk/3.2.3">
  <PropertyGroup>
    <TargetFramework>net472</TargetFramework>
  </PropertyGroup>
</Project>

Chaining it to seems to fix the issue for me
<Project Sdk="Godot.NET.Sdk/3.2.3">
  <PropertyGroup>
    <TargetFramework>net472</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="netstandard" />
  </ItemGroup>
</Project>

Steps to reproduce:

Create new mono project
Project -> Tools -> Mono -> Create C# Solution...
FileSystem -> Right click -> New Script -> Language: C# -> Create
Build
This results in new_script.cs(4,27): error CS0012: The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=...

As mentioned before editing .csproj and adding <Reference Include="netstandard" /> seems to fix it for me.
Minimal reproduction project:

Hmm, I just tested on Windows 10 with all build tools (except Mono's MSBuild which is giving me other issues). I couldn't reproduce this errors. Microsoft.NET.Sdks should be adding those references implicitly unless you set DisableImplicitFrameworkReferences=true in the csproj.
What build tool are you using and what's the MSBuild version for it?

Not quite sure about specific build tool. I just clicked build inside godot itself.
Though based on error log, it looks like it is MSBuild 15.0, at least that the directory name. Also looks like it is building against .NET framework 4.72. (see command below).
I'm using packages from Visual Studio Community 2017 (had installed for other reasons, so just added C# sdk/tools):
.Net desktop development package and bunch of .NET framework SDKs and targeting packs.
It is possible that I'm missing something, but as I said just adding a reference seems to fixes it for me.
I'm probably out to update to 2019 at some point...
If it helps, where what I think is the build command from the logs:

Csc: D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Roslyn\csc.exe /noconfig /unsafe- /checked- /nowarn:1701,1702,1705,1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:GODOT;GODOT_WINDOWS;GODOT_PC;TRACE;TOOLS;DEBUG;NET472 /highentropyva+ /reference:D:\development\games\Projects\Godot_test_6.mono\assemblies\Debug\GodotSharp.dll /reference:D:\development\games\Projects\Godot_test_6.mono\assemblies\Debug\GodotSharpEditor.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.7.2\mscorlib.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.7.2\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.7.2\System.Data.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.7.2\System.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.7.2\System.Drawing.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.7.2\System.IO.Compression.FileSystem.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.7.2\System.Numerics.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.7.2\System.Runtime.Serialization.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.7.2\System.Xml.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.7.2\System.Xml.Linq.dll" /debug+ /debug:portable /filealign:512 /nologo /optimize- /out:D:\development\games\Projects\Godot_test_6.mono\temp\obj\Debug\Godot_test_6.dll /ruleset:"D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Team Tools\Static Analysis Tools\Rule Sets\MinimumRecommendedRules.ruleset" /subsystemversion:6.00 /target:library /warnaserror- /utf8output /deterministic+ new_script.cs "C:\Users\-------\AppData\Local\Temp.NETFramework,Version=v4.7.2.AssemblyAttributes.cs" D:\---------\Godot_test_6.mono\temp\obj\Debug\Godot_test_6.AssemblyInfo.cs

Is that Csc command the one you're receiving errors with? It seems to be implicitly referencing the assemblies as expected.
Just in case can you upload an example project? Maybe I did something differently in my test.

This may be an issue with an older toolchain. In any case, the best may be to just make projects include netstandard by default.

I can reproduce the behaviour on my system using the Visual Studio Community 2017 packages. I receive the exact same msbuild log error (except the path of course). I just created a new project and added one default C# script.
I'm unsure what exactly is the source of the issue (if its really depending on the VSC 2017 / 2019)
I could solve it by Include="netstandard" or using "net471" as written by @Keppl

Something I just found out, apparently Editor->Editor Settings...->Mono->Builds->Build Tools was (auto?) sets to "MSBuild(VS Build Tools)" for me.
After I changed it to "dotnet CLI", projects compiles for without any problems or any need for editing csproj file.
I'm not sure why it was to "MSBuild(VS Build Tools)" for me since it doesn't seems to be the default... maybe something that got carried over from settings of an old version of Godot saved somewhere, unless I changed at some point and forgot...?
Main reason I even thought of checking this option was because on another machine, recently reimaged, I couldn't get Godot to even find msbuild with MSBuild(VS Build Tools) option, but it worked immediately  after I set it set  to "dotnet CLI".
In any case, there might still be something weird with MSBuild(VS Build Tools) (at least on my setup), but setting Build Tool to "dotnet CLI" seems to fix this issue for me.

I encounter this issue on pretty much the same capacity, except adding netstandard as a reference does not work on my machine, neither does changing TargetFramework to net471. Instead, for some reason it works consistently ONLY if i set it to net47 and I don't even need to delete the obj and bin directories after making this change.


format date v-model

I can't change the date format of the v-model. I've : Thu Nov 05 2020 00:00:00 GMT+0100 (heure normale d’Europe centrale) instead 2020-11-05

Can you please show how are you using the component?

  v-model="my_var"
/>```
I had a problem width local #4
I will retest

with local, it's ok


suggestion move_fonts_above_scripts ?

In terms of visual render time, would it make sense to have a filter for move_fonts_above_scripts similar to move_css_above_scripts ? For locally hosted fonts, it seems the order goes css, js then fonts when I have move_css_above_scripts enabled.
On webpagetest filmstrip view, you can clearly see speedindex slower as alot of stuff isn't showing on in browser until the locally hosted fonts are processed.
Or have it so you can define specifically which font url/uri is moved above scripts ?

@jmaessen

I suspect the font order is being determined by the browser – the font specifications end up as additional CSS code.
An interesting caveat here is something like the Google font loader, which is a script that injects CSS onto the page in a browser-dependent way.  For Google fonts in particular there's InlineGoogleFontCss:
https://developers.google.com/speed/pagespeed/module/filter-css-inline-google-fonts
It looks like this is currently running after move_css_above_scripts; perhaps simply switching the filter order would help a lot.  I'll try that.

Yeah I have inline_google_font_css enabled but doesn't seem to be working. But I also have locally hosted fonts for other stuff too. The webpagetest filmstrip view looks like this here
Version: 13: on

Filters
ah      Add Head
cc      Combine Css
jc      Combine Javascript
gp      Convert Gif to Png
jp      Convert Jpeg to Progressive
jw      Convert Jpeg To Webp
mc      Convert Meta Tags
pj      Convert Png to Jpeg
ec      Cache Extend Css
ei      Cache Extend Images
es      Cache Extend Scripts
fc      Fallback Rewrite Css
if      Flatten CSS Imports
hw      Flushes html
ci      Inline Css
ii      Inline Images
il      Inline @import to Link
ji      Inline Javascript
js      Jpeg Subsampling
rj      Recompress Jpeg
rp      Recompress Png
rw      Recompress Webp
ri      Resize Images
cf      Rewrite Css
jm      Rewrite External Javascript
jj      Rewrite Inline Javascript
cu      Rewrite Style Attributes With Url
cp      Strip Image Color Profiles
md      Strip Image Meta Data

Options
  AdminPath (nap)                              /pagespeed_admin
  AvoidRenamingIntrospectiveJavascript (aris)  True
  BeaconUrl (bu)                               /ngx_pagespeed_beacon
  ConsolePath (ncp)                            /pagespeed_console
  EnableRewriting (e)                          1
  FileCacheInodeLimit (afcl)                   500000
  FileCachePath (afcp)                         /var/ngx_pagespeed_cache
  GlobalAdminPath (ngap)                       /pagespeed_global_admin
  GlobalStatisticsPath (ngsp)                  /ngx_pagespeed_global_statistics
  MessagesPath (nmp)                           /ngx_pagespeed_message
  RewriteLevel (l)                             Core Filters
  StatisticsPath (nsp)                         /ngx_pagespeed_statistics

Interesting.  I'm seeing the font CSS appear before the DNS prefetch on the
page now – did you change something in your site?  Or is Chrome just
messing with its network prioritization from run to run?
On Thu, Jul 30, 2015 at 4:13 AM, George Liu (eva2000) <
<EMAIL_ADDRESS>wrote:

Yeah I have inline_google_font_css enabled but doesn't seem to be working.
But I also have locally hosted fonts for other stuff too. The webpagetest
filmstrip view looks like this here
http://www.webpagetest.org/video/compare.php?tests=150730_CC_81fddc7b1ea9be9340536c8de4d2322b-r%3A1-c%3A0&thumbSize=100&ival=100&end=visual
Version: 13: on
Filters
ah      Add Head
cc      Combine Css
jc      Combine Javascript
gp      Convert Gif to Png
jp      Convert Jpeg to Progressive
jw      Convert Jpeg To Webp
mc      Convert Meta Tags
pj      Convert Png to Jpeg
ec      Cache Extend Css
ei      Cache Extend Images
es      Cache Extend Scripts
fc      Fallback Rewrite Css
if      Flatten CSS Imports
hw      Flushes html
ci      Inline Css
ii      Inline Images
il      Inline @import to Link
ji      Inline Javascript
js      Jpeg Subsampling
rj      Recompress Jpeg
rp      Recompress Png
rw      Recompress Webp
ri      Resize Images
cf      Rewrite Css
jm      Rewrite External Javascript
jj      Rewrite Inline Javascript
cu      Rewrite Style Attributes With Url
cp      Strip Image Color Profiles
md      Strip Image Meta Data
Options
AdminPath (nap)                              /pagespeed_admin
AvoidRenamingIntrospectiveJavascript (aris)  True
BeaconUrl (bu)                               /ngx_pagespeed_beacon
ConsolePath (ncp)                            /pagespeed_console
EnableRewriting (e)                          1
FileCacheInodeLimit (afcl)                   500000
FileCachePath (afcp)                         /var/ngx_pagespeed_cache
GlobalAdminPath (ngap)                       /pagespeed_global_admin
GlobalStatisticsPath (ngsp)                  /ngx_pagespeed_global_statistics
MessagesPath (nmp)                           /ngx_pagespeed_message
RewriteLevel (l)                             Core Filters
StatisticsPath (nsp)                         /ngx_pagespeed_statistics
—
Reply to this email directly or view it on GitHub
https://github.com/pagespeed/ngx_pagespeed/issues/996#issuecomment-126219458
.

only change is i set
pagespeed FetchHttps enable;
but i do still see google css requests in webpagetest runs

Looks to be working now for google inline css but the config output still doesn't show google inline css as enabled ?
Version: 14: on

Filters
ah  Add Head
cc  Combine Css
jc  Combine Javascript
gp  Convert Gif to Png
jp  Convert Jpeg to Progressive
jw  Convert Jpeg To Webp
mc  Convert Meta Tags
pj  Convert Png to Jpeg
ec  Cache Extend Css
ei  Cache Extend Images
es  Cache Extend Scripts
fc  Fallback Rewrite Css
if  Flatten CSS Imports
hw  Flushes html
ci  Inline Css
ii  Inline Images
il  Inline @import to Link
ji  Inline Javascript
js  Jpeg Subsampling
rj  Recompress Jpeg
rp  Recompress Png
rw  Recompress Webp
ri  Resize Images
cf  Rewrite Css
jm  Rewrite External Javascript
jj  Rewrite Inline Javascript
cu  Rewrite Style Attributes With Url
cp  Strip Image Color Profiles
md  Strip Image Meta Data

Options
  AdminPath (nap)                              /pagespeed_admin
  AvoidRenamingIntrospectiveJavascript (aris)  True
  BeaconUrl (bu)                               /ngx_pagespeed_beacon
  ConsolePath (ncp)                            /pagespeed_console
  EnableRewriting (e)                          1
  FetcherTimeOutMs (bfto)                      8000
  FileCacheInodeLimit (afcl)                   500000
  FileCachePath (afcp)                         /var/ngx_pagespeed_cache
  GlobalAdminPath (ngap)                       /pagespeed_global_admin
  GlobalStatisticsPath (ngsp)                  /ngx_pagespeed_global_statistics
  MessagesPath (nmp)                           /ngx_pagespeed_message
  RewriteLevel (l)                             Core Filters
  StatisticsPath (nsp)                         /ngx_pagespeed_statistics

Domain Lawyer

Invalidation Timestamp: (none)

i see what's happening i have pagespeed enabled on a per vhost basis but was looking at main hostname's pagespeed_admin page and not the site's/pagespeed_admin :)
Version: 14: on

Filters
ah  Add Head
cw  Collapse Whitespace
cc  Combine Css
jc  Combine Javascript
gp  Convert Gif to Png
jp  Convert Jpeg to Progressive
jw  Convert Jpeg To Webp
mc  Convert Meta Tags
pj  Convert Png to Jpeg
ws  When converting images to WebP, prefer lossless conversions
di  Delay Images
ec  Cache Extend Css
ei  Cache Extend Images
es  Cache Extend Scripts
fc  Fallback Rewrite Css
if  Flatten CSS Imports
hw  Flushes html
ci  Inline Css
gf  Inline Google Font CSS
ii  Inline Images
il  Inline @import to Link
ji  Inline Javascript
js  Jpeg Subsampling
ll  Lazyload Images
cj  Move Css Above Scripts
cm  Move Css To Head
pr  Prioritize Critical Css
rj  Recompress Jpeg
rp  Recompress Png
rw  Recompress Webp
ri  Resize Images
cf  Rewrite Css
jm  Rewrite External Javascript
jj  Rewrite Inline Javascript
cu  Rewrite Style Attributes With Url
is  Sprite Images
cp  Strip Image Color Profiles
md  Strip Image Meta Data

Options
  AdminPath (nap)                                 /pagespeed_admin
  AvoidRenamingIntrospectiveJavascript (aris)     True
  BeaconUrl (bu)                                  /ngx_pagespeed_beacon
  ConsolePath (ncp)                               /pagespeed_console
  CssImageInlineMaxBytes (cii)                    0
  CssInlineMaxBytes (ci)                          8192
  EnableRewriting (e)                             1
  FetcherTimeOutMs (bfto)                         8000
  FetchHttps (fhs)                                enable
  FileCacheInodeLimit (afcl)                      500000
  FileCachePath (afcp)                            /var/ngx_pagespeed_cache
  GlobalAdminPath (ngap)                          /pagespeed_global_admin
  GlobalStatisticsPath (ngsp)                     /ngx_pagespeed_global_statistics
  ImageInlineMaxBytes (ii)                        4096
  ImageResolutionLimitBytes (irlb)                16777216
  InPlaceResourceOptimization (ipro)              False
  JpegRecompressionQualityForSmallScreens (iqss)  60
  LogDir (ald)                                    /var/log/pagespeed
  MaxCombinedCssBytes (xcc)                       -1
  MaxCombinedJsBytes (xcj)                        135000
  MaxInlinedPreviewImagesIndex (mdii)             -1
  MemcachedServers (ams)                          localhost:11211
  MemcachedThreads (amt)                          1
  MemcachedTimeoutUs (amo)                        100000
  MessagesPath (nmp)                              /ngx_pagespeed_message
  MinImageSizeLowResolutionBytes (nislr)          3072
  PreserveUrlRelativity (pur)                     True
  RewriteDeadlinePerFlushMs (rdm)                 50
  RewriteLevel (l)                                Core Filters
  Statistics (ase)                                True
  StatisticsLogging (asle)                        True
  StatisticsPath (nsp)                            /ngx_pagespeed_statistics
  WebpRecompressionQualityForSmallScreens (iwss)  60
  XHeaderValue (xhv)                              centminmod.com PageSpeed

FYI, i saved the google fonts locally to be served and seems the fonts are pushed up higher in the order and speeds up speedindex by 0.2-0.3s

On Thu, Jul 30, 2015 at 11:19 PM, George Liu (eva2000) <
<EMAIL_ADDRESS>wrote:

FYI, i saved the google fonts locally to be served and seems the fonts are
pushed up higher in the order and speeds up speedindex by 0.2-0.3s
http://www.webpagetest.org/video/compare.php?tests=150731_MQ_1a3e8d0f6bb7d8e9d773d624dd3d7275-r%3A1-c%3A0&thumbSize=100&ival=100&end=visual

Careful, though – part of the point of Google Fonts (if you stick with the
popular ones) is to have a repeat-view experience for a first-time visitor
to your site.
-Jan

—
Reply to this email directly or view it on GitHub
https://github.com/pagespeed/ngx_pagespeed/issues/996#issuecomment-126555100
.

yeah @jmaessen will have to keep an eye of my google analytics page speed stats for first time and repeat visitors :)


fix(connector): [Cashtocode] update amount from i64 to f64 in webhook payload

Type of Change

[x] Bugfix
[ ] New feature
[ ] Enhancement
[ ] Refactoring
[ ] Dependency updates
[ ] Documentation
[ ] CI/CD

Description

fix 4xx webhook issue for cashtocode. change amount type from i64 to f64
pr merged in main - #3382
Additional Changes

[ ] This PR modifies the API contract
[ ] This PR modifies the database schema
[ ] This PR modifies application configuration/environment variables

Motivation and Context

How did you test it?

test cases -

make a evoucher payment and test webhooks.

issue in prod reproduced in local -

Processing successful webhook

Checklist

[x] I formatted the code cargo +nightly fmt --all
[x] I addressed lints thrown by cargo clippy
[x] I reviewed the submitted code
[ ] I added unit tests for my changes where possible
[ ] I added a CHANGELOG entry if applicable

Closing this pr as this hotfix is not required anymore.


feat: adopt useSuspenseQuery

Follow-up Pull Request to https://github.com/ts-rest/ts-rest/pull/609. I removed the upgrade of the peerDependencies - so if you want to use it in your project you can add a resolution or pnpm.overrides of "@tanstack/react-query": "^5.0.0",

Full v5 support released in #633


Add GitTouch to mobile tools list

Source code here: https://github.com/git-touch/git-touch

Codecov Report

Merging #13046 into master will increase coverage by 0.10%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master   #13046      +/-   ##
==========================================
+ Coverage   42.52%   42.62%   +0.10%
==========================================
  Files         672      672
  Lines       73785    73785
==========================================
+ Hits        31374    31451      +77
+ Misses      37340    37244      -96
- Partials     5071     5090      +19

Impacted Files
Coverage Δ

services/pull/temp_repo.go
26.59% <0.00%> (-3.20%)
:arrow_down:

services/pull/check.go
50.00% <0.00%> (-3.08%)
:arrow_down:

models/unit.go
46.57% <0.00%> (-2.74%)
:arrow_down:

services/pull/patch.go
66.37% <0.00%> (-2.59%)
:arrow_down:

modules/process/manager.go
72.50% <0.00%> (-2.50%)
:arrow_down:

routers/repo/view.go
37.47% <0.00%> (-0.65%)
:arrow_down:

services/pull/pull.go
41.27% <0.00%> (+0.49%)
:arrow_up:

models/error.go
35.36% <0.00%> (+0.50%)
:arrow_up:

services/mailer/mail.go
55.91% <0.00%> (+1.07%)
:arrow_up:

modules/queue/workerpool.go
60.00% <0.00%> (+1.22%)
:arrow_up:

... and 9 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update df4bbcd...2f7a441. Read the comment docs.

Thanks for PR, have you also considered adding it to: https://gitea.com/gitea/awesome-gitea/

@techknowlogick It has been added. https://gitea.com/gitea/awesome-gitea/#mobile

@pd4d10 Please rebase

@techknowlogick Yeah, it has already been added by someone.
@lunny Done

pleace resolve conflict (GitNex link was updated)

As mentioned in the top of the file being changed, this page has been deprecated (my own understanding) in favor of awesome Gitea. Should we be adding new things to it?
It creates another place to update when there's a change. (For example the recent Gitnex PR to this same page 😉 )

🚀


mixer ui labels v2

Another attempt at adding some labels to the mixer UI. The font used was "titillium web".
Here's how it looks.

(In the screenshot i also made other small changes to the components. I deleted the colored box around each plug, and instead used a colored nut)

@grinsted,
Sorry It's taken me so long to get back to you.
I'm redoing the UI entirely with a new look and have added labels to the mixer again.
Most of the UI change is done so if you want to try it out you can pull the latest code and build it, I hope to get a new release up in another day or so if you don't want to build the dev version of rack to have a look at it and can wait till then.

sounds great. i will be looking forwards to it.

@grinsted
I've pushed the new UI and made a community rebuild request hopefully it will be up on the plugins list in a day or so.


Why Metrics/Schema History no data? And how to import?

WhereHows version v1.0.0

I have already import hive metadata and azkaban metadata
but Metrics/Schema History no data?
How to import?
Thanks!

insert into dict_dataset_schema_history(dataset_id,urn,modified_date,schema) select id as dataset_id, urn,  FROM_UNIXTIME(modified_time) as modified_date, schema from dict_dataset where id > 0
And UI Schema History works
#1457
加群讨论

I have got a solution for this. After every Etl job we want the schema history to be updated based on the data in dict_dataset.
I have added an extra function in the corresponding Load.py file for which you want the schema history.
Just use this funtion in your load.py file
def update_schema_history(self):
    update_schema_history_cmd = '''
    insert into
      dict_dataset_schema_history(dataset_id, urn, modified_date, `schema`)
    select
      id as dataset_id,
      urn,
      FROM_UNIXTIME(modified_time) as modified_date,
      `schema`
    from
      dict_dataset as s
    where
      s.id > 0
      and date(FROM_UNIXTIME(s.modified_time)) not in (
        select
          modified_date
        from
          dict_dataset_schema_history
        where
          urn = s.urn
      );

    update
      dict_dataset_schema_history
      inner join dict_dataset on (
        dict_dataset_schema_history.dataset_id = dict_dataset.id
        and dict_dataset_schema_history.modified_date = date(FROM_UNIXTIME(dict_dataset.modified_time))
      )
    set
      dict_dataset_schema_history.schema = dict_dataset.schema;
    '''
    self.logger.info(update_schema_history_cmd)
    self.executeCommands(update_schema_history_cmd)
    self.logger.info("finish updating schema history")

Dear issue owner,
Thanks for your interest in WhereHows. We have recently announced DataHub which is the rebranding of WhereHows. LinkedIn improved the architecture of WhereHows and rebranded WhereHows into DataHub and replaced its metadata infrastructure in this direction. DataHub is a more advanced and improved metadata management product compared to WhereHows.
Unfortunately, we have to stop supporting WhereHows to better focus on DataHub and offer more help to DataHub users. Therefore, we will drop all issues related to WhereHows and will not accept any contribution for it. Active development for DataHub has already started on datahub branch and will continue to live in there until it's finally merged to master and project is renamed to DataHub.
Please check the datahub branch to get familar with DataHub.
Best,
DataHub team


adds YUIDoc comments to addon/serializer

Continuing on with #658 !
I left the examples that were in the previous comments, let me know if you would prefer they be removed (or if I should add the examples from the documentation to these comments).
Also, feel free to let me know if you would prefer I add these to a bunch of files at once instead of one at a time!

Looks like ember-try is failing on beta. Not sure why, since I didn't change any actual code, but possibly because (as per ember try:testall): Versions do not match: Expected: components/ember#beta but saw 2.6.0-beta.1 This might be ok, depending on the scenario
Couldn't tell where this was configured, but maybe that's the issue? Not sure why the build would suddenly be failing on beta with no actual code changes.


Bug report: VeraCrypt installation issue on macOS Sierra

Remember to follow the pre bug report guide beforehand. Failure to do so might get your issue closed.
Description of issue
I'm having some trouble trying to install Veracrypt (on macOS Sierra) - I think it might be a permissions problem with /usr/local which is apparently read only in Sierra.
Output below.
$ brew cask install veracrypt
==> Caveats
veracrypt requires osxfuse with "MacFUSE Compatibility Layer" enabled.
If you did not enable that option, veracrypt will fail to install.

To enable the option, you need to install osxfuse manually (double-click the installer).
The installer should be located under /usr/local/Caskroom/osxfuse

==> Satisfying dependencies
==> Installing Cask dependencies: osxfuse
osxfuse ...
already installed
complete
==> Downloading https://download-codeplex.sec.s-msft.com/Download/Release?Projec
Already downloaded: /Users/drawcard/Library/Caches/Homebrew/Cask/veracrypt--1.18a
==> Verifying checksum for Cask veracrypt
==> Running installer for veracrypt; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are i
Password:
==> installer: Error -
Error:   Command failed to execute!

  ==> Failed command:
  ["/usr/bin/sudo", "-E", "--", "/usr/sbin/installer", "-pkg", "#<Pathname:/usr/local/Caskroom/veracrypt/1.18a/VeraCrypt_Installer.pkg>", "-target", "/"]

  ==> Standard Output of failed command:

  ==> Standard Error of failed command:
  installer: Error -

  ==> Exit status of failed command:
  #<Process::Status: pid 59917 exit 1>

Output of `brew cask  --verbose`
[drawcard:~] 3s % brew cask install veracrypt --verbose
==> Caveats
veracrypt requires osxfuse with "MacFUSE Compatibility Layer" enabled.
If you did not enable that option, veracrypt will fail to install.

To enable the option, you need to install osxfuse manually (double-click the installer).
The installer should be located under /usr/local/Caskroom/osxfuse

==> Satisfying dependencies
==> Installing Cask dependencies: osxfuse
osxfuse ...
already installed
complete
==> Downloading https://download-codeplex.sec.s-msft.com/Download/Release?ProjectName=veracrypt&DownloadId=1601965&FileTime=131159523657700000&Build=21031
Already downloaded: /Users/drawcard/Library/Caches/Homebrew/Cask/veracrypt--1.18a
==> Verifying checksum for Cask veracrypt
==> Running installer for veracrypt; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are ignored.
==> installer: Error -
Error:   Command failed to execute!

  ==> Failed command:
  ["/usr/bin/sudo", "-E", "--", "/usr/sbin/installer", "-pkg", "#<Pathname:/usr/local/Caskroom/veracrypt/1.18a/VeraCrypt_Installer.pkg>", "-target", "/", "-verboseR"]

  ==> Standard Output of failed command:

  ==> Standard Error of failed command:
  installer: Error -

  ==> Exit status of failed command:
  #<Process::Status: pid 96448 exit 1>
Error: Kernel.exit
[drawcard:~] 3s 1 %

Output of `brew doctor`
[drawcard:~] % brew doctor
Your system is ready to brew.

To enable the option, you need to install osxfuse manually (double-click the installer).
The installer should be located under /usr/local/Caskroom/osxfuse


fix(ui): remove drop shadows from select cards

Fixes #1830
Changelog

remove drop shadow surrounding avatar on organization card
remove drop shadow from goal card

Note: the drop shadows will remain on the profile pages, e.g.

Preview
Organization cards

Goal cards

Alternative designs
Organization cards (blue border)

Organization cards (black border)

Goal cards (border)

Re: alternative designs - I personally think the borderless design looks the best (even for logos with a white background), but I am providing the other mockups for discussion.

FYI I think that borders around logos should be colorless.

@tschaffter grey border:


Implement strategy for Azure Active Directory (Azure AD)

It would be useful to have support for Azure AD out-of-the-box. Something along the lines of that provided by ueberauth_microsoft, but for Pow instead.
I might implement this myself and submit a pull request, once my skills are sufficient. Opening a feature request here to flag the need and in case somebody else decides to pick it up in the meantime.

I would appreciate that! I'm not familiar with Azure AD, but looks like it can be done using the OAuth 2.0 protocol: https://github.com/KonaTeam/omniauth-azure-oauth2
If you just need to use OAuth 2.0, then it'll take very little time to implement as PowAssent already have that strategy built-in. Take a look at the Google OAuth2 integration:
https://github.com/danschultzer/pow_assent/blob/master/lib/pow_assent/strategies/google.ex
https://github.com/danschultzer/pow_assent/blob/master/test/pow_assent/strategies/google_test.exs
You'll mostly just need to update URL's, and add the right user profile API response for testing that the information can be normalized to something useful for PowAssent.
From this guide, I see that a JWT can be used instead of a client secret for added security. That would require a bit more code in the callback phase similar to how the facebook integration modifies the callback flow to add in app proof: https://github.com/danschultzer/pow_assent/blob/master/lib/pow_assent/strategies/facebook.ex#L19-L34
I would be happy to help out making the integration work If you create a PR. I can work on the parts that requires some more code like the certificate and response handling (from what I can read it seems that also the API response will be encoded as a JWT).

Thanks a bunch for the pointers and offering to help! I think you're right about being able to use OAuth 2.0. I'll look into that first. Unfortunately, the concepts of authentication and authorisation (except simple username/password setups) are quite foreign to me still, so it will take some time.

I've only tested used the provided information in the Azure AD OAuth 2.0 tutorial, but this hopefully works: https://github.com/danschultzer/pow_assent/pull/3
You can read about tenant id configuration here: https://github.com/danschultzer/pow_assent/blob/bbb500d7134b50a369226c663953932703767a4d/lib/pow_assent/strategies/azure_oauth2.ex#L2-L30
I don't have an azure account myself, so I'll need to set up one later to test it when I got some free time.

Awesome, thanks! I'm still struggling with more basics of Elixir and Phoenix at the moment, but I'll definitely give this a whirl at the office.

Gave this a whirl today and encountered this error after setting up:
[error] #PID<0.429.0> running AzureAuthWeb.Endpoint (cowboy_protocol) terminated
Server: localhost:4000 (http)
Request: GET /registration/new
** (exit) an exception was raised:
    ** (ArgumentError) unknown field `email`. Only fields, embeds and associations (except :through ones) are supported in changesets
        (ecto) lib/ecto/changeset.ex:489: Ecto.Changeset.type!/2
        (ecto) lib/ecto/changeset.ex:464: Ecto.Changeset.process_param/7
        (elixir) lib/enum.ex:1925: Enum."-reduce/3-lists^foldl/2-0-"/3
        (ecto) lib/ecto/changeset.ex:449: Ecto.Changeset.cast/6
        (pow) lib/pow/ecto/schema/changeset.ex:43: Pow.Ecto.Schema.Changeset.user_id_field_changeset/3
        (azure_auth) lib/azure_auth/users/user.ex:3: AzureAuth.Users.User.pow_changeset/2
        (pow) lib/pow/phoenix/controllers/registration_controller.ex:15: Pow.Phoenix.RegistrationController.process_new/2
        (pow) lib/pow/phoenix/controllers/controller.ex:87: Pow.Phoenix.Controller.action/3
        (pow) lib/pow/phoenix/controllers/registration_controller.ex:1: Pow.Phoenix.RegistrationController.action/2
        (pow) lib/pow/phoenix/controllers/registration_controller.ex:1: Pow.Phoenix.RegistrationController.phoenix_controller_pipeline/2
        (azure_auth) lib/azure_auth_web/endpoint.ex:1: AzureAuthWeb.Endpoint.instrument/4
        (phoenix) lib/phoenix/router.ex:278: Phoenix.Router.__call__/1
        (azure_auth) lib/azure_auth_web/endpoint.ex:1: AzureAuthWeb.Endpoint.plug_builder_call/2
        (azure_auth) lib/plug/debugger.ex:122: AzureAuthWeb.Endpoint."call (overridable 3)"/2
        (azure_auth) lib/azure_auth_web/endpoint.ex:1: AzureAuthWeb.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:16: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) /Users/leif/Code/azure_auth/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4

Currently trying to figure out why that error occurs.

Can you post the content of your user.ex module? It must be missing the email field.

Oh, and the migration file for your user table.

My user.ex looks like this:
defmodule AzureAuth.Users.User do
  use Ecto.Schema
  use Pow.Ecto.Schema
  use PowAssent.Ecto.Schema

  schema "users" do
    has_many :user_identities,
      AzureAuth.UserIdentities.UserIdentity,
      on_delete: :delete_all
  end
end

And the migration file for the user table looks like this (as it was generated by Pow):
defmodule AzureAuth.Repo.Migrations.CreateUsers do
  use Ecto.Migration

  def change do
    create table(:users) do
      add :email, :string, null: false
      add :password_hash, :string

      timestamps()
    end

    create unique_index(:users, [:email])
  end
end

Update your user schema to this:
defmodule AzureAuth.Users.User do
  use Ecto.Schema
  use Pow.Ecto.Schema
  use PowAssent.Ecto.Schema

  schema "users" do
    has_many :user_identities,
      AzureAuth.UserIdentities.UserIdentity,
      on_delete: :delete_all

    pow_user_fields()

    timestamps()
  end
end

Hmmm. Encountering a different error when visiting http://localhost:4000/auth/azure/new/:
[error] #PID<0.525.0> running AzureAuthWeb.Endpoint (cowboy_protocol) terminated
Server: localhost:4000 (http)
Request: GET /auth/azure/new/
** (exit) an exception was raised:
    ** (UndefinedFunctionError) function PowAssent.Strategy.AzureOAuth2.authorize_url/2 is undefined (module PowAssent.Strategy.AzureOAuth2 is not available)
        PowAssent.Strategy.AzureOAuth2.authorize_url([redirect_uri: "http://localhost:4000/auth/azure/callback", client_id: "my_client_id", client_secret: "my_client_secret", strategy: PowAssent.Strategy.AzureOAuth2], %Plug.Conn{adapter: {Plug.Adapters.Cowboy.Conn, :...}, assigns: %{callback_url: "http://localhost:4000/auth/azure/callback", current_user: nil}, before_send: [#Function<0.116269836/1 in Plug.CSRFProtection.call/2>, #Function<4.101542213/1 in Phoenix.Controller.fetch_flash/2>, #Function<0.58261320/1 in Plug.Session.before_send/2>, #Function<1.25166163/1 in Plug.Logger.call/2>, #Function<0.61641163/1 in Phoenix.LiveReloader.before_send_inject_reloader/2>], body_params: %{}, cookies: %{"_azure_auth_key" => "my_azure_auth_key"}, halted: false, host: "localhost", method: "GET", owner: #PID<0.525.0>, params: %{"provider" => "azure"}, path_info: ["auth", "azure", "new"], path_params: %{"provider" => "azure"}, peer: {{127, 0, 0, 1}, 57299}, port: 4000, private: %{AzureAuthWeb.Router => {[], %{}}, :phoenix_action => :new, :phoenix_controller => PowAssent.Phoenix.AuthorizationController, :phoenix_endpoint => AzureAuthWeb.Endpoint, :phoenix_flash => %{}, :phoenix_format => "html", :phoenix_layout => {AzureAuthWeb.LayoutView, :app}, :phoenix_pipelines => [:browser], :phoenix_router => AzureAuthWeb.Router, :phoenix_view => PowAssent.Phoenix.AuthorizationView, :plug_session => %{"_csrf_token" => "my_token"}, :plug_session_fetch => :done, :pow_config => [mod: Pow.Plug.Session, otp_app: :azure_auth]}, query_params: %{}, query_string: "", remote_ip: {127, 0, 0, 1}, req_cookies: %{"_azure_auth_key" => "my_azure_auth_key"}, req_headers: [{"host", "localhost:4000"}, {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"}, {"upgrade-insecure-requests", "1"}, {"cookie", "_azure_auth_key=my_azure_auth_key"}, {"user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.2 Safari/605.1.15"}, {"accept-language", "en-us"}, {"accept-encoding", "gzip, deflate"}, {"connection", "keep-alive"}], request_path: "/auth/azure/new/", resp_body: nil, resp_cookies: %{}, resp_headers: [{"cache-control", "max-age=0, private, must-revalidate"}, {"x-frame-options", "SAMEORIGIN"}, {"x-xss-protection", "1; mode=block"}, {"x-content-type-options", "nosniff"}, {"x-download-options", "noopen"}, {"x-permitted-cross-domain-policies", "none"}], scheme: :http, script_name: [], secret_key_base: "my_secret_key_base", state: :unset, status: nil})
        (pow_assent) lib/pow_assent/plug.ex:20: PowAssent.Plug.authenticate/3
        (pow) lib/pow/phoenix/controllers/controller.ex:87: Pow.Phoenix.Controller.action/3
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.action/2
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.phoenix_controller_pipeline/2
        (azure_auth) lib/azure_auth_web/endpoint.ex:1: AzureAuthWeb.Endpoint.instrument/4
        (phoenix) lib/phoenix/router.ex:278: Phoenix.Router.__call__/1
        (azure_auth) lib/azure_auth_web/endpoint.ex:1: AzureAuthWeb.Endpoint.plug_builder_call/2
        (azure_auth) lib/plug/debugger.ex:122: AzureAuthWeb.Endpoint."call (overridable 3)"/2
        (azure_auth) lib/azure_auth_web/endpoint.ex:1: AzureAuthWeb.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:16: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) /Users/leif/Code/azure_auth/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4

You'll have to use the azure oauth2 github branch in your mix dependencies:
{:pow_assent, git: "https://github.com/danschultzer/pow_assent.git", branch: "azure-oauth2-strategy"}

I'll merge it in once I can confirm it works.

Aha! I see. Switched branch and got one step further, now this error is thrown:
[info] GET /auth/azure/new/
[debug] Processing with PowAssent.Phoenix.AuthorizationController.new/2
  Parameters: %{"provider" => "azure"}
  Pipelines: [:browser]
[info] Sent 500 in 74ms
[error] #PID<0.3887.0> running AzureAuthWeb.Endpoint (cowboy_protocol) terminated
Server: localhost:4000 (http)
Request: GET /auth/azure/new/
** (exit) an exception was raised:
    ** (FunctionClauseError) no function clause matching in Keyword.get/3
        (elixir) lib/keyword.ex:188: Keyword.get(%OAuth2.Client{authorize_url: "/common/oauth2/authorize", client_id: "my_client_id", client_secret: "my_client_secret", headers: [], params: %{}, redirect_uri: "http://localhost:4000/auth/azure/callback", ref: nil, request_opts: [], site: "https://login.microsoftonline.com", strategy: PowAssent.Strategy.AzureOAuth2, token: nil, token_method: :post, token_url: "/common/oauth2/token"}, :tenant_id, "common")
        (pow_assent) lib/pow_assent/strategies/azure_oauth2.ex:46: PowAssent.Strategy.AzureOAuth2.default_config/1
        (pow_assent) lib/pow_assent/strategies/azure_oauth2.ex:42: PowAssent.Strategy.AzureOAuth2.set_config/1
        (pow_assent) lib/pow_assent/strategies/azure_oauth2.ex:42: PowAssent.Strategy.AzureOAuth2.authorize_url/2
        (oauth2) lib/oauth2/client.ex:188: OAuth2.Client.authorize_url/2
        (oauth2) lib/oauth2/client.ex:201: OAuth2.Client.authorize_url!/2
        (pow_assent) lib/pow_assent/strategies/oauth2.ex:36: PowAssent.Strategy.OAuth2.authorize_url/2
        (pow_assent) lib/pow_assent/plug.ex:20: PowAssent.Plug.authenticate/3
        (pow) lib/pow/phoenix/controllers/controller.ex:87: Pow.Phoenix.Controller.action/3
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.action/2
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.phoenix_controller_pipeline/2
        (azure_auth) lib/azure_auth_web/endpoint.ex:1: AzureAuthWeb.Endpoint.instrument/4
        (phoenix) lib/phoenix/router.ex:278: Phoenix.Router.__call__/1
        (azure_auth) lib/azure_auth_web/endpoint.ex:1: AzureAuthWeb.Endpoint.plug_builder_call/2
        (azure_auth) lib/plug/debugger.ex:122: AzureAuthWeb.Endpoint."call (overridable 3)"/2
        (azure_auth) lib/azure_auth_web/endpoint.ex:1: AzureAuthWeb.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:16: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) /Users/leif/Code/azure_auth/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4

Sorry, I introduced an error in the last commits. Try run mix deps.update pow_assent to update PowAssent, and see if it doesn't work now!

Nice! One step further. I feel like we're getting close!
Now I get redirected to Microsoft's page, and it shows this error:
Request Id: my_request_id
Correlation Id: my_correlation_id
Timestamp: 2018-09-10T09:56:24Z
Message: AADSTS50011: The reply url specified in the request does not match the reply urls configured for the application: 'my_application_id'.

I suspect this is because the callback URL is not correctly set in Azure on my end.
I have asked our resident Azure AD expert to set this callback URL for testing:
http://localhost:4000/auth/azure/callback
Will continue testing once that is done 👍

I think we've managed to fix the callback URL, and now it seems like I'm getting some kind of response. But now it's complaining about Cross-Site Request Forgery (CSRF):
[info] GET /auth/azure/new/
[debug] Processing with PowAssent.Phoenix.AuthorizationController.new/2
  Parameters: %{"provider" => "azure"}
  Pipelines: [:browser]
[info] Sent 302 in 63ms
[info] GET /auth/azure/callback
[debug] Processing with PowAssent.Phoenix.AuthorizationController.callback/2
  Parameters: %{"code" => "LONG_CODE", "provider" => "azure", "session_state" => "SESSION_STATE", "state" => "STATE"}
  Pipelines: [:browser]
[info] Sent 500 in 828ms
[error] #PID<0.428.0> running MyAppWeb.Endpoint (cowboy_protocol) terminated
Server: localhost:4000 (http)
Request: GET /auth/azure/callback?code=LONG_CODE&state=STATE&session_state=SESSION_STATE
** (exit) an exception was raised:
    ** (PowAssent.RequestError) invalid_resource
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:113: PowAssent.Phoenix.AuthorizationController.handle_strategy_error/1
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.action/2
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.phoenix_controller_pipeline/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.instrument/4
        (phoenix) lib/phoenix/router.ex:278: Phoenix.Router.__call__/1
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.plug_builder_call/2
        (my_app) lib/plug/debugger.ex:122: MyAppWeb.Endpoint."call (overridable 3)"/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:16: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) c:/Code/my_app/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4
[info] GET /auth/azure/callback
[debug] Processing with PowAssent.Phoenix.AuthorizationController.callback/2
  Parameters: %{"code" => "OTHER_LONG_CODE", "provider" => "azure", "session_state" => "SESSION_STATE", "state" => "STATE"}
  Pipelines: [:browser]
[info] Sent 500 in 62ms
[error] #PID<0.429.0> running MyAppWeb.Endpoint (cowboy_protocol) terminated
Server: localhost:4000 (http)
Request: GET /auth/azure/callback?code=OTHER_LONG_CODE&state=STATE&session_state=SESSION_STATE
** (exit) an exception was raised:
    ** (PowAssent.CallbackCSRFError) CSRF detected
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:113: PowAssent.Phoenix.AuthorizationController.handle_strategy_error/1
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.action/2
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.phoenix_controller_pipeline/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.instrument/4
        (phoenix) lib/phoenix/router.ex:278: Phoenix.Router.__call__/1
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.plug_builder_call/2
        (my_app) lib/plug/debugger.ex:122: MyAppWeb.Endpoint."call (overridable 3)"/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:16: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) c:/Code/my_app/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4

The CSFR happens because state=STATE differs from what is saved in your session. You should first just restart the app, and try again. It may just have been that were testing with an old state.

With this error you can be pretty sure that things are working on the Azure side of things. It's PowAssent that can't validate the request with the state. Do you have a standard Phoenix setup? The state is saved in the session. The state is set in the query when the user is redirected to the Azure login page, and that state is returned in the redirect uri query after sign in.

Hmm, I've tested locally with Azure, and works as expected. Not sure why it doesn't validate the state for you.
Is the state param same in the URI when you are redirect to azure, as when azure redirects you to the app? If it is, then the issue is with the session (either the value is being overridden, or the session is not persisted between requests for some reason).

I went back and checked the error message from yesterday. I ca see that the session_state and session parameters were identical in the request and response, but the code parameter differed.
I did some more testing this morning, and it seems like the CSFR only occurs on subsequent attempts, after waiting for a couple of minutes. Below is a more detailed log with several attempts in two browsers tabs (without restarting the app) where the parameters are persisted (bu abbreviated):
C:\Code\my_app>mix phx.server
[warn] Phoenix is unable to create symlinks. Phoenix' code reloader will run considerably faster if symlinks are allowed. On Windows, the lack of symlinks may even cause empty assets to be served. Luckily, you can address this issue by starting your Windows terminal at least once with "Run as Administrator" and then running your Phoenix application.
[info] Running MyAppWeb.Endpoint with Cowboy using http://<IP_ADDRESS>:4000
09:37:08 - info: compiled 6 files into 2 files, copied 3 in 1.2 sec

--------------------------------
First attempt in browser tab #1:
--------------------------------

[info] GET /auth/azure/new/
[debug] Processing with PowAssent.Phoenix.AuthorizationController.new/2
  Parameters: %{"provider" => "azure"}
  Pipelines: [:browser]
[info] Sent 302 in 31ms
[info] GET /auth/azure/callback
[debug] Processing with PowAssent.Phoenix.AuthorizationController.callback/2
  Parameters: %{"code" => "AQABAA...ja0gAA", "provider" => "azure", "session_state" => "dac33c...2a785f", "state" => "b5a2b2...fe13cb"}
  Pipelines: [:browser]
[info] Sent 500 in 516ms
[error] #PID<0.429.0> running MyAppWeb.Endpoint (cowboy_protocol) terminated
Server: localhost:4000 (http)
Request: GET /auth/azure/callback?code=AQABAA...ja0gAA&state=b5a2b2...fe13cb&session_state=dac33c...2a785f
** (exit) an exception was raised:
    ** (PowAssent.RequestError) invalid_resource
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:113: PowAssent.Phoenix.AuthorizationController.handle_strategy_error/1
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.action/2
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.phoenix_controller_pipeline/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.instrument/4
        (phoenix) lib/phoenix/router.ex:278: Phoenix.Router.__call__/1
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.plug_builder_call/2
        (my_app) lib/plug/debugger.ex:122: MyAppWeb.Endpoint."call (overridable 3)"/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:16: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) c:/Code/my_app/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4

-----------------------------------------------------------
Closed browser tab #1. First attempt in new browser tab #2:
-----------------------------------------------------------

[info] GET /auth/azure/new/
[debug] Processing with PowAssent.Phoenix.AuthorizationController.new/2
  Parameters: %{"provider" => "azure"}
  Pipelines: [:browser]
[info] Sent 302 in 0┬╡s
[info] GET /auth/azure/callback
[debug] Processing with PowAssent.Phoenix.AuthorizationController.callback/2
  Parameters: %{"code" => "AQABAA...NXQgAA", "provider" => "azure", "session_state" => "dac33c...2a785f", "state" => "52202c...dad628"}
  Pipelines: [:browser]
[info] Sent 500 in 266ms
[error] #PID<0.439.0> running MyAppWeb.Endpoint (cowboy_protocol) terminated
Server: localhost:4000 (http)
Request: GET /auth/azure/callback?code=AQABAA...NXQgAA&state=52202c...dad628&session_state=dac33c...2a785f
** (exit) an exception was raised:
    ** (PowAssent.RequestError) invalid_resource
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:113: PowAssent.Phoenix.AuthorizationController.handle_strategy_error/1
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.action/2
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.phoenix_controller_pipeline/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.instrument/4
        (phoenix) lib/phoenix/router.ex:278: Phoenix.Router.__call__/1
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.plug_builder_call/2
        (my_app) lib/plug/debugger.ex:122: MyAppWeb.Endpoint."call (overridable 3)"/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:16: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) c:/Code/my_app/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4

---------------------------------
Second attempt in browser tab #2:
---------------------------------

[info] GET /auth/azure/new/
[debug] Processing with PowAssent.Phoenix.AuthorizationController.new/2
  Parameters: %{"provider" => "azure"}
  Pipelines: [:browser]
[info] Sent 302 in 0┬╡s
[info] GET /auth/azure/callback
[debug] Processing with PowAssent.Phoenix.AuthorizationController.callback/2
  Parameters: %{"code" => "AQABAA...mKAgAA", "provider" => "azure", "session_state" => "dac33c...2a785f", "state" => "a6efd6...621ae3"}
  Pipelines: [:browser]
[info] Sent 500 in 250ms
[error] #PID<0.447.0> running MyAppWeb.Endpoint (cowboy_protocol) terminated
Server: localhost:4000 (http)
Request: GET /auth/azure/callback?code=AQABAA...mKAgAA&state=a6efd6...621ae3&session_state=dac33c...2a785f
** (exit) an exception was raised:
    ** (PowAssent.RequestError) invalid_resource
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:113: PowAssent.Phoenix.AuthorizationController.handle_strategy_error/1
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.action/2
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.phoenix_controller_pipeline/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.instrument/4
        (phoenix) lib/phoenix/router.ex:278: Phoenix.Router.__call__/1
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.plug_builder_call/2
        (my_app) lib/plug/debugger.ex:122: MyAppWeb.Endpoint."call (overridable 3)"/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:16: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) c:/Code/my_app/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4

---------------------------------------------------------------------------
Third attempt in browser tab #2, after waiting a few minutes (CSRF occurs):
---------------------------------------------------------------------------

[info] GET /auth/azure/new/
[debug] Processing with PowAssent.Phoenix.AuthorizationController.new/2
  Parameters: %{"provider" => "azure"}
  Pipelines: [:browser]
[info] Sent 302 in 0┬╡s
[info] GET /auth/azure/callback
[debug] Processing with PowAssent.Phoenix.AuthorizationController.callback/2
  Parameters: %{"code" => "AQABAA...APkgAA", "provider" => "azure", "session_state" => "dac33c...2a785f", "state" => "6244a2...f2e923"}
  Pipelines: [:browser]
[info] Sent 500 in 250ms
[error] #PID<0.456.0> running MyAppWeb.Endpoint (cowboy_protocol) terminated
Server: localhost:4000 (http)
Request: GET /auth/azure/callback?code=AQABAA...APkgAA&state=6244a2...f2e923&session_state=dac33c...2a785f
** (exit) an exception was raised:
    ** (PowAssent.RequestError) invalid_resource
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:113: PowAssent.Phoenix.AuthorizationController.handle_strategy_error/1
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.action/2
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.phoenix_controller_pipeline/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.instrument/4
        (phoenix) lib/phoenix/router.ex:278: Phoenix.Router.__call__/1
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.plug_builder_call/2
        (my_app) lib/plug/debugger.ex:122: MyAppWeb.Endpoint."call (overridable 3)"/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:16: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) c:/Code/my_app/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4
[info] GET /auth/azure/callback
[debug] Processing with PowAssent.Phoenix.AuthorizationController.callback/2
  Parameters: %{"code" => "AQABAA...UmUgAA", "provider" => "azure", "session_state" => "dac33c...2a785f", "state" => "6244a2...f2e923"}
  Pipelines: [:browser]
[info] Sent 500 in 0┬╡s
[error] #PID<0.457.0> running MyAppWeb.Endpoint (cowboy_protocol) terminated
Server: localhost:4000 (http)
Request: GET /auth/azure/callback?code=AQABAA...UmUgAA&state=6244a2...f2e923&session_state=dac33c...2a785f
** (exit) an exception was raised:
    ** (PowAssent.CallbackCSRFError) CSRF detected
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:113: PowAssent.Phoenix.AuthorizationController.handle_strategy_error/1
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.action/2
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.phoenix_controller_pipeline/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.instrument/4
        (phoenix) lib/phoenix/router.ex:278: Phoenix.Router.__call__/1
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.plug_builder_call/2
        (my_app) lib/plug/debugger.ex:122: MyAppWeb.Endpoint."call (overridable 3)"/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:16: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) c:/Code/my_app/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4

---------------------------------
Fourth attempt in browser tab #2:
---------------------------------

[info] GET /auth/azure/new/
[debug] Processing with PowAssent.Phoenix.AuthorizationController.new/2
  Parameters: %{"provider" => "azure"}
  Pipelines: [:browser]
[info] Sent 302 in 0┬╡s
[info] GET /auth/azure/callback
[debug] Processing with PowAssent.Phoenix.AuthorizationController.callback/2
  Parameters: %{"code" => "AQABAA...EckgAA", "provider" => "azure", "session_state" => "dac33c...2a785f", "state" => "3f2ada...91a963"}
  Pipelines: [:browser]
[info] Sent 500 in 282ms
[error] #PID<0.466.0> running MyAppWeb.Endpoint (cowboy_protocol) terminated
Server: localhost:4000 (http)
Request: GET /auth/azure/callback?code=AQABAA...EckgAA&state=3f2ada...91a963&session_state=dac33c...2a785f
** (exit) an exception was raised:
    ** (PowAssent.RequestError) invalid_resource
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:113: PowAssent.Phoenix.AuthorizationController.handle_strategy_error/1
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.action/2
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.phoenix_controller_pipeline/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.instrument/4
        (phoenix) lib/phoenix/router.ex:278: Phoenix.Router.__call__/1
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.plug_builder_call/2
        (my_app) lib/plug/debugger.ex:122: MyAppWeb.Endpoint."call (overridable 3)"/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:16: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) c:/Code/my_app/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4

Ah, seems like you get invalid_resource  error.
I've set up the following in my configuration:
azure: [
      client_id: "CLIENT_ID"
      client_secret: "CLIENT_SECRET",
      tenant_id: "TENANT_ID",
      authorization_params: [response_mode: "query", response_type: "code", resource: "https://graph.microsoft.com"],
      strategy: PowAssent.Strategy.AzureOAuth2

I don't know enough about how azure works to understand the tenant/resource configuration. I just used "https://graph.microsoft.com/" for resource.
Here's the description for the resource param:

The App ID URI of the target web API (secured resource). To find the App ID URI, in the Azure Portal, click Azure Active Directory, click Application registrations, open the application's Settings page, then click Properties. It may also be an external resource like https://graph.microsoft.com. This is required in one of either the authorization or token requests. To ensure fewer authentication prompts place it in the authorization request to ensure consent is received from the user.

And the tenant id:

The {tenant} value in the path of the request can be used to control who can sign into the application. The allowed values are tenant identifiers, for example, 8eaef023-2b34-4da1-9baa-8bc8c9d6a490 or contoso.onmicrosoft.com or common for tenant-independent tokens

I've an idea that it works this way because the resource (user) can be pulled from data you manage on azure or from your own platform (the OAuth2 guide shows an example with http://service.contoso.com/), rather than from the actual Microsoft account users.

Hmm, from what I read it seems like the resource param is mandatory. Maybe it'll be easiest for developers, if I add a default for resource with https://graph.microsoft.com. I assume this will pull their MS account details, and this is what most would need.

resource parameter is part of v1 endpoint, its not purre Oauth 2.0 specs,  but this shoudl be defined as parameter so one can define for which resource the client would acuquire tokens for

Thanks for explaining that @belaie. I've added a resource parameter that can be overridden but defaults to https://graph.microsoft.com. The  configuration can look like this (based on the values given in the OAuth2 guide from the Azure website):
azure: [
  client_id: "REPLACE_WITH_CLIENT_ID",
  client_secret: "REPLACE_WITH_CLIENT_SECRET",
  tenant_id: "8eaef023-2b34-4da1-9baa-8bc8c9d6a490",
  resource: "https://service.contoso.com/",
  strategy: PowAssent.Strategy.AzureOAuth2
]

Hopefully everything will work now @IRLeif!

Very cool! Got it working now.
Note that I needed to pass the client_id as the resource, instead of the app ID URI. I'm not sure why exactly, but more details about this can be found in this answer on Stack Overflow.
When I used the app ID URI, I got this error:
[info] GET /auth/azure/new/
[debug] Processing with PowAssent.Phoenix.AuthorizationController.new/2
  Parameters: %{"provider" => "azure"}
  Pipelines: [:browser]
[info] Sent 302 in 0┬╡s
[info] GET /auth/azure/callback
[debug] Processing with PowAssent.Phoenix.AuthorizationController.callback/2
  Parameters: %{"error" => "invalid_request", "error_description" => "AADSTS90009: Application 'e8b...' is requesting a token for itself. This scenario is supported only if resource is specified using the GUID based App Identifier.\r\nTrace ID: 674...\r\nCorrelation ID: d43...\r\nTimestamp: 2018-09-14 08:23:55Z", "provider" => "azure", "state" => "33f..."}
  Pipelines: [:browser]
[info] Sent 500 in 16ms
[error] #PID<0.564.0> running MyAppWeb.Endpoint (cowboy_protocol) terminated
Server: localhost:4000 (http)
Request: GET /auth/azure/callback?error=invalid_request&error_description=AADSTS90009%3a+Application+%27e8b...%27+is+requesting+a+token+for+itself.+This+scenario+is+supported+only+if+resource+is+specified+using+the+GUID+based+App+Identifier.%0d%0aTrace+ID%3a+674...%0d%0aCorrelation+ID%3a+d43...%0d%0aTimestamp%3a+2018-09-14+08%3a23%3a55Z&state=33f...
** (exit) an exception was raised:
    ** (PowAssent.CallbackError) AADSTS90009: Application 'e8b...' is requesting a token for itself. This scenario is supported only if resource is specified using the GUID based App Identifier.
Trace ID: 674...
Correlation ID: d43...
Timestamp: 2018-09-14 08:23:55Z
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:113: PowAssent.Phoenix.AuthorizationController.handle_strategy_error/1
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.action/2
        (pow_assent) lib/pow_assent/phoenix/controllers/authorization_controller.ex:1: PowAssent.Phoenix.AuthorizationController.phoenix_controller_pipeline/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.instrument/4
        (phoenix) lib/phoenix/router.ex:278: Phoenix.Router.__call__/1
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.plug_builder_call/2
        (my_app) lib/plug/debugger.ex:122: MyAppWeb.Endpoint."call (overridable 3)"/2
        (my_app) lib/my_app_web/endpoint.ex:1: MyAppWeb.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:16: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) c:/Code/my_app/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4

Cool, so it's just Azure configuration, and not anything missing in the integration! I've just copied the instructions from Azures own guide so I'll keep it at that. Will get it merged in and release a new version 🚀

Awesome, thank you again for all the help, @danschultzer. I have learned a lot through this process and I'm looking forward to being able to contribute back once I've got some more experience.