Add the introductionVersion field to all existing environment variables

Prerequisite to #8258

Add the introductionVersion field to all existing environment variables
The value MUST be pre5.0 (all newer Variables get their correct value upon introduction) for all currently existing variables in all services.
This Task needs to be commited before release 5.0

A make target to validate the work can be found in https://github.com/owncloud/ocis/pull/8436 just run make check-env-var-annotations from the project root.

Mentioned make target has been merged to master

@jacob-nv do you have capacity to look into this?

@individual-it @phil-davis do you guys have someone who could get this done quickly? It's a super easy task, busy work.

@saw-jan I am having a look at what is involved in this. If it can be automated pretty well in the IDE then I might "just do it", or I will hand over for someone to do when I understand what variations there are that need to be "manually" edited.

PR #8469 is ready for review and discussion.

PR #8574 added this to ocis master.
Backport to stable-5.0 was done in PR #8583
make check-env-var-annotations was added to CI in both these PRs.
I think that this is done. @dragonchaser close? Or is there anything else to tweak?


The on-hover lexicon should be displayed on any scripture card that contains the original language

Issue:
The on-hover lexicon info should be shown on any card that is currently displaying an OrigL text, even if the card didn't contain original language text to begin with.
DoD:
Any scripture card that has original language text displays the lexicon data on-hover.
Details:
In v0.9.0 build 87451c8, the on-hover lexicon is only displayed if scripture card 1 displays the original language. If the original language is displayed on scripture card 0 or 2, no lexicon is displayed on hover over.

@PhotoNomad0 Can you reproduce this?

@birchamp yes

@cckozie @elsylambert Fixes in v0.9.0 build 17b95d3

Looks good in v0.9.0 build c1bb71c. On-hover lexicon is displayed on any scripture card that has original language on it.

Works correctly in v0.9.0 build f601ed4

Tested in Test Lexicon Popups


Openssl::with_cert_and_key certificate verification

I noticed that Openssl::with_cert_and_key disables certificate verification, shown below for convenience:
pub fn with_cert_and_key<C, K>(cert: C, key: K) -> Result<Openssl, SslError>
where C: AsRef<Path>, K: AsRef<Path> {
    let mut ctx = try!(SslContext::new(SslMethod::Sslv23));
    try!(ctx.set_cipher_list("DEFAULT"));
    try!(ctx.set_certificate_file(cert.as_ref(), X509FileType::PEM));
    try!(ctx.set_private_key_file(key.as_ref(), X509FileType::PEM));
    ctx.set_verify(SSL_VERIFY_NONE, None);
    Ok(Openssl { context: Arc::new(ctx) })
}

I'm guessing this is done because the expected use is for a server accepting connections from clients without client certificates. However, if someone uses this method for setting up a client to present a client certificate to a server, this will disable verification of the server's certificate.
Is my understanding here correct? If so, I think there should be two separate methods depending on whether it's intended for client or server use. At the very least, the documentation for the current method should make it very clear that it's not safe to use on the client side when using client certificates.

Yes, your guess is correct. I assumed most people wanting an easy constructor with a cert and key were using it for a server, not a client.

Related to https://github.com/hyperium/hyper/issues/472

If so, I think there should be two separate methods depending on whether it's intended for client or server use.

Ever since https://github.com/hyperium/hyper/pull/757, there are now separate traits for server and client TLS use. That said, there still needs to exist a crate that actually verifies the certificates for this to be completed.
In my opinion, this issue can be closed as a duplicate of  https://github.com/hyperium/hyper/issues/472.

Isn't hostname verification different the certificate verification?

The ssl feature has been removed, so I believe this issue can be closed.

Indeed, SSL was removed, see #985.


fix: vue template ComponentCustomProperties interface

Fix https://github.com/antfu/unplugin-auto-import/issues/263.
Currently will occur type errors when ComponentCustomProperties under @vue/runtime-core, I think we should follow the Vue documentation to define it.

Does this actually https://github.com/antfu/unplugin-auto-import/issues/263? I tried it and didn't seem so. Am I missing something?

Please update the snapshot


The add_graph does not work

Hi! my code is listed below; but the procedure does not work,  it stops there all time. How can i get over it? thx!
create model
model = dn.DenseNet3(args.layers, 10, args.growth, reduction=args.reduce,
                     bottleneck=args.bottleneck, dropRate=args.droprate, inputdim=args.inputdim)

res = model(torch.autograd.Variable(torch.Tensor(1, 3, 32, 32), requires_grad=False))
writer = SummaryWriter("runs/%s" % (args.name))
writer.add_graph(model, res)
writer.close()

What is DenseNet3? Any error message?

DenseNet3 is a class used to create the DenseNet, listed as follows; There are no error message, it just stops here, and does not go to train(cause train the net will print the process), i also opened the tensorboard, found nothing in it. sad....
class DenseNet3(nn.Module):
def init(self, depth=10, num_classes=10, growth_rate=12,
reduction=0.5, bottleneck=False, dropRate=0.2, inputdim=24):

Even the example in https://github.com/lanpa/tensorboard-pytorch/blob/880fbaf6edd85b9e8ed1ab884daf1ed0b836c16c/demo_graph.py doesn't work. The error message was KeyError:<PHONE_NUMBER>.
I am using tensorflow 1.4.1 and pytorch 0.3. Are they not supported yet?

@akurniawan The current add_graph function only supports pytorch v0.2. For 0.3 please try the onnx version: https://github.com/lanpa/tensorboard-pytorch/blob/master/onnx_graph.py
(you may need to install onnx as well)


keyboard shortcuts

[x] JavaScript code to capture keyboard inputs
[ ] toggleable button to control whether keyboard shortcuts are enabled
[ ] store a cookie (or maybe localStorage is friendlier?) to save user's preference

Duplicate (or sub-issue) of #25

Implemented in https://github.com/penelopeysm/apribot/commit/92280f746ee2b3cf621cba705ca0db859ebda33b


Add support for more extensions to Model::merge.

Extends Model::merge to support the following extensions which were previously unsupported:

KHR_texture_basisu
EXT_texture_webp
EXT_mesh_gpu_instancing
CESIUM_primitive_outline
CESIUM_tile_edges

#854 covers a very small part of this -- ExtMeshGpuInstancing -- and in similar fashion. I'll be happy to use it!


ci: reuse github action for setup node.js

PR Checklist
Please check if your PR fulfills the following requirements:

[x] The commit message follows Conventional Commits
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[ ] Bugfix
[ ] Feature
[ ] Refactoring
[ ] Code style update
[x] Build or CI related changes
[ ] Documentation content changes

Does this PR introduce a breaking change?

[ ] Yes
[x] No

@vladimirpotekhin updated

LGTM 👍  🚀


Remove Matt from the list of devOps

No longer with the company

@balena-ci rebase

I think bumping the dependencies might've surfaced some issues, like a slightly different code styling in a newer version of balena-lint. Trying to address this in #65.

@balena-ci rebase

@balena-ci rebase

@balena-ci rebase


Wrapping kotlin inspections

Expected Behavior
If we see an inspection inside kotlin that we think that could be worth it in detekt we should have an easy way to integrate it.
Current Behavior
Right now I see that a lot of our rules are ports from the original code.
 And we can't imporve other things where we could give more value.
We don't get the fixes from jetbrains.
If we find an issue in the rule we fix it in our code, but we don't even report it as a bug to kotlin because we don't know if they have that problem too.

I did nearly 0 research but it would be great to develop a wrapping code to execute the kotlin's inspection code and adapt it to a detekt's rule. Something similar that what we have with ktlint.
What do you think? Is it possible? Did you try it before?
And then we have android lint that has a lot of not android specific kotlin rules too.

Do you have a wrapper in mind similar to the ktlint one?
There seems to be a library that provides a Gradle plugin to launch IDEA inspections.
https://github.com/JetBrains/inspection-plugin

I did 0 research on this but it could have sense, right? Maybe as a third/first party plugin or even as core part of the project. For example instead of porting #1501 we could use directly that inspection.
Maybe add all the inspections in core has not sense. Or maybe we prefer to port some of them to get more flexibility. But in general I think that it could be good. What do you think?

This depends on the original rule. Those that are easy to port are pretty self-contained, and a wrapper might be possible if the original rule doesn't use anything in org.jetbrains.kotlin.idea.*.
Most (all?) seem to use org.jetbrains.kotlin.idea.caches.resolve.analyze though, so a wrapper would need to factor that in at a minimum.
Would be a huge win if possible. https://github.com/JetBrains/inspection-plugin has its place but it's a pretty heavy solution I think.

I think should consider this case by case then.
If there are new ideas for rule, we will come back to this awesome idea.
For now, I'll close this and potentially have it reopened when this questions pops up again.


Seems like the new update broke our build

Describe the bug
Our deploys are failing with 404 page.
To Reproduce
Steps to reproduce the behavior:
Just deploy anything on nextlify ( nextjs )
Expected behavior
404 Page
Versions

Next.js:
plugin ( installed via UI )

Hi @hunzaboy,
Thanks for reaching out!
Could you please share a link to your build logs. Thanks!

@hunzaboy can you also confirm this works again for you after the revert/rollback? (you can always lock your plugin version if you look at releases and find the last version that was working for you by just npm installing at that version 😺 )

Was facing the same issue earlier. Works fine after the revert. Thank you!

@anandakrishna can you share your build/deploy logs as well? 🙏

It happened due to @netlify/plugin-nextjs ( it now requires target property ). I added it and not it works.
I solved the issue by adding a next.config.js file with target property.
module.exports = {
  target: "serverless",
};

Log which was failing the deployments:

4. onBuild command from @netlify/plugin-nextjs
9:55:01 PM: ────────────────────────────────────────────────────────────────
9:55:01 PM:
9:55:01 PM: Your next.config.js must set the "target" property to one of: serverless, experimental-serverless-trace. Update the
9:55:01 PM:       target property to allow this plugin to run.

@hunzaboy hmm that's interesting. the target property has always been required. i'm not sure why you'd have this issue only now.
direct links to your build/deploy logs (the one that works and the one that failed) would be super helpful! (you too @anandakrishna). the link we want looks like: https://app.netlify.com/sites/{your_site_name}/deploys/{long_site_id}

Can't find the link you mentioned. However here is the full log which failed

9:53:10 PM: Build ready to start
9:53:12 PM: build-image version: 7b53c5fc4445e3ec99d3949e5d1174a8c5be4f16
9:53:12 PM: build-image tag: v3.7.2
9:53:12 PM: buildbot version: a8df6d1263bb5bcc16f7b4ebb8e9a6cb904cfa8a
9:53:12 PM: Building without cache
9:53:12 PM: Starting to prepare the repo for build
9:53:13 PM: No cached dependencies found. Cloning fresh repo
9:53:13 PM: git clone https://github.com/Koala-bet/koala-landing
9:53:14 PM: Preparing Git Reference pull/9/head
9:53:15 PM: Parsing package.json dependencies
9:53:16 PM: Starting build script
9:53:16 PM: Installing dependencies
9:53:16 PM: Python version set to 2.7
9:53:17 PM: v12.18.0 is already installed.
9:53:18 PM: Now using node v12.18.0 (npm v6.14.4)
9:53:18 PM: Started restoring cached build plugins
9:53:18 PM: Finished restoring cached build plugins
9:53:18 PM: Attempting ruby version 2.7.1, read from environment
9:53:20 PM: Using ruby version 2.7.1
9:53:20 PM: Using PHP version 5.6
9:53:20 PM: Started restoring cached node modules
9:53:20 PM: Finished restoring cached node modules
9:53:20 PM: Installing NPM modules using NPM version 6.14.4
9:53:30 PM: npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but package-lock.json was generated for lockfileVersion@2. I'll try to do my best with it!npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules/fsevents):
9:53:30 PM: npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
9:53:30 PM: added 393 packages from 283 contributors and audited 394 packages in 8.68s
9:53:30 PM: 60 packages are looking for funding
9:53:30 PM:   run `npm fund` for details
9:53:30 PM: found 0 vulnerabilities
9:53:30 PM: NPM modules installed
9:53:30 PM: Started restoring cached go cache
9:53:30 PM: Finished restoring cached go cache
9:53:30 PM: go version go1.14.4 linux/amd64
9:53:30 PM: go version go1.14.4 linux/amd64
9:53:30 PM: Installing missing commands
9:53:30 PM: Verify run directory
9:53:32 PM:
9:53:32 PM: ────────────────────────────────────────────────────────────────
9:53:32 PM:   Netlify Build
9:53:32 PM: ────────────────────────────────────────────────────────────────
9:53:32 PM:
9:53:32 PM: ❯ Version
9:53:32 PM:   @netlify/build 11.3.2
9:53:32 PM:
9:53:32 PM: ❯ Flags
9:53:32 PM:   deployId: 608b0ea64db7c35c0754f906
9:53:32 PM:
9:53:32 PM: ❯ Current directory
9:53:32 PM:   /opt/build/repo
9:53:32 PM:
9:53:32 PM: ❯ Config file
9:53:32 PM:   No config file was defined: using default values.
9:53:32 PM:
9:53:32 PM: ❯ Context
9:53:32 PM:   deploy-preview
9:53:33 PM:
9:53:33 PM: ❯ Installing plugins
9:53:33 PM:    -<EMAIL_ADDRESS>9:53:33 PM:    -<EMAIL_ADDRESS>9:54:22 PM:
9:54:22 PM: ❯ Loading plugins
9:54:22 PM:    -<EMAIL_ADDRESS>from Netlify app
9:54:22 PM:    -<EMAIL_ADDRESS>from Netlify app
9:54:22 PM:
9:54:22 PM: ────────────────────────────────────────────────────────────────
9:54:22 PM:   1. onPreBuild command from netlify-plugin-cache-nextjs
9:54:22 PM: ────────────────────────────────────────────────────────────────
9:54:22 PM:
9:54:22 PM: No cache found for the .next folder at the location `.next/cache`
9:54:22 PM:
9:54:22 PM: (netlify-plugin-cache-nextjs onPreBuild completed in 210ms)
9:54:22 PM:
9:54:22 PM: ────────────────────────────────────────────────────────────────
9:54:22 PM:   2. onPreBuild command from @netlify/plugin-nextjs
9:54:22 PM: ────────────────────────────────────────────────────────────────
9:54:22 PM:
9:54:23 PM: info  - Using webpack 4. Reason: future.webpack5 option not enabled https://nextjs.org/docs/messages/webpack5
9:54:23 PM: No Next.js cache to restore.
9:54:23 PM:
9:54:23 PM: (@netlify/plugin-nextjs onPreBuild completed in 815ms)
9:54:23 PM:
9:54:23 PM: ────────────────────────────────────────────────────────────────
9:54:23 PM:   3. Build command from Netlify app
9:54:23 PM: ────────────────────────────────────────────────────────────────
9:54:23 PM:
9:54:23 PM: $ next build
9:54:24 PM: info  - Using webpack 4. Reason: future.webpack5 option not enabled https://nextjs.org/docs/messages/webpack5
9:54:25 PM: warn  - No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
9:54:25 PM: info  - Checking validity of types...
9:54:25 PM: info  - Creating an optimized production build...
9:54:30 PM: warn - You have enabled the JIT engine which is currently in preview.
9:54:30 PM: warn - Preview features are not covered by semver, may introduce breaking changes, and can change at any time.
9:54:57 PM: warn  - Compiled with warnings
9:54:57 PM: ./node_modules/next/dist/next-server/server/load-components.js
9:54:57 PM: Critical dependency: the request of a dependency is an expression
9:54:57 PM: ./node_modules/next/dist/next-server/server/load-components.js
9:54:57 PM: Critical dependency: the request of a dependency is an expression
9:54:57 PM: ./node_modules/next/dist/next-server/server/require.js
9:54:57 PM: Critical dependency: the request of a dependency is an expression
9:54:57 PM: ./node_modules/next/dist/next-server/server/require.js
9:54:57 PM: Critical dependency: the request of a dependency is an expression
9:54:57 PM: ./node_modules/next/dist/next-server/server/require.js
9:54:57 PM: Critical dependency: the request of a dependency is an expression
9:54:57 PM: info  - Collecting page data...
9:54:58 PM: info  - Generating static pages (0/15)
9:55:00 PM: info  - Generating static pages (3/15)
9:55:00 PM: info  - Generating static pages (7/15)
9:55:01 PM: info  - Generating static pages (11/15)
9:55:01 PM: info  - Generating static pages (15/15)
9:55:01 PM: info  - Finalizing page optimization...
9:55:01 PM: Page                                                           Size     First Load JS
9:55:01 PM: ┌ ○ /                                                          37.3 kB         212 kB
9:55:01 PM: ├   /_app                                                      0 B             123 kB
9:55:01 PM: ├ ○ /404                                                       3.46 kB         127 kB
9:55:01 PM: ├ λ /api/hello                                                 0 B             123 kB
9:55:01 PM: ├ λ /api/subscribe                                             0 B             123 kB
9:55:01 PM: ├ ○ /how-it-works                                              2.56 kB         126 kB
9:55:01 PM: ├ ○ /markets                                                   5.31 kB         129 kB
9:55:01 PM: ├ ○ /markets/crypto-and-derivative-markets                     1.19 kB         128 kB
9:55:01 PM: ├ ○ /markets/media-and-music                                   1.16 kB         128 kB
9:55:01 PM: ├ ○ /markets/movies-and-tv                                     1.19 kB         128 kB
9:55:01 PM: ├ ○ /markets/sports-and-esports                                1.2 kB          128 kB
9:55:01 PM: ├ ○ /markets/stocks                                            1.15 kB         128 kB
9:55:01 PM: ├ ○ /markets/traditional-assets                                1.17 kB         128 kB
9:55:01 PM: ├ ○ /papers                                                    3.53 kB         175 kB
9:55:01 PM: ├ ○ /roadmap                                                   264 B           124 kB
9:55:01 PM: ├ ○ /team                                                      4.81 kB         176 kB
9:55:01 PM: └ ○ /usage                                                     260 B           124 kB
9:55:01 PM: + First Load JS shared by all                                  123 kB
9:55:01 PM:   ├ chunks/513ab5417a12a586e483f7ebc8b1f4e37799eb8a.011574.js  13.1 kB
9:55:01 PM:   ├ chunks/71247caf95475e3ea7f9a0f8a30beb258b23d005.eb81fb.js  18.7 kB
9:55:01 PM:   ├ chunks/a71edecf204de91e391ef4d07dc70cf0024360a4.14bfd9.js  31 kB
9:55:01 PM:   ├ chunks/ba5a1591c91ad4ae27af2e74af7c98a06179e625.ab02e5.js  3.45 kB
9:55:01 PM:   ├ chunks/framework.e3de07.js                                 41.8 kB
9:55:01 PM:   ├ chunks/main.2b1d7d.js                                      7.55 kB
9:55:01 PM:   ├ chunks/pages/_app.1e66ee.js                                7.18 kB
9:55:01 PM:   ├ chunks/webpack.50bee0.js                                   751 B
9:55:01 PM:   └ css/19ac112eb49f6b836e61.css                               7.22 kB
9:55:01 PM: λ  (Lambda)  server-side renders at runtime (uses getInitialProps or getServerSideProps)
9:55:01 PM: ○  (Static)  automatically rendered as static HTML (uses no initial props)
9:55:01 PM: ●  (SSG)     automatically generated as static HTML + JSON (uses getStaticProps)
9:55:01 PM:    (ISR)     incremental static regeneration (uses revalidate in getStaticProps)
9:55:01 PM:
9:55:01 PM: (build.command completed in 38s)
9:55:01 PM:
9:55:01 PM: ────────────────────────────────────────────────────────────────
9:55:01 PM:   4. onBuild command from @netlify/plugin-nextjs
9:55:01 PM: ────────────────────────────────────────────────────────────────
9:55:01 PM:
9:55:01 PM: Your next.config.js must set the "target" property to one of: serverless, experimental-serverless-trace. Update the
9:55:01 PM:       target property to allow this plugin to run.
9:55:01 PM:
9:55:01 PM: (@netlify/plugin-nextjs onBuild completed in 5ms)
9:55:01 PM:
9:55:01 PM: ────────────────────────────────────────────────────────────────
9:55:01 PM:   5. onPostBuild command from netlify-plugin-cache-nextjs
9:55:01 PM: ────────────────────────────────────────────────────────────────
9:55:01 PM:
9:55:02 PM: Cached the .next folder at the location `.next/cache`
9:55:02 PM:
9:55:02 PM: (netlify-plugin-cache-nextjs onPostBuild completed in 537ms)
9:55:02 PM:
9:55:02 PM: ────────────────────────────────────────────────────────────────
9:55:02 PM:   6. onPostBuild command from @netlify/plugin-nextjs
9:55:02 PM: ────────────────────────────────────────────────────────────────
9:55:02 PM:
9:55:02 PM: Your next.config.js must set the "target" property to one of: serverless, experimental-serverless-trace. Update the
9:55:02 PM:       target property to allow this plugin to run.
9:55:02 PM:
9:55:02 PM: (@netlify/plugin-nextjs onPostBuild completed in 4ms)
9:55:02 PM:
9:55:02 PM: ────────────────────────────────────────────────────────────────
9:55:02 PM:   7. Deploy site
9:55:02 PM: ────────────────────────────────────────────────────────────────
9:55:02 PM:
9:55:02 PM: Starting to deploy site from ''
9:55:02 PM: Creating deploy tree
9:55:02 PM: Creating deploy upload records
9:55:02 PM: 0 new files to upload
9:55:02 PM: 0 new functions to upload
9:55:02 PM: Site deploy was successfully initiated
9:55:02 PM:
9:55:02 PM: (Deploy site completed in 431ms)
9:55:02 PM: Starting post processing
9:55:02 PM: Post processing - HTML
9:55:02 PM:
9:55:02 PM: Post processing - header rules
9:55:02 PM: ────────────────────────────────────────────────────────────────
9:55:02 PM:   Netlify Build Complete
9:55:02 PM: ────────────────────────────────────────────────────────────────
9:55:02 PM:
9:55:02 PM: (Netlify Build completed in 1m 30.3s)
9:55:02 PM: Post processing - redirect rules
9:55:02 PM: Post processing done
9:55:03 PM: Site is live ✨
9:55:03 PM: Caching artifacts
9:55:03 PM: Started saving node modules
9:55:03 PM: Finished saving node modules
9:55:03 PM: Started saving build plugins
9:55:03 PM: Finished saving build plugins
9:55:03 PM: Started saving pip cache
9:55:03 PM: Finished saving pip cache
9:55:03 PM: Started saving emacs cask dependencies
9:55:03 PM: Finished saving emacs cask dependencies
9:55:03 PM: Started saving maven dependencies
9:55:03 PM: Finished saving maven dependencies
9:55:03 PM: Started saving boot dependencies
9:55:03 PM: Finished saving boot dependencies
9:55:03 PM: Started saving rust rustup cache
9:55:03 PM: Finished saving rust rustup cache
9:55:03 PM: Started saving go dependencies
9:55:03 PM: Finished saving go dependencies
9:55:06 PM: Build script success
9:55:25 PM: Finished processing build request in 2m13.22724064s

@hunzaboy thank you!!! i'll update with any findings 🙏


Can you release a new version?

The only tagged version is 0.5.0, from July 2016.
Is it possible to release a new version?

Done.

Thanks


[BUG] Alignment and Spacing Font and Contrast

Description
The buttons and text appear somewhat misaligned, especially the "Play" button and "Select Difficulty" text. Make sure to center these elements properly within their containers.
The footer items like "Pause" and "Restart" seem close to the snowflakes or overlapping with them. Ensure there is sufficient padding between elements to avoid clutter.
fix the theme switcher button with modern style button
Screenshots

pls Assign me !!
Any additional information?
No response
What browser are you seeing the problem on?
Safari
Checklist

[X] I have checked the existing issues
[X] I have read the Contributing Guidelines
[X] I'm a GSSoC'24-Extd contributor
[X] I'm a Hacktoberfest'24 contributor
[X] I am willing to work on this issue (optional)

@YadavAkhileshh bro pls see the pr  #483

I HAve resolve the issue pls merge it


feat(core): extend secondary appearance variables set

PR Checklist
Please check if your PR fulfills the following requirements:

[X] The commit message follows Conventional Commits
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[ ] Bugfix
[X] Feature
[ ] Refactoring
[ ] Code style update
[ ] Build or CI related changes
[ ] Documentation content changes

What is the current behavior?
The wrapper for the second appearance uses the --tui-link variable to specify a text color. It breaks customization for certain cases, for example: I want to change text color for secondary button, but I dont want to change --tui-link variable:
 <button tuiButton type="button" appearance="secondary">
        secondary
      </button>

as the result:

What is the new behavior?
I propose to extend variable set for secondary appearance with current defaults and use them in the secondary.less:
    // extend secondary appearance properties:
    --tui-secondary-text: var(--tui-link);
    --tui-secondary-text-hover: var(--tui-link-hover);
    // for night:
    --tui-secondary-night: var(--tui-clear-inverse);
    --tui-secondary-hover-night: var(--tui-clear-inverse-hover);
    --tui-secondary-active-night: var(--tui-clear-inverse-active);
    --tui-secondary-text-night: var(--tui-text-01-night);
    --tui-secondary-text-hover-night: var(--tui-text-01-night);
    // for light:
    --tui-secondary-light: var(--tui-clear);
    --tui-secondary-hover-light: var(--tui-clear-hover);
    --tui-secondary-active-light: var(--tui-clear-active);
    --tui-secondary-text-light: var(--tui-text-01);
    --tui-secondary-text-hover-light: var(--tui-text-01);

It will allow to change secondary text and more without global share variables changes such as --tui-link and etc.
Does this PR introduce a breaking change?

[ ] Yes
[X] No

Thanks! The funny thing is I made an issue about that specific issue just yesterday. https://github.com/Tinkoff/taiga-ui/issues/3586

I'm skeptical about introducing a lot of new vars. I would rather remove hover effect from text and drop secondary-text-hover variable. Also we never have "light" modifications for variables and overall tuiMode="onLight" is in a weird spot - it was introduced by our design team a looong time ago but I'm not sure if it's actually used. Let's not introduce variables for it and just code it in place this way?

@anatoly-spb any updates?

@anatoly-spb I'm sorry, I'll have to close this PR. Just yesterday, our design team revealed plans to completely overhaul semantic names for CSS variables and introduce a whole new model to align with mobile development team. For easier transition, I'd like to keep it unchanged for now.


Java System.Logger Support

Description
Linked issue: #221
This PR enables the use of Java's System.Logger together with tinylog.
Definition of Done

[x] I read contributing.md
[ ] There are no TODOs left in the code
[x] Code style follows the tinylog standard
[x] All classes and methods have Javadoc
[x] Changes are covered by JUnit tests including edge cases, errors, and exception handling
[ ] Maven build works including compiling, tests, and checks (mvn verify)
[x] Changes are committed by a verified email address that is assigned to the GitHub account (https://github.com/settings/emails)

Regarding the DoD
There are no TODOS left in the code
I am not sure how to handle the module parameter in System.LoggerFinder#getLogger(String name, Module module). See also my comment in the TinylogLoggerFinder class. I would be happy to consider suggestions on this.
Maven build works including compiling, tests, and checks (mvn verify)
I have written some tests for dealing with null as parameter values.These are to check that my implementations of System.Logger#log(...) throw NPEs according to the documentation of System.Logger#log(...). Unfortunately, the spotbug configuration prevents this form of testing with the bug 'NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS'. One possibility would be to include an exception for all test classes in the spotbug configuration.
<Match>
	<!-- JUnit Tests -->
	<Source name="~.*Test\.java" />
	<Bug pattern="NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS, DM_USELESS_THREAD, DP_DO_INSIDE_DO_PRIVILEGED, RV_RETURN_VALUE_IGNORED_BAD_PRACTICE, RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT, SIC_INNER_SHOULD_BE_STATIC_ANON, UPM_UNCALLED_PRIVATE_METHOD, URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD" />
</Match>

Or I remove the corresponding tests again. Your thoughts on this?
Documentation
Additions or amendments for the public documentation:

Agreements

[x] I agree that my changes will be published under the terms of the Apache License 2.0 (mandatory)
[x] I agree that my GitHub user name will be published in the release notes (optional)

Thank you very much for your great pull request. It looks pretty complete :)

I am not sure how to handle the module parameter in System.LoggerFinder#getLogger(String name, Module module). See also my comment in the TinylogLoggerFinder class. I would be happy to consider suggestions on this.

You can just ignore the module. Other major logging frameworks do the same. See https://github.com/apache/logging-log4j2/blob/master/log4j-jpl/src/main/java/org/apache/logging/log4j/jpl/Log4jSystemLoggerFinder.java for example.

I have written some tests for dealing with null as parameter values.These are to check that my implementations of System.Logger#log(...) throw NPEs according to the documentation of System.Logger#log(...). Unfortunately, the spotbug configuration prevents this form of testing with the bug 'NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS'. One possibility would be to include an exception for all test classes in the spotbug configuration.

I fully agree with your suggestion. You can really add the SpotBugs exception to keep the tests as simple as possibly.

Could you verify the email address that you used in your commits? It seems like you used an email address that is assigned to the GitHub account (https://github.com/settings/emails).

Could you verify the email address that you used in your commits? It seems like you used an email address that is assigned to the GitHub account (https://github.com/settings/emails).

I checked the email address again. I hope it is shown correctly now

I checked the email address again. I hope it is shown correctly now

Thank you! Now it is verified and matching with your GitHub account :)

Thank you very much for your effort! I'm very happy about your great commits. I merge them with pleasure.


⚠ Chatwoot has degraded performance

In df9481c, Chatwoot (https://app.chatwoot.com) experienced degraded performance:

HTTP code: 200
Response time: 18761 ms

Resolved: Chatwoot performance has improved in 8b6c788.


If chrome is in a different window in a WM where rofi is run, tab activate does not switch to the window chrome is in

This is probably a window activate issue, your script does not determine which window chrome is running on to switch to it first, then activate tab, is there anyway to feed this data to rofi (which window chrome is in along with any open tabs)

Ok i just figured it out.
I added wmctrl -a chromium
in chrome-switch-tabs.sh of your repo after it activates the tab inside the if statement and it works!


warning: embedding a directive within macro arguments has undefined behavior [-Wembedded-directive]

When building with CLion using lldb 3.9.2 I get these warnings - why undefined behavior? https://github.com/satoshinm/NetCraft/issues/156
/NetCraft/src/main.c:3354:2: warning: embedding a directive within macro arguments has undefined behavior [-Wembedded-directive]
#ifdef BUILD_NUM
 ^
/NetCraft/src/main.c:3357:2: warning: embedding a directive within macro arguments has undefined behavior [-Wembedded-directive]
#ifdef BUILD_WASM
 ^
/NetCraft/src/main.c:3361:2: warning: embedding a directive within macro arguments has undefined behavior [-Wembedded-directive]
#ifdef BUILD_COMMIT
 ^
/NetCraft/src/main.c:3364:2: warning: embedding a directive within macro arguments has undefined behavior [-Wembedded-directive]
#ifdef BUILD_BRANCH
 ^

This is presumably because snprintf is a macro on some platforms? https://stackoverflow.com/questions/28343501/is-it-legal-to-use-the-line-directive-in-a-macro-argument


Fix hot module reload issues caused by subtle bug in useSelector

To test this, load a profile, then save a .tsx file locally. Before this change, it would bring you back to the welcome screen after hot reload. After this change, application state is still displayed. This is because before the change, the setGLCanvas action wasn't resulting in a re-render because it occurred between the initial render and the useLayoutEffect callback.
Fixes #276

Coverage decreased (-0.03%) to 46.914% when pulling 02d2f489b9629e020f8deaea8a88fbba49ca3b31 on jlfwong/fix-hmr into 351994972d626a8bed53ab5a1bed095d5f59909f on master.


Added note on grobid concurrency configuration to README.

Fixes #50

Sorry to nitpick here but could we make this a bit more concise? In my experience if we have a lot of these type of edge case messages over time, it gets hard to read.
Maybe something like this:
Note: Depending on the number of CPUs in your system, the GROBID engine pool may be exhausted when parsing PDFs, resulting in a 503 error. This can be fixed by increasing the concurrency and/or poolMaxWait setting in the GROBID configuration file.
If you're strapped for time, I can handle myself. You've already done a bunch to help and it's been greatly appreciated.


selenium.common.exceptions.JavascriptException: Message: javascript error: echarts is not defined

使用from snapshot_selenium import snapshot将得到的html转为图片，报错，
使用方法为pyecharts.render.make_snapshot(snapshot_selenium.snapshot, 'xxx.html', 'xxx.png')
Traceback (most recent call last):
  File "/home/tests/test_1.py", line 20, in <module>
    make_snapshot(snapshot, '/home/plot.html', "bar0.png")
  File "/usr/local/lib/python3.8/dist-packages/pyecharts/render/snapshot.py", line 32, in make_snapshot
    content = engine.make_snapshot(
  File "/usr/local/lib/python3.8/dist-packages/snapshot_selenium/snapshot.py", line 52, in make_snapshot
    return driver.execute_script(snapshot_js)
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py", line 491, in execute_script
    return self.execute(command, {
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py", line 428, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/errorhandler.py", line 243, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.JavascriptException: Message: javascript error: echarts is not defined
  (Session info: headless chrome=104.0.5112.101)
Stacktrace:
#0 0x557451a50403 <unknown>
#1 0x557451856778 <unknown>
#2 0x557451859617 <unknown>
#3 0x5574518594c4 <unknown>
#4 0x55745185a07d <unknown>
#5 0x5574518bf853 <unknown>
#6 0x5574518aba02 <unknown>
#7 0x5574518bec74 <unknown>
#8 0x5574518ab8f3 <unknown>
#9 0x5574518810d8 <unknown>
#10 0x557451882205 <unknown>
#11 0x557451a97e3d <unknown>
#12 0x557451a9adb6 <unknown>
#13 0x557451a8113e <unknown>
#14 0x557451a9b9b5 <unknown>
#15 0x557451a75970 <unknown>
#16 0x557451ab8228 <unknown>
#17 0x557451ab83bf <unknown>
#18 0x557451ad2abe <unknown>
#19 0x7f7f5964f609 <unknown>

同问


Not able to save and retrieve label description in LesionTrackerTool

In the lesiontracker tools(target tool, ie. bidirectional tool) after adding label and the description in these tools, I am not able to see the description (which is the free text)

Hi there,
Sorry about that. This is a known issue which will be addressed soon.
Thanks!

Unfortunately this issue has grown stale, and with the release of our most recent major version, it is unlikely that we will have the bandwidth to address this issue for our v1.x branch.
If you find that this feature has not yet been implemented in our master branch, you are more than welcome to create a GitHub Issue to request or discuss it. If you're curious to see what we have planned in the near future, you can check out our roadmap, and read our docs.


Docs cherry picks 2

Cherry-picking the following PR's into the docs branch;
https://github.com/docker/docker/pull/19976
https://github.com/docker/docker/pull/20541
https://github.com/docker/docker/pull/20542
https://github.com/docker/docker/pull/20588
https://github.com/docker/docker/pull/20610
https://github.com/docker/docker/pull/20630
https://github.com/docker/docker/pull/20649
https://github.com/docker/docker/pull/20687
https://github.com/docker/docker/pull/20691
https://github.com/docker/docker/pull/20722
https://github.com/docker/docker/pull/20757
https://github.com/docker/docker/pull/20776

ping @moxiegirl

LGTM

Author LGTM, all green - merging!


Remove Youtube Filters

Hello,
How do I remove the youtube filters from the list?
Not the ads, just the things that remove comment, suggestions and sidebar
Regards

For the upcoming version 2.3 I'm considering adding optional variants (subject to change).
One of the variants would be one that does not remove Youtube comments, suggestions and sidebar.
Stay tuned 💃

Please try out the beta for variants and let me know, in your adblocker simply add:
https://raw.githubusercontent.com/hl2guide/All-in-One-Customized-Adblock-List/master/VARIANTS (Beta)/Beta-AIO-YT-Excluded-Variant.txt


Add button elements are not localized

Describe the bug
The Add button elements (Actor/Trigger/Scene) are not localized.
To Reproduce
Steps to reproduce the behavior:

Go to GBStudio
Switch on any non-english language
Click on '+' (Add button)
The four buttons are not localized

Expected behavior
The three selections should be localizable.
Screenshots

Platform (please complete the following information):

Any platform

Thanks @marcosecchi This is fixed now as of commit 7048d388ecf7a0d8968ab77b07ddf7e6627e6c17


Wider contributors meeting - 19th Sept

Let's Build OpenFaaS together
If you've contributed to the OpenFaaS project or are planning to start, it'd be great to have you along so we can sync up and set the direction for the next few weeks as well as longer term.
Drop your email address into the thread in the #contributors Slack channel. If you're not in the Slack group yet then please email<EMAIL_ADDRESS>with a one-line intro.
Date: Tuesday 19th September.

Thanks to everyone who attended! If you're on Slack and want the recording or notes - join #contributors.


[FR] Make it possible to configure a default Smart Feeds selector, such as All unread

Unless I've slept under a rock, there is currently no setting to configure a default feed to open on the desktop (using mac) app? Right? It would be cool if I there's one so I can configure the "all unread" smart feeds is the default.

We will remember the last selected feed between launches in the upcoming Mac 5.1 release of NNW.  We don't have any plans to always launch to a chosen feed, but if you primarily use Unread then this should work for you.

Awesome, works for me! Thanks.


Feature request: OrderByCompletion retuning an IAsyncEnumerable

Hello Stephen,
I was wondering if it would be possible to have the OrderByCompletion return an IAsyncEnumerable<T> instead of a List<Task<T>> (making it an async stream).
await foreach ( var value in tasks.OrderByCompletion( token )  )  { }
I'm unsure if this would be at all possible and I haven't really thought through the implications of this. Currently to achieve what I want I've written some ugly code using the ye olde Task.WhenAny in a loop and yield returning the result from the completed Task. I know this isn't the most efficient way of doing it. I'm just curious if something like this would be possible.
By the way, really enjoying the new book.

The current OrderByCompletion does immediately return a collection of tasks that would be completed in order, so it seems to do what you want already?
An async streams OrderByCompletion would make sense if the number of source tasks were unknown. I'm not sure how useful that would be - it seems unusual to have an IAsyncEnumerable<Task<T>>, which would be the input for that kind of operator.

would make sense if the number of source tasks were unknown.

That's exactly when it is useful. And concurrency limit. And results buffering. Of course, we can use Dataflow, but it can be easier
static async Task Main(string[] args)
{
    IEnumerable<string> urls = ...; //infinite (or not. why not?)

    await foreach (var downloadFileTask in  urls.Select(DownloadAsync).ForEachAsync(concurrency: 3 ,capacity: 20))
    {
         ...
    }
}

private static Task<string> DownloadAsync(string url)...

It's trivial to to yourself:
public static async IAsyncEnumerable<T> ToAsCompletedAsyncEnumerable<T>(this IEnumerable<Task<T>> tasks)
{
    foreach (var task in tasks.OrderByCompletion())
    {
        yield return await task.ConfigureAwait(false);
    }
}

@Arithmomaniac
And block a thread from the threadpool to wait for the next task in foreach? what a waste.
I would like something like this

@vitidev
Clearly I'm still rusty on how await works; isn't the point that awaiting a task is effectively thread-free?

@Arithmomaniac

Clearly I'm still rusty on how await works;

It looks like I'm wrong. It seems I poor understand well how IAsyncEnumerable with yield return await works

Hi Stephen,  I am a beginner on using Tasks , I kindly ask you where can I find a complete example of how to use "OrderByCompletion" to get the result of different tasks and re-order them as they complete  - I read an old article where you posted this example for OrderByCompletion :
var tasks = new[]
{
client.GetAsync("http://example.com/"),
client.GetAsync("http://stackoverflow.com/"),
};
var orderedTasks = tasks.OrderByCompletion();
foreach (var task in orderedTasks)
{
var response = await task;
HandleResponse(response);
}
How i could how can i implement this using the AsyncEx library?  thank you very much for helping

Closing this as OrderByCompletion handles the common case (including IEnumerable<Task> input).
For the dynamically-added case (IAsyncEnumerable<Task> input), I would prefer operators (like "approximate order by completion") become a part of System.Linq.Async rather than AsyncEx.


Fix transforms - missing marginHorizontal marginVertical

marginX and marginY were in the transforms array instead of marginHorizontal and marginVertical, causing negative values to not be processed in the positiveOrNegative function

@nandorojo any chance you've had time to review this bug?

@nandorojo any chance you've had time to review this bug?

why did you remove the existing ones instead of just adding new ones?

The aliases always convert it to either marginHorizontal or marginVertical

cool i’ll take a look tomorrow. could you add a test case to the example app?

I could do that but I'd need you to point me in the right direction on where to start. I took a look in the core package and didn't see any tests implemented, and I'm not sure what in the example app you'd want updated

it’s just in the examples/with-expo folder

@nandorojo honestly I'm not sure what you're looking for. There is no with-expo folder that I can see. There is an example folder. I will just give you some code here to demonstrate the bug and hopefully you can merge it to fix the behaviour.
example spacing:
space: {
  "4": 16,
  "5": 20,
  "6": 24,
  "7": 28,
  "8": 32,
}

If you have a these 3 views you'd expect the layout to be the same:
<View sx={{p: 8}}>
  <View style={{backgroundColor: "red", width: "100%", height: 100, marginHorizontal: -16}} />
  <View sx={{backgroundColor: "red", width: "100%", height: 100, mx: -4}} />
  <View sx={{backgroundColor: "red", width: "100%", height: 100, ml: -4, mr: -4}} />
</View>

At the moment the top and bottom view would be the same but the middle one will interpret that as -4 instead of -16
I have also found another bug (related to this same concept) I will leave a second comment below

@nandorojo Second bug occurs if your space values are prefixed with "$"
space: {
  "$4": 16,
  "$5": 20,
  "$6": 24,
  "$7": 28,
  "$8": 32,
}

Same views as previous example:
<View sx={{p: "$8"}}>
  <View style={{backgroundColor: "red", width: "100%", height: 100, marginHorizontal: -16}} />
  <View sx={{backgroundColor: "red", width: "100%", height: 100, mx: "-$4"}} />
  <View sx={{backgroundColor: "red", width: "100%", height: 100, ml: "-$4", mr: "-$4"}} />
</View>

The issue is that the positiveOrNegative function returns "-16" (string) instead of -16. Returning a string for margin is invalid in react native. So on web (chrome) this results in an empty style for the margin, but on iOS in react native this will produce an error something like: json value __ of type nsstring cannot be converted to ygvalue...
See here for a fix https://github.com/levic92/dripsy/commit/1ed71f20abc8ffeac48c3367d1ebc2edc56ed2c7
I wanted to comment on this here because it is somewhat related to the original issue but I do not know if there would be any side effects for just returning a negative number instead of a string.
My previous comment completely demonstrates the bug that this current PR fixes. Please merge it in when you have time, and if you'd like me to submit a PR with the fix for the issue in this comment let me know.

Looks like I mixed up the dripsy and moti example packages. In my theme, I create a key for each negative scale:
const space = {
  '-$1': -4
}

That's interesting though. Seems like a reasonable PR.

@nandorojo are you going to merge this in? I’m confused. I think I’ve clearly demonstrated the bug here. It was a mistake in the code to include marginX and marginY in that list. It should have been marginHorizontal and marginVertical from the beginning because the aliases will convert it to that (mx and marginX become marginHorizonatal).

I see, so by the time it reaches the transforms, it's already turned into Vertical/Horizontal.


Make eye signature consistent with NumPy

What happened:
Dask's signature for eye is
dask.array.eye(N, chunks='auto', M=None, k=0, dtype=<class 'float'>)

Whereas NumPy's is
numpy.eye(N, M=None, k=0, dtype=<class 'float'>, order='C', *, like=None)

The position of the chunks parameter in Dask means that a call like eye(3, 2) means different things in Dask and NumPy.
What you expected to happen: Behaviour the same as NumPy.
Minimal Complete Verifiable Example:
>>> import numpy as np
>>> np.eye(3, 2).shape
(3, 2)
>>> import dask.array as da
>>> da.eye(3, 2).shape
(3, 3)

Anything else we need to know?:
Environment:

Dask version: main
Python version: 3.8
Operating System: mac
Install method (conda, pip, source): source

Cluster Dump State:

This would unfortunately be a breaking change. However, we could start by issuing a warning. For example:
>>> import dask.array as da
>>> da.eye(3, chunks=2).shape
(3, 3)
>>> da.eye(3, 2).shape
/Users/tom/projects-workspace/dask/dask/array/creation.py:544: FutureWarning: The `chunks` parameter to `eye` should not be specified by position. Please use `chunks=` instead, since the positional order will be changed in a future release to match NumPy.
  warnings.warn(
(3, 3)

See https://github.com/tomwhite/dask/commit/5738f8d041a89a8f617a742acd27777bde0db197

Any thoughts from @dask/array maintainers on the best course of action here?

I agree, it doesn't seem we have much choice besides a warning for a future breaking change.
This would be a broader topic, but perhaps considering making Dask arguments such as chunks= keyword-only may be worth it, like we've done with the like= argument in NumPy. Such a change would help avoiding similar discrepancies between Dask and the other PyData APIs, plus I suspect few people would use chunks= as a positional argument today, but I may of course be wrong.

I think before undergoing this, I think a valid questions is whether or not numpy API compatibility is desirable.
It is conceivable that the original API writers thought that chunks was the most important second parameter.
Now this doesn't work when people want to use dask.array as a drop in replacement for numpy, but I think it will rarely work.
That said, if the policy is to make chunks a keyword argument only, everywhere, I think that it is reasonable.
I don't think you need to do an "all in one rollout", but I do think it is valuable to have a policy saying"we will accept any PR that makes chunks a keyword only argument".
Whatever you choose, providing warnings to the users is useful.
A while back I designed decorators that would enable the design of the deprecation policy and the warnings for you at the time of writing, you could leave them in at infinitum, or you could  remove them during a cursory cleanup.
They also ensure to pass on the warning to the correct stacklevel, something that seems to always be forgotten:
https://github.com/hmaarrfk/wabisabi/blob/master/wabisabi/kwonly_change.py#L24
scikit-image decided not to use them (but essentially rewrote the same idea) when they decided to have larger changes in their API.

perhaps considering making Dask arguments such as chunks= keyword-only may be worth it

That would be a good goal to have I think.

A while back I designed decorators that would enable the design of the deprecation policy and the warnings for you at the time of writing, you could leave them in at infinitum, or you could remove them during a cursory cleanup.
They also ensure to pass on the warning to the correct stacklevel, something that seems to always be forgotten: https://github.com/hmaarrfk/wabisabi/blob/master/wabisabi/kwonly_change.py#L24

Thanks for sharing!


feat(textfield): add read-only state

In order to support future use cases, this adds and styles a readonly state to the textfield component.
It ultimately addresses the request in CSS-30 (add readonly state to Datepicker) and adds an example to the Datepicker's documentation to show the proper markup to achieve a readonly Datepicker.
Additionally, this fixes two browser console errors where we were attempting to manipulate classes for elements that did not always exist.
URL for validation:
https://git.corp.adobe.com/pages/pfulton/spectrum-css-ccx-verify/docs/textfield.html

Description

How and where has this been tested?

How this was tested:
Browser(s) and OS(s) this was tested with:

Screenshots

To-do list

[ ] If my change impacts other components, I have tested to make sure they don't break.
[ ] If my change impacts documentation, I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.

[ ] This pull request is ready to merge.

This has been verified/approved by design (Jacob)

LGTM, note that this has left padding when read-only, which I think is correct, but does not match the designs we looked at the other day in Engineering Workshop (there was no left padding, I remember complaining about it).

LGTM, note that this has left padding when read-only, which I think is correct, but does not match the designs we looked at the other day in Engineering Workshop (there was no left padding, I remember complaining about it).

Great call-out. I'll double-check with Jacob once more to be sure.


Lime-128, Issue 155: In CreditLine#_borrowTokensToLiquidate, oracle is used wrong way

Description
Stacked pull request on #169
Current implementation to get the price is as follows:
(uint256 _ratioOfPrices, uint256 _decimals) = IPriceOracle(priceOracle).getLatestPrice(_borrowAsset, _collateralAsset);
https://github.com/code-423n4/2021-12-sublime/blob/9df1b7c4247f8631647c7627a8da9bdc16db8b11/contracts/CreditLine/CreditLine.sol#L1050
But it should not consult borrowToken / collateralToken, rather it should consult the inverse of this result. As a consequence, in liquidate the liquidator/lender can lose/gain funds as a result of this miscalculation.
Integrations Checklist

[ ]  Have any function signatures changed? If yes, outline below.
[ ]  Have any features changed or been added? If yes, outline below.
[ ]  Have any events changed or been added? If yes, outline below.
[ ]  Has all documentation been updated?

Changelog

Fixed the priceOracle function call in the creditLine.sol in function _borrowTokensToLiquidate (Issue 155: In CreditLine#_borrowTokensToLiquidate, oracle is used wrong way
Ref: https://github.com/code-423n4/2021-12-sublime-findings/issues/155)

Event Signature Changes
Function Signature Changes
Features
Events

Codecov Report

:exclamation: No coverage uploaded for pull request base (lime-134@e35e7cc). Click here to learn what that means.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             lime-134     #170   +/-   ##
===========================================
  Coverage            ?   15.95%
===========================================
  Files               ?       16
  Lines               ?     1736
  Branches            ?      321
===========================================
  Hits                ?      277
  Misses              ?     1459
  Partials            ?        0

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 e35e7cc...6e15db5. Read the comment docs.


New plot type: Strip Charts

Features Suggestion
Feature description: Strip charts are derived from scatter charts. I don't know if a convenience function is necessary, or maybe just something in the cookbook.
Example with points lined up:

Example with points randomly moved up/down:

Code example: Only applicable if we make a function or plottable for stripcharts.

This is a good idea! ... but I'm going to add this to the triage list (#1028) and try to focus more of my time/effort into #1036

I started working on this but then realized that a very similar capability is provided by the population plot:
            var popPlot = plt.AddPopulations(poulations);
            popPlot.DataFormat = ScottPlot.Plottable.PopulationPlot.DisplayItems.ScatterOnly;
            popPlot.DistributionCurve = false;

Results in this image:


Enable/disable portable mode setting

Context:
I want to be able to change Wox to portable mode, which means I can drop it in my dropbox/cloud provider/roaming profile etc and be able to use it when I download/open it in another computer/VM with all my settings intact(except for Folder plugin's folder paths).

Setting to enable/disable portable mode
Change Wox from installed to portable mode and vice versa

Solution:
Expected code behaviour:

Check if user's data is in both roaming and portable location, this can happen if user forgets to delete one of them previously when manually enabling portable mode.

Create/Delete shortcuts to Wox.exe

Create/Delete uninstaller entry to Wox.exe

Copy user's data to the corresponding mode's data location

Mark which user data location is to be deleted

Prompt the user to let them know restart is required and restart automatically

Delete the old user data location that is marked to be deleted

User interface:

Trigger from settings portable/installed mode via clicking on check box

Wox is restarted automatically

@theClueless please review


dump()  convert strings encoded by utf-8 to shift-jis on windows 10.

when I dump() a json object as follows, the dumped string is converted from "utf-8" to "shift-jis".
How can I do to keep up its encode "utf-8"?
{
   "data":"[[0,1,2,3,4],[0,1,2,3,4]]",
   "status":1
}

What do you mean? What output do you expect?

sorry, the type of "data" element is not "array" but "string".
(And the string is encoced by "utf-8".)
As the source of json.hpp, dump() seems to call the method at line 4716.
Then,  execute the following section because the type of "data" element is "string", I think.
And I guess the "data" string is converted from "utf-8" to "shift-jis" when execute the following section.
(in other words, converted by std::ostream& o or escape_string function)
            case (value_t::string):
            {
                o << string_t("\"") << escape_string(*m_value.string) << "\"";
                return;
            }

■dump() in json.hpp at line 4716
    void dump(std::ostream& o, const bool pretty_print, const unsigned int indent_step,
              const unsigned int current_indent = 0) const
    {
        // variable to hold indentation for recursive calls
        unsigned int new_indent = current_indent;

        switch (m_type)
        {
            case (value_t::object):
            {
                if (m_value.object->empty())
                {
                    o << "{}";
                    return;
                }

                o << "{";

                // increase indentation
                if (pretty_print)
                {
                    new_indent += indent_step;
                    o << "\n";
                }

                for (auto i = m_value.object->cbegin(); i != m_value.object->cend(); ++i)
                {
                    if (i != m_value.object->cbegin())
                    {
                        o << (pretty_print ? ",\n" : ",");
                    }
                    o << string_t(new_indent, ' ') << "\""
                      << escape_string(i->first) << "\":"
                      << (pretty_print ? " " : "");
                    i->second.dump(o, pretty_print, indent_step, new_indent);
                }

                // decrease indentation
                if (pretty_print)
                {
                    new_indent -= indent_step;
                    o << "\n";
                }

                o << string_t(new_indent, ' ') + "}";
                return;
            }

            case (value_t::array):
            {
                if (m_value.array->empty())
                {
                    o << "[]";
                    return;
                }

                o << "[";

                // increase indentation
                if (pretty_print)
                {
                    new_indent += indent_step;
                    o << "\n";
                }

                for (auto i = m_value.array->cbegin(); i != m_value.array->cend(); ++i)
                {
                    if (i != m_value.array->cbegin())
                    {
                        o << (pretty_print ? ",\n" : ",");
                    }
                    o << string_t(new_indent, ' ');
                    i->dump(o, pretty_print, indent_step, new_indent);
                }

                // decrease indentation
                if (pretty_print)
                {
                    new_indent -= indent_step;
                    o << "\n";
                }

                o << string_t(new_indent, ' ') << "]";
                return;
            }

            case (value_t::string):
            {
                o << string_t("\"") << escape_string(*m_value.string) << "\"";
                return;
            }

            case (value_t::boolean):
            {
                o << (m_value.boolean ? "true" : "false");
                return;
            }

            case (value_t::number_integer):
            {
                o << m_value.number_integer;
                return;
            }

            case (value_t::number_float):
            {
                // 15 digits of precision allows round-trip IEEE 754
                // string->double->string; to be safe, we read this value from
                // std::numeric_limits<number_float_t>::digits10
                o << std::setprecision(std::numeric_limits<number_float_t>::digits10) << m_value.number_float;
                return;
            }

            case (value_t::discarded):
            {
                o << "<discarded>";
                return;
            }

            default:
            {
                o << "null";
                return;
            }
        }
    }

There are quotes around the array. Therefore, it is treated as string.

After all, I misunderstood.
I checked the data which do dump() by hex editor, it is not converted.
The reason why it seems to be converted is that a return value which "char* " points seems to lose when a function exit.
I copy the value which "char* " points by memcpy(), and return the destination value.
Then the return value do not lose, and my problem has been resolved.
Thanks all.


ORT ignores Subversion revisions

When analyzing https://svn.jboss.org/repos/hibernate/jpa-api/tags/hibernate-jpa-2.0-api-1.0.1.Final
Processed Repository: https://svn.jboss.org/repos/hibernate/jpa-api
Processed Repository Revision: tags/hibernate-jpa-2.0-api-1.0.1.Final

rule violations are raised for files that are part of a different revision, e.g. LicenseRef-scancode-sun-ejb-spec-3.0 in file tags/v2_0_Beta1/license.txt
This seems to happen only if the svn package is a dependency, while these violations do not appear when scanning the package directly.

Could this be somehow related to https://github.com/oss-review-toolkit/ort/issues/6160?


Be more strict with warnings in CI

To better catch deprecations and other warnings that can point to problems, we should be more strict with warnings. This means we should ignore expected warnings (like our own deprecations), and throw exceptions for all others.
A possible solution: pytest can be told to enable warning filters, for example with -W error::DeprecationWarning all deprecation warnings can be converted to exceptions.
For convenient filtering, we may need to introduce warning sub-classes for our own warnings.
Discussion: this may cause CI breakage in unrelated PRs, if a new version of a dependency is released, but IMHO it makes sense to slow down sometimes and make sure these things are properly handled! If the breakage is too much, we can always revert, but even silencing expected warnings will improve the situation and make CI logs better readable!

The issue is that the number of warnings will go up again, and we need to control this somehow. Have a plot over time? Or  fail tests if number of warnings goes over a threshold? Fail CI for some specific warnings, like deprecation warnings?


Cannot reproduce example

I have the following script that is a copy paste of the example:
from xenon import (FileSystem, JobDescription, PasswordCredential, Path, Scheduler)
import xenon

xenon.init()

credential = PasswordCredential(
    username='xenon',
    password='javagat')

remotefs = FileSystem.create(
    'sftp', location='localhost:10022',
    password_credential=credential)

target = Path('hello.sh')

if remotefs.exists(target):
    remotefs.delete(target)

remotefs.write_to_file(
    target,
    [b'#!/bin/sh\n',
     b'echo "Hello, World!"\n'])

scheduler = Scheduler.create(
    adaptor='slurm',
    location='localhost:10022',
    password_credential=credential)
........

When I run the previous script it crashes with the following error:
18:19:28 $ python test_xenon.py
Traceback (most recent call last):
  File "test_xenon.py", line 29, in <module>
    password_credential=credential)
  File "/home/felipe/miniconda3/envs/mdstudio3/lib/python3.6/site-packages/xenon/oop.py", line 304, in static_method
    grpc_call(cls.__stub__(__server__), m, request))
  File "/home/felipe/miniconda3/envs/mdstudio3/lib/python3.6/site-packages/xenon/oop.py", line 271, in grpc_call
    raise make_exception(method, e) from None
xenon.exceptions.InvalidLocationException: Xenon (StatusCode.FAILED_PRECONDITION): "nl.esciencecenter.xenon.InvalidLocationException: slurm adaptor: Invalid location: localhost:10022" in create

Inside the Container a hello.sh was successfully created and  the port  10022 is open:
18:21:15 $ nmap -p 10022 localhost
Host is up (0.00015s latency).
PORT      STATE SERVICE
10022/tcp open  unknown

Thanks for reporting this, the address should be "ssh://localhost:10022"

I made a pull request


Site Footer "We'd love to hear from you!" content formatting

On e.g. https://creativecommons.org , when you view the footer, Frequently Asked Questions is white with no hover state. This was a change made by @mattl to address a request from @peterspdx regarding need to emphasize FAQ relative to the other possible ways to connect.
I spoke with our designer and she suggested these two options:

add hover state (underline) on FAQ to be consistent with "We'd love to hear from you"

OR

adjust the FAQ to be blue with white hover state.

In either case, we think email and phone should be grey to de-emphasize those options, to show clear priority for that information and keep the footer a little calmer.
@peterspdx which is your preference?

I don't feel too strongly, but slightly prefer the blue because it stands out more from the text above with other ways to contact CC. Agree on de-emphasizing the other ways to contact CC. Indeed, I have to wonder about having a phone number there at all, but that's a side point.
Thanks for working this with the designer

@mattl , please assign to @DylanMcCall
Dylan, please implement the following:

remove inline coding on Frequently Asked Questions
change Frequently Asked Questions to blue with white hover state
make email and phone grey, like address above, with white hover state

Thanks!


Page Templates: Saved page templates

Summary

Adds a dropdown for choosing between default and saved templates.
When switching to "Saved templates", displays a button for saving the current page as a template.

Relevant Technical Choices

To-do

User-facing changes

Testing Instructions

Enable the experiment for saving custom page templates.
Open the Page Layouts tab in the library
Verify you can choose between the Default and Saved templates
Verify the non-functional button appears for Saving page as a template when choosing "Saved templates" from the dropdown
Switch off the experiment again
Verify that the dropdown is not visible and everything works as before.

QA

[x] This is a non-user-facing change and requires no QA

This PR can be tested by following these steps:

UAT

[ ] UAT should use the same steps as above.

This PR can be tested by following these steps:

Checklist

[x] This PR addresses an existing issue and I have linked this PR to it in ZenHub
[ ] I have tested this code to the best of my abilities
[ ] I have verified accessibility to the best of my abilities (docs)
[ ] I have verified i18n and l10n (translation, right-to-left layout) to the best of my abilities
[ ] This PR contains automated tests (unit, integration, and/or e2e) to verify the code works as intended (docs)
[ ] I have added documentation where necessary
[x] I have added a matching Type: XYZ label to the PR

Fixes #7058
Fixes #7059

@miina, I think you need to either rebase or just merge with main - this has way too many edited files to get an overview of the actual changes.

Merging without QA since the design is still going to change for both the Save button and the dropdown.


gnome-control-center graphical output stops (GNOME 42)

Describe the bug
With GNOME 42 on master some tabs cause the application to stop outputting graphically.
Steps To Reproduce
Steps to reproduce the behavior:

Open gnome-control-center
Click "Applications"

Expected behavior
See the applications tab
Screenshots
Here's a screencast of it:
https://matrix-client.matrix.org/_matrix/media/r0/download/matrix.org/umSsjUbDqNBDdfAbbFDQKwPo
Additional context
When I reopen the gnome-control-center it shows the Applications tab and it works.
Notify maintainers
@jtojnar
Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[ryantm@home2:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 5.17.1, NixOS, 22.05 (Quokka), 22.05.20220401.e194871`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.8.0pre20220322_d5d4d98`
 - channels(root): `"agenix, nixos-20.09.4407.1c1f5649bb9"`
 - channels(ryantm): `"master"`
 - nixpkgs: `/nix/store/ph7i8qnxh9djkj9wmrhjmscixhn5bwzh-source`

That is likely this issue: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1672

We could apply https://gitlab.gnome.org/GNOME/gtk/-/commit/cc02076b75115c799e029e5728e9fe65cab41ed0.patch to gtk4 if this becomes too annoying.

GSK_RENDERER=cairo gnome-control-center fixes it for me.

Not sure if it matters, but gnome-control-center fails with the following error for me:
runner@03ba52370c61:~/vnc-gnome/hello$ GSK_RENDERER=cairo GDK_SYNCHRONIZE=1 gnome-control-center
libGL error: MESA-LOADER: failed to open swrast: /nix/store/1jzl8nawbli2g2x94p6255wcs7m0w9al-libdrm-2.4.109/lib/libdrm_nouveau.so.2: undefined symbol: drmCloseBufferHandle (search paths /nix/store/p36pgcv991mq5srvg765b78yqpxvk3qs-mesa-21.3.3-drivers/lib/dri, suffix _dri)
libGL error: failed to load driver: swrast

(gnome-control-center:1138): Clutter-CRITICAL **: 23:38:19.524: Unable to initialize Clutter: Unable to initialize the Clutter backend: no available drivers found.
**
cc-object-storage:ERROR:../shell/cc-object-storage.c:167:cc_object_storage_add_object: assertion failed: (G_IS_OBJECT (object))
Bail out! cc-object-storage:ERROR:../shell/cc-object-storage.c:167:cc_object_storage_add_object: assertion failed: (G_IS_OBJECT (object))
Aborted (core dumped)


Passing data to startRtmpSessionWithURL in VCSimpleSession

@jgh- is there any way to give user data in rtmp url in video core i am trying to give the user data in rtmp url like rtmp://servername.tv/server/userID/streamID but it is not starting session plaese help me out

This is a issue I am also facing..
Help me

@bintu1234 This method needs to be changed to be more flexible.


Please invite me to the community

Name
CleverHolmes
Additional Context
I am gonna join your community as a full-stack developer

Invitation sent to join the GitHub Organization. Welcome to Infraform 🎉Please check your mail to accept the invitation sent by GitHub! 🤖About usInfraform is an open source solution for serverless platforms, it is designed for developing solutions and enhancing creators to create their infrastructure 💻 Great to have you in our community ✨ Looking forward to your valuable contributions! 🤓 You can also check our community ✨ Github ✨ LinkedIn 💜 You can also share our community with other folks who want to learn about development, DevOps, tech, and contribute together and with us 👉💜👈

sorry i lost all mails. could you resend email please?


Update to 2.5.0

Checklist

[x] Used a fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin, please rerender

Not sure what's going on with OSX:
Solving environment: ...working... failed
Traceback (most recent call last):
  File "/usr/local/miniconda/bin/conda-build", line 11, in <module>
    sys.exit(main())
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda_build/cli/main_build.py", line 474, in main
    execute(sys.argv[1:])
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda_build/cli/main_build.py", line 465, in execute
    verify=args.verify, variants=args.variants)
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda_build/api.py", line 209, in build
    notest=notest, need_source_download=need_source_download, variants=variants)
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda_build/build.py", line 2864, in build_tree
    notest=notest,
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda_build/build.py", line 1838, in build
    output_metas = expand_outputs([(m, need_source_download, need_reparse_in_env)])
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda_build/render.py", line 757, in expand_outputs
    for (output_dict, m) in _m.copy().get_output_metadata_set(permit_unsatisfiable_variants=False):
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda_build/metadata.py", line 2054, in get_output_metadata_set
    bypass_env_check=bypass_env_check)
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda_build/metadata.py", line 727, in finalize_outputs_pass
    permit_unsatisfiable_variants=permit_unsatisfiable_variants)
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda_build/render.py", line 561, in finalize_metadata
    permit_unsatisfiable_variants=permit_unsatisfiable_variants)
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda_build/render.py", line 154, in get_env_dependencies
    channel_urls=tuple(m.config.channel_urls))
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda_build/environ.py", line 764, in get_install_actions
    actions = install_actions(prefix, index, specs, force=True)
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda/common/io.py", line 88, in decorated
    return f(*args, **kwds)
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda/plan.py", line 474, in install_actions
    txn = solver.solve_for_transaction(prune=prune, ignore_pinned=not pinned)
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda/core/solve.py", line 117, in solve_for_transaction
    should_retry_solve)
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda/core/solve.py", line 158, in solve_for_diff
    force_remove, should_retry_solve)
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda/core/solve.py", line 289, in solve_final_state
    self.determine_constricting_specs(spec, ssc.solution_precs)
  File "/usr/local/miniconda/lib/python3.7/site-packages/conda/core/solve.py", line 315, in determine_constricting_specs
    if sp.name == spec.name][0]
IndexError: list index out of range

...or linux
github.com/terraform-providers/terraform-provider-azurerm/azurerm
github.com/terraform-providers/terraform-provider-azurerm
go build github.com/terraform-providers/terraform-provider-azurerm: open /terraform-provider-azurerm_v2.5.0_x4: permission denied
Traceback (most recent call last):
  File "/opt/conda/bin/conda-build", line 11, in <module>
    sys.exit(main())
  File "/opt/conda/lib/python3.7/site-packages/conda_build/cli/main_build.py", line 474, in main
    execute(sys.argv[1:])
  File "/opt/conda/lib/python3.7/site-packages/conda_build/cli/main_build.py", line 465, in execute
    verify=args.verify, variants=args.variants)
  File "/opt/conda/lib/python3.7/site-packages/conda_build/api.py", line 209, in build
    notest=notest, need_source_download=need_source_download, variants=variants)
  File "/opt/conda/lib/python3.7/site-packages/conda_build/build.py", line 2864, in build_tree
    notest=notest,
  File "/opt/conda/lib/python3.7/site-packages/conda_build/build.py", line 1995, in build
    cwd=src_dir, stats=build_stats)
  File "/opt/conda/lib/python3.7/site-packages/conda_build/utils.py", line 404, in check_call_env
    return _func_defaulting_env_to_os_environ('call', *popenargs, **kwargs)
  File "/opt/conda/lib/python3.7/site-packages/conda_build/utils.py", line 384, in _func_defaulting_env_to_os_environ
    raise subprocess.CalledProcessError(proc.returncode, _args)
subprocess.CalledProcessError: Command '['/bin/bash', '-o', 'errexit', '/home/conda/feedstock_root/build_artifacts/terraform-provider-azurerm_1586866024914/work/conda_build.sh']' returned non-zero exit status 1.

Will try again... 🤞

Same result :(

Permission denied on linux
Failure to solve & conda internal error on OSX

Ping @conda-forge/terraform any ideas?

@conda-forge-admin, please restart ci

The issue is that the recipe is using the GOBIN environment variable directly.  This was dropped in the latest versions of the go compilers.
You can obtain the GOBIN env value by calling ‘go env GOBIN’
Whatever fix you decide try to script it because there are about 70 recipes.

Whatever fix you decide try to script it because there are about 70 recipes

😬
Thanks for the info @sodre - will have to think how to approach that...

Does this affect all go compiler recipes or just terraform-provider-*-feedstock?

Hi! This is the friendly automated conda-forge-linting service.
I wanted to let you know that I linted all conda-recipes in your PR (recipe) and found some lint.
Here's what I've got...
For recipe:

Selectors are suggested to take a <two spaces>#<one space>[<expression>] form. See lines [22]

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Setting:
GOBIN=$(go env GOBIN)  # [not win]

...seems to have fixed linux.
OSX is still failing with an internal conda error.
Since I need this on Windows I'm inclined to merge without OSX support and add it back in after https://github.com/conda/conda/issues/9845 is resolved.

@dhirschfeld thank you for fixing this! since this is an overarching solution to the terraform-provider-*-feedstock's, is there a bot that we could generate to add GOBIN=$(go env GOBIN)  # [not win] to each recipe??

I don't know of any automated way to do that

Yes. Since we need a rerender, we need to make a custom migration in regro/cf-scripts. Please open an issue there. cc @conda-forge/bot

So, this is a horrific hack - I've pinned conda on OSX to 4.7.5 which predates the changes in https://github.com/conda/conda/pull/8899 which appears to have introduced a bug - https://github.com/conda/conda/issues/9845
However, everything does build and I need this on Windows so I'm inclined to merge with the hack in-place until the bug can be fixed.
I'm off for now, if there are no objections to the plan I'll merge in the morning...

@dhirschfeld @beckermr Understood. It might be best to hold off creating an autobot for all the terraform-provider-*-feedstocks until the osx bug is fixed

I've opened an issue on the conda repo (linked above) and have brought up the problem on both the conda and conda-forge gitters:

https://gitter.im/conda/conda?at=5e97007f85b01628f04cc9d2
https://gitter.im/conda-forge/conda-forge.github.io?at=5e97a222c38aa05a1a758a94

So hopefully someone with a mac can debug the underlying issue. If no one beats me to it I can try and figure it out this evening...


Xcode error: building for iOS Simulator, but linking in object file built for iOS on new MacBook M1

Description
Build failed on Macbook Air M1, Xcode 12.4, React Native app from scratch, was made a few days ago and was launching with out any troubles until today. Get the error after Xcode build:

/Users/userName/Projects/MyApp/ios/Pods/OpenSSL-Universal/ios/lib/libcrypto.a(cryptlib.o), building for iOS Simulator, but linking in object file built for iOS, file '/Users/userName/Projects/MyApp/ios/Pods/OpenSSL-Universal/ios/lib/libcrypto.a' for architecture arm64clang: error: linker command failed with exit code 1 (use -v to see invocation)

React Native version:
react-native 0.63.4
Steps To Reproduce
Xcode => Build => get error Build error
This error indicates that OpenSSL is built containing the simulator slice (x86_64) with the iOS device slice (arm64). Combining device and simulator into a single binary file is not a supported build configuration, and never has been. With the introduction of M1 Macs, where the simulator is also arm64 now, Xcode is looking for a arm64 slice intended for the simulator, but finding one only valid for use on a device, and letting you know of this issue.
The solution is to rebuild OpenSSL. If you intend to use it as a a pre-built binary, rather than compiling from source during your app's build, it needs to be inside of an XCFramework. XCFrameworks are purposefully designed to separate device and simulator builds into separate files and avoid this class of error.
Expected Results
The build on Xcode is successful.
Guys can you tell me please why OpenSSL is built containing the simulator slice (x86_64) in React Native? And how to rebuild OpenSSL? And how do you solve it in your project?

What is your OpenSSL version in ios/Podfile.lock?

What is your OpenSSL version in ios/Podfile.lock?

OpenSSL-Universal/Static (<IP_ADDRESS>)

I'd suggest you upgrade RN to 0.64 and Flipper to 0.80 or newer, you'll get newer OpenSSL with xcframework support and this issue will be gone.


Multiple File storages

[x] Define Local (default) storage type
[ ] Define S3 storage type
[x] Store storages on the cache - parent of #479
[x] Implement save/fetch from the local storage
[ ] Implement save/fetch from the S3 storage
[x] Add route for uploading a file from local disk to a specific storage - parent of #475
[x] Add route for downloading a file from specific storage to local disk - parent of #476
[ ] Add route for creating/updating a file resource against a file which already exists on a specific
storage (linking) - parent of #477
[ ] Add route for creating a storage

Storages
Those are resources in the platform that describe where files will be stored.
Storage deprecation
When a storage gets deprecated, it cannot be used anymore to create/update files. However, it can still be used to fetch files which where uploaded before the deprecation.
FileStorage
This type of storage is used to describe how files can be stored in the local file system.
Internal json representation
{
  "@context": [
    "https://bluebrain.github.io/nexus/contexts/storage.json",
    "https://bluebrain.github.io/nexus/contexts/resource.json"
  ],
  "@id": "{storageId}",
  "@type": [
    "FileStorage",
    "Storage",
  ],
  "algorithm": "{algorithm}",
  "default": {default},
  "volume": "{volume}"
}

where...

{storageId}: Iri - The @id of the storage
{algorithm}: String - The digest algorithm
{default}: Boolean - The flag to decide whether or not this storage is the default storage for the project
{volume}: String - The path to the location in the file system where the files are going to be stored

Create storage
PUT or POST /storages/{org_label}/{project_label}/{storageId}
{
  "@type": "FileStorage",
  "algorithm": "{algorithm}",
  "default": {default},
  "volume": "{volume}"
}

S3Storage
This type of storage is used to describe how files can be stored in AWS S3 or any compatible blob store.
Internal json representation
{
  "@context": [
    "https://bluebrain.github.io/nexus/contexts/storage.json",
    "https://bluebrain.github.io/nexus/contexts/resource.json"
  ],
  "@id": "{storageId}",
  "@type": [
    "S3Storage",
    "Alpha",
    "Storage",
  ],
  "algorithm": "{algorithm}",
  "default": {default},
  "bucket": "{bucket}",
  "accessKey": "{accessKey}",
  "secretKey": "{secretKey}",
  "region": "{region}"
}

where...

{storageId}: Iri - The @id of the storage
{algorithm}: String - The digest algorithm. Only MD5 supported.
{default}: Boolean - The flag to decide whether or not this storage is the default storage for the project
{bucket}: String - The S3 bucket name
{accessKey}: String - The S3 access key id
{secretKey}: String - The S3 secret access key
{region}: String - The S3 region

Create storage
PUT or POST /storages/{org_label}/{project_label}/{storageId}
{
  "@type": ["S3Storage", "Alpha"],
  "default": {default},
  "bucket": "{bucket}",
  "accessKey": "{accessKey}",
  "secretKey": "{secretKey}",
  "region": "{region}"
}

The storage is used when uploading files, through the files endpoints.
Upload file to a storage
PUT /files/{org_label}/{project_label}/{fileId}?storage={storage_id} (also possible through POST)
... where {storage_id} is the @id value of an existing storage.
If the query parameter is not present, we will use the latest storage with default = true.
Fetch file from a storage
GET /files/{org_label}/{project_label}/{fileId}
The storage is not specified when downloading files because this information it is present in the file event.
Linking an existing file (in the storage)
PUT /files/{org_label}/{project_label}/{fileId} (also possible through POST)
{
  "@type": "LinkFile"
   "source": "{path_to_file}"
}

Nexus will issue a query to the storage in order to fetch the metadata required for the file Event (size and hash value) and will answer the client with resource created (unless the file does not exist on the storage).
Linking an existing file (in the storage) and move it to the default location. Only available for create operations.
PUT /files/{org_label}/{project_label}/{fileId} (also possible through POST)
{
  "@type": "LinkAndMoveFile"
   "source": "{path_to_file}"
}

The following steps are required:
1 - Issue a query to the storage in order to fetch the metadata required for the file Event (size and hash value).
2- Issue a query to the storage in order to copy the file from the provided {path_to_file} to the default destination (configured by the storage).
3 - Verify the hash
4 - Create a Progress Coordinator where we keep track of the progress of a certain operation. Give each progress a UUID and respond to the client with:
202 Accepted
Location: /progress/{org_label}/{project_label}/{UUID}

Copy an existing file (in the storage) to another storage
PUT /files/{org_label}/{project_label}/{fileId}?storage={target_storage_id}
The following steps are required:
1- Stream the file from the source storage to the target storage
3 - Verify the hash on the target storage
4 - Create a Progress Coordinator where we keep track of the progress of a certain operation. Give each progress a UUID and respond to the client with:
202 Accepted
Location: /progress/{org_label}/{project_label}/{UUID}

Checking progress (for async operations)
GET /progress/{org_label}/{project_label}/{UUID}
where the responses could be...
{
   "@id": {progressId},
   "@type": ["InProgress"],
   "progress": "{progress}"
}

or if it already finished:
301 Moved Permanently
Location: /files/{org_label}/{project_label}/{fileId}

This looks very good, a couple of comments and questions though:

I'd recommend the use of/v1/async/ instead of /v1/progress/ because it's a bit more generic and we can then continue to use the same base for all asynchronous operations
I think we need to reconsider the term Linking
Linking or linking and moving should be transparent to the client and controlled by the storage backend; I think for some storage backends a move will not make sense, while for others it will be mandatory. I think the type should not involve a qualifier for intent.
how are revisions generated when creating a file replica? is it a new revision with the new location or a file will support two locations at the same time?
api keys and secrets for s3 storage require encryption, how will that be achieved?
how are the existing files handled by the new implementation?
what happens if you deprecate an existing storage? can you un-deprecate it?
what sort of acls are required for creating/updating/deprecating storages
will we use acls to control who can write files to certain storages?
how do we handle cases when api keys / secrets expire? how can we make that information available to the client?
how do we handle cases where the hashes computed when creating a replica will not match, a retry will be automatically triggered? what about when the storages use different hashing algorithms?
how can we expose the physical location of the file on the storage to the client? is it controlled by the backend or by acls?
what are the proposed changes to the file metadata?
how can we handle updates to the files within the same storage? will we use some sort of name mangling scheme to allow multiple revisions of the same file reside on the same storage?
when "linking" an existing file, do we need to or are we allowed to change the name of the file on disk?
I think checking the progress for async operations should return some useful information, like how many bytes have been copied out of how many
how are async operations handled by the system? are they using the primary store to keep the state of the operation? I'm trying to figure out what happens if the system becomes unavailable during a file transfer.
will any compression schemes be used to minimize bandwidth when transferring data in between storages or storages and clients?

how are revisions generated when creating a file replica? is it a new revision with the new location or a file will support two locations at the same time?

Revisions are handled like now, meaning that a new file with a new filePath will reside on the new storage while keeping the old one on the previous storage (even when it is a copy and both files are the same).

api keys and secrets for s3 storage require encryption, how will that be achieved?

symmetric encryption with some key.

how are the existing files handled by the new implementation?

They belong to the FileStorage and they'll be handled as so.

what happens if you deprecate an existing storage? can you un-deprecate it?

That's already explained: No new writes (create/update/link/move) to a file against that storage. Fetches are still allowed. No resources on kg can be un-deprecated (for now), and storages are not special resources. So, no, you won't be able to un-deprecate it. However you can just create a new one.

what sort of acls are required for creating/updating/deprecating storages

file-storage/write -> allows: creation/updating/tagging/linking/moving files on a FileStorage
file-storage/read -> allows: fetching files on a FileStorage
s3-storage/write -> allows: creation/updating/tagging/linking/moving files on a S3Storage
files3storage/read -> allows: fetching files on a S3Storage

how do we handle cases when api keys / secrets expire? how can we make that information available to the client?

With the appropriate rejection when attempting to interact with the storage (write operations)

how do we handle cases where the hashes computed when creating a replica will not match, a retry will be automatically triggered? what about when the storages use different hashing algorithms?

Some storages are limited to a certain hashes. For example, you cannot create an S3Storage with SHA-256 algorithm. That's controlled by configuration.
If the hash fail we will retry, signaling as so in the progress:
{
   "@type": "InProgress",
   "transferedBytes": 100,
   "totalBytes": 2048,
   "startTime": "2018-08-23T16:34:47.143",
   "retryCount": 1,
   "previousError": "Hash did not match the source and target paths"
}

how can we handle updates to the files within the same storage? will we use some sort of name mangling scheme to allow multiple revisions of the same file reside on the same storage?

As we do now, having the revision as part of the name/folder structure.

when "linking" an existing file, do we need to or are we allowed to change the name of the file on disk?

No, I don't see the use case. The filename taken will be the name existing on the linked file.

I think checking the progress for async operations should return some useful information, like how many bytes have been copied out of how many

Yes, I updated that. However, it really depends on the store and the way how the copy is made. If the copy is orchestrated by nexus (the stream goes through nexus) they we have this information. If in some cases we issue the copy to the 3rd party store API (e.g.: S3 the same bucket), we might not have this information accessible through the 3rd party store API.

will any compression schemes be used to minimize bandwidth when transferring data in between storages or storages and clients?

As now? GZIP on the HTTP channel

what are the proposed changes to the file metadata?

Internally we need to deal with different kinds of URI and we'll change the event attribute filePath to location.
{
  "@type": "FileCreated",
  "id": "https://bbp.epfl.ch/nexus/data/resourceName",
  "project": "{project_uuid}",
  "attributes": {
    "uuid": "{file_uuid}",
    "location": "file:///some/path", // could be "s3://some/path", "gpfs:///some/path", ...
    "filename": "{file_name}",
    "mediaType": "application/json",
    "bytes": {file_length},
    "digest": {
      "algorithm": "md5",
      "value": "1234"
    }
  },
  "instant": "{timestamp}",
  "subject": { ... },
  "rev": 1
}

We need to decide if we expose this location in the attachment metadata exposed by the API.

We also need the storage information:
{
  "@type": "FileCreated",
  "id": "https://bbp.epfl.ch/nexus/data/resourceName",
  "project": "{project_uuid}",
   "storage": {
      ....
   },
   "attributes": {
    "uuid": "{file_uuid}",
    "location": "file:///some/path", // could be "s3://some/path", "gpfs:///some/path", ...
    "filename": "{file_name}",
    "mediaType": "application/json",
    "bytes": {file_length},
    "digest": {
      "algorithm": "md5",
      "value": "1234"
    }
  },
  "instant": "{timestamp}",
  "subject": { ... },
  "rev": 1
}


Help Channel Tag System

So my idea is for helpees (channel claimer) and helpers (role: helper+) to be able to tag a help channel with the helpee's needed topic/s of help. An example would be if a user had a question about pandas, they could tag it "pandas" using "!tag pandas".
To link the tag system with the help channels, we could have a help summary channel above all the help channels that displays all open channels (with #links) with their help tags or an unknown tag if no tags have been added. The channel could display them in a single embed that gets updated on changes to tags or if a channel opens/closes.

Tags could be predetermined or created on the spot.
The ability to remove tags would also be needed in cases of mislabeling.
Users can sign up to receive notifications about a certain tag

@gamingbuddhist I think we have this now thanks to the new help system.
Unfortunately, we're a bit limited when it comes to the number of tags allowed (I think it's 10)

I think this can be closed


URLs are not handled properly

For example:
detergent('https://detergent.io')

returns:
https://detergent. io

Other than this issue, absolutely loving this library! Great work!

Good idea!

@maxlapides please review the library's functionality around the URL's when you get a chance.

@revelt awesome, thanks for jumping on this so fast! the case i mentioned above is definitely covered now, but what about something like this?
detergent('check out my new website at detergent.io, it's awesome')

what do you think about making this automatic-space-after-period thing an option that i can disable?

@maxlapides well, the purpose of Detergent is to clean text for pasting into HTML. You would still have to manually wrap and style the  tag, plus commercial emails never feature URL's, they only link somewhere:
Text-before label-text text-after.

So, normally, I would run Detergent on the whole text coming from your Brief (like everything in the above example), including links and whatnot and paste into HTML template. Result will be without links, but encoded and cleaned. Then you would manually I'd wrap linked-text with a tag to look like above.
If you're using a build system, workflow would be this: 1. separate all content into JSON files, one folder per-email build, content JSON and template inside. 2. build templates on your preferred templating language, reading-in the content from JSON. 3. when setting up template, pass all text fields through Detergent (via custom filter piping through Detergent, for example). Your JSON will contain URL's too, you simply wouldn't apply Detergent filter on them. Now, you might have cases where there's mingled text, like footer copy. In those cases, hardcode pre-Detergent-encoded HTML straight into the template partial, then call it where necessary.
This is off-topic, but I would strongly recommend to check out Nunjucks + Gulp setup.
I completely agree with this article discarding Handlebars. Nunjucks will lessen your reliance on JS. Also, I never use automated inlining because you can insert attributes with snippets anyway. However, when you rely on inlining, you never really control the bottom level of your code.
Now with regards of adding automatic-space-after-period function, I'd be against it because of two reasons: 1) one more option will double the total combinations amount of unit tests (from 1024, ten options to 2048, eleven options) per complete feature. This means average test will take around <10 minutes (currently it's <5 minutes). 2) URL's are never meant to be mingled among the copy, they are always separated on template level, be it manual build or automated.
Do you see my point?

I do see what you're saying, but I think your assumption that "URL's are never meant to be mingled among the copy" isn't correct. In the example above, I want to mention a website by domain name, but I don't want to necessarily wrap it in a link. This is an unusual case for sure, but I see that as more of a problem than the case where a space after a period is missing. And generally it's best to not make design decisions because of testing.
(Off-topic, I bring all of this up because I'm working on a general purpose email compiler: https://github.com/maxlapides/dovetailer. I am using Handlebars as my template system right now, but I'll definitely check out Nunjucks, I'm not wed to Handlebars are anything.)

If you don't wrap url with a link, how then do you style it (colour, underline etc) and set the target="_blank"?

In this case, I don't want it to be a link or styled in any special way. I just wanna say something like "I just bought some cool new domain names: mywebsite.com and myotherwebsite.net"

Also consider some other similar cases:
my email address is<EMAIL_ADDRESS>in your code, run myInstance.func()

Detergent's aim is to be smart text encoding tool, to find and fix the rubbish in the text. "Smartness" comes with a price, it limits different use cases, like the one you discovered.
Maybe it's worth to assemble the encoding+cleaning+style operations separately? You can easily achieve these operations on strings using other specific libraries from npm. Then you could bypass spaces being added after full stops. What do you think?

Honestly I'm not sure what you mean exactly. I want to have a generic process for encoding and cleaning input strings, which is Detergent's aim. My problem is that this automatic space after period thing is causing more trouble than the value it's providing.

Let me have a think about it.

By the way, the new version 2.26.0 allows to turn off the addition of missing spaces after full stop, comma or semicolon.