airgap/dapp-wallet-messages

This PR proposes a message standard that defines communication between dApps and wallets as described in RFP-7.

The initial commit defines possible messages focusing on the content.
As already discussed in the last working group meeting, there are some concerns regarding the permission messages and whether they are needed in the IC ecosystem at all. This, however, requires further discussion as the initial conclusion was that such messages are redundant in the light of Internet Identity broad use, but some possible applications could be found.

I've looked deeper into Internet Identity, and I'm not sure if it can be used to authorize requests to wallets as defined in RFP-7 🤔
Correct me if I'm wrong, but it seems like Internet Identity is the only source of its accounts, meaning a user can either create a new account/identity or import one that was previously created with Internet Identity. I can't see any options to import an account created in a wallet or loosely connect a wallet account to Internet Identity without revealing the passphrase used to create the account. This means that the only connection between Internet Identity and a wallet could be created only if the wallet imported the account from Internet Identity, which I don't think is possible in every case.
I believe that what we're defining here, through this wallet standard, is a secondary method of authentication in IC, an alternative to Internet Identity, where the source of the account can be any wallet that implements the standard. If that's the case, then the permission messages are indispensable as their main role is to obtain account related data from the wallet.
It would be great, though, to hear from someone with a broader knowledge of the whole IC ecosystem to validate my thoughts 😅

I've looked deeper into Internet Identity, and I'm not sure if it can be used to authorize requests to wallets as defined in RFP-7 🤔
Correct me if I'm wrong, but it seems like Internet Identity is the only source of its accounts, meaning a user can either create a new account/identity or import one that was previously created with Internet Identity. I can't see any options to import an account created in a wallet or loosely connect a wallet account to Internet Identity without revealing the passphrase used to create the account. This means that the only connection between Internet Identity and a wallet could be created only if the wallet imported the account from Internet Identity, which I don't think is possible in every case.

Yes, Internet Identity is not a wallet (yet) but only an identity provider that issues delegations (which allow non-interactive calls using the delegation identity). As such, it currently is not possible to do transaction approval on a call-by-call basis using Internet Identity.

I believe that what we're defining here, through this wallet standard, is a secondary method of authentication in IC, an alternative to Internet Identity, where the source of the account can be any wallet that implements the standard. If that's the case, then the permission messages are indispensable as their main role is to obtain account related data from the wallet.

Yes, this is correct. I would not (yet) call the standard an alternative (as it has different goals and trade-offs) but rather a complement to it. The standards that we are defining here have transaction approval on a call-by-call basis as their core use-case. In the future, they can (and probably should) be extended to also incorporate additional use-cases such as issuing delegations. However, these extensions are definitely beyond the scope of RPF-7.

It would be great, though, to hear from someone with a broader knowledge of the whole IC ecosystem to validate my thoughts 😅

I'm the original author of the consent message spec and RFP-7. Now that I'm back from my PTO I'm happy to answer questions, do reviews, etc. I believe @marydwyer (planned to?) set up a shared slack channel as well...
Feel free to reach out anytime. 🙂

@frederikrothenberger I've updated the messages according to our discussion so far. I also added some technicalities not necessarily protocol specific, i.e. version and senderId. The version should allow us to seamlessly update the standard with new content in the future, and senderId is, well, the true identity of the source of the message that was discussed in one of the threads 😅 Additionally, I changed the form of the definitions from the original pseudocode to something more JSON-RPC suited.
One more thing regarding the certificate in the canister_call response. I've realized that the certificate returned by the read_state call is a CBOR encoded blob, not a raw object as I initially expected. Would it make sense, then, to change the type of the certificate field in the canister_call response to just blob?

Thanks a lot @jsamol! I'll try to take a look before tomorrows session.

Would it make sense, then, to change the type of the certificate field in the canister_call response to just blob?

Yes, that is an option. Given the complexity already required to verify the certificate, having it as a cbor blob would not make it much harder to deal with.

@frederikrothenberger another draft update 😄

I've updated the title
I replaced the principal and ledger fields with one identity that holds, well, identity related details, including a DER-encoded publicKey + the crypto algorithm used to generate it (to make the challenge verification possible, as discussed) and an optional ledger (it felt like a good idea to group user-related data in the same object 🤔 )
the challenge field in the permission request has a proper definition of what it is expected to be
the certificate type in the canister_call response is blob
I've updated the use cases with more detailed descriptions of how to process the messages (how to verify the challenge and canister_call response - I hope I got this part right 🤞)
and finally, I've updated the examples and added a brief summary and terminology (since I use the same terminology as you do in ICRC-21, I took it from there)

including a DER-encoded publicKey + the crypto algorithm used to generate it (to make the challenge verification possible, as discussed)

The whole idea behind DER encoding is that it already includes the algorithm of the public key.

Here's how I verify challenges signed with either ECDSAKeyIdentity, Ed25519KeyIdentity or Secp256k1KeyIdentity with only the DER-encoded public key:
import { p256 } from '@noble/curves/p256';
import { secp256k1 } from '@noble/curves/secp256k1';
import * as ed from '@noble/ed25519';
import { sha512 } from '@noble/hashes/sha512';
import { sha256 } from '@noble/hashes/sha256';
import { ED25519_OID, unwrapDER } from '@dfinity/identity';

ed.etc.sha512Sync = (...m) => sha512(ed.etc.concatBytes(...m));

const ECDSA_P256_OID = Uint8Array.from([
  ...[0x30, 0x13], // SEQUENCE
  ...[0x06, 0x07], // OID with 7 bytes
  ...[0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01], // OID ECDSA
  ...[0x06, 0x08], // OID with 8 bytes
  ...[0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07], // OID P-256
]);

const SECP256K1_OID = Uint8Array.from([
  ...[0x30, 0x10], // SEQUENCE
  ...[0x06, 0x07], // OID with 7 bytes
  ...[0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01], // OID ECDSA
  ...[0x06, 0x05], // OID with 5 bytes
  ...[0x2b, 0x81, 0x04, 0x00, 0x0a], // OID secp256k1
]);

export const verifyChallenge = async (
  publicKey: Uint8Array,
  signature: Uint8Array,
  data: Uint8Array,
): Promise<boolean> => {
  try {
    if (publicKey[0] !== 0x30 || publicKey[2] !== 0x30) {
      return false;
    }
    const oidSequenceLength = publicKey[3];
    const oid = publicKey.slice(2, oidSequenceLength + 4);
    if (oid.length !== oidSequenceLength + 2) {
      return false;
    }
    switch (Array.from(oid).join()) {
      case Array.from(ECDSA_P256_OID).join():
        return p256.verify(
          Buffer.from(signature).toString('hex'),
          Buffer.from(sha256(data)).toString('hex'),
          Buffer.from(unwrapDER(publicKey, ECDSA_P256_OID)).toString('hex'),
        );
      case Array.from(ED25519_OID).join():
        return ed.verify(
          Buffer.from(signature).toString('hex'),
          Buffer.from(data).toString('hex'),
          Buffer.from(unwrapDER(publicKey, ED25519_OID)).toString('hex'),
        );
      case Array.from(SECP256K1_OID).join():
        return secp256k1.verify(
          Buffer.from(signature).toString('hex'),
          Buffer.from(sha256(data)).toString('hex'),
          Buffer.from(unwrapDER(publicKey, SECP256K1_OID)).toString('hex'),
        );
      default:
        return false;
    }
  } catch (_) {
    throw Error;
  }
};

The DER-encoding actually standardizes the way the key and algorithm are communicated.

The whole idea behind DER encoding is that it already includes the algorithm of the public key.

@sea-snake: Thanks! The latest version does no longer include the crypto algorithm separately exactly because of that. 👍

Here's how I verify challenges signed with either ECDSAKeyIdentity, Ed25519KeyIdentity or Secp256k1KeyIdentity with only the DER-encoded public key: [...]
@sea-snake thanks for the snippet, it's very helpful! For the best development experience, however, I would love to see this functionality to be part of the @dfinity libraries, especially that there's already the PublicKey abstraction which could be extended with a factory function, which constructs a PublicKey implementation from a DER-encoded value, and with a verify method, which verifies the signature depending on the implementation.

@jsamol When I find the time, I can make an MR to make that happen. Not sure what the impact is on the package size, might need to be it's own lib.

The wallet continues to call read_state for the calculated request id until the status of the call indicates that the call has been processed (succesfully or not).

I don't see why the wallet should be making any requests and even poll for the result which can take some time. Can't the wallet just return the signed canister call and signed read state request so that the dapp can execute those however it intends?
This is basically how I've currently implemented things currently.

The wallet continues to call read_state for the calculated request id until the status of the call indicates that the call has been processed (succesfully or not).

I don't see why the wallet should be making any requests and even poll for the result which can take some time. Can't the wallet just return the signed canister call and signed read state request so that the dapp can execute those however it intends? This is basically how I've currently implemented things, the wallet is a popup that closes after returning a response over postMessage.

This was the initial design. However, a DFINITY internal security review found that it would be safer to do it this way. The reason was the following attack scenario:

The canister call is not idempotent
The result of the canister call is not publicly observable

In that case a malicious relying party can request a transaction from the wallet. Given it is the relying party that submits the call, the wallet will not observe the result of the call. A malicious relying party could successfully submit the call but then show some made up error to the user tricking them into repeating the transaction. Having the wallet submit the call (and thus is able to observe the result) makes this type of attack more difficult to pull off (as the wallet would already show a success message to the user).

A challenge used for the wallet to sign in order to prove its access to the identity. The challenge should be an array of 32 cryptographically random bytes generated from a secure random source by the sender of the request.

If the wallet were to delegate, it could sign a delegation instead of a challenge, see example repo above.
Using delegations and having a rpc communication channel over url/postMessage/callback besides browser extensions that inject an rpc service, enables wallets that are hosted on the IC without a browser extension to function like NFID.

I think there is a use-case to exchange delegation over such a channel using JSON rpc. However, I would make this an extension of this standard by extending it by introducing an additional scope (e.g. "delegation"), alongside with a delegation request and response.
The reason why I would split it into a separate standard is that the currently proposed feature set is save over any channel, whereas exchanging delegations usually requires an authenticated channel.

The canister call is not idempotent

I remember asking about this a few times before, as far as I've been told, you can't submit a canister call with the same request id more than once. So I don't see a security issue here.

The result of the canister call is not publicly observable
That's a good point, sadly that means the UX for the end user isn't that great (waiting for a popup to close since the call is still ongoing).

The reason why I would split it into a separate standard is that the currently proposed feature set is save over any channel, whereas exchanging delegations usually requires an authenticated channel.

What do you mean with authenticated? As in data could be intercepted if it's not? A delegation itself isn't something that needs to be secured as long the as private key the delegation is created for isn't communicated over any channel (which it shouldn't in the first place).

That's a good point, sadly that means the UX for the end user isn't that great (waiting for a popup to close since the call is still ongoing).

I don't think it is that bad. If the user has to look at a spinner for 2 seconds, that's still very manageable.

All security models around delegations that I have seen so far require this property, because either the delegation principal or the target list is dependent on the sender of the delegation request.

Yeah that's why I require a public key in the initial connection that looks at the origin. But subsequent calls can be made by signing a challenge over the request id, the origin doesn't need to be checked anymore. So that the dapp can for example connect at http://account.dapp.com while making calls from http://market.dapp.com by simply sharing the private key with it's own domains.

I'll implement an Agent following this spec and link it here :D

Upon receiving the request, the wallet validates whether the relying party has the permission to request the action and processes the message following the ICRC-21 specification.

This would limit the dapp from only being able to make calls to canisters that have this implemented. Is it fair to assume this is optional, the wallet can also decide to decode the canister call arguments and show these to the user?

Yes, of course. However, it is recommended that some sort of warning is shown to the user to make them aware that this target does not fully support transaction approval.

All security models around delegations that I have seen so far require this property, because either the delegation principal or the target list is dependent on the sender of the delegation request.

Yeah that's why I require a public key in the initial connection that looks at the origin. But subsequent calls can be made by signing a challenge over the request id, the origin doesn't need to be checked anymore. So that the dapp can for example connect at http://account.dapp.com while making calls from http://market.dapp.com by simply sharing the private key with it's own domains.

Ah, I see. I think this model of sharing the "sender identity" with another domain could be an extension too, right?
I'd like to keep the standards small & focused in order to not burden devs too much that don't need the full functionality.
Or do you see a fundamental issue with ICRC-25 that would break with what you are trying to do?

I've ran into an issue while I was implementing an Agent for the spec.

The relying party retrieves the publicKey from identity, determines the signature scheme and verifies whether it was generated by signing the concatenation of the domain separator \x0Aic-wallet-challenge (UTF-8 encoded) and the challenge from the request with the private key associated with the publicKey.

This isn't possible if the wallet doesn't have access to the private key of the identity, which actually if the case with Internet Identity and wallets that rely on delegations to secure their private key behind biometrics/password/non-extractable-browser-key. Both is the case for the wallet I'm currently implementing, and there's no way around it 😅
Why does the relying party need to verify that the wallet has the private key for the public key? Only reason I can think of would be to verify it for e.g. user registration, but even then I would probably rely on a canister call instead.
One workaround I could think of would be to also return a delegation besides the signed challenge. If a delegation is returned, the challenge can be verified with the public key at the end of the delegation chain and then the delegation chain itself can be validated to be valid & start with the identity public key.
Adding an optional delegation chain to the identity object in the response would make above doable, though it makes things more complex, it also makes it possible to work with identities beyond the ones that directly come from a seed phrase.

Why does the relying party need to verify that the wallet has the private key for the public key? Only reason I can think of would be to verify it for e.g. user registration, but even then I would probably rely on a canister call instead.

The main reason is to prevent wallets being able to claim control of a key they don't actually have access to. I expect quite a few applications building a poor mans sign-in flow where the signed challenge serves as some sort of session token. Having the challenge response flow at least makes sure that the wallet cannot lie about the keys it controls.
Having the option to provide a delegation chain seems sensible to me. While it does add complexity, it is also a largely solved problem (there are libraries for that) and consistent with the ecosystem.
What do you think?
PS: It would be really nice if you could join the working group session on September 3 to discuss your findings and feedback. 🙂

The main reason is to prevent wallets being able to claim control of a key they don't actually have access to. I expect quite a few applications building a poor mans sign-in flow where the signed challenge serves as some sort of session token. Having the challenge response flow at least makes sure that the wallet cannot lie about the keys it controls.

That's... terrifying but I totally see that happen indeed, especially with web2 sites that use a web3 wallet.

Having the option to provide a delegation chain seems sensible to me. While it does add complexity, it is also a largely solved problem (there are libraries for that) and consistent with the ecosystem.
What do you think?

I'll add the delegation_chain as an optional response value within the identity object in my implementation.

PS: It would be really nice if you could join the working group session on September 3 to discuss your findings and feedback. 🙂

I'll be there.

@frederikrothenberger
In the @dfinity/agent lib the delegation chain is converted to JSON in a different way than this spec, public key blobs are encoded as hex instead of base64 and targets (principals) are also encoded as hex instead base32 dash separated string.
https://github.com/dfinity/agent-js/blob/main/packages/identity/src/identity/delegation.ts#L48
So should I ignore that and follow the encodings in this spec?

@frederikrothenberger In the @dfinity/agent lib the delegation chain is converted to JSON in a different way than this spec, public key blobs are encoded as hex instead of base64 and targets (principals) are also encoded as hex instead base32 dash separated string.
https://github.com/dfinity/agent-js/blob/main/packages/identity/src/identity/delegation.ts#L48
So should I ignore that and follow the encodings in this spec? Probably makes sense anyway since the public key within the delegation chain is redundant (already defined within identity).

Hm, that's true. Yeah, it is probably better to be consistent with existing code. Let's pick this up as a discussion point in the next session...

Took a bit longer than expected, but here's the WalletAgent implementation that follows this spec: https://github.com/slide-computer/identity/blob/master/src/index.ts
It's definitely a bit of a chaotic code trying to wrap things within the constraints of the Agent interface, while trying to support the pollForResponse implementation, upgrading query requests to calls and adding support for delegation chains.
This agent should be interchangeable with HttpAgent when you create an Actor.
As for the data transport, this is a configurable option when you create the agent, the following transports have been implemented: LinkTransport, PostMessageTransport, PromiseTransport and MixedTransport and more implementation could be added
Maybe a standard that lets you lookup the recommended transport and its options for a specific wallet and device environment, could simplify things here further into something like a LookupTransport implementation that only requires the wallet url to get things working.

@sea-snake: That's fantastic! 😄 Do you have a deployment of your code somewhere, so that I can try it out in a live example?

Maybe a standard that lets you lookup the recommended transport and its options for a specific wallet and device environment, could simplify things here further into something like a LookupTransport implementation that only requires the wallet url to get things working.

This is absolutely something we should work on once the standard has been established. As I see it, the next steps are as follows:

Standardize ICRC-21 and ICRC-25
Outline possible extensions / further work.
Current candidates are:

Standardize transports & transport selection
Support exchanging delegations by introducing the delegation scope (and another request / response pair)
Extend ICRC-25 to support batch approvals

Work on extensions

Do you have a deployment of your code somewhere, so that I can try it out in a live example?

Working on that :D

Do you have a deployment of your code somewhere, so that I can try it out in a live example?

Working on that :D

Please provide benchmark btw :D

Do you have a deployment of your code somewhere, so that I can try it out in a live example?

Working on that :D

Please provide benchmark btw :D

@neeboo: could you please clarify what metrics you are interested in?

Do you have a deployment of your code somewhere, so that I can try it out in a live example?

Working on that :D

Please provide benchmark btw :D

@neeboo: could you please clarify what metrics you are interested in?

mainly latency.
in the code, agent.permission is an await, and ledger.transfer is another.
And also bulk transfer is something dapp devs really want, would it be considered as well?

And also bulk transfer is something dapp devs really want, would it be considered as well?

Yes, batching / bulk transfer is probably a natural extension of this standard. See my comment here.

mainly latency.
in the code, agent.permission is an await, and ledger.transfer is another.

Note that in both of these interactions a user approval is required. It is generally expected that the user interaction with the wallet will make up the bulk of any latency measurement.

mainly latency.
in the code, agent.permission is an await, and ledger.transfer is another.

Note that in both of these interactions a user approval is required. It is generally expected that the user interaction with the wallet will make up the bulk of any latency measurement.

yep, i think it really depends on wallet to handle interface and etc.

Do you have a deployment of your code somewhere, so that I can try it out in a live example?

Working on that :D

Please provide benchmark btw :D

@neeboo: could you please clarify what metrics you are interested in?

mainly latency.
in the code, agent.permission is an await, and ledger.transfer is another.
And also bulk transfer is something dapp devs really want, would it be considered as well?

Permission is a one time operation, the response data can be stored in the browser so the dapp knows it already has permission and reuses this data until it receives a no permissions error when the user manually revoked the permission in the wallet.
Bulk is primarily useful for multiple operations that the user needs to approve towards ledgers and other dapps.
More common are bulk calls from a dapp frontent to the dapp backend canister(s), with delegations you can avoid going through the wallet altogether and directly make those calls from the dapp frontend.

Do you have a deployment of your code somewhere, so that I can try it out in a live example?

Working on that :D

Please provide benchmark btw :D

@neeboo: could you please clarify what metrics you are interested in?

mainly latency.
in the code, agent.permission is an await, and ledger.transfer is another.
And also bulk transfer is something dapp devs really want, would it be considered as well?

Permission is a one time operation, the response data can be stored in the browser so the dapp knows it already has permission and reuses this data until it receives a no permissions error when the user manually revoked the permission in the wallet.
Bulk is primarily useful for multiple operations that the user needs to approve towards ledgers and other dapps.
More common are bulk calls from a dapp frontent to the dapp backend canister(s), with delegations you can avoid going through the wallet altogether and directly make those calls from the dapp frontend.

Thanks for the reply. Personally, I really want to see how UI handles those messages and make permission smoothly.
Can't wait to see your example.

Based on forum discussion there's basically one main point of discussion, the choice of JSON RPC for the spec.
As I mentioned in a forum post, maybe Candid IDL makes more sense to be platform agnostic and then a spec could be defined for Candid -> JSON RPC for data transport channels where it makes more sense then Candid.

Here's a working demo: https://osu4t-5aaaa-aaaak-ae5za-cai.icp0.io
Make sure to create a wallet first at: https://etk52-fqaaa-aaaak-ae4ca-cai.icp0.io
The wallet and this demo are still WIP:

The wallet and specifically demo are not fully mobile optimized yet
Error handling is not fully implemented, it's basically missing in the demo
Make sure to be signed in to the wallet, if you're not, things will break in this demo
Secure signing and locking settings do not work yet in this demo flow
The wallet does not remember the permission, you'll have to reconnect every time (not implemented yet)
Delegations work but is currently hardcoded in the wallet to a cowsay canister for the purpose of this demo
Internet Identity works in the wallet and this demo, but if it expires, the wallet won't let you know yet 😅

Functionality in this demo:

Connect to wallet by permission request
Transfer ICP by canister_call request
Query cowsay canister by delegation (no interaction or communication with wallet required)

PoC (up to date with the standard definition at a03d16d6400abc18666995009785e56cd1235c52):

DApp: https://weutz-riaaa-aaaao-a2hna-cai.icp0.io/
Wallet: https://wdvvn-4qaaa-aaaao-a2hnq-cai.icp0.io/
ICRC-21 canister: https://dashboard.internetcomputer.org/canister/xhy27-fqaaa-aaaao-a2hlq-cai

The PR should be merged so that the draft can be worked on in smaller, focused PRs.


payment error not logged

I have a case where i need to handle a payment for a client using his credit card for usa. It seems like that so far we have no issues with other countries so this could be something very specific.
However, my client is not able to finish the transaction as the only message he gets is:

After checking the payment logs in var/log/payone_payment_prod* and var/log/prod* in general i still was not able to identify this issue. Is there a way to have a more detailed error reporting? Maybe a hint to start debugging this would also be helpful.

Can i have an update on this topic?

Hey @azngeek,
sorry for the delay. We have to look into this in detail, for that please send your problem (just link this issue) as well as your merchant ID plus a time frame in which the error ocurred to<EMAIL_ADDRESS>Hope I could help you so far, reach out to us again if you have any further questions!
Cheers,
Fabian


Add documentation for shader object layer

Closes #180 and #181

CI Vulkan-ExtensionLayer build queued with queue ID 57191.

CI Vulkan-ExtensionLayer build queued with queue ID 57191.

CI Vulkan-ExtensionLayer build # 343 running.

CI Vulkan-ExtensionLayer build # 343 passed.

CI Vulkan-ExtensionLayer build queued with queue ID 57230.

CI Vulkan-ExtensionLayer build queued with queue ID 57230.

CI Vulkan-ExtensionLayer build # 344 passed.


mock object and basic test cases for visibility single manager

What changed?
Add a mock file for visibility store
Add basic test cases for visibility single manager

Why?
for more code coverage

How did you test it?
unit test

Potential risks

Release notes

Documentation Changes

Pull Request Test Coverage Report for Build 018e9bab-bec5-43fc-9e00-51c75f4a6a24
Details

0 of 0   changed or added relevant lines in 0 files are covered.
31 unchanged lines in 12 files lost coverage.
Overall coverage decreased (-0.002%) to 65.273%

Files with Coverage Reduction
New Missed Lines
%

service/history/task/transfer_standby_task_executor.go
2
86.6%

common/task/weighted_round_robin_task_scheduler.go
2
89.05%

service/history/shard/context.go
2
66.7%

common/task/parallel_task_processor.go
2
93.06%

common/persistence/sql/sqlplugin/mysql/task.go
2
73.68%

service/matching/db.go
2
73.23%

common/persistence/sql/sqlplugin/mysql/db.go
2
79.49%

common/log/tag/tags.go
3
50.18%

common/task/fifo_task_scheduler.go
3
84.54%

service/history/queue/timer_queue_processor_base.go
3
77.82%

Totals

Change from base Build 018e9b7b-0946-4a2a-8777-4a7abded2d0f:
-0.002%

Covered Lines:
95517

Relevant Lines:
146334

💛  - Coveralls


Unable to read M3U file

Hi there, so fairly new to this,installing telly on Ubuntu 18.04 64 bit, using telly-linux-386.bin
I run the following command:
`iain@ubuntu:~/Downloads$ sudo '/home/iain/Downloads/telly-linux-386' -playlist=/home/iain/downloads/flawless.m3u
[telly] [info] booting telly v0.5
[telly] [info] Reading m3u file /home/iain/downloads/flawless.m3u...
[telly] [error] unable to read m3u file, error below
[telly] [error] m3u files need to have specific formats, see the github page for more information
[telly] [error] future versions of telly will attempt to parse this better
panic: Unable to open playlist file
goroutine 1 [running]:
main.main()
/Users/tom/code/telly/main.go:193 +0x1669
`
However my m3u seems to be in the correct format - see sample below. Can anyone help? PLease :)
#EXTM3U #EXTINF:-1 tvg-ID="BBC ONE FHD" tvg-name="UK: BBC ONE FHD" tvg-logo="https://archive.org/download/stevechatfield27_gmail_Bbc1/bbc%201.png" group-title="UK: Entertainment",UK: BBC ONE FHD<EMAIL_ADDRESS>

same here

I didn’t want to post anything in case I was doing something wrong but my .M3U file was working perfectly up to I think version V0.4.4 and on the next update I was getting an error saying the M3U was not in the correct format. Nothing had changed with my playlist file. I’ve read several comments about it needing to be in Unicode 8 and M3U8 format, I’ve spent days trying different things but it still won’t recognise the file.
So I am a Same Here as well.

@tombowditch , any ideas? Sounds phishy

Never mind I managed to get it working by changing the m3u layout from this
#EXTM3U #EXTINF:-1 tvg-ID="BBC ONE FHD" tvg-name="UK: BBC ONE FHD" tvg-logo="https://archive.org/download/stevechatfield27_gmail_Bbc1/bbc 1.png" group-title="UK: Entertainment",UK: BBC ONE FHD<EMAIL_ADDRESS>To this
#EXTM3U #EXTINF:-0, BBC ONE FHD<EMAIL_ADDRESS>

Excellent, thank you for this. For months I’ve given up on using telly and your post resolved all my issues.
Tom would it be a good idea to post this in the readme for a good format for the m3u file?


NetworkBoundResource - data from multiple APIs

I have one model in my database called Country.
To have all information, I need to call 4 APIs (to get general info, to get currency exchange, to get a flag and to get a photo URL).
I'm thinking what's the best to modify NetworkBoundResource in this case?
Shall I have one NetworkBoundResource for loadCountry() and modify createCall to do multiple calls. Or shall I create 4 different NetworkBoundResource's for every API?
Both approaches don't seem right to me though. What do you reckon?

@qbait Hi, which aproach did you finally use?


Half-Life WON Issues

So from all my tedious research I've realized that DDrawCompat is the ONLY DirectDraw wrapper that can render the menu of Half-Life WON correctly with scaling, as the menu will always run in DirectDraw regardless of what in-game renderer you've selected. Because of this, this creates an issue where there is a bit of jankiness when pausing/unpausing the game. Using DDrawCompat with dgvoodoo's Glide or Direct3D wrapper causes the game to freeze at the "Loading..." dialogue. Using it with native OpenGL, the game loads up fine when unpausing, but pausing causes the frame to freeze and requires me to alt-tab to get the menu to show.

This is being tested with WON version <IP_ADDRESS>, by the way.

Same issue when using Direct3D or Glide mode in Interstate '76: DDraw menu, Hardware-accelerated in-game.

Using DDrawCompat with dgvoodoo's Glide or Direct3D wrapper

This is not supported as per the README:

For various reasons, the below cases are not supported:

(...)
Running DDrawCompat in combination with other wrappers/hooks (...)

Using it with native OpenGL

I don't really know how OpenGL presentation works, but I'm surprised it works at all. This is not really supported either, although I haven't explicitly put this in the README (yet). You can only use DDrawCompat with DirectX 1-7 renderers, everything else is out of scope, and this is not likely to change in the near future.
Therefore, I can only support the cases where both the menu and the chosen renderer are based on DX 1-7. I will check these later.

Half-Life does have a Direct3D mode, which probably runs in one of the DX versions 1-7. Unless D3D doesn't count?

The main menu should no longer change to windowed mode in v0.5.2. Are there any issues on your end still?

The main menu should no longer change to windowed mode in v0.5.2. Are there any issues on your end still?

Yep.


Removing the orion acceptance tests

ORION is getting deprecated. There is no need to run these acceptance
tests any more.
Signed-off-by: Jiri Peinlich<EMAIL_ADDRESS>

Fixed Issue(s)

Fixes 3030
Changelog

[x] I thought about the changelog and included a changelog update if required.

The ORION acceptance tests are not executing any more. Note that there are few integration tests that are still dependent on the ORION.


Bean validation: @Valid annotation should present if method prameter or return value validation is required

See the Hibernate validator documentation: https://docs.jboss.org/hibernate/validator/5.4/reference/en-US/html_single/#_cascaded_validation
See the forum: https://www.cuba-platform.com/discuss/t/validation-in-middleware-services-called-from-rest-api/5987

See comment in the commit.


Wagtail 5.1

Wagtail 5.1 release notes
Changes:

Shared include field_as_li.html will be removed

Superseded by: https://github.com/torchbox/wagtail-purge/pull/9


Update to v3

Hello,
v2 has been hard deprecated. Survey Monkey no longer uses API Key. Used original SurveyMonkeyAPI_v2 as template for v3. Updated README File.
First time contributing to an open source project. Let me know if there is anything I could have done better.

Thanks for the PR Gary! I'll do a more detailed review later today, but at first blush the code looks good.

Sorry for the delay, released published as version 1.0.0, thank you @garyh6!


Image Flash Quiz Game

forked updation
PR Description 📜
Added Image Flash Quiz Game
Please include summary related to the issue you have fixed and describe your PR in brief over here by specifying the issue number on which you were working below
Fixes #2128

Mark the task you have completed ✅

[X] I follow CONTRIBUTING GUIDELINE & CODE OF CONDUCT of this project.
[X] I have performed a self-review of my own code or work.
[X] I have commented my code, particularly in hard-to-understand areas.
[X] My changes generates no new warnings.
[X] I have followed proper naming convention showed in CONTRIBUTING GUIDELINE
[X] I have added screenshot for website preview in assets/images
[X] I have added entries for my game in main README.md
[X] I have added README.md in my folder
[X] I have added working video of the game in README.md (optional)
[X] I have specified the respective issue number for which I have requested the new game.

Add your screenshots(Optional) 📸

Thank you soo much for contributing to our repository 💗

Thank you @shubhisingh184 ,for creating the PR and contributing to our GameZone 💗
Review team will review the PR and will reach out to you soon! 😇
Make sure that you have marked all the tasks that you are done with ✅.
Thank you for your patience! 😀

Thank you  @shubhisingh184 , for your valuable time and contribution in our GameZone 💗.
It’s our GameZone, so Let’s build this GameZone altogether !!🤝
Hoping to see you soon with another PR again 😇
Wishing you all the best for your journey into Open Source🚀

Thank you  @shubhisingh184 , for your valuable time and contribution in our GameZone 💗.
It’s our GameZone, so Let’s build this GameZone altogether !!🤝
Hoping to see you soon with another PR again 😇
Wishing you all the best for your journey into Open Source🚀


The value for the template parameter '_artifactsLocation' is not provided.

I have an ARM template project : Deploy-AzureResourceGroup.ps1, azuredeploy.json & azuredeploy.parameters.json
It works fine when I deploy from VStudio & works fine in TFS using a Azure PowerShell task
Scripth Path : NotificationEngineArmTemplate/Deploy-AzureResourceGroup.ps1
Script Arguments : -ResourceGroupName 'AzureMessageBroker-Stg' -ResourceGroupLocation 'westeurope' -TemplateFile 'azuredeploy.json' -TemplateParametersFile 'azuredeploy.parameters.json' -ArtifactStagingDirectory '.' -DSCSourceFolder '.\DSC' -UploadArtifacts
However if try to use "Azure Resource Group Deployment"
I get "Deployment template validation failed: 'The value for the template parameter '_artifactsLocation' at line '1' and column '736' is not provided. Please see https://aka.ms/arm-deploy/#parameter-file for usage details.'."
What am I missing ?

You are likely are not providing a value for that parameter in your ARM template.  If you look at the command line you passed you are probably passing the artifact location in the -ArtifactStagingDirectory parameter to the script.

@sabbadino VS let's you auto fill that field; but you'll have to manage it yourself when you're doing it by yourself.

I too have similar kind of issue.. when i deploy the ARM template from Visual studio then all the parameters are auto populated from parameter file but when i try to deploy running the  .PS1 (powershell script), It prompts to enter the values for all the parameters present in the parameter file. Can anyone please let me know how to auto read the parameter file without prompting user to enter the same,

@Ranu2046 You can use the Azure Resource Group Deployment task to perform this operation which takes both a template file and a parameters file as input.

I completely agree with the OP in that this is confusing.  I'd like to see Microsoft add a better VSTS task to support Azure Resource Group projects.
In the mean time, let me correct a misconception in this thread: It is not Visual Studio that auto-populates _artifactsLocation and _artifactsLocationSasToken. Rather it is the PowerShell script that runs as part of the deployment; in the project it is probably called Deploy-AzureResourceGroup.ps1.  In that script you can see the logic for populating those parameters.
The best thing you can do is read this excellent article which details two ways to deploy Azure Resource Group Projects in a VSTS pipeline.
To summarize, you are probably better off using an Azure PowerShell Task to run Deploy-AzureResourceGroup.ps1. I know it is less than ideal, but in this way you are doing the same thing locally as in your CD pipeline.


Upgrade DNSClient from 2.2.1 to 2.4.2

Description
This PR updates the DNSClient dependency from version 2.2.1 to 2.4.2 to resolve Sendable protocol conformance requirements in Cluster.swift.
Motivation and Context
The current version of DNSClient (2.2.1) lacks Sendable protocol conformance, causing compilation errors in Cluster.swift.

#350

How Has This Been Tested?

Verified successful compilation with Swift 5.9+

Checklist:

[ ] If applicable, I have updated the documentation accordingly.
[ ] If applicable, I have added tests to cover my changes.

Thanks for the PR


[ZEPPELIN-3932] spark_mesos Dockerfile should be updated

What is this PR for?
In the spark_mesos example - Dockerfile, there are some issues.

The original used SPARK_VERSION=2.1.2 is not available now, update it to 2.4.0
There is no package named libevent2-devel, it should be corrected to libevent-devel
Update from centos6 to centos7
Update from jdk7 to jdk8

In the spark_mesos example - entrypoint.sh:

Follow the instructions: zeppelin on spark mesos mode - configure spark interpreter in zeppelin add the two environment variables.
add --hostname flag to the command mesos-master. This solves the problem of "Failed to connect to xx.xx.xx.xx:5050"(screenshot).

What type of PR is

Bug Fix

Improvement

What is the Jira issue?

ZEPPELIN-3932

How should this be tested?

Follow the instructions here: spark-on-mesos-mode

Screenshots (if appropriate)

merging if no more comment

@felixcheung Thanks for your timely response! Updating other Dockerfiles is in my plan.

FYI, I don't think we build docker, for future PR:
Looks like travis-ci is not configured for your fork.
Please setup by swich on 'zeppelin' repository at https://travis-ci.org/profile and travis-ci.
And then make sure 'Build branch updates' option is enabled in the settings https://travis-ci.org/keineahnung2345/zeppelin/settings.

@felixcheung I am new to travis and I cannot find the option 'Build branch updates' in my repo's settings.

And there is no other branches for me to select:

I've tried adding
branches:
  only:
    - spark_mesos

in .travis.yml in my repo's master branch.
I also tried creating a PR in my own repo(from spark_mesos branch to master branch), but nothing changes, what should I do?

@keineahnung2345 hi - didn't see the message above. I think travis has changed the UI since we had that instruction, but Build pushed branch should do it?


Fix app crash due to use of obsolete Flutter properties

https://docs.flutter.dev/release/breaking-changes/3-19-deprecations

@rafaelsetragni


RS485 Data Dropping

RS485 Data Dropping
This PR addresses the data dropping issues encountered when RS485 slaves are too busy to process incoming data.
The problem
RS485 slaves drop incoming export data if the user sketch runs too slow. It happens when drawing to a slow display, but also in cases where it should work a lot faster, such as writing to a Nextion display (UART2, 250000 baud). Additionally, if you map 48LEDs on an Arduino Mega, even with direct register writes, it triggers the same issue.
Videos
These examples run on the exact same hardware, code and data. The only difference are the #defines for USB or RS485 mode. I have made a dev-board for tracking down this particular issue, and it includes the same amount of LED as the A-10C Caution Panel, and a Nextion header for easy testing.

Before

Expand
https://github.com/DCS-Skunkworks/dcs-bios-arduino-library/assets/442007/aa52dc19-75ec-43b5-9923-50d1c205e953
https://github.com/DCS-Skunkworks/dcs-bios-arduino-library/assets/442007/8b70e117-7645-43d3-9224-e8cfed37ffae

After

Expand
https://github.com/DCS-Skunkworks/dcs-bios-arduino-library/assets/442007/da5d1ab8-925a-4ef8-aaff-95fb7868c803
https://github.com/DCS-Skunkworks/dcs-bios-arduino-library/assets/442007/a93be506-1f3b-4d3d-a5da-2a97d581068e

Changes
I have done extensive testing and found the following changes fix the issue. Each change improves the situation, and together, RS485 slaves behave like USB devices.

Process incoming data outside of the ISR. processCharISR() has been modified to only store the received byte if DCSBIOS_RS485_SLAVE is defined. processChar() has been moved to loop().
unit8_t availableForWrite() added to RingBuffer.
When receiving RS485 data, the incomingDataBuffer is checked for space to avoid a buffer overflow.
The size of incomingDataBuffer is user-configurable with #define DCSBIOS_INCOMING_DATA_BUFFER_SIZE 512.

Rationale

Currently, all RS485 data processing happens in ISR context, in processCharISR(). This function directly calls out to individual ESLs, which in turn run all user code in any DCS-BIOS callbacks. In practice, pretty much the whole sketch runs in ISR context, with nested interrupts. There is barely any prioritization because everything runs from the ISR. So when new data arrives, it has to contest for resources. While it may seem like calling processChar() is important, the full picture must be considered. If processChar() takes a bit longer because it´s now called in loop() and may be interrupted, the only downside is that the external update (LED, display, servo etc) will happen slightly later. But if processCharISR() doesn't run fast enough, we start dropping data randomly, sync is invalidated because we don't know what, or how much was dropped, and the whole incomingDataBuffer becomes a mess.
If the user sketch is too slow, data will have to be dropped somewhere. With the current code, this happens inside the incomingDataBuffer which is a RingBuffer. What this means in practice, is that if an ESL is busy reading data from the RingBuffer, and an interrupt causes a write longer than available space, the new data will overwrite old data that hasn't been processed yet. This causes all sorts of weird issues, like the sync sequence UUUU appearing as text on displays, or the wrong LEDs lighting up/extinguishing on a caution panel. So, if the buffer cannot fit the new data, it has to be discarded.
Same as above.
The default size of 64 bytes may be enough for a couple LEDs, but when attempting to draw a CDU page, the amount of data is 10 lines x 24 characters = 240 bytes of raw data. On top of that, space for the address and sync sequence etc must be considered. With a 512 byte buffer and controlling a Nextion display over UART2 with HardwareSerial, only 20% RAM on an Arduino Mega is used. If not defined by the user, the default 64b buffer is retained.

User impact
All changes only affect AVR MCUs in RS485 mode. USB mode is not affected. To enable the new processing mode, use DCSBIOS_DEFER_RS485_PROCESSING:
#define DCSBIOS_DEFER_RS485_PROCESSING

Great job diagnosing this. I like your approach.
The only thing I'd ask it that your excellent PR description be made available to all for after the PR closes. You can decide where. Could be in readme. Could be on the wiki. I often find it best to make a sketch in the example and comment it well.

Hi, sorry for taking forever. I was cleaning up my branches and realized this was never merged. I have pushed an example called RS485Deferred. Please let me know if it looks ok.

@maciekish to make changes to the wiki you should just be able to click the edit or new page buttons on any page in the top left. I've just opened up edit access to the wiki - let me know if you have any issues

@maciekish to make changes to the wiki you should just be able to click the edit or new page buttons on any page in the top left. I've just opened up edit access to the wiki - let me know if you have any issues

I have added a page explaining the alternate processing mode but haven't touched the menu because i'm not sure how you want to organize it as there is no RS485 page or menu. https://github.com/DCS-Skunkworks/dcs-bios-arduino-library/wiki/RS485-Processing-Modes
Please let me know how you would like to proceed

I have no strong opinions about the wiki structure (I'm not too involved in this project) so I'd say take whatever action you see fit. It's a community wiki and things can always be moved in the future - the important part is just getting the data there in the first place


Early implementation of failoverTimeout and persisting frameworkID

Saving a new CloudConfig causes all running tasks to terminate because the framework id was not re-used and failoverTimeout was not getting set. These changes address this problem and allow the Jenkins scheduler to reregister and reclaim old tasks.
TODO:
-Still get weird issue where we get a driver abort message upon config change, but desired behavior is still achieved and new tasks will launch.
-Allow for graceful shutdowns where frameworkID is removed on termination of framework.

👍


Referrers API support for OCI Layout

The OCI layout can be viewed as a simplified local repository, which should also support the equivalence of Referrers API.
Proposal: Let content/oci.Store and content/oci.ReadOnlyStore implement registry.ReferrerFinder.

In terms of functionality, Referrers() is a subset of Predecessors(). Therefore, we can use Predecessors() to implement Referrers().

There is a generic implementation in oras: https://github.com/oras-project/oras/blob/660d167c8434b19da455828e1f30ee7f3864638c/internal/graph/graph.go#L65
We can consider move and improve the above implementation to oras-go.

I'd like to work on this.


[BUG]Some Youku video part1 will be downloaded a wrong video

Please follow the guide below

You will be asked some questions and requested to provide some information, please read them carefully and answer honestly
Put an x into all the boxes [ ] relevant to your issue (like that [x])
Use Preview tab to see how your issue will actually look like

Make sure you are using the latest version: run youtube-dl --version and ensure your version is 2016.04.19. If it's not read this FAQ entry and update. Issues with outdated version will be rejected.

[x] I've verified and I assure that I'm running youtube-dl 2016.04.19

Before submitting an issue make sure you have:

[x] At least skimmed through README and most notably FAQ and BUGS sections
[x] Searched the bugtracker for similar issues including closed ones

What is the purpose of your issue?

[x] Bug report (encountered problems with youtube-dl)
[ ] Site support request (request for adding support for a new site)
[ ] Feature request (request for a new functionality)
[ ] Question
[ ] Other

The following sections concretize particular purposed issues, you can erase any section (the contents between triple ---) not applicable to your issue

If the purpose of this issue is a bug report, site support request or you are not completely sure provide the full verbose output as follows:
Add -v flag to your command line you run youtube-dl with, copy the whole output and insert it here. It should look similar to one below (replace it with your log inserted between triple ```):
$ youtube-dl_19 -v -a downloadurls.txt -F --no-part
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v', u'-a', u'downloadurls.txt', u'-F', u'--no-par
t']
[debug] Batch file urls: [u'http://v.youku.com/v_show/id_XOTUxMzg4NDMy.html']
[debug] Encodings: locale cp936, fs mbcs, out cp936, pref cp936
[debug] youtube-dl version 2016.04.19
[debug] Python version 2.7.10 - Windows-7-6.1.7601-SP1
[debug] exe versions: none
[debug] Proxy map: {}
[youku] XOTUxMzg4NDMy: Downloading JSON metadata
[download] Downloading playlist: 我的世界☆明月庄主☆车震猎杀☆杀人艺术Minecraft

[youku] playlist 我的世界☆明月庄主☆车震猎杀☆杀人艺术Minecraft: Collected 6 vi
deo ids (downloading 6 of them)
[download] Downloading video 1 of 6
[info] Available formats for XOTUxMzg4NDMy_part1:
format code  extension  resolution note
h5-0         mp4        unknown    25.23MiB
h4-0         flv        unknown    12.80MiB
h3-0         mp4        unknown    23.69MiB
h4-1         flv        unknown    28.31MiB
h4-2         flv        unknown    33.37MiB
h4-3         flv        unknown    525.67KiB
h3-1         mp4        unknown    498.09KiB
h5-1         mp4        unknown    487.46KiB
h4-4         flv        unknown    552.37KiB (best)
[download] Downloading video 2 of 6
[info] Available formats for XOTUxMzg4NDMy_part2:
format code  extension  resolution note
h4           flv        unknown    32.28MiB
[download] Downloading video 3 of 6
[info] Available formats for XOTUxMzg4NDMy_part3:
format code  extension  resolution note
h4           flv        unknown    26.69MiB
[download] Downloading video 4 of 6
[info] Available formats for XOTUxMzg4NDMy_part4:
format code  extension  resolution note
h4           flv        unknown    13.11MiB
[download] Downloading video 5 of 6
ERROR: No video formats found!; please report this issue on https://yt-dl.org/bu
g . Make sure you are using the latest version; type  youtube-dl -U  to update.
Be sure to call youtube-dl with the --verbose flag and include its complete outp
ut.
Traceback (most recent call last):
  File "youtube_dl\YoutubeDL.pyo", line 682, in extract_info
  File "youtube_dl\YoutubeDL.pyo", line 842, in process_ie_result
  File "youtube_dl\YoutubeDL.pyo", line 727, in process_ie_result
  File "youtube_dl\YoutubeDL.pyo", line 1295, in process_video_result
ExtractorError: No video formats found!

If the purpose of this issue is a site support request please provide all kinds of example URLs support for which should be included (replace following example URLs by yours):
http://v.youku.com/v_show/id_XOTUxMzg4NDMy.html

Description of your issue, suggested solution and other information
I use the -F to show all video formats, but I found part1 have 3 video is wrong (for example h4-3,h3-1, h5-1, h4-4 is wrong video),The video files are very small.
I often use the -f best to download ultra-clear video,This creates a big problem.
Another bug,When the video downloaded to part5,It reported an error :ERROR: No video formats found!
This bug only This bug only exists in this link :http://v.youku.com/v_show/id_XOTUxMzg4NDMy.html
Explanation of your issue in arbitrary form goes here. Please make sure the description is worded well enough to be understood. Provide as much context and examples as possible.
If work on your issue required an account credentials please provide them or explain how one can obtain them.

Thanks for the report. In the next version downloaded videos will match what appear in the web player.


docs: added JSON serialization section

fix #14

Looks great, thanks for your contribution @titouancreach

Thanks for the package :)


Based on the back trace it looks like the error message is relevant:
[ERROR:flutter/shell/gpu/gpu_surface_gl.cc(67)] Failed to setup Skia Gr context.

Based on the commits in that roll I will guess that this might be related to https://github.com/flutter/engine/pull/23634 and assign @gaaclarke

Based on the commits in that roll I will guess that this might be related to https://github.com/flutter/engine/pull/23634 and assign @gaaclarke

ummm, not easy to find. Is that test in https://github.com/FirebaseExtended/flutterfire?

ummm, not easy to find. Is that test in https://github.com/FirebaseExtended/flutterfire?

The easiest way to reproduce this is running an app on an Android API level 16 emulator.  Apps previously would be unable to create graphics contexts and would fail to render on old emulators.  But with the latest engine the app process is now segfaulting.
The failing test is being run on a Firebase test lab by a LUCI recipe:
https://flutter.googlesource.com/recipes/+/refs/heads/master/recipes/firebaselab/firebaselab.py
The test runs the https://github.com/flutter/flutter/tree/master/dev/integration_tests/release_smoke_test app on an emulator.

The easiest way to reproduce this is running an app on an Android API level 16 emulator.  Apps previously would be unable to create graphics contexts and would fail to render on old emulators.  But with the latest engine the app process is now segfaulting.
The failing test is being run on a Firebase test lab by a LUCI recipe:
https://flutter.googlesource.com/recipes/+/refs/heads/master/recipes/firebaselab/firebaselab.py
The test runs the https://github.com/flutter/flutter/tree/master/dev/integration_tests/release_smoke_test app on an emulator.

This can be fixed by patching https://github.com/flutter/engine/commit/296902b8e818dbd1e1a0ff28e2e5b01d9760988f#diff-dde92a82824b129292aacba507c9807c5614fa6529e581d36531877c0d8eba80R108 to:
valid_ = gr_context != nullptr;

This can be fixed by patching https://github.com/flutter/engine/commit/296902b8e818dbd1e1a0ff28e2e5b01d9760988f#diff-dde92a82824b129292aacba507c9807c5614fa6529e581d36531877c0d8eba80R108 to:
valid_ = gr_context != nullptr;

This is no longer P0 since the revert landed and the engine rolled into the framework. I will also close this as it seems the root cause of the issue has been found and can be integrated into the re-land.

This is no longer P0 since the revert landed and the engine rolled into the framework. I will also close this as it seems the root cause of the issue has been found and can be integrated into the re-land.


add function to check if XFCE

Hi, I'm wondering if the help wanted is still needed for this issue.
I have the bash command working in terminal:
[ $(echo $XDG_CURRENT_DESKTOP | awk '{print tolower($0)}') == "xfce" ] && echo true  || echo false

I'm not sure how to test the javascript implementation, so I haven't been able to test.

@kirkins this is great, thanks! 😄 👍 Testing this might be a little awkward (especially since I don't have a VM setup), but maybe I can help walk you through it 😄
We could test this by pulling browser-laptop and building an installer.  From scratch, it should look something like this:
git clone git@github.com:brave/browser-laptop.git && cd browser-laptop
# edit package.json
rm package-lock.json
npm install
npm run build-package && npm run build-installer

Here's the line from package.json that you'd want to edit:
https://github.com/brave/browser-laptop/blob/0e2d951b5b1039f0714fdaa573368711d29331a5/package.json#L206
After the above runs, you should be able to try the installer (it'll be in a folder dist).  Running the .deb package should then work- I had implemented the differing .desktop file change with this commit:
https://github.com/brave/electron-installer-debian/commit/69bb81319e63fb3760aa89420d479226365d4199

@kirkins hmm... the only thing I believe I forgot (in the above) is to set the CHANNEL environment variable.


Update chart to cortex 1.0.0, k8s 1.16 apis

I forked this chart and prepared an updated chart compatible with cortex v1.0.0 and k8s 1.16, I am using it to deploy cortex with cassandra and azure blob storage backend, it should work also on aws (dynamodb and/or s3).
If interested, I can submit a pull request.

Happy Friday, @previ!
I apologize for the delayed response. I would absolutely love for you to submit the PR!

Good! The pr is there: https://github.com/cortexproject/cortex-helm-chart/pull/25

@previ Since #25 is merged, this issue can be closed, right?

Yes, sure! Closing it.


Added IOException test case

For check and find command

Codecov Report

Merging #169 into master will increase coverage by 0.29%.
The diff coverage is 85.71%.

@@             Coverage Diff              @@
##             master     #169      +/-   ##
============================================
+ Coverage     64.42%   64.72%   +0.29%
- Complexity      424      425       +1
============================================
  Files            61       61
  Lines          1785     1783       -2
  Branches        187      186       -1
============================================
+ Hits           1150     1154       +4
+ Misses          579      573       -6
  Partials         56       56

Impacted Files
Coverage Δ
Complexity Δ

src/seedu/addressbook/data/person/Person.java
90% <ø> (+10%)
22 <0> (ø)
:arrow_down:

src/seedu/addressbook/timeanddate/TimeAndDate.java
100% <100%> (ø)
5 <1> (+1)
:arrow_up:

src/seedu/addressbook/data/AddressBook.java
71.66% <100%> (+1.66%)
14 <0> (ø)
:arrow_down:

src/seedu/addressbook/commands/FindCommand.java
75% <50%> (ø)
5 <1> (ø)
:arrow_down:

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 f995339...4d6b3b8. Read the comment docs.


Speedometer panel

As a driver I want a panel indicating speed of the car so that I can know how fast im going

No description provided.

Scenario: While the car is driving at a high speed
Given:The speed is above the limit
When: The car should be able to detect and calculate the speed
Then: Display the speed readings and a warning "above speed limit" on the speed meter


How best to implement hidePrepost() function?

JTAC v7.0.6 - iOS 10
JTAppleCalendar works fine here, loads up and scrolls perfectly, but ... was unable to hide the in-out dates and wish to. Then i reviewed Jay's new FAQ guide! Sweet.
Added --> configureCell(view: cell, cellState: cellState) function ... and called in cellForItemAt method.
Added --> handleCellVisibility(cell: CustomCell, cellState: CellState) function ... to class.
presto!

haha. i never had an issue opened with a compliment.
Thanks man :)
So there are no problems right?

closing issue. As there seems to be no problem here

Hey sir! No problems here. i wanted to delete issue, couldn’t, so i rephrased…but forgot to close issue! =) Thanks!! Hope all is well.
Sean

On Aug 1, 2017, at 12:06 AM, JTAppleCalendar<EMAIL_ADDRESS>wrote:
haha. i never had an issue opened with a compliment.
Thanks man :)
So there are no problems right?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/patchthecode/JTAppleCalendar/issues/512#issuecomment-319261994, or mute the thread https://github.com/notifications/unsubscribe-auth/ABS2Jb2utLbwRY5Oe34qqHmFRdi76s2pks5sTqQ1gaJpZM4OpLXk.

All is well man.
Have a good one 🍻


Missing white space after "Standards for Study" on row 485

A white space is missing at the end of the string 'Standards for Study' on row 485 in order to avoid for this string and the study name to be displayed improperly.
The solution is simply to add a whitespace after the word "Study" as shown below:
<xsl:variable name="term_STANDARDS_FOR_STUDY">
<xsl:call-template name="lookupTerm"><xsl:with-param name="term" select="'Standards for Study '"/></xsl:call-template>
</xsl:variable>

The issue is actually in the dictionary.xml file. There should not be a space:

I will fix this.


Usage with Jetstream

I created a new Jetstream Project with Teams today and tried integrating tenancy with jetstream.
I think it could be quite easy with using the Jetstream actions on one hand and implementing just a custom middleware which sync the current jetstream team with the tenancy tenant.
But: The default team already extends the JetstreamTeam Base Model so I am not able to extend to the Tenant as well. Maybe it could be solved with creating a trait in addition to the Tenant base model?

Hey,
I'll be building a Jetstream integration soon.
You don't need to extend the base tenant model, you just have to implement the interface.
There's no need to create new traits, because the base model is already composed from traits, and has very little custom stuff.

Hey @obrunsmann i can't get login and registration on the tenant domain to work. I'm using the same setup as yours, but the users are created in the central database instead of the tenant one. Can u help me setup mine?

@saademotion In fact it was relatively easy.. I just used Fortify's Team Model as Tenant Model and wrote a custom identification middleware:
    public function handle(Request $request, Closure $next)
    {
        if (auth()->user()) {
            tenancy()->initialize(auth()->user()->currentTeam);
        }

        return $next($request);
    }

That's all. I putted all my routes in web.php instead of tenant.php.

is broken on on Laravel 8 with tenancy 3.4 ?
It happens to me when I try to login / register in a tenant:
Illuminate\Database\QueryException
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'maindomain.users' doesn't exist (SQL: select * from `users` where `email` =<EMAIL_ADDRESS>limit 1)

SESSION_DRIVER=database
"laravel/framework": "^8.12",
"laravel/jetstream": "^2.0",
"laravel/sanctum": "^2.6",
"laravel/tinker": "^2.5",
"livewire/livewire": "^2.0",
"stancl/tenancy": "^3.4"

is broken on on Laravel 8 with tenancy 3.4 ?
It happens to me when I try to login / register in a tenant:
Illuminate\Database\QueryException
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'maindomain.users' doesn't exist (SQL: select * from `users` where `email` =<EMAIL_ADDRESS>limit 1)

SESSION_DRIVER=database
"laravel/framework": "^8.12",
"laravel/jetstream": "^2.0",
"laravel/sanctum": "^2.6",
"laravel/tinker": "^2.5",
"livewire/livewire": "^2.0",
"stancl/tenancy": "^3.4"

is broken on on Laravel 8 with tenancy 3.4 ?
It happens to me when I try to login / register in a tenant:
Illuminate\Database\QueryException
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'maindomain.users' doesn't exist (SQL: select * from `users` where `email` =<EMAIL_ADDRESS>limit 1)

SESSION_DRIVER=database
"laravel/framework": "^8.12",
"laravel/jetstream": "^2.0",
"laravel/sanctum": "^2.6",
"laravel/tinker": "^2.5",
"livewire/livewire": "^2.0",
"stancl/tenancy": "^3.4"

This also happens to me, any idea?

is broken on on Laravel 8 with tenancy 3.4 ?
It happens to me when I try to login / register in a tenant:
Illuminate\Database\QueryException
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'maindomain.users' doesn't exist (SQL: select * from `users` where `email` =<EMAIL_ADDRESS>limit 1)

SESSION_DRIVER=database
"laravel/framework": "^8.12",
"laravel/jetstream": "^2.0",
"laravel/sanctum": "^2.6",
"laravel/tinker": "^2.5",
"livewire/livewire": "^2.0",
"stancl/tenancy": "^3.4"

This also happens to me, any idea?

Related #547

Related #547

is broken on on Laravel 8 with tenancy 3.4 ?
It happens to me when I try to login / register in a tenant:
Illuminate\Database\QueryException
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'maindomain.users' doesn't exist (SQL: select * from `users` where `email` =<EMAIL_ADDRESS>limit 1)

SESSION_DRIVER=database
"laravel/framework": "^8.12",
"laravel/jetstream": "^2.0",
"laravel/sanctum": "^2.6",
"laravel/tinker": "^2.5",
"livewire/livewire": "^2.0",
"stancl/tenancy": "^3.4"

i am having the same issue what is the clear solution to this ?

Any news or updates?  I am also having this issue

@victorelec14  In order to integrate stancl/tenancy with Jetstream you need to make the followings  changes:

Open the config/database.php file and add a tenant connection:

'connections' => [
    'tenant' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', '<IP_ADDRESS>'),
        'port' => env('DB_PORT', '3306'),
        'database' => null,
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        ]) : [],
    ],
],

Open the config/tenancy.php file, find the database.central_connection option and set to env('DB_CENTRAL_CONNECTION', 'central'). Then find the database.template_tenant_connection and replace null with env('DB_CONNECTION', 'tenant').
Open your .env file and set DB_CONNECTION to tenant. This tells Jetstream that the default connection is tenant, not central.
Finally, open the config/fortify.php and change middleware option to this:

use Stancl\Tenancy\Middleware\InitializeTenancyByDomain;
use Stancl\Tenancy\Middleware\PreventAccessFromCentralDomains;

...

'middleware' => [
    'web',
    InitializeTenancyByDomain::class,
    PreventAccessFromCentralDomains::class,
],

Please let me now if this works for you

@victorelec14 In order to integrate stancl/tenancy with Jetstream you need to make the followings changes:

Open the config/database.php file and add a tenant connection:

'connections' => [
    'tenant' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', '<IP_ADDRESS>'),
        'port' => env('DB_PORT', '3306'),
        'database' => null,
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        ]) : [],
    ],
],

Open the config/tenancy.php file, find the database.central_connection option and set to env('DB_CENTRAL_CONNECTION', 'central'). Then find the database.template_tenant_connection and replace null with env('DB_CONNECTION', 'tenant').
Open your .env file and set DB_CONNECTION to tenant. This tells Jetstream that the default connection is tenant, not central.
Finally, open the config/fortify.php and change middleware option to this:

use Stancl\Tenancy\Middleware\InitializeTenancyByDomain;
use Stancl\Tenancy\Middleware\PreventAccessFromCentralDomains;

...

'middleware' => [
    'web',
    InitializeTenancyByDomain::class,
    PreventAccessFromCentralDomains::class,
],

Please let me now if this works for you

A simpler solution is follow step 4 and add protected $connection = 'tenant'; to User model.

Managed to use Jetstream with Tenancy v3
https://github.com/zupolgec/fortitenant
Main changes:

set ['web', 'universal', InitializeTenancyByDomain::class] as middlewares in both config/fortify.php, config/livewire.php and config/livewire.php (if using Livewire)
added @jhoopes suggestion from https://github.com/archtechx/tenancy/issues/702, just customised and cleaned


Children extension

In the upcoming (1.0.0-beta.5) release of stac-spec, a few new extension conformance classes will be added. Among them is an extension which will add a /children endpoint. Quoting the tentative stac-spec document,
"A STAC API Landing Page (a Catalog) can return information about the Catalog and Collection child objects it contains using the link relation children to an endpoint /children. The purpose of this endpoint is to present a single resource from which clients can retrieve all the immediate child objects of a Catalog, which may be Catalog or Collection objects. The child link relations in a Catalog already allow for describing these relationships, but require a client to retrieve each resource URL to find any information about the children (e.g., title, description), which can cause significant performance issues in user-facing applications."
More, here: https://github.com/radiantearth/stac-api-spec/blob/5a694d5daf838e5edb974a2e7fdfa59547435340/children/README.md

@moradology Does this mean that there will now need to be a /catalogs route? Every catalog now is a separate api instance I think - is this changing? This may not be as complicated as it seems ...

This new conformance class should be read as only an extension to core and is not required to host a valid STAC API which advertises the core but not the children conformance class. Each catalog can still be treated as a separate API instance but, assuming this extension is implemented, those catalogs with other catalogs immediately under them can be expected to advertise said sub-catalogs and any subordinate collections at a new <super-catalog>/children endpoint

@moradology Ok I think I understand what you are saying. Right now a root catalog is created automatically and child links are added by calling the /collections route. Someone would need to be able to inject catalog links in to the root catalog? A root catalog would have to be told what catalogs exist underneath it or would those catalogs only be displayed in the /children endpoint? I think it's a good idea.


Can´t Hide switch_backlight ?

Prerequisite

[X] Yes, I've read the readme completely.

Cache

[X] Yes, I've cleaned accessory cache and the issue still exists.

Version
1.7.0-beta.53
Device Infomation JSON File
{
    "name": "Tuya",
    "options": {
        "projectType": "2",
        "accessId": "",
        "accessKey": "",
        "countryCode": 43,
        "username": "",
        "password": "",
        "appSchema": "smartlife",
        "deviceOverrides": [
            {
                "id": "bf89a1db54aa78eec3ipmp",
                "unbridged": false,
                "schema": [
                    {
                        "code": "switch_inching",
                        "hidden": true
                    },
                    {
                        "code": "switch_backlight",
                        "hidden": true
                    }
                ]
            }
        ],
        "debug": false
    },
    "_bridge": {
        "username": "",
        "port":
    },
    "platform": "TuyaPlatform"
}

Device Control Mode
DP Instruction
Logs
No response
Other Infomations
Hey everyone! I am fairly new at the whole Gitub/Homebridge topic.
My problem is that I can´t hide switch_backlight or to put it better the DP_Code from switch_backlight. It worked for switch_inching without problems. I understood it from the introductions that you can hide every DP_Code or am I wrong?
Is it not possible to hide switch_backlight or is there some roundabout way ?

umm. Me too can't hide device.
@0x5e Any suggestions ?

Try using the Device ID from the Tuya ito platform instead of the device name. I tried it and it worked. But you have to wait a while for an update from the Tuya ito platform and plugin first.
"deviceOverrides": [
{
"id": "dgdgdfgdfgdfg69fnl7x",
"category": "hidden"
},
{
"id": "dgdgdfgdfgwerwroyz",
"category": "hidden"
}
]
},

With this method I would hide the whole switch. I just want to hide the DP Instruction "switch_backlight" not the whole switch. It works for the DP Instruction "switch_inching" but not backlight.

I think switch_inchin can't hide.


SharePoint on-premises App Only Working for Organizational Accounts

SharePoint 2016 Farm, with Azure AD P1
I've been able to get the new Azure SharePoint on-premises Application set up and working, but only for organizational (Work or School) accounts.
Microsoft (personal) Accounts are able to successfully authenticate with Azure AD, and get passed to the SharePoint server, but once there they are not able to access the SharePoint site. Even though they have been added to the Owner Group, they still are presented with "You need permission to access this site." And, when attempting to request permission by completing the form, it also throws this error:

"Sorry, something went wrong
The specified user<EMAIL_ADDRESS>could not be found.  TECHNICAL DETAILS
Troubleshoot issues with Microsoft SharePoint Foundation.
Correlation ID: 3c7b829e-7f22-a014-7c4e-19f702a420f2"

From the logs:

PermissionMask check failed for {F0467CD8-5A4E-4A45-A19D-1D786F2A979A}. Asking for 0x00010000, have 0x00000000
Unknown SPRequest error occurred. More information: 0x80070005
SPRequest.OpenWeb<EMAIL_ADDRESS>AppPrincipalName= ,bstrUrl=https://aad.COMPANY.com/

Any suggestions?

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

ID: abc120a6-1b98-874a-1cfb-b43456f4a718
Version Independent ID: 1008851f-9a43-953c-e6c1-269397268c72
Content: Tutorial: Azure Active Directory integration with SharePoint on-premises
Content Source: articles/active-directory/saas-apps/sharepoint-on-premises-tutorial.md
Service: active-directory
GitHub Login: @jeevansd
Microsoft Alias: jeedes

Not sure why the formatting of my posts are all bold & large fonts, sorry 'bout that.

@LarryBolton Thanks for your feedback! We will investigate and update as appropriate.

@LarryBolton Bold and large font is ok. No worries.

@LarryBolton For B2B scenario here we are seeking the guidance internally.

Ok, thank you for investigating this issue.
The desire is to allow external users to access the SP 2016 site via Azure AD, where those external users might only have a free email account (e.g. Outlook, Gmail, Yahoo, etc.) that they use for business purposes. There is the expectation that this functionality will be similar to the type of external users access that is available with SPO, with the goal being to avoid adding external users to the internal AD system.
We have been able to follow the tutorial to successfully allow external users to authenticate into Azure AD, but they are only able to access SharePoint if they have an organizational account.
We have been treating this as a technical issue, and wondering if we need to make a change in our setup.
Can you please clarify, is this a technical issue or a governance issue?  Meaning, are you seeking guidance to find out what needs to be changed, technically, to enable this functionality?  Or, are you aware of the technical issue, and seeking guidance to determine if this will be permitted?

@chetansriv for visibility.

#jeevansd have you received any guidance on this issue?  To reiterate, we are hoping to have the same capability in SPO, where we can authenticate external Microsoft Accounts (personal accounts) into SharePoint 2016 On-prem. Thank you.

@jeevansd
I've the exact same problem here. I can connect using accounts of my organization. But when I try to connect using a gmail account I get the same behavior as described by @LarryBolton

@tbebekis Yes we will soon provide you the option to configure on how to handle the UPN claim with that you can remove that #EXT# and normalize the UPN value. We are working on this feature internally and it should be available by end of next month around. We will update the doc with the instructions.

#please-close


run verdaccio error

Describe the bug
Installation is normal on my own local machine(win 7 64bit), but running verdaccio command prompts after installation on the server(windows server 2008 R2 SP1) is not an internal or external command.
Screenshots

Please check your Node.js setup, the problem seems to be there.
https://github.com/verdaccio/verdaccio/issues/901
https://github.com/verdaccio/verdaccio/issues/903

you're right
The global module path of nodejs is modified by me, which results in the default global path of nodejs stored in the PATH of the current user variables.


Webhook missing content

I don't know if its a bug but I configured the WebHook to send all events and I suppose I should receive the same information for all events just like this.
My Problem is that when I get a "MessageHeld" event from WebHook, the field 'tag' comes empty (null). Only in this case. In the others I receive the content in the Header called "x-postal-tag".
In all messages I send, I put a content for "x-postal-tag", but I don't receive back when I get a "MessageHeld" event.
Is there any place that I can configure out the "tag" for a "MessageHeld" event?
{
  "message": {
    "id": 155972,
    "token": "se5iWRROSnBw",
    "direction": "outgoing",
    "message_id"<EMAIL_ADDRESS>    "to"<EMAIL_ADDRESS>    "from"<EMAIL_ADDRESS>    "subject": "Aviso de Registro em Cartório.",
    "timestamp":<PHONE_NUMBER>.7703218,
    "spam_status": "NotChecked",
    "tag": null
  },
  "status": "Held",
  "details": "Recipient<EMAIL_ADDRESS>is on the suppression list (reason: too many soft fails)",
  "output": "",
  "sent_with_ssl": null,
  "timestamp":<PHONE_NUMBER>.8242645,
  "time": null
}

----- Edit 1 ------
More informations:
Here is the Header

Interesting, I can't see anything that would treat MessageHeld webhooks separately from the others. Can you show us the output of the other webhooks where you do receive the extra headers?

Here some examples:
{
   "event":"MessageLoaded",
   "timestamp":1558103856.758517,
   "payload":{
      "ip_address":"ZZ.ZZ.ZZ.ZZ",
      "user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 12_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",
      "message":{
         "id":291492,
         "token":"GttaFb1RX45q",
         "direction":"outgoing",
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>         "subject":"Test Email",
         "timestamp":1558061209.58539,
         "spam_status":"NotChecked",
         "tag":"me398n9v789c2"
      }
   },
   "uuid":"7ec35cdc-a679-4148-ba18-ce8feb800be2"
}

{
   "event":"MessageSent",
   "timestamp":1558103822.9183822,
   "payload":{
      "message":{
         "id":297312,
         "token":"AuQYFfq9k0zQ",
         "direction":"outgoing",
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>         "subject":"-VAR32- Comunicado Importante",
         "timestamp":1558103819.7004511,
         "spam_status":"NotChecked",
         "tag":"eo471le5y5adb"
      },
      "status":"Sent",
      "details":"Message for<EMAIL_ADDRESS>accepted by hotmail-com.olc.protection.outlook.com (YY.YY.YY.YY) (from XX.XX.XX.XX)",
      "output":"250 2.6.0<EMAIL_ADDRESS>[InternalId=16870631618815, Hostname=BN3NAM04HT106.eop-NAM04.prod.protection.outlook.com] 13383 bytes in 0.717, 18.227 KB/sec Queued mail for delivery -\u003e 250 2.1.5\n",
      "sent_with_ssl":false,
      "timestamp":1558103822.382668,
      "time":1.52
   },
   "uuid":"a6f85da0-d4fc-426e-84b0-a857506b7b86"
}

{
   "event":"MessageDelayed",
   "timestamp":1558103813.327424,
   "payload":{
      "message":{
         "id":297305,
         "token":"jmdGvSixyXmK",
         "direction":"outgoing",
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>         "subject":"-VAR32- Comunicado Importante",
         "timestamp":1558103777.403115,
         "spam_status":"NotChecked",
         "tag":"we8552rq8r9dd"
      },
      "status":"SoftFail",
      "details":"Temporary SMTP delivery error when sending to hotmail-com.olc.protection.outlook.com (ZZ.ZZ.ZZ.ZZ)",
      "output":"451 4.7.650 The mail server [XX.XX.XX.XX] has been temporarily rate limited due to IP reputation. For e-mail delivery information, see https://postmaster.live.com (S775) [HE1EUR01FT049.eop-EUR01.prod.protection.outlook.com]\n",
      "sent_with_ssl":false,
      "timestamp":1558103812.8147244,
      "time":0.23
   },
   "uuid":"839d5019-56b1-4680-b7fa-e24654ced597"
}

Looking at the source code, I'm a little confused by the tag field but I'd imagine that the problem is that the bounce message you're seeing is from the recipients server so doesn't have the tag header even though Postal knows what message the bounce is for.
The best way of associating messages to webhooks is to use a combination of the id and token fields from the message object as the send function should tell you what they are when you send the message.

@willpower232 thank you, I will try to get it from database, append to the message and send it again.

@willpower232 Another thing I discovered, in the postal-server-x db, the table "messages", the field "tag" is null when the message is Held. But looking in the raw_header the "tag" is there.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com.br; s=mailtrust-qQoNqS; t=1557756197; bh=HAkJOHsPkXUQ2M/apfudZGzJY/0cJkemsmd/isCgQ3E=; h=message-id:date:subject:from:to; b=AdFc2iBJoDv1FSQqAx54PSS6IlBPwgOmb8gCRWvtp4WwPx0boeXy1XPgBdqwRH0JBqKQb29NmbU34KNEu04PzvJrBkmJYn9I5ZPmzw0wsqMzC/dEVVti9l3AuD9XM1I5AMoD17Q6fi3pQ0QZquLt/QFqL7zvjfrV5P5jpKLhD88=
X-Postal-MsgID: OCEVjv37QezF
Received: from panel.abcd.xyz (::ffff:XX.XX.XX.XX [::ffff:XX.XX.XX.XX]) by sender.abcd.psi.br with SMTP; Mon, 13 May 2019 14:03:17 -0000
Return-Path<EMAIL_ADDRESS>Message-ID<EMAIL_ADDRESS>Date: Mon, 13 May 2019 14:03:15 +0000
Subject: Comunicado Teste
From: "email teste"<EMAIL_ADDRESS>Reply-To: "email teste"<EMAIL_ADDRESS>To: person<EMAIL_ADDRESS>MIME-Version: 1.0
Content-Type: multipart/alternative;
 boundary="_=_swift_v4_1557756195_a2a17d1f5a3a6f283b04f72ac30a7b5d_=_"
X-Transacional-UID: nb000rnanp53b
X-Sender<EMAIL_ADDRESS>X-Receiver<EMAIL_ADDRESS>x-postal-tag: nb000rnanp53b
X-ABCD-Mailer: SwiftMailer - 5.4.x

The tag field is a little odd to me, it seems to be sourced from a couple of places and I'm not sure if it ever comes from the header.
As I said, the best way of referencing the message is a combination of the id and token.

Actually, I need the tag because it's an ID from another system. This other system is not related to the postal and I don't have access to it. This other system also receive the webhooks.
I will try to send the "MessageHeld" to another server, get the TAG from the "raw_header", insert in original webhook and send it again.
Thank you for the advice.

Ah I see, you might have to record the match up of the tag from the other system and Postals id/token yourself somehow then.


Add methods to interact with a single relay

In accordance with nostr-tools https://github.com/nbd-wtf/nostr-tools#interacting-with-a-relay
We could implement methods to interact with a relay.
For websocket connection it could be used: https://github.com/Textalk/websocket-php

Totally fine with using textalk/websocket - that's currently a dependency in the Drupal module, but would love to get rid of it.
Fwiw, this is the code in the module - the check on the response should be cleaned up totally though :)
      $client = new Client($relay);
      $client->send($message);
      $response = json_decode($client->receive());
      $success = TRUE;
      $failure = '';
      if (!empty($response[3])) {
        $success = FALSE;
        $failure = $response[3];
      }

Aight! I am on it ;)

The response from a release, once decoded, has 4 possible values, e.g, for success:
[0] => OK [1] => abf48fb42fcde52fd25bb485e084b52d600618fd56ef74ab46ee5b88dd1dcb1a [2] => 1 [3] =>
In case of failures, the error message will be in the third key, and 2 will be empty then.

Added publish method in https://github.com/swentel/nostr-php/pull/13

Renamed the issue title, otherwise we could just go on forever in this one :)


cleanup(tests,virtctl): Drop virtctl expose functests

What this PR does
The functional tests are testing functionality that is outside of the scope of this command. The command is only creating a Service, while the functional tests are asserting that basic network functionality of Kubernetes is behaving correctly.
By ensuring the command creates Services as expected, all important test cases in the scope of the command are already covered.
Therefore the the functional tests of virtctl expose are dropped.
The helper generateHelloWorldServer is moved closer to its remaining use in bindingplugin_slirp.go. The no longer used helpers in libnet are removed.
Before this PR:
virtctl expose functests test out of scope behavior of virtctl expose.
After this PR:
virtctl expose functests do not duplicate unit tests and do not test out of scope behavior.

Fixes #
Why we need it and why it was done in this way
The following tradeoffs were made:
The following alternatives were considered:
Links to places where the discussion took place:
Special notes for your reviewer

Checklist
This checklist is not enforcing, but it's a reminder of items that could be relevant to every PR.
Approvers are expected to review this list.

[ ] Design: A design document was considered and is present (link) or not required
[ ] PR: The PR description is expressive enough and will help future contributors
[ ] Code: Write code that humans can understand and Keep it simple
[ ] Refactor: You have left the code cleaner than you found it (Boy Scout Rule)
[ ] Upgrade: Impact of this change on upgrade flows was considered and addressed if required
[ ] Testing: New code requires new unit tests. New features and bug fixes require at least on e2e test
[ ] Documentation: A user-guide update was considered and is present (link) or not required. You want a user-guide update if it's a user facing feature / API change.
[ ] Community: Announcement to kubevirt-dev was considered

Release note

None

/cc @EdDev

For POV, looks good
/lgtm

/kind cleanup

#12855 was merged
/hold cancel

/cherry-pick release-1.3


ESLint: Unexpected use of file extension "ts" for '.../something.ts' import/extensions rule

Hey folks!
I am trying to setup react-native project with many eslint plugins and so on, and got stuck on that problem for freaking many hours, could someone help with that?
I already tried everything I was able to find in google/gpt answers, and for now I am done, down below, you can check my tsconfig/esling.js/prettier/package.json files, also I am share some webstorm screenshots
I was trying to make Webstorm import files without extensions but for some reason, I can't understand this is doesn't seems to work, glad for any help!
Error:

Code style in webstorm:

package.json
tsconfig.json
Eslint setup:
module.exports = {
env: {
es2021: true,
node: true,
},
root: true,
extends: [
'plugin:react/recommended',
'airbnb',
'plugin:import/recommended',
'airbnb-typescript',
'airbnb/hooks',
'plugin:@typescript-eslint/recommended',
'prettier',
'plugin:prettier/recommended',
],
plugins: ['react', 'react-hooks', '@typescript-eslint', 'prettier', 'simple-import-sort', 'react-native', 'import'],
rules: {
'prettier/prettier': ['error', { semi: true }],
'react/jsx-filename-extension': [
1,
{
extensions: ['.js', '.jsx', '.ts', '.tsx'],
},
],
'import/extensions': [
'error',
'ignorePackages',
{
js: 'never',
jsx: 'never',
ts: 'never',
tsx: 'never',
},
],
'no-plusplus': ['error', { allowForLoopAfterthoughts: true }],
'@typescript-eslint/ban-ts-comment': 2,
'react/display-name': 2,
'react/function-component-definition': 0,
'no-use-before-define': 2,
'@typescript-eslint/no-use-before-define': 2,
'no-console': [2, { allow: ['warn', 'error'] }],
'react-native/no-unused-styles': 1,
'import/order': 0,
'no-underscore-dangle': 2,
'react/jsx-props-no-spreading': 0,
'no-nested-ternary': 2,
'no-promise-executor-return': 0,
'@typescript-eslint/no-explicit-any': 0,
'import/prefer-default-export': 0,
'@typescript-eslint/no-var-requires': 0,
'simple-import-sort/exports': 1,
'react-hooks/exhaustive-deps': 1,
'simple-import-sort/imports': [
'warn',
{
groups: [
['^react', '^@?\w'],
['^\u0000'],
['^(@|components|navigation|screens)(/.|$)'],
['^(@|hooks|libs|analytics|rx|services|types|utils)(/.|$)'],
['^(@|assets|configs|constants|theme)(/.|$)'],
['^\.\.(?!/?$)', '^\.\./?$'],
['^\./(?=./)(?!/?$)', '^\.(?!/?$)', '^\./?$'],
],
},
],
},
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 2021,
sourceType: 'module',
project: './tsconfig.json',
},
settings: {
react: {
pragma: 'React',
version: 'detect',
},
},
};

You should never use .ts suffix which is how TypeScript works, instead, you should use .js even for .ts files.
This has nothing to do with this plugin.

You should never use .ts suffix which is how TypeScript works, instead, you should use .js even for .ts files, or just omit it, the bundler with handle that.
This has nothing to do with this plugin.

I understand why we need this rule, its query.ts file, and I am importing something from it, and my question was: What I need to do, to make eslint or IDE import files like something/query automatically without extension in path, because I can't make it happen

@JounQin
This is expected result

It seems your IDE's responsibility?

There a screenshot, where I turned off that behavior inside webstorm settings


Perhaps add details about the Incidents filter options

[Enter feedback here]
Incidents (for MDE specifically) can be filtered using a variety of sources including EDR, AV, Custom TI and 3rd party.
But what does each provide? having some details on each of these options is helpful to understand the impact of plugging in 3rd party, custom TI, for instance.

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

ID: c12a247e-0591-e03a-4f65-7e91e9c143cd
Version Independent ID: c14c46c7-a3f8-9e6a-fec9-5c8bb6010eb2
Content: View and organize the Incidents queue
Content Source: microsoft-365/security/defender-endpoint/view-incidents-queue.md
Service: microsoft-365-security
Sub-service: mde
GitHub Login: @Dansimp
Microsoft Alias: dansimp

@Dansimp Please help us in resolving this issue. Thanks


chore: bring back correct versioning

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

GitHub release
v5.0.22

Your semantic-release bot :package::rocket:


mergeProps Investigation

The Autocomplete template component has some issues with theme merging. We need to investigate the issue further and refactor as needed to resolve.
Temporary solution:
https://github.com/searchspring/snap/blob/theme-reactivity-refactor/packages/snap-preact-components/src/components/Templates/Autocomplete/Autocomplete.tsx#L184

This has been resolved and is working as expected in the templates branch.


Add UI Fixes such as Progress Bar in Web APP

Description:
The web app will have some UI fixes which will make the app more user friendly. The changes will also involve adding of view models.
Problem:
The app lacks user convenience.
Proposed Solution:
The app will become efficient and user friendly.
Steps for Implementation:

Adding progress bar during login/signup
Step two...

Adding progress during loading data

Adding UI changes while accepting and sending requests.

Additional Context:
I am GSSOC'24 contributor and would like to contribute to the issue.

Please assign this issue to me.


Problem editing zabbix problem panel in grafana

Describe the bug
I cant edit zabbix problem panel, after update grafana 6.4.4
Screenshots

Software versions

Grafana
Zabbix
Grafana-Zabbix Plugin

6.4.4
4.4.0
3.10.4

We have the same issue

I have the same problem.
Grafana: 6.5.1
Zabbix: 4.0.10
Zabbix Plugin: 3.10.4

This is related to: #817
No reply from the zabbix plugin dev for more than a month... We need to wait

We have the same issue too. Up+

Same issue

The same issue in Grafana 6.5

Same issue.
Grafana 6.4.1 and Zabbix Plugin 3.10.4.

Same issue.

Grafana
Zabbix
Grafana-Zabbix Plugin

6.4.4
4.0.4
3.10.4

the same issue

grafana 6.5.2
zabbix 3.0 LTS
grafana-zabbix-plugin 3.10.4

duplicates #817


Explore NPM npm/v1/user API

Could be useful to explore the user API and found a way to fetch data for given user (if required)
See (old) doc: https://github.com/npm/registry/blob/master/docs/user/profile.md

@kishore881 Yes the usecase is to use that to fetch more data about maintainers
The last endpoint seems quite cool, not fully related to the registry API but I guess we can implement it here.

ohh in that case the users api in docs would not be useful at all since it returns the the caller's own profile details only but not for any given username.
I will try to use 'https://www.npmjs.com/~{username}' and extract as much info as possible to build the same User object from registry docs.

Hmm still a lot of useful informations (I checked with my acccount)
curl --request GET \
  --url 'https://www.npmjs.com/~fraxken' \
  --header 'x-spiferack: 1'

Verified twitter & github accounts
Links to some avatars (could solve our big struggle with avatar.io)
Packages count and the full list (paginated)

And I guess we will never have tfa or email validation for obvious security reasons

ohh, didn't notice the avatars already being shown.. unavata.io has rate-limit 300req/min..? is it not enough..? it also provides a json response with the url to image with ttl 1yr. would that be any useful
{"url":"https://images.weserv.nl/?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F2096101%3Fs%3D400%26v%3D4&default=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F2096101%3Fs%3D400%26v%3D4&l=9&af=&il=&n=-1&w=400&ttl=365d"}

will a new version of this package be published..? to refer for imageElem in the cli

@kishore881 I will release soon (or maybe @PierreDemailly if he want to do it). I'm quite busy this week because of family meals :)


Add Instructions for Notebook Use

This PR

add instructions on using django-estimators without a django project.
removes hardcoded dependancy for factories using the estimator and dataset directory

Coverage decreased (-3.9%) to 91.781% when pulling b03d08429223b287b25f76453e72f67f0c8ad37c on feature/update_docs into 1e8cafde2e3e26fac02fe905053ae0d21e5fc8d2 on master.


Consider using the FileFormat::get_ext when creating ListingOptions

Is your feature request related to a problem or challenge?
When I use the following code to attempt creating external tables using SQL and Rust API respectively, a "Corrupt footer" error occurs. Eventually, I discovered that this was because there were files of other formats in the partitioned directory, but DataFusion was reading them as data files. I think this behavior is confusing, because the SQL specifies the Parquet format, and the Rust code also creates a new ParquetFormat.
CREATE EXTERNAL TABLE hits
STORED AS PARQUET
LOCATION 'partitioned/';

  let mut opts = TableParquetOptions::default();
  opts.set("pushdown_filters", "true").unwrap();
  let format = ParquetFormat::new().with_options(opts);
  let options = ListingOptions::new(Arc::new(format))
      .with_table_partition_cols(vec![("A".to_owned(), DataType::Int32)]);
  ctx.register_listing_table(
      "hits",
      "partitioned/",
      options,
      None,
      None,
  )
  .await

Describe the solution you'd like
Currently, when creating ListingOptions using format, format.get_ext is not called. I believe format.get_ext should be used as the default file extension filter, which would also better align with the definition of FileFormattrait. I you agree with me, I could submit a pr to make that change.
impl ListingOptions {
  /// Creates an options instance with the given format
  /// Default values:
  /// - no file extension filter
  /// - no input partition to discover
  /// - one target partition
  /// - stat collection
  pub fn new(format: Arc<dyn FileFormat>) -> Self {
      Self {
          file_extension: String::new(),
          format,
          table_partition_cols: vec![],
          collect_stat: true,
          target_partitions: 1,
          file_sort_order: vec![],
      }
  }

Describe alternatives you've considered
No response
Additional context
No response

@alamb PTAL

I you agree with me, I could submit a pr to make that change.

This proposal makes sense to me. Thank you @waruto210


CoreML convert

Is there any way to convert this model for use with CoreML?

I tried to convert the model to CoreML model, but could not do it.
Probably, CoreML does not support complex model like anaGo.
Thanks