WIP: Jitsi extension

This PR implements the features requested in lnbits/lnbits/issues/211.
An extension that creates a Jitsi chat bot which allows participants to send funds back/forth in a Jitsi meeting.

This initial implementation is as simple as possible: we use the Jitsi iFrame API to create a chat bot that allows payments to be made by participants in the meeting. The entire UX is via chat commands. This also means that we cannot modify the video conferencing UI that participants use in any way. When participants are invited to the meeting, the UI they see is the standard Jitsi UI.

The more sophisticated implementation (which would require a lot more work than the chat bot) would be to create a custom UX that uses either the Jitsi low-level lib-jitsi-meet api or Jitsi Web SDK for video conferencing functionality. This would be a bespoke LNBits video conferencing app. Invited participants would then go directly to the LNBits Jitsi app instead of using a standard invite page hosted by Jitsi. With a custom LNBits video conferencing app we could then implement any fancy UX we want e.g. overlaying LNUrl QRs on participants' thumbnails. If a custom LNBits video conferencing app is desired, it can be worked on as a separate PR.

TODO: Chat Bot

[x] Allow host to configure the room name. (right now it's hardcoded for testing).

[ ] Handle changes to the room name or configuration during a conference call.

[x] Each participant given their own LNBits wallet.

[ ] Handle changes to the participant's nickname or other details during a conference call.

[ ] Provide a chatbot with an interface like LightningTipBot. We want the following commands:

[x] /help

[x] /balance

[x] /pay

[x] Payments can be done from an external wallet [scan qr code from phone wallet]

[x] Show the participant a lightning invoice.
[-] Show the participant a QR code.

Displaying QR codes isn't possible because the Jitsi API doesn't allow us to display images in chat or overlayed on video.

[ ] Show recipient a notification when they receive a payment made using an invoice paid with an external wallet.

Payments can be done with an LNBits wallet

[x] If the participant has a balance in their LNBits wallet, use it to pay the other participant instead of showing an invoice.

[x] Show participant a notification when they receive a payment.
[ ] When a participant joins a meeting, show them the URL to their LNBits wallet.
[ ] Streaming sats: payments per minute while the participant is in the meeting.

[ ] Only while speaking.
[ ] Continuously, until payments are stopped.
[ ] Boost active payments by an amount.

[x] /deposit

[ ] Notify the participant when a deposit has succeeded (been received by LNBits).

[ ] /wallet: Sets the participants wallet to an LNBits wallet specified in a URL.

This allows the participant to use an LNBits wallet they already have.

[x] Port to FastAPI branch.

TODO: LNBits Jitsi App

[ ] WIP: Prototype UI using jitsi web sdk.

[ ] Port to lnbits/LNbits-Infinity.

@maxhillebrand's feature list

[x] Every jitsi call participant can get paid.
[x] Every jitsi call participant can pay others.
[-] Listeners of a livestream of the jitsi call can pay participants via scanning QR code. (Requires custom UI.)
[ ] Payments per minute with a custom sat amount, either only when the participant is speaking, or even when he is silent.

[ ] One-time boost payments with a custom sat amount.

[ ] Optionally a payment required to join the call as participant. This could even be split up, so that X% of the sent amount go directly to the organizer of the event as an upfront fee, while Y% are deposited into the participants lnbits wallet, for future payments in the call.
[x] At the end of the call, participants can withdrawl their sats to a different wallet, maybe they can stay in a long term lnbits wallet.
[ ] One potential problem that I see, is that jitsi participants are ephemeral and without long lived reputation. What will happen if a participant refreshes his browser, and appears as a new participant? He should still have the same lnbits wallet etc.
[x] Hopefully all of this can be done without changing jitsi code, or without requiring a self-hosted jitsi setup. It would be awesome if this can be done with ANY public jitsi server, or maybe even other call applications too!

Bugs

[ ] If the host (chatbot) refreshes the page and rejoins the chat, all the previous commands will be re-run. This is bad. Jitsi's chat doesn't give us timestamps for each message so we have to implement our own logging in such a way that we only process commands that have not been processed before.
[x] FIXED: When a participant is paid, the /balance command doesn't immediately show the updated balance. (The wallet is refreshed if the user manually browses to their LNbits wallet page.)
~[ ] The chatbot doesn't process it's own commands e.g. if the host types commands into the chat.~
[ ] Nicknames used by participants are not canonical. If 2 participants have the same nickname there's no way to uniquely identify them. Create cannonical names when participants join.
[ ] Nicknames used by participants have to be one word without spaces otherwise the chatbot won't parse the /pay command correctly.

If you'd like to donate some sats so I can add more features and bug fixes to this extension, feel free to use L1 or the lightning addresses below:

bc1qrajmrqf5lq2yv0nmaa5n544cjhgzlyed7s6p0xfslqmgf0n6ykps92qumq
<EMAIL_ADDRESS><EMAIL_ADDRESS>

Wow.

That's pretty awesome @nochiel, thanks a lot for tackling the feature!

Holy smokes I've wanted this to exist forever!
So can I share a jitsi link, and as host, make provide a cam-girl service?

Important: Make sure You develop this for the FastAPI branch, as we're switching very soon.

Will do, @arcbtc . Thanks for the heads-up.

So can I share a jitsi link, and as host, provide a cam-girl service, all I need is[ jitsi and lnbits?

Yes!  That will be work. I'll have something you can test in a few days.
 (The custom UI will require significantly more work and testing but as far as I can tell, all the features you and @MaxHillebrand  discussed are possible.

Hows this coming along, any help needed for switching what you have to FastAPI?

Hows this coming along, any help needed for switching what you have to FastAPI?

😄 I've been afk for the holiday for the past week and a half but I'll be back at it later this week. The FastAPI work looks straightforward. I'll definitely ping you when I need help. Thanks again and happy holidays!

@MaxHillebrand @arcbtc The chatbot works for basic functionality. If you'd like to test it I'd be grateful for the feedback.

I don't have a lnbits PR testing setup yet - would you mind sending some screenshots please?

I don't have a lnbits PR testing setup yet - would you mind sending some screenshots please?

Will do.

Yo. Sorry I overlooked this. Very cool. I couldnt get the bot to fire though

that's awesome progress! Thanks
any plans for recurring payments? Especially those conditional ones, like only pay to the person who's speaking.

Yo. Sorry I overlooked this. Very cool. I couldnt get the bot to fire though

Thanks for testing. You have to invite a new participant to the Jitsi meeting. Currently, the LNBits administrator can't control the chatbot. (Due to a quirk in how Jitsi's API works.)
So: invite 2 new test participants and access the bot through their chats. That should work.

that's awesome progress! Thanks any plans for recurring payments? Especially those conditional ones, like only pay to the person who's speaking.

Yes. I'm working on that.
I've been trying to figure out if we can do better than a chatbot, that is, have a proper LNBits meeting app that uses Jitsi, and that would give us a lot more flexibility to add/customise features. Hopefully I'll make some progress in that regard.

I've been trying to figure out if we can do better than a chatbot, that is, have a proper LNBits meeting app that uses Jitsi, and that would give us a lot more flexibility to add/customise features. Hopefully I'll make some progress in that regard.

I've been looking into this and experimenting with lib-jitsi-meet. I'm now not confident that it's worthwhile to create a bespoke Jitsi client because the increased flexibility I was hoping for comes at the cost of disproportionately increasing the size of the codebase. Essentially, we'd be recreating the web UI that Jitsi have already implemented.
So, @arcbtc and @MaxHillebrand, should I go ahead and finish work on the chatbot as described in the PR? Will that be suitable for your needs?

@MaxHillebrand : can we fork some parts of the existing web UI and put this ontop of lib-jitsi-meet?

I'll look into this.

can we fork some parts of the existing web UI and put this ontop of lib-jitsi-meet?

I'll block in some time do that next month because it's a substantial amount of work. That is, making a new video conferencing app that uses Jitsi.

can we add some GUI to the chatbot, maybe in form of buttons that the user can click? Telegram bots can do that.

Unfortunately, Jitsi doesn't have this functionality.

Bump! Is this extension still alive? :) Please merge main into this (or rebase) since a lot has happened since the last activity.

On Wed, 3 Aug 2022 at 15:59, calle @.***> wrote:

Bump! Is this extension still alive? :) Please merge main into this (or
rebase) since a lot has happened since the last activity.

Thanks. Yes, this is still alive. There still a bit of work I have planned
for it to improve UX, reliability, and to add features.

can we fork some parts of the existing web UI and put this ontop of lib-jitsi-meet?

@MaxHillebrand I've forked the Jitsi web UI and added a bunch of functionality to it. It will be possible afaict to add whatever functionality we want going forward with a nice UX instead of a chatbot. (I've been busy the past couple of months but now that I have a bit more time I'm optimistic that I'll have something for you to test soon.)

Bump. I want this extension to exist so bad. Rather than have a UI, we can have a simpler version for now, roll out, then update later. A simple version is better than now version.

Bump. I want this extension to exist so bad. Rather than have a UI, we can have a simpler version for now, roll out, then update later. A simple version is better than now version.

Thanks for the nudge @arcbtc. And sorry for the delay.
I've just wound up most of my other blocking commitments and will be working in this over this holiday because I'll have a lot more time to myself. You can expect some updates because I too need the functionality!

this extension should be its own repo @nochiel :)

we should move this PR to its own repo aswell!
are you still up for its? you than could more independently work on it!
i can help you setup the repository on lnbits organisation if you wish, or do your own :)

we should move this PR to its own repo aswell! are you still up for its? you than could more independently work on it!
i can help you setup the repository on lnbits organisation if you wish, or do your own :)

This sounds good. I'll block in some time this week to set up the repository and clean up the work on the forked client. (Right now it's a bit of a mess which is why I haven't pushed it.)
Then, by about 2022-04-29, I'll transfer the repository to the lnbits organization. Does that sound reasonable?

i create it push the code there and make you contributor

https://github.com/lnbits/jitsi

https://github.com/lnbits/jitsi/issues/1

i create it push the code there and make you contributor

Aha. Thank you! Much appreciated.


Need help with env: amplify cli ignores changes for cloud-backend, studio is broken

How did you install the Amplify CLI?
yarn
If applicable, what version of Node.js are you using?
20.9
Amplify CLI Version
12.10.1
What operating system are you using?
Mac
Did you make any manual changes to the cloud resources managed by Amplify? Please describe the changes made.
Yes, there are some custom modification, its live app. There are ttl on ddb adjusted, permissions for Cognito triggers to access GraphQL API, custom cdk to create deployment role. Nothing unusual.
Describe the bug
Env got messed up and I don't know how to recover.

'amplify status" shows deployed functions, and ignores local change in functions code
"amplify env checkout prod" works but #current-cloud-backend doesn't have all deployed functions
"amplify build" does nothing

In addition Amplify Studio was messed up, it didn't show data Data Manager, had to disable and re-enable. It recovered after 10-15 min
Expected behavior
It's hard to know what's the state of the project. I don't even know where to look, given amplify status is completely useless.
Reproduction steps
I don't know how it got into this state
This is how it's not working:
amplify update function
? Select the Lambda function you want to update postMessage
General information

Name: postMessage
Runtime: nodejs

Resource access permission

xxx (Query, Mutation)

Scheduled recurring invocation

Not configured

Lambda layers

Not configured

Environment variables:

NODE_OPTIONS: --enable-source-maps
dummy: test <-- added this new variable

Secrets configuration

Not configured

? Which setting do you want to update? Environment variables configuration
? Select what you want to do with environment variables: Remove existing environment variables
? Which environment variable do you want to remove:
NODE_OPTIONS
❯ dummy
amplify status - no changes!
Project Identifier
DiagnoseReportUploadError
✖ Sending zip
Log output

# Put your logs below this line
# bunch of lines like this, nothing really interesting
2024-03-18T19:19:24.616Z|info : amplify-provider-awscloudformation.aws-cfn.describeStack.cfn.describeStacks([{"StackName":"[***]rmation:us-[***]st-[***]75:stack/[***]ify-[***]iq-[***]od-[***]059-[***]b4bPreSignup-[***]EQI9WZ/[***]4d10-[***]b9-[***]ee-[***]a5-[***]1ebbd"}])

Additional information
No response
Before submitting, please confirm:

[X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
[X] I have removed any sensitive information from my code snippets and submission.

Amplify Studio broken again:

Search bar is absent, model doesn't load data...
Can I get some help, please?

Hey @OperationalFallacy :wave: thanks for raising this! I suspect the Studio issue is somewhat related to the state mismatch you're seeing locally, but not for certain. Can you try force pushing with amplify push --force to force Amplify to take your local state as the current state?
Please note there is a separate issue tracking the bug where Functions created in a separate branch do not show up after merging onto the current https://github.com/aws-amplify/amplify-cli/issues/9790

Thanks, @josefaidt  I'm trying to figure out how to do it in predictable way, force is not an option for updating a live website.
How can I get information out of cli what and why its doing or not doing something?

Hey @OperationalFallacy assuming amplify status shows "no changes" across all resources, you can take your existing backend directory, zip it, and upload it in place of the #current-cloud-backend.zip in your app's deployment bucket. This will manually patch the state without invoking a CFN update, but I would recommend downloading/copying the existing zip archive beforehand.
This issue sounds similar to https://github.com/aws-amplify/amplify-cli/issues/13323, where there is another in the same realm https://github.com/aws-amplify/amplify-cli/issues/13327

Thank you, I'll keep this workaround in mind. I see the local status started working again 🤷
Changes in functions detected and pushed. I also saw amplify cli upgrade from 12.10.1, not sure if that may help, I didn't upgrade.
What about the studio? I rely on it for editing records, so it's pretty big inconvenience it doesn't pull or shows the records.

So what's up with this Studio, is it now broken permanently for the environment?
The error on the screenshot is pretty obvious.
Is it something Amplify team can take care of? I even donated 10$ to the business support plan in the AWS account where its broken!

@OperationalFallacy can you provide us your app-id and region?

d1f25haz3u16j5 (this is broken studio), us-east-1
d2bgfp3zb4o7c8 - for the reference, the studio in this env is working
both deployed from the same codebase

@OperationalFallacy does the project have a storage resource configured?
if yes, in the S3 deployment bucket, could you download the /studio-backend/amplify-meta.json file and check if the the storage block has outputs with BucketName?

Thank you, that's was the root cause.
  "storage": {
    "s3buck": {
      "dependsOn": [],
      "providerPlugin": "awscloudformation",
      "service": "S3",
      "lastPushTimeStamp": "2024-03-22T15:22:45.167Z"
    }
  }

I fixed it with amplify update storage, just went through the same setting, and it seems forced amplify to deter and deploy storage properly.
Not sure how and why amplify cli thought the resource was updated.


Refactored Skopeo-Copy and Authentication done via Secret and Service Account

This PR is in reference to the comment (https://github.com/openshift-pipelines/task-containers/pull/3#discussion_r1148954825)
In this PR, I have introduced authentication via secret and service account. I have added a new secret.yaml  The secret.yaml creates a sc-secret secret object and sc-account service account that refers to sc-secret.
In the task defintion, I have added volume  registry-secret that refers to sc-secret and mount this volume in the copy task. I'm using $(cat /var/run/secrets/sc-secret/src_username) to basically get the secret value, I tried other methods but was unsuccessfuly, let me know if there is a better way to do it.
I refactored the basic layout of the Skopeo-copy with params, inorder to make it more modular, then just having a single parameter for getting the URL:

SOURCE_REGISTRY
SOURCE_IMAGE
SOURCE_TAG
DESTINATION_REGISTRY
DESTINATION_IMAGE
DESTINATION_TAG

Let me know if you think it is a better approach or I should switch back to the previous version.
I think after we finalize the basic layout of the task and authentication, we can proceed ahead with the testing part (https://github.com/openshift-pipelines/task-containers/pull/3)

@otaviof, I tried to create Service-account using
kubectl create serviceaccount my-service-account
kubectl patch serviceaccount my-service-account -p '{"imagePullSecrets": [{"name": "secret-key"}]}'

But that failed during authentication, so I have added the service-account template, and added instructions in the Readme about how to edit it. Do you think it's a good approach to have the service account template?

@otaviof, I tried to create Service-account using
kubectl create serviceaccount my-service-account
kubectl patch serviceaccount my-service-account -p '{"imagePullSecrets": [{"name": "secret-key"}]}'

But that failed during authentication, so I have added the service-account template, and added instructions in the Readme about how to edit it. Do you think it's a good approach to have the service account template?

The service account will be provided to the Task by a TaskRun/PipelineRun instance, we only need to document some examples how to configure the authentication. The kubectl patch above is a good example showing how to configure the service account, which comes right after a kubectl create secret --type=... example.
Bare in mind both secret and service account will most likely be already created, we only need to document the configuration requirements, linking users with upstream official documentation.
To troubleshoot the authentication, make sure the service account being used is the same where you included the pull-secret.


Added missing closing bracket

Add missing closing bracket in attributes file

          1 Error

:no_entry_sign:
Please include a CHANGELOG entry.

  Generated by :no_entry_sign: Danger

If you'd like to get unit tests to run, you could update the orb to version 2 example config. The step name changes from lint to delivery so you'd want to change that in terraform example here

          1 Warning

:warning:
This Pull Request is probably missing tests.

  Generated by :no_entry_sign: Danger

Hey,
I'm closing this as your fix seems to have been caught by another PR,
thanks for this though


Ingressgateway pod suddenly returns 503s for all the incoming requests and crashes afterwards

Bug description
we have Istio 1.1.11 deployed(4 Ingressgateway + 3 Pilot setup) and it's running for a while without a problem. But early today we noticed one(and only one) ingressgateway started returning 503 to all the incoming requests:
2019-08-07T00:46:21.027109Z	info	Envoy proxy is NOT ready: failed retrieving Envoy stats: Get http://<IP_ADDRESS>:15000/stats?usedonly: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
2019-08-07T00:46:29.029378Z	info	Envoy proxy is ready
<some 200s in betwen>
[2019-08-07 00:47:30.365][398][warning][config] [bazel-out/k8-opt/bin/external/envoy/source/common/config/_virtual_includes/grpc_stream_lib/common/config/grpc_stream.h:86] gRPC config stream closed: 13,
<start reporting 404s and 503s from now on>
[2019-08-07 00:53:06.496][398][warning][config] [bazel-out/k8-opt/bin/external/envoy/source/common/config/_virtual_includes/grpc_stream_lib/common/config/grpc_stream.h:86] gRPC config stream closed: 13,
<continue reporting 404s and 503s>
[2019-08-07 01:02:19.372][423][warning][filter] [src/istio/mixerclient/report_batch.cc:106] Mixer Report failed with: UNAVAILABLE:Cluster not available
[2019-08-07 01:09:50.812][414][critical][main] [external/envoy/source/exe/terminate_handler.cc:13] std::terminate called! (possible uncaught exception, see trace)
[2019-08-07 01:09:50.812][414][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:69] Backtrace (use tools/stack_decode.py to get line numbers):
[2019-08-07 01:09:50.815][414][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:73] #0: Envoy::TerminateHandler::logOnTerminate()::$_0::operator()() [0xda3d28]
[2019-08-07 01:09:50.817][414][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #1: [0xda3c39]
[2019-08-07 01:09:50.819][414][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:73] #2: __cxxabiv1::__terminate() [0xf0dec6]
[2019-08-07 01:09:50.819][414][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:81] Caught Aborted, suspect faulting address 0x18e
[2019-08-07 01:09:50.819][414][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:69] Backtrace (use tools/stack_decode.py to get line numbers):
[2019-08-07 01:09:50.819][414][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:73] #0: __restore_rt [0x7fb1cc13a390]
[2019-08-07 01:09:50.822][414][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:75] #1: [0xda3c39]
[2019-08-07 01:09:50.822][414][critical][backtrace] [bazel-out/k8-opt/bin/external/envoy/source/server/_virtual_includes/backtrace_lib/server/backtrace.h:73] #2: __cxxabiv1::__terminate() [0xf0dec6]
2019-08-07T01:10:01.027185Z	info	Envoy proxy is NOT ready: failed retrieving Envoy stats: Get http://<IP_ADDRESS>:15000/stats?usedonly: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
2019-08-07T01:10:11.027299Z	info	Envoy proxy is NOT ready: failed retrieving Envoy stats: Get http://<IP_ADDRESS>:15000/stats?usedonly: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
2019-08-07T01:10:16.520055Z	warn	Epoch 0 terminated with an error: signal: aborted (core dumped)
2019-08-07T01:10:16.520091Z	warn	Aborted all epochs
2019-08-07T01:10:16.520218Z	info	Epoch 0: set retry delay to 12.8s, budget to 3
2019-08-07T01:10:19.032068Z	info	Envoy proxy is NOT ready: failed retrieving Envoy stats: Get http://<IP_ADDRESS>:15000/stats?usedonly: dial tcp <IP_ADDRESS>:15000: connect: connection refused
2019-08-07T01:10:29.027052Z	info	Envoy proxy is NOT ready: failed retrieving Envoy stats: Get http://<IP_ADDRESS>:15000/stats?usedonly: dial tcp <IP_ADDRESS>:15000: connect: connection refused
2019-08-07T01:10:29.320407Z	info	Reconciling retry (budget 3)
2019-08-07T01:10:29.320474Z	info	Epoch 0 starting
2019-08-07T01:10:29.321938Z	info	Envoy command: [-c /etc/istio/proxy/envoy-rev0.json --restart-epoch 0 --drain-time-s 45 --parent-shutdown-time-s 60 --service-cluster istio-ingressgateway --service-node router~<IP_ADDRESS>~istio-ingressgateway-7969cdf565-6cjpt.istio-system~istio-system.svc.33.tess.io --max-obj-name-len 189 --allow-unknown-fields -l warning]
[2019-08-07 01:10:29.341][483][warning][misc] [external/envoy/source/common/protobuf/utility.cc:174] Using deprecated option 'envoy.api.v2.Cluster.hosts' from file cds.proto. This configuration will be removed from Envoy soon. Please see https://www.envoyproxy.io/docs/envoy/latest/intro/deprecated for details.
[2019-08-07 01:10:29.341][483][warning][misc] [external/envoy/source/common/protobuf/utility.cc:174] Using deprecated option 'envoy.api.v2.Cluster.hosts' from file cds.proto. This configuration will be removed from Envoy soon. Please see https://www.envoyproxy.io/docs/envoy/latest/intro/deprecated for details.
[2019-08-07 01:10:29.341][483][warning][misc] [external/envoy/source/common/protobuf/utility.cc:174] Using deprecated option 'envoy.api.v2.Cluster.hosts' from file cds.proto. This configuration will be removed from Envoy soon. Please see https://www.envoyproxy.io/docs/envoy/latest/intro/deprecated for details.
[2019-08-07 01:10:29.345][483][warning][config] [bazel-out/k8-opt/bin/external/envoy/source/common/config/_virtual_includes/grpc_stream_lib/common/config/grpc_stream.h:86] gRPC config stream closed: 14, no healthy upstream
[2019-08-07 01:10:29.345][483][warning][config] [bazel-out/k8-opt/bin/external/envoy/source/common/config/_virtual_includes/grpc_stream_lib/common/config/grpc_stream.h:49] Unable to establish new stream
2019-08-07T01:10:41.026972Z	info	Envoy proxy is NOT ready: failed retrieving Envoy stats: Get http://<IP_ADDRESS>:15000/stats?usedonly: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
2019-08-07T01:10:51.027421Z	info	Envoy proxy is NOT ready: failed retrieving Envoy stats: Get http://<IP_ADDRESS>:15000/stats?usedonly: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
2019-08-07T01:11:01.027293Z	info	Envoy proxy is NOT ready: failed retrieving Envoy stats: Get http://<IP_ADDRESS>:15000/stats?usedonly: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
2019-08-07T01:11:11.027185Z	info	Envoy proxy is NOT ready: failed retrieving Envoy stats: Get http://<IP_ADDRESS>:15000/stats?usedonly: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
[2019-08-07 01:11:16.906][483][warning][config] [bazel-out/k8-opt/bin/external/envoy/source/common/config/_virtual_includes/grpc_stream_lib/common/config/grpc_stream.h:86] gRPC config stream closed: 0,
2019-08-07T01:11:19.028678Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 6 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-07T01:11:29.028784Z	info	Envoy proxy is ready

And then this Ingressgateway pod got recovered and started working normally.
Our Pilot pods also kept crashing as https://github.com/istio/istio/issues/14782 mentions. And I know there's an on-going PR https://github.com/istio/istio/pull/15810 addressed this issue. So is that possible that multiple doPush() from Pilot discovery caused my problem?
Attach envoy stats here as a reference:
root@istio-ingressgateway-7969cdf565-6cjpt:/# curl localhost:15000/stats?usedonly
cluster.xds-grpc.circuit_breakers.default.cx_pool_open: 0
cluster.xds-grpc.circuit_breakers.default.rq_open: 0
cluster.xds-grpc.circuit_breakers.default.rq_pending_open: 0
cluster.xds-grpc.http2.tx_reset: 1
cluster.xds-grpc.internal.upstream_rq_200: 17
cluster.xds-grpc.internal.upstream_rq_2xx: 17
cluster.xds-grpc.internal.upstream_rq_503: 3
cluster.xds-grpc.internal.upstream_rq_5xx: 3
cluster.xds-grpc.internal.upstream_rq_completed: 20
cluster.xds-grpc.lb_healthy_panic: 1
cluster.xds-grpc.max_host_weight: 1
cluster.xds-grpc.membership_change: 1
cluster.xds-grpc.membership_degraded: 0
cluster.xds-grpc.membership_healthy: 1
cluster.xds-grpc.membership_total: 1
cluster.xds-grpc.update_attempt: 4361
cluster.xds-grpc.update_no_rebuild: 4360
cluster.xds-grpc.update_success: 4361
cluster.xds-grpc.upstream_cx_active: 1
cluster.xds-grpc.upstream_cx_close_notify: 9
cluster.xds-grpc.upstream_cx_connect_fail: 1
cluster.xds-grpc.upstream_cx_destroy_remote_with_active_rq: 16
cluster.xds-grpc.upstream_cx_destroy_with_active_rq: 16
cluster.xds-grpc.upstream_cx_http2_total: 18
cluster.xds-grpc.upstream_cx_none_healthy: 1
cluster.xds-grpc.upstream_cx_rx_bytes_buffered: 17
cluster.xds-grpc.upstream_cx_rx_bytes_total: 420300416
cluster.xds-grpc.upstream_cx_total: 18
cluster.xds-grpc.upstream_cx_tx_bytes_buffered: 0
cluster.xds-grpc.upstream_cx_tx_bytes_total: 44829001
cluster.xds-grpc.upstream_flow_control_backed_up_total: 1
cluster.xds-grpc.upstream_rq_200: 17
cluster.xds-grpc.upstream_rq_2xx: 17
cluster.xds-grpc.upstream_rq_503: 3
cluster.xds-grpc.upstream_rq_5xx: 3
cluster.xds-grpc.upstream_rq_active: 1
cluster.xds-grpc.upstream_rq_completed: 20
cluster.xds-grpc.upstream_rq_pending_active: 0
cluster.xds-grpc.upstream_rq_pending_failure_eject: 17
cluster.xds-grpc.upstream_rq_pending_total: 18
cluster.xds-grpc.upstream_rq_total: 18
cluster_manager.active_clusters: 17449
cluster_manager.cds.update_attempt: 55
cluster_manager.cds.update_failure: 18
cluster_manager.cds.update_success: 36
cluster_manager.cds.version:<PHONE_NUMBER>6153188191
cluster_manager.cluster_added: 17507
cluster_manager.cluster_removed: 58
cluster_manager.cluster_updated: 9157
cluster_manager.update_out_of_merge_window: 18
cluster_manager.warming_clusters: 0
http_mixer_filter.total_remote_report_calls: 2259
http_mixer_filter.total_remote_report_successes: 2259
http_mixer_filter.total_report_calls: 3379
listener_manager.lds.update_attempt: 47
listener_manager.lds.update_failure: 17
listener_manager.lds.update_success: 29
listener_manager.lds.version:<PHONE_NUMBER>6153188191
listener_manager.listener_added: 3
listener_manager.listener_create_success: 264
listener_manager.listener_modified: 8
listener_manager.total_listeners_active: 3
listener_manager.total_listeners_draining: 0
listener_manager.total_listeners_warming: 0
server.concurrency: 24
server.days_until_first_cert_expiring: 414
server.hot_restart_epoch: 0
server.live: 1
server.memory_allocated:<PHONE_NUMBER>
server.memory_heap_size:<PHONE_NUMBER>
server.parent_connections: 0
server.total_connections: 11
server.uptime: 21879
server.version: 6201910
server.watchdog_mega_miss: 48
server.watchdog_miss: 124
cluster.xds-grpc.upstream_cx_connect_ms: P0(nan,3) P25(nan,11.8125) P50(nan,19.25) P75(nan,23.75) P90(nan,25.3) P95(nan,27.15) P99(nan,27.83) P99.5(nan,27.915) P99.9(nan,27.983) P100(nan,28)
cluster.xds-grpc.upstream_cx_length_ms: P0(nan,16) P25(nan,322500) P50(nan,1.725e+06) P75(nan,1.89167e+06) P90(nan,1.9575e+06) P95(nan,1.97875e+06) P99(nan,1.99575e+06) P99.5(nan,1.99788e+06) P99.9(nan,1.99958e+06) P100(nan,2e+06)

Affected product area (please put an X in all that apply)
[ ] Configuration Infrastructure
[ ] Docs
[ ] Installation
[X] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Expected behavior
Ingressgateway shouldn't return 503s and 404s
Steps to reproduce the bug
described above
Version (include the output of istioctl version --remote and kubectl version)
1.1.11
How was Istio installed?
Environment where bug was observed (cloud vendor, OS, etc)
Additionally, please consider attaching a cluster state archive by attaching
the dump file to this issue.

At envoy start envoy would wait cluster ready before LDS.
Once envoy is ready, the order guarantee is delegate to ADS which is implemented by pilot. If the pilot is crash looping it's possible that a cluster config is gone when envoy listener needs that cluster.

I would assume a mixer cluster normally should not disappear.
[2019-08-07 01:02:19.372][423][warning][filter] [src/istio/mixerclient/report_batch.cc:106] Mixer Report failed with: UNAVAILABLE:Cluster not available

There might be an issue other than multipush.
It's either pilot pushes CDS with no mixer cluster or envoy apply the cluster update wrongly.
cluster_manager.cds.update_failure: 18
cluster_manager.cluster_removed: 58

Any other suspiciously log on master thread (thread id 414)?

At envoy start envoy would wait cluster ready before LDS.

Yes we do noticed CDS is ready before LDS. And most of Ingressgateway pods are very slow to be ready upon start and showing they're waiting for LDS update:
2019-08-08T11:44:02.084259Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 0 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:44:13.384654Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 1 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:44:24.083852Z	info	Envoy proxy is NOT ready: failed retrieving Envoy stats: Get http://<IP_ADDRESS>:15000/stats?usedonly: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
2019-08-08T11:44:34.083966Z	info	Envoy proxy is NOT ready: failed retrieving Envoy stats: Get http://<IP_ADDRESS>:15000/stats?usedonly: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
2019-08-08T11:44:44.083834Z	info	Envoy proxy is NOT ready: failed retrieving Envoy stats: Get http://<IP_ADDRESS>:15000/stats?usedonly: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
2019-08-08T11:44:53.596813Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 4 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:45:02.144545Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 6 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:45:12.086241Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 6 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:45:22.085381Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 6 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:45:32.085277Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 6 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:45:42.086261Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 6 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:45:52.093141Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 6 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:46:02.085374Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 6 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:46:12.085396Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 6 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:46:22.086162Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 6 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:46:32.085458Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 6 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:46:42.089123Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 6 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:46:52.085414Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 7 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:47:02.085248Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 7 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:47:12.085594Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 7 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:47:22.085394Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 7 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:47:32.085456Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 7 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:47:42.085308Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 7 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:47:52.085168Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 7 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T11:48:02.085444Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 7 successful, 0 rejected; lds updates: 0 successful, 0 rejected
<omit duplicated logs here to improve readability>
2019-08-08T12:15:42.148995Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 54 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T12:15:52.085342Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 54 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T12:16:02.086052Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 54 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T12:16:12.085392Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 54 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T12:16:22.086053Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 54 successful, 0 rejected; lds updates: 0 successful, 0 rejected
2019-08-08T12:16:32.351831Z	info	Envoy proxy is NOT ready: config not received from Pilot (is Pilot running?): cds updates: 55 successful, 0 rejected; lds updates: 0 successful, 0 rejected
[2019-08-08 12:16:36.404][173][warning][config] [bazel-out/k8-opt/bin/external/envoy/source/common/config/_virtual_includes/grpc_stream_lib/common/config/grpc_stream.h:86] gRPC config stream closed: 13,
2019-08-08T12:16:42.685173Z	info	Envoy proxy is ready

This process usually takes ~5 mins but in worst case it can take up to ~40 mins.

It's either pilot pushes CDS with no mixer cluster or envoy apply the cluster update wrongly.

I suspect so. I guess all the clusters were missing for some reasons when 503 started appearing. But this issue was reported by my colleague so I don't know the CDS status at that point of time.

it's possible that a cluster config is gone when envoy listener needs that cluster

It may not be related but in another case we had an Ingressgateway pod miss 80 listener but 443 listener was OK(vs+gw setup should be fine because it worked in other Ingressgateway pods). Then we scaled down Pilot replicas to 0 and soon we found 80 listener is back.

Any other suspiciously log on master thread (thread id 414)?

Sorry but no more logs on thread ID 414. The crashing logs are the only ones we have.

@edussx Is this still reproduced on 1.2+?  We do not support 1.1 anymore.

@hzxuzhonghu It didn't happen on Istio 1.3 since upgrade. Let me close this issue.


Add support for Google Coral M.2 Accelerators

I am running tensorflow models on k3os and using the USB Coral accelerator successfully. I would like to be able to use the M.2 version as well, but I need to install the PCIe driver as described here. I believe I only need the driver in the gasket-dkms package installed on the host. The EdgeTPU Runtime will be inside my container. How can this be added?

@blakeblackshear the most straight forward and reliable way to get any DKMS-reliant solution working on k3OS is to have the out-of-tree modules built at the same time as the kernel (i.e. Wireguard from the Ubuntu 5.4.x kernel).
Another way is to build the DKMS when building k3OS. @zimme has worked on this for the ZFS DKMS (we cannot build/ship these modules due to licensing reasons), see: https://github.com/rancher/k3os/compare/master...zimme:zfs

Makes sense. Thanks for the example.

@blakeblackshear did you end up getting this working?

No. I just use the USB coral instead.


stdenv: extend buffer overflow check coverage (-D_FORTIFY_SOURCE=3)

Description of changes
Replace the -D_FORTIFY_SOURCE=2 compiler option with -D_FORTIFY_SOURCE=3 to extend coverage of buffer overflow checks.
With -D_FORTIFY_SOURCE=2, overflow protection is limited to buffers whose size can be determined at compile time. glibc 2.34 introduces a new fortification level (-D_FORTIFY_SOURCE=3) that permits checks for buffers whose size needs to be computed at run time, when used with GCC ≥ 12 or Clang ≥ 9.
The practical performance overhead appears to be negligible.
The flag is used in to build all packages in SUSE ALP and Fedora 38, and with Gentoo’s hardened profile.
Some background information: https://developers.redhat.com/articles/2022/09/17/gccs-new-fortification-level

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

glibc will issue a warning through <features.h> if built using a compiler that doesn’t support __builtin_dynamic_object_size. This might break packages relying on -Werror.

I'm not sure how feasible it is, but I would suggest tweaking stdenv to add -D_FORTIFY_SOURCE=2 or =3 based on toolchain (gcc+glibc, don't know about clang and musl) compatibility.
Will also need to target staging and possibly require a hydra jobset as it has high probability to cause build failures in various corners of nixpkgs..

See #212498

See #212498

This is obsolete then.


fix(grpc): ensure connection to lnd on init

Description:
Consolidate the flow for local and remote wallet connections for consolidate. When unlocking a local wallet wait for the macaroon to be generated before we try to use it.
Motivation and Context:
Before this PR, creating a new local wallet would hang indefinitely because it was trying to use the macaroon file before it exists.
How Has This Been Tested?
Test all init flows:

[ ] Create new local wallet
[x] Unlock existing local wallet
[ ] Connect to unlocked remote wallet
[x] Connect to locked remote wallet.

Types of changes:
Bug Fix
Refactor
Checklist:

[x] My code follows the code style of this project.
[x] I have reviewed and updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes where needed.
[x] All new and existing tests passed.
[x] My commits have been squashed into a concise set of changes.

Coverage decreased (-0.09%) to 16.056% when pulling 10cd60f18d3e21e86f9b13c3dfaa0452549e290f on mrfelton:fix/grpc-flow into e6a9ce0c448cae01f55ac88875f95c4f286706da on LN-Zap:master.

@JimmyMow I've updated this PR to resolve a couple of issues and it's ready for re-testing.
Also note that I have built it on top of https://github.com/LN-Zap/zap-desktop/pull/753 so the commit from the PR is also included here.

Tested ACK d18fe97


⚠ Turnos 24x7 has degraded performance

In 6e9e091, Turnos 24x7 (https://reservas-dev.alternativasinteligentes.com/) experienced degraded performance:

HTTP code: 200
Response time: 1365 ms

Resolved: Turnos 24x7 performance has improved in eb08523.


[iot] Migrate @azure/iot-modelrepository to ESM/vitest

Packages impacted by this PR

@azure/iot-modelrepository

Issues associated with this PR

https://github.com/Azure/azure-sdk-for-js/issues/31338

Describe the problem that is addressed by this PR
Migrates the @azure/iot-modelrepository package via automation to ESM/vitest.
What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen?
Are there test cases added in this PR? (If not, why?)
Provide a list of related PRs (if any)
Command used to generate this PR:**(Applicable only to SDK release request PRs)
Checklists

[ ] Added impacted package name to the issue description
[ ] Does this PR needs any fixes in the SDK Generator?** (If so, create an Issue in the Autorest/typescript repository and link it here)
[ ] Added a changelog (if necessary)

API change check
API changes are not detected in this pull request.


Add callbackAfterInit methods for executing functions after the app is initialized

Ticket: #958
In this PR, I added an addCallbackAfterInitialization and getCallbacksAfterInitialization. Also updated the ensemble app to execute all the registered functions

@vinothvino42 let's do this right and remove the hacky delay. Try this:

Add Ensemble().addCallbackAfterInitialization(func). In your deep link, call this and pass the function to navigate the screen. The function will just add the function to the list of functions it stores internally.
in EnsembleApp initState(), after the first frame look at Ensemble().getCallbacksAfterInitialization() and execute them in order. Make sure to clear each func out before you execute, in case some error causes the function to stay there indefinintely and hose the app.

@vusters Can you review it again?


parentheses less method call with tuple in macro raises Syntax error

{% p {"a", 'e', 1} %}

#=> Syntax error in ./crystal/three.cr:8: unexpected token: }
#=> {% p {"a", 'e', 1} %}

{% p({"a", 'e', 1}) %}
#=> {"a", 'e', 1} is printed

Outside a macro too ;)
This is because Crystal parses method_call { as passing a block to the method call, so it's expecting a block and not a tuple or a hash.

Yes, it's similar to Ruby:
$ irb
p irb(main):001:0> p {foo: bar}
SyntaxError: (irb):1: syntax error, unexpected ':', expecting '}'
p {foo: bar}
       ^

I think this comes up more often in Crystal than in Ruby because Ruby allows you to leave up the { for the hash literal if it's the last argument to a method. And thinking about it, it might very well the reason Ruby does allow that in the first place.


Bookings made from the app aren't visible anywhere else

For some reason the bookings made from the application are not visible in anywhere else (not in other app instances and not in browser based google calendar). Tested with Android 5.1.1 and 4.2.2.
Also deleting an event booked from the application doesn't seem to clear the event from the app calendar.
Events made from Google calendar via browser are visible in the app just fine.

Does the account used with the tablet have the correct rights to book rooms? Can you also check that is the calendar sync running correctly in the tablet?

I'm having this same issue. I can use the account on the tablet to book a room through the web browser, which will then sync and display in the app. Any bookings made on the app, however, do not sync back to google calendar. The account used on the tablet is set up as a super-admin in Google Apps, and I've tried it with the "Require address book contacts for reserving" both off and on.

Thanks for reporting! I'll have a look at it.

Just wanted to chime in, I am having the same problem. My company was actually going to use this going forward instead of Pronestor and Eventboard, but this is a pretty big show stopper.
It was working yesterday (which coincidentally was the first time I found the app and configured it), and then from there, left it on overnight, and then the application stopped working.

Oh, sorry... I figured this out. It had to do with how the tablet accounts with Google Apps were given permissions on the calendar for the resource. Somewhere in the documentation it said they had to have the ability to "See All Event Details", but they actually need to have "Make changes to events". Once I changed that permission it allowed the data to synchronize back into Google Calendar.

This is still a bug though. The app should be able to book room resources, even if they are set to show busy/free details.
In situations why this doesn't work, think of a board room. We don't want to broad cast meetings that pertain only to our CEO/CTO/CSO to the entire company, especially for use with this application.
Alternatively, if the only way to make this work is to see all event details, there NEEDS to be a way to have it just show "free/busy" details rather than showing the actual events themselves.

Just as a heads up, the company I work for will be trying to remedy this.
This application works great for our use case, except for this problem. And spending $16K on a platform, or fixing the code ourselves and spending ~$1K for tablets makes a lot more sense.

Here is the debug code:
03-11 17:02:57.025  31593-32550/? E/EventHandler﹕ Can't insert event into<EMAIL_ADDRESS>Forbidden
    com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
    {
    "errors": [
    {
    "reason": "forbidden",
    "domain": "global",
    "message": "Forbidden"
    }
    ],
    "message": "Forbidden",
    "code": 403
    }
            at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
            at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
            at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321)
            at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1065)
            at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
            at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
            at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
            at com.google.android.syncadapters.calendar.Utils.executeAndLog(Utils.java:493)
            at com.google.android.syncadapters.calendar.EventHandler.sendEntityToServer(EventHandler.java:424)
            at com.google.android.syncadapters.calendar.CalendarSyncAdapterApiary.sendEntityToServer(CalendarSyncAdapterApiary.java:3943)
            at com.google.android.syncadapters.calendar.CalendarSyncAdapterApiary.processLocalChanges(CalendarSyncAdapterApiary.java:3857)
            at com.google.android.syncadapters.calendar.CalendarSyncAdapterApiary.processLocalChangesForHandler(CalendarSyncAdapterApiary.java:3755)
            at com.google.android.syncadapters.calendar.CalendarSyncAdapterApiary.performSync(CalendarSyncAdapterApiary.java:779)
            at com.google.android.syncadapters.calendar.CalendarSyncAdapterApiary.onPerformLoggedSync(CalendarSyncAdapterApiary.java:548)
            at com.android.emailcommon.syncadapter.LoggingThreadedSyncAdapter.onPerformSync(LoggingThreadedSyncAdapter.java:49)
            at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:259)


Increase the speed of topic trees loading while accessing channels with huge content.

##Summary
Increase the speed of topic trees loading while accessing channels with huge content.
Khan Academy channel especially takes more than 4 mins to load up.
A fix like on #224 will be great!

Speed improvements: https://github.com/fle-internal/content-curation/pull/241

Should be faster now


[labs/virtualizer] Update test method 'until' to support error/Chai exceptions

One of the key elements of the virtualizer tests are waiting asynchronously for certain state to change (black-box testing virtualizer behaviors) and this is achieved with a support method called until which is often used to test a specific rendered content condition, for example:
await until(() => container.text.includes('something'))

The "problem" with this approach is that if the condition isn't met, the error output is not descriptive enough to say what the container text actually DOES contain, which means manually adding console.log() to debug etc, instead of having useful test error reporting.
Additionally, these until() statements work like defacto expectations of state, which means that we often wind up re-expressing the same expectation with Chai later on, to ensure our test asserts the right things or skipping the assertion, making it less clear what the test is trying to prove.
This PR adds a behavior to the underlying code of until (by way of the underlying core method eventually) to have it swallow errors and retry the expectation repeatedly until the timeout happens, throwing the error in that case, to enable using expectation syntax to clearly express the test assertions inline.  This means that if the expectation continues to fail after the timeout, the error reporting will show the expectation failure message, which is often much more expressive.  For example the following would report what the container text was if 'something' wasn't found.  Because until cares about a truthy result before it returns, we provide a different semantic pass that ignores the return value and only cares about a no error case:
await pass(() => expect(container.text).to.include('something'));

I opportunistically converted the uses of await until to await pass where it could benefit from expectation syntax and this helped remove some duplicate code as well as helped me diagnose and fix a previously flaky test, hopefully once and for all.

I don't know how strictly we want to adhere to usage of pass for assertions vs. only those that need them due to callback returning falsy, i.e. multiple assertions in a single callback.
Since both until and pass use eventually it does work but should we differentiate based on semantics?

I think semantically, pass makes sense for any of the Chai expect use cases, whether single-line or multi-line.  And there's a subtle double-meaning for pass in reference to test/assert language, even though that isn't the only intent for the word.  So I'm trying to get them all, but thank you for finding the others!

Thanks for the thoughtful attention and keen eyes, @augustjk!


ActionMode appcompat-v7 (icon and text colors problem after setting up Calligraphy)

Hello!
I have a Toolbar set up and I am also using an action mode with my color accent as a background.
Toolbar:
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:contentInsetEnd="0dp"
    app:contentInsetLeft="72dp"
    app:contentInsetRight="0dp"
    app:contentInsetStart="72dp"
    android:elevation="4dp"
    app:navigationIcon="?attr/homeAsUpIndicator"
<EMAIL_ADDRESS><EMAIL_ADDRESS></android.support.v7.widget.Toolbar>

Theme:
<style name="AppBaseThemeMaterial" parent="Theme.AppCompat.Light">
...
    <item<EMAIL_ADDRESS></style>

<style name="AppBaseThemeMaterial.ActionMode"<EMAIL_ADDRESS>    <item name="background">@color/colorAccent</item>
 </style>

What I used to see is:

But after setting up Calligraphy and using this into my main activity:
@Override
protected void attachBaseContext(Context newBase) {
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}

I see it in this way:
![screenshot_2015-01-26-00-44-55 2]
(https://cloud.githubusercontent.com/assets/774577/5893903/9b0e9716-a4f5-11e4-8fc3-9f7a069e1c19.jpg)
Text is black instead of white... And I only see the back arrow when pressing on it (it is the same color as the bar now!). Any ideas on why is this happening? Thank you!

@ferrannp Shot in the dark here: I am going to assume this is related to:
<EMAIL_ADDRESS><EMAIL_ADDRESS>
Can you add a but more code to complete the example, I think I know what this is but if I can replicate it that always helps!
Thanks,
Chris

Hello!  I'll try to write an example when I have time... yes basically I added those lines you quoted to do something like:
https://chris.banes.me/2014/10/17/appcompat-v21/
<android.support.v7.widget.Toolbar
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="@dimen/triple_height_toolbar"
<EMAIL_ADDRESS><EMAIL_ADDRESS>/>

I have a simple listview that uses CHOICE_MODE_MULTIPLE_MODAL. Unfortunately, there is no much information on how to style that text & icon of the Action Mode.

@ferrannp yeah that is correct, this is to do with theme context, which isn't generated. I was suspicious this might happen but couldn't reproduce. So if you have a simple example that would be great :)

The same problem. I try to set the custom font and nothing: with all views is possible except for toolbar widget. The ideal way is to do it through styles.xml not by hard code, it's an ugly workaround. If i want to change the font for the app, so i have to change it on styles.xml and per each java class too, I think that's not the idea.

@ferrannp try:
<android.support.v7.widget.Toolbar
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="@dimen/triple_height_toolbar"
<EMAIL_ADDRESS><EMAIL_ADDRESS>/>

Seem's defining<EMAIL_ADDRESS>is wrong. Removing the ActionBar works fine.

@castrojr913 the TextView's in the Toolbar get added progmatically, If you define the titleStyle and subtitleStyle as per the old action bar impl, those will work. I am get to fully overhaul the deeplinking into styles for Menus etc.. It's safe to say its a bit of a pain as they are not inflated traditionally.

Hi @chrisjenx, your solution didn't work for me. What I see changing Dark.ActionBar for Dark is:

So now I can see the arrow but style neither the title or the arrow are white.

Very odd, as it works fine for me, I'll have to investigate more.
On Tue Feb 03 2015 at 10:48:18 PM Ferran Negre<EMAIL_ADDRESS>wrote:

Hi @chrisjenx https://github.com/chrisjenx, your solution didn't work
for me. What I see changing Dark.ActionBar for Dark is:
[image: screenshot_2015-02-03-23-41-24 2]
https://cloud.githubusercontent.com/assets/774577/6031378/0b2319c2-abff-11e4-92c6-4b4c0894888d.jpg
So now I can see the arrow but style neither the title or the arrow are
white.
—
Reply to this email directly or view it on GitHub
https://github.com/chrisjenx/Calligraphy/issues/120#issuecomment-72752774
.

@ferrannp are you able to pull out a broken sample into here?
I use this in a few apps now without issue, I can only guess its an Impli misunderstanding.

A part from the code I posted, I set up the ActionMode using:
listView.setMultiChoiceModeListener(multiChoiceModeListener);

And start it using:
getListView().setItemChecked(position, !checkedItems.get(position));

(When there is some long click in some button inside the list).
Can I see some sample when this is working? Maybe will be faster :)

Sorry have you tried setting the popup Theme to dark?

@ferrannp I identified an issue tonight, I might of solved your issue. I'm about to push a snapshot.

Hello! I tried version 2.0.2 and the issue is not happening anymore. Thank you! You're doing a great job here.

Hello!
I getting issue on pre api 19 devices and using appcompat-v7:22.1.1.
Thanks

@roygwsidev and are you using the latest version of Calligraphy?

You can solve with this code :
toolbar.setTitleTextColor(0xFFFFFFFF);
http://stackoverflow.com/questions/26852108/how-do-you-set-the-title-color-for-the-new-toolbar
I found here


Draft to test CI with conditional for Nokogiri vs Ruby 2.7

Alternate approach to #95 just pushed to get the benefit of the CI run.

Experiment failed, closing this.


Update sbt-scalajs, scalajs-compiler to 1.0.1

Updates

org.scala-js:sbt-scalajs
org.scala-js:scalajs-compiler

from 0.6.32 to 1.0.1.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scala-js" } ]

labels: library-update, semver-major

@japgolly is a release for SJS 1.0.1 planned anytime soon?

Hi @ioleo , yes! Just waiting for upstream dependencies. scalajs-react only just got its upstream dependencies unblocked a few days ago so it should see a release for SJS 1.0 next week with scalacss to follow


Messages prop type should allow nested objects

The docs show that you can use nested objects for defining messages:
const localizationBundle = {
  dashboard: {
    title: 'Dashboard',
  },
}

<Text message='dashboard.title' />

This does correctly render 'Dashboard', but throws a prop type error:

Seems that https://github.com/sprjr/react-localize/blob/master/src/Localization.jsx#L41 should be messages: object instead of objectOf?

Referring to these pieces of the README:

Thanks! Will remove our fork and go back to root now.

@trevordmiller a bit of a random bump, but I am migrating the API up significantly via #53 and am switching tests - I noticed we have a tests/data/egghead-bundle.js and wanted to check and see if you're still a consumer of this.
I think the overall "messages bundle should allow nested keys" is a good concept, but I'm wondering if I over simplify the default behavior and then allow the API to be be customized with your own methods if that would help reduce bundle size without impacting the usability too much.
Anyway, just wanted to check as outside some of our apps you're the only other user who might've used this ;)

@sprjr Sorry don't use this anymore :)

Hi there! Just wondering if the nested keys should be working, because they don't seem to be... If they're not, removing from the documentation might be a good idea?

@timoisalive hmm, they should be working still. I'll take a look. Are you using the <Text /> component or can you provide a sample of what you're doing to run into the issue?


Theming using CSS Modules

The current theming strategy in react-instantsearch is to have BEM CSS Classes but allow people to use any technique implemented by https://github.com/markdalgleish/react-themeable.

Is this (BEM Classes) the right approach for a React based library?
Should we use CSS Modules instead?

https://github.com/css-modules/css-modules
https://github.com/javivelasco/react-css-themr
react-toolbox allows them https://github.com/react-toolbox/react-toolbox#prerequisites
I have 0 experience using CSS modules, but for sure we want to be compatible with them.
Allowing other theming techniques is nice, especially if we are gonna wrap react-instantsearch in instantsearch v2

Those CSS modules seems right for React, but what about vanilla instantsearch?

I have 0 experience using CSS modules, but for sure we want to be compatible with them.

Why? :)

CSS Modules seems to be a new way to style React components (and possibly non React) that is gaining some traction:

https://css-tricks.com/css-modules-part-1-need/
http://survivejs.com/react/advanced-techniques/styling-react/
https://github.com/react-toolbox/react-toolbox (styling is done with CSS modules by default)

Not saying we should always surf the last trend but at least assure we are compatible with it (reduce the number of times you will hit a wall).

but what about vanilla instantsearch?

I don't know if those will be relevant for vanilla instantsearch. I would say with vanilla instantsearch, our BEM approach worked well and we should keep it for now, without any other choice.

Also see this completely made up chart from google trends:

https://www.google.com/trends/explore?date=all&q="CSS modules","inline styles"

react-toolbox also is using a something more sophisticated for theming: https://github.com/javivelasco/react-css-themr#react-css-themr

Are css module supported now?

We have themes available, but they are regular css files: https://github.com/algolia/instantsearch/tree/master/packages/instantsearch.css


Certbot Error message if port 80 is not open

Requesting a certificate for ..................
An unexpected error occurred:
No such challenge

fixed


Should pick() everything under array or object when picking array or object

Howdy,
As mentioned in the title, to reproduce the issue, simply create a brand new Meteor project, remove all files cept .meteor, remove autopublish and insecure, add aldeed:simple-schema. Then add a single js file naming it whatever you want with the following contents:
MainSchema = new SimpleSchema({
  stringArray: {
    type: [String]
  }
});

DerivedSchema = MainSchema.pick('stringArray');

Try to run meteor in that directory and see it errors:
W20150307-22:42:49.991(8)? (STDERR)
W20150307-22:42:49.993(8)? (STDERR) /home/hellyna/.local/lib/meteor/dev_bundle/server-lib/node_modules/fibers/future.js:173
W20150307-22:42:49.993(8)? (STDERR) 						throw(ex);
W20150307-22:42:49.993(8)? (STDERR) 						      ^
W20150307-22:42:50.046(8)? (STDERR) Error: Invalid definition for stringArray.$ field.
W20150307-22:42:50.046(8)? (STDERR)     at packages/aldeed:simple-schema/simple-schema.js:465:1
W20150307-22:42:50.046(8)? (STDERR)     at Function._.each._.forEach (packages/underscore/underscore.js:113:1)
W20150307-22:42:50.046(8)? (STDERR)     at [object Object].SimpleSchema (packages/aldeed:simple-schema/simple-schema.js:462:1)
W20150307-22:42:50.046(8)? (STDERR)     at [object Object].SimpleSchema.pick (packages/aldeed:simple-schema/simple-schema.js:657:1)
W20150307-22:42:50.046(8)? (STDERR)     at app/bug.js:7:28
W20150307-22:42:50.046(8)? (STDERR)     at app/bug.js:10:3
W20150307-22:42:50.046(8)? (STDERR)     at /home/hellyna/someproj/.meteor/local/build/programs/server/boot.js:205:10
W20150307-22:42:50.047(8)? (STDERR)     at Array.forEach (native)
W20150307-22:42:50.047(8)? (STDERR)     at Function._.each._.forEach (/home/hellyna/.local/lib/meteor/dev_bundle/server-lib/node_modules/underscore/underscore.js:79:11)
W20150307-22:42:50.047(8)? (STDERR)     at /home/hellyna/someproj/.meteor/local/build/programs/server/boot.js:116:5

You need to pick the array item field, too. We could possibly have it do this automatically to prevent confusion.
MainSchema.pick('stringArray', 'stringArray.$');

Please at least document it, in the meantime.

+1 needs documentation if it isn't done automatically.

Also, when picking the list content schema list.$ there is a silent bug:
s=new SimpleSchema
 l: {type:Array}
s2= s.pick('l.$')

```
`s2.schema().l.type` is now `Object()` instead of `Array()`

Having issues with this aswel, in combination with AutoForm
var subSchema = new SimpleSchema({
  field1: {
   type: String
  },
  field2: {
   type: String
  }
});
var schema = new SimpleSchema({
  field: {
    type: [subSchema]
  }
});

var pickedSchema = schema.pick('field', 'field.$', 'field.$.field1', 'field.$.field2');

{{> quickForm schema=pickedSchema}}

Now it creates an afArrayField for 'field', afObjectField for 'field.$' and afQuickFields for 'field2' and 'field2'

Thanks for your patience. SimpleSchema 2.0.0-rc.1 is now released and should fix this bug.
There are a number of breaking changes when updating to 2.0, so be sure to check out the change log. If you use aldeed:collection2, you will need to use 2.10.0 or higher of that package in order to use SimpleSchema 2.0. If you use autoform, it is not yet updated to work with SimpleSchema 2.0, but hopefully soon.
SimpleSchema is now an isomorphic NPM package, so you can check out the updated readme and file issues over at the other repo. The Meteor wrapper package will exist for now but eventually I will probably deprecate support for it.
This is still a beta/RC and I do expect people will find issues, so use with caution. Production use is not yet recommended. That said, there are more and better unit tests than ever before, and the codebase should be much easier for others to read through and debug quickly.


Delete component but not associated data flow

Describe what problem your feature request solves
When a component is deleted off the threat model diagram then all connected data flows are also deleted
Describe the solution you'd like
This has been reported as a problem by various users. It may be better not to delete the data flows
Additional context
This is a discussion - should the behaviour change to preserve the data flows when the component is deleted?

This has been moved to a discussion #640


Add example of using multiple controller managers under different namespaces.

@jackcenter
Thanks for the review!
It seems that I have broke rrbot.launch.py example. I will fix this...
Nevertheless, the “namespace” examples are updated, i.e., manual is updated, can you please check one more time? (I don't want to give you further details to “simulate” how a new user would approach the examples. — I am glad to give them to you after test if you are interested, but hopefully the README should be sufficient.)

Looks like everything works, and the simulations look cool! I wrote a few thoughts about the README organization.

@jackcenter thanks for the thorough review!

Closing in favor of #423


chore: Included githubactions in the dependabot config

Follow up: rspec/rspec-rails#2606

Thanks for getting this started, I've pulled this into another PR which superseeds it as it fixes the underlying build issues.


feat(storage):  batch get_compact_task/apply_compact_task in once transaction

I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.
What's changed and what's your intention?

batch several get_compact_task and apply_compact_task together to reduce cost of ETCD backend.
batch these operation so that we only need to clone once version.

Checklist

[ ] I have written necessary rustdoc comments
[ ] I have added necessary unit tests and integration tests
[ ] I have added test labels as necessary. See details.
[ ] I have added fuzzing tests or opened an issue to track them. (Optional, recommended for new SQL features #7934).
[ ] My PR contains breaking changes. (If it deprecates some features, please create a tracking issue to remove them in the future).
[ ] All checks passed in ./risedev check (or alias, ./risedev c)
[ ] My PR changes performance-critical code. (Please run macro/micro-benchmarks and show the results.)

[ ] My PR contains critical fixes that are necessary to be merged into the latest release. (Please check out the details)

Documentation

[ ] My PR needs documentation updates. (Please use the Release note section below to summarize the impact on users)

Release note
If this PR includes changes that directly affect users or other significant modifications relevant to the community, kindly draft a release note to provide a concise summary of these changes. Please prioritize highlighting the impact these changes will have on users.

From dev environment deployed by some user:

The process latency of commit_epoch decrease so much even if we do not change any code of it because this operation must wait write-lock of version. And when the time cost by report_compact_task and get_compact_task reduce, commit_epoch can get lock more quickly.

@hzxa21 @zwang28 PTAL, this pr refactor the "get" and "report' logic, I think this is a critical path and we need to confirm its correctness again and again


implementation of conditional request support

Follow up from #10

Correcting some original mistakes
heavily refactored back-end to accommodate new functionality

added clang-formatting support

Minor teak to add support to front-end

[ ] add tests to front end for passing etag
[ ] Missing header include guards
[ ] Several files are missing EOL
[ ] Fill router
[ ] response builder needs a cpp
[ ] run linting

https://unix.stackexchange.com/a/161853


Clean up: service link

MINOR changes:

improved instructions
renamed name to displayLabel since this is what we are actually asking for (which is describe din the instructions)

MAJOR changes:
none
SPECIAL ATTENTION:

replaced embedded URL for openDataIn by IRI; this is the only case were URL is embedded which is not very consistent, IRI achieves almost the same thing and is also "embedded"

@Peyman-N or @apdavison or @aeidi89 feel free to merge if you also approve the changes


[WIP] RESTful API

The aim to the create a full RESTful API for flexget and build a FlexGet WebUI using the API's
http://flexget.com/wiki/Drafts/RESTApi
http://flexget.com/wiki/Drafts/json_schema
TODO:

[ ] Better to be built in, or a plugin? (I'm leaning towards built in. -gaz)

@gazpachoking and @paranoidi I think the wsgi server should be embedded and started with the daemon..
flexget.api will provide the core API's.
Plugins can expose api's within their implementaion ie:
{{{
@api.route('/plugins/archive', methods=['GET'])
def archive():
//logic
return jsonify(history_items)
}}}

@gazpachoking  currently the webui is not loaded. We need to decide on a way to register ui's.
I was thinking about:
flexget.webserver.register_ui(blueprint)
flexget.webserver.register_home(route)
The default UI will route to /ui.. Other ui's must specify the url ie: /custom
@app.route('/') will route to what ever was set at register_home.
I'm not sure how to handle loading of the flexget.webui or custom ui's modules tho?

@gazpachoking can u test the latest on android. works ok for me on ios

@stevezau I've added in a hack that lets us use oneOf and anyOf with schema-form. Hopefully you can figure out where to extract it to, I've just got it plugged straight into schema-form at the moment. Still needs a bit of improving, but should let us get things running before we get full oneOf/anyOf support.


[feature request] choose which wildcards  choose sequentially and which choose randomly in combinatorial mode.

I would like the ability to sequentially step through every line in chosen files while choosing randomly from others. Then in combinatorial mode have it only step through the first set of files.
Current behavior:
Right now combinatorial mode will step through every single line of every single wildcard file in the prompt. Exponentially growing the number of photos generated with each added wildcard. Additionally it goes in order of appearance in the prompt which forces you to make compromises on where each wildcard appears in the prompt.
Desired behavior:
Some syntax to denote in prompt which wildcards will choose randomly and which ones will sequentially step through every line in the file. Then have an option for combinatorial mode to only count the sequel wildcards.
Example:
Imagine I wanted to create many modeling photos of the same subject, but with different outfits, accessories, poses, hair color, ect. I would like to generate every single outfit and pose, but just want a variety of accessories and hair colors. Right now combinatorial mode will make hundreds of photos as it does outfits x accessories x pose x hair colors. When all you really want is outfits x pose + (random accessories and random hair color).

Good suggestion - I'll look into it - does this need to be on both __wildcards__ and {...}? I suspect both. I would need to make changes to the syntax which I'm not super excited about. Perhaps something like (?R__wildcard__) and (?C{...}) - that way we can use the same syntax for both.

Yea both would be great! I have not looked into the repo at all, so I'll leave implementation to you, but having the freedom to choose random choice or sequential walk would be amazing.
While you are in there another suggestion would be to denote the number of choices from a file. for instance on random mode pick 10 random colors from the color file, and either cycle through them for the entirety of the batch or stop when you hit the 10th color.
-- This is less important as you can get this functionality with the way the system is now, just makes the prompt HUGE.

This was implemented in https://github.com/adieyal/dynamicprompts/issues/11


Allow baseline snapping to a fraction of the grid

With a grid such as 16px it's often not viable for small type sizes to sit on this grid; in design this is usually handled by letting every second line (or 3rd, 4th, 5th) sit on the baseline grid. This would be a great feature to have!
Considerations:

this messes up the flow of sequential elements, do we need to handle a correction, or is this too complicated?

+1  I think the most common usage is every other line which would mean just setting your baseline grid to one half (8px) and all your margins to .5rem or 1rem...?

Yep, that's how you can achieve it manually right now. It feels pretty gross though if you ask me, 8px (html { font-size: 50%; }) is kinda weird. Would prefer to implement a config variable perhaps, something like $baseline-subdivisions: 1 !default; which you could, for example, set to $baseline-subdivisions: 0.5; to allow the typeset mixin to round to 0.5rem instead of 1rem as it currently does.

Added in 1.1.1


[FEATURE] Discord Webhooks more more more options

At the moment, there is not much you can do except store a webhook URL.
Here would be desirable:

Edit messages yourself
Time based news

The number of messages and the time please dynamic, not fixed like in ASM, please :)

Messages for certain events

Shut down
Restart
Server Update
Mod Update
Crash

Join
Leave
Log messages

Died
Tamed
Hatched
Fully grown

Everything that is in the log, preferably without an account name, if with a character name or tribe name.

Good idea


dropdown-menu: Remove caret-down icon.

A revival of #6657.  See this discussion on czo.
Testing Plan:
tools/run-dev.py
GIFs or Screenshots:

Demo of current behavior with narrow window:

The second commit still need some work (finding the right colors for the userlist-toggle-button).
Before:

After:

@timabbott fyi

This is good progress, merged, thanks @whoodes!  I'm opening a follow-up issue for some additional things to fix.

Opened https://github.com/zulip/zulip/issues/15222 for the other things we need to fix here.


Does the App Registration need the default AAD permissions?

Does the App Registration need the default AAD permissions? You say nothing about keeping or removing the "Windows Azure Active Directory" default permissions when creating a App Registration.
https://docs.microsoft.com/en-gb/azure/monitoring/monitoring-solution-office-365#configure-application-for-office-365
Step 7

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

ID: df391c1a-b718-0caa-6d03-30fbeba46731
Version Independent ID: 276178e6-4d9e-9076-062b-ea8289d8f9e4
Content: Office 365 management solution in Azure
Content Source: articles/monitoring/monitoring-solution-office-365.md
Service: operations-management-suite
GitHub Login: @bwren
Microsoft Alias: bwren

@o-l-a-v Thanks for bringing this to our attention. Your feedback has been shared with the content owner for further review.

Engineering team confirmed you should not remove the default permissions when creating the application.

#please-close

@o-l-a-v We will now proceed to close this thread. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.


feat(convert): implement speed conversions

completes #40
I didn't test this so I'm uncertain if the conversions are around what they should be and I didn't mess with any locales (yet)

Speed conversion is fully functional and the only thing you may see as an issue is a new length I added called Mach Second, but considering the existence of Light Second, I'm sure it'll be fine.


Subject constructor when called without new should return undefined

Feature Request/Bug report?
I'm not sure whether it is bug report, feature request or enhancement request, but I suggest it works now in some specific internal way, so I consider it a feature request
It would be waaaay better developer experience if const o = Subject() would either throw or act like new Subject().
Right now it is acting in weird way, returning, honestly, something weird for some child classes:
> Rx.Subject()
{ Observable: { [Function: Observable] create: [Function] },
  ConnectableObservable: [Function: ConnectableObservable],
  GroupedObservable: [Function: GroupedObservable],
  observable: '@@observable',
  Subject: { [Function: Subject] create: [Function] },
  BehaviorSubject: [Function: BehaviorSubject],
  ReplaySubject: [Function: ReplaySubject],
  AsyncSubject: [Function: AsyncSubject],

Moreover, as long as this strange object is including pipe in it...
> Rx.Subject().pipe
[Function: pipe]

...it is considered valid Observable which brings this async error behavior which is totally not good
> void Rx.merge(Rx.Subject()).subscribe(console.log)
undefined
> TypeError: You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
    at Object.exports.subscribeTo (C:\Users\crbru\WebstormProjects\devilbox\detokex-frontend\src_managed\detokex-frontend\node_modules\rxjs\internal\util\subscribeTo.js:42:15)
    at Object.subscribeToResult (C:\Users\crbru\WebstormProjects\devilbox\detokex-frontend\src_managed\detokex-frontend\node_modules\rxjs\internal\util\subscribeToResult.js:7:26)
    at MergeMapSubscriber._innerSub (C:\Users\crbru\WebstormProjects\devilbox\detokex-frontend\src_managed\detokex-frontend\node_modules\rxjs\internal\operators\mergeMap.js:75:38)
    at MergeMapSubscriber._tryNext (C:\Users\crbru\WebstormProjects\devilbox\detokex-frontend\src_managed\detokex-frontend\node_modules\rxjs\internal\operators\mergeMap.js:72:14)
    at MergeMapSubscriber._next (C:\Users\crbru\WebstormProjects\devilbox\detokex-frontend\src_managed\detokex-frontend\node_modules\rxjs\internal\operators\mergeMap.js:55:18)
    at MergeMapSubscriber.Subscriber.next (C:\Users\crbru\WebstormProjects\devilbox\detokex-frontend\src_managed\detokex-frontend\node_modules\rxjs\internal\Subscriber.js:64:18)

I don't believe that making changes to the behaviour you've described is the responsibility of this package, as the ES5 implementation of Subject is generated by TypeScript.
Note that there is an ES2015 distribution of the source under the _esm2015 directory. And also note that with ES2015, attempting to create an instance of a class without using new will effect an error:
TypeError: Class constructor Subject cannot be invoked without 'new'

Also, TypeScript will effect it's own compile-time error if new is not used:
[ts] Value of type 'typeof Subject' is not callable. Did you mean to include 'new'?

Usually I'm using es2015, but for this specific project I had to use precompiled files :)
So, you're saying it is throwing an error for ES2015 and TS classes, and only for compiled ones it is acting like it's fine, and to Subject and its ancestors it is returning some object with {pipe(): something}, and for Observable it is returning undefined? Sounds like unconsistent behavior, probably it should also throw an error after it is compiled.

Well, the TypeScript error is a compile-time error, but, yes, ES2015 will throw a run-time error if you attempt to create a class without using new.

... and for Observable it is returning undefined?

I don't understand what you mean by this, but I don't think it matters regarding the point I was making which was that, IMO, the behaviour of the transpiled output is not something for which this RxJS is responsible and any requests for alternate behaviour would be better directed to TypeScript.
IMO, the behaviour affects only users who are using neither ES2015 nor TypeScript and are misusing Subject in the first place.

Agree, it is rare case. But on other hand:

lot of people do not like TS - I personally use flow, lot of people just do not use typings
AFAIK by default webpack and other bundlers (except ts, of course) are importing the es5+imports if possible, otherwise es5. Es2015 bundle is rarely used
Rare case producing an extremely unclear and non-consistent error is making people super-confused. I'm 2+ years rxjs user and experienced JS developer and spent 2 days trying to figure out that I simply missed new keyword by accident.

Totally not blaming anyone, but I'm pretty sure that behavior of constructors should be consistent all across the environments (which is definitely a bug fix) and can be fixed by simple config update.
If you agree I can do it

IMO, it's a TypeScript issue and is not the responsibility of this package.
The RxJS distribution includes ES5 and ES2015 code. And the ES5 code is generated using TypeScript.
I don't believe that this issue warrants tweaking the generated TypeScript output and I would be surprised other members of the core team feel differently about this.

Agreed.
On one hand - my bad, missed it.
On another - it's weird TS behavior, looked through the issues and this is intended to not be fixed.
Looked through the issues of TS - have a strong feeling this is an intended behavior.
But it's sad that missed new can cause such crazy bug.

I think this is really not rxjs issue, so I'm closing it to keep the numbers better


@ReactNative methods unavailable from Interface

Description
JavaModuleWrapper#findMethods() was refactored to use the method Class#getDeclaredMethods() which doesn't find inherited methods.  The native Bluetooth module that I wrote a while back recreated the IOS RCTEventEmitter logic in a default Interface which was implemented by my module.   Once React Native is updated to a version AFTER the change, the React Native nativeModule no longer contains any methods from the implemented interface.
This was commit 678679e - Decouple module callback mechanism from CatalystInstance.
Prior to this commit, the method JavaModuleWrapper#getMethodDescriptors() used Class.getMethods() which returns all public methods.  It seems odd that protected/private methods would be annotated with @ReactMethod and more likely that @ReactMethod should be public and inheritable (like the IOS version)?
I get it's a super old commit, I really have no idea why it wasn't noticed.  I created the module along side 0.59.1 and it worked great, which is confusing since that tag has the declared method change, which is confusing.
React Native version:
Branches: master, origin/0.44-stable, origin/0.45-stable, origin/0.46-stable, origin/0.47-stable, origin/0.48-stable, origin/0.49-stable, origin/0.50-stable, origin/0.51-stable, origin/0.52-stable, origin/0.53-stable, origin/0.54-stable, origin/0.55-stable, origin/0.56-stable, origin/0.57-stable, origin/0.58-stable, origin/0.59-stable, origin/0.60-stable, origin/0.61-stable, origin/0.62-stable, origin/0.63-stable, origin/HEAD and 14 more branches
Steps To Reproduce
Provide a detailed list of steps that reproduce the issue.

Create a new native module
Create an interface public Interface RCTEventEmitter with a @ReactMethod default method
Implement the interface in your module
In JS, the implementation will be undefined

Expected Results
I expect that Implemented or Inherited methods be found in the bridge native module.
Snack, code example, screenshot, or link to a repository:
https://github.com/kenjdavidson/react-native-bluetooth-classic

I've refactored the library to work with the current version. It's a hot topic using default interface methods in Java, but I still think that as long as this wasn't don't for a specific reason it's a good thing to allow better design.  Anyhow, I can't change labels but would love to either:

get an answer as to why it was changed away from this
have the pull request merged since it does the job

But at this point things are at least working and this issue is documented.
Thanks.