[Design] OpenSearch/Dashboards DEB/RPM Distribution Design Document

Hi everyone,
We want to give you more details on how we currently experiment/implement the assemble workflows of DEB/RPM packages for the future releases on OpenSearch/Dashboards.
Please feel free to use this as guidance for contributing on DEB/RPM, as well as raising questions about our approach.

 Original Draft PR for RPM POC on OpenSearch and Dashboards
We currently have a draft PR for review: #1443.

Thanks.

OpenSearch/Dashboards DEB/RPM Distribution Design Document
Introduction
Problem Statement
As of 2021/11, OpenSearch project only publish Tarball and Docker Images as part of the release artifacts. As a result, the community is asking for DEB/RPM packages from us, as it is an easy approach for LINUX users to deploy, run, and test OpenSearch Clusters alongside OpenSearch-Dashboards, without the complicated manual setups on Tarball. After some research, we clearly see the demands from the community and start to investigate the requirements/steps for supporting these new distributions.
Here is the Meta issue to track the progress.

 Designed Features (Outdated as of 2022/01/24)
## Designed Features

Both  .deb and .rpm packages will be provided for users to download and install on their LINUX hosts.
The package will include both the Min code as well as all the plugins for both OpenSearch and Dashboards. (Our design will only support the Distribution DEB/RPM not MIN DEB/RPM).
The design contains two parts of changes:

Assemble_workflow changes to add DEB/RPM distributions as part of the workflow, setup pre-requisite / requirements before a package is generated, and call Packaging to generate the package.
Packaging changes to include a tool for packaging OpenSearch/Dashboards Distribution/Bundle into a package.

Assemble_workflow needs to provide --distribution as an optional argument for the customer to specify which distribution to build. The argument is exposed to assemble.sh . The default value of --distribution is “tar”. We should also support “rpm”, “deb” and “zip” as options of distribution. (“deb” will be an option in later updates)

Requirements (Updated as of 2022/01/24 with more details and milestones)

[M1] OpenSearch build process design for RPM generation

The build workflow should generate the contents of the RPM packages as pre-requisite

Re-use the existing build process to generate the OpenSearch/Dashboards min + all of the plugins artifacts for RPM package to use
The artifacts should be built with LINUX platform specified, as we only plan to support RPM package on LINUX
Tweak the build workflow to have a —distribution parameter so the internal API call can show “rpm” text, instead of the default “tar” text, as well as removing tar related files

The assemble workflow should have a function to wrap build artifacts into a RPM package

Just like build workflow, add a --distribution parameter, so that the assemble workflow knows which distribution to create based on the input artifacts from build workflow
The existing distribution generating code of TAR and ZIP should still function after the above change
Add a new block specifically to call the generation code for RPM

The generation code should pull the artifacts from the build workflow to a temporary location
The code will call existing install function to install plugins on min artifacts
After installation, the code will execute a tool or utility to wrap all the content into a RPM package
The code will also add dependencies to the RPM package so that things like JDK and additional libs for plugins can be installed and pulled separately
The code will move the RPM package from the temp location to dist folder

[M2] RPM Package Signing

The signing workflow should have a function to sign the RPM package with OpenSearch Project PGP key
1. Just like the build and the assemble workflow,  add a --distribution parameter so that the signing workflow can use rpm toolkit to sign RPM packages
2. Adding the rpm toolkit call for RPM package to OpenSearch Signer Client, as it is the backend for signing workflow to function correctly
3. A checksum will also be created after signing is completed to ensure the integrity of the package

[M3] RPM Package Design

The RPM package should adhere to below standards and requirements

RPM package name should follow the binary file naming scheme %{name}-%{version}-%{release}.%{architecture}.rpm so we have a clear path for upgrade/re-release (e.g. opensearch-1.2.0-1.x86_64.rpm)
RPM package should be set to be a un-relocatable package, so that users will not get confused and move the content to a different directory, which then cause the software to be unfunctional
RPM package should have its dependencies pulled upon installation, without bundling them in the package
RPM package will have pre/post install/remove scripts to handle min and plugin specific configurations
RPM package should let rpm itself handle the creation and removal of user/group/dir during installation / removal, and remove any of these logic from the pre/post scripts
RPM package should be as slim as possible, without duplicate libs and related dependencies
RPM package should be installed in /opt directory to follow the LINUX standard, and add a symlink to the old directory presented in ODFE for backward compatibility
RPM package should have no reference to Elasticsearch or Kibana
RPM package should redirect its log to /var/log location per LINUX standard
RPM package removal will not remove user data from the LINUX host
RPM package should have a clear description of its content in metadata
RPM package should have a clear label of LICENSE file location, as well as the LICENSE type in its metadata. The LICENSE file should always present on the host once installed
RPM package should have its documentation files labeled as doc, so that users can choose whether they want to install the docs to save space
RPM package should contain process manager related service file, so user can manage the software with ease
RPM package should not couple the opensearch/dashboards process with any additonal plugin services to reduce the complexity and improve the management
RPM package should handle the initialization of certain plugins automatically

[M4] RPM Package Publishing

The RPM packages should be published in these two ways:

Publish YUM repository

Deploy the RPM packages into a local YUM repository on a build system
The metadata files for the entire repo will be generated and staged in the repo
The build system should try to install the RPM packages through the local repo and verify the commands running correctly
The build system should attempt to start the service of the installed packages and verify the outcome through process manager of the service (see more details in the test requirements)
Once verified, the entire repo should be uploaded to the dedicated production S3 bucket linked to artfacts.opensearch.org
A repo file is also generated (once every major release) and updated on our website, for user to download and deploy on their host / server
Once deployed, user should be able to use YUM command to install the latest RPM packages from our repository on S3, with the help of CloudFront cache in the front

Publish individual package

Update the link of the RPM package on S3/CloudFront to our website download pages
Users can manually download the RPM package with the link
Users can then install the package manually with YUM/RPM command on their server, or they can deploy the package to their own internal repo and consume with YUM

[M5] RPM Package installation

The RPM packages can only be installed on RedHat-Based LINUX distros stated in our compatibility chart

According to the chart, we will only support RHEL/CentOS 7 & 8 + Amazon Linux 2 for RPM

We have two ways to install the package

Install through YUM repository

Users download our repo file through the link we provide on website download page
Users place the repo file manually in /etc/yum.repo.d/ directory
Users can also use yum-config-manager --add-repo repository_url to do so
Users can use yum install command to install our RPM packages
Users can use systemctl related commands to manage the service

Install through manual downloads

Users download the RPM package directly through the links we provide on website download page
Users can use rpm -ivh command to manually install the package on host
Users can use systemctl related commands to manage the service

[M6] RPM Validation

The build system should apply tests to validate the quality of the product before releasing to public

Validate package downloading

Use yum-downloader to test the package availability in remote yum repo
Use curl to test the package availability through download links on website

Validate package installing

Install rpm through local yum repository
Install rpm through remote yum repository
Install rpm through installing the package directly without yum

Validate package signing/checkout

Use yum to auto verify the package signature/checksum through repo file
Use rpm to verify downloaded package and its signature/checksum
Ensure our public key is available either local or remote

Validate package running

Use systemd to start/stop the software service, and check whether the log output match the process manager status messages
Test the start time of the services through API and setup a threshold
Executing software binary directly without systemd if systemd could not bring service up in time

Validate package upgrade/downgrade

Users should be able to easily upgrade/downgrade the package

If user use yum to manage the installation

Upgrade:

yum upgrade to upgrade to latest version
yum upgrade <package-version> to upgrade to a specific version

Downgrade:

yum downgrade to downgrade to previous version
yum downgrade <package-version> to downgrade to a specific version

If user use manual rpm installation

Upgrade:

User manually download a newer version and use rpm -Uvh to upgrade manually

Downgrade:

User manually download a older version  and use rpm -Uvh —oldpackage to downgrade manually

We need to have automation to replicate these practice for testing purposes
We need to have a matrix showing which version to which version is upgradable/downgradable for shards compatibility reasons

Implementation

 Overview (Outdated as of 2022/01/24. See above section for new requirements)
### Overview
We are breaking the design into 2 parts, Assemble Workflow and Packaging.

Run existing build_workflow to generate Min+Plugins Build Binary for OpenSearch/Dashboards
Run assemble_workflow with our code changes, and passing --distribution deb/rpm
The assemble_workflow will call packaging with all the parameters defined in Usage
packaging will call FPM with all the parameters and generate packages
Packages will be copied to opensearch-build/dist folder after creation
The package can now be put into several repositories for customers to consume

Packaging with FPM
As of 2021/11, there are three tools that we can use to generate deb/rpm packages from Min+plugins build binaries. They are gradle with ospackage, Python Setuptools, and FPM. We choose to use FPM as it is still the easiest, most documented, most used tool with the largest package output range support.
Prerequisites
Please make sure that the version of Ruby ~= 2.3.0 and the FPM gem is installed.
Usage
A long command for FPM is called in the assemble workflow including all the details such as service scripts, pre/post scripts, folder structure, architecture, type, and more for fine-grain setup of generating our project DEB/RPM packages.
The inputs of FPM are:
| name               | description                                                             |
|--------------------|-------------------------------------------------------------------------|
| --force            | Force output even if it will overwrite an existing file.                |
| --verbose          | Enable verbose output.                                                  |
| --input-type       | The package type to use as input.                                       |
| --package          | The package file path to output.                                        |
| --output-type      | Type of distribution to build.                                          |
| --name             | Product name (ex: opensearch/opensearch-dashboards).                    |
| --description      | Add a description for this package.                                     |
| --version          | The version to give to the package.                                     |
| --url              | Add a url for this package..                                            |
| --vendor           | Vendor name for this package which is OpenSearch.                       |
| --maintainer       | The maintainer of this package which is OpenSearch.                     |
| --license          | ASL 2.0.                                                                |
| --before-install   | A script to be run before package installation.                         |
| --before-remove    | A script to be run before package removal.                              |
| --after-install    | A script to be run after package installation.                          |
| --after-remove     | A script to be run after package removal.                               |
| --config-files     | Mark a file in the package as being a config file.                      |
| --template-value   | Make 'key' available in script templates.                               |
| --exclude          | Exclude paths matching pattern (shell wildcard globs valid here).       |
| --architecture     | The architecture name. Can be `x86_64` or `aarch64`.                    |                         |

20220204 Update: We have switched from FPM to Rpmbuild for the final implementations, you can see the comments in this post for details: https://github.com/opensearch-project/opensearch-build/issues/1545
Assemble a RPM/DEB distribution
Currently, we have an existing assemble workflow implemented with Python. It takes the output from the build step, installs plugins, and assembles a full Distribution/Bundle into a dist folder.
If you have not run the build_workflow yet, here is the command to generate MIN Tarball + Plugin Zips:
# OpenSearch
./build.sh manifests/<version>/opensearch-<version>.yml --distribution rpm --platform linux

# OpenSearch-Dashboards
./build.sh manifests/<version>/opensearch-dashboards-<version>.yml --distribution rpm --platform linux

Once the build_workflow is completed, you can then run the assemble_workflow. A new argument --distribution is introduced to the assemble workflow, so that the distribution can be selected. For now, the input of  --distribution can be rpm , tar or zip . The default value is tar.
# OpenSearch
./assemble.sh builds/opensearch/manifest.yml --distribution rpm --platform linux

# OpenSearch-Dashboards
./assemble.sh builds/opensearch-dashboards/manifest.yml --distribution rpm --platform linux

You can then find the generated packages in dist folder of opensearch-build repo:
-rw-rw-r-- 1 opensearch opensearch 2742 Dec 7 23:46 manifest.yml
-rw-rw-r-- 1 opensearch opensearch 447811069 Dec 7 01:01 opensearch-1.2.0-linux-x64.rpm
-rw-rw-r-- 1 opensearch opensearch 213067614 Dec 7 23:46 opensearch-dashboards-1.2.0-linux-x64.rpm

Installation and Usages
Once you have the deb/rpm package, you can install and run the OpenSearch cluster on any Debian/RHEL flavored Linux Distro. Besides, systemd scripts are provided, so that process manager can directly manage the lifecycle of the cluster.
To install deb/rpm:
# Install DEB
sudo dpkg -i opensearch-<version>-linux-x64.deb
sudo dpkg -i opensearch-dashboards-<version>-linux-x64.deb

# Install RPM
sudo rpm -ivh opensearch-<version>-linux-x64.rpm
sudo rpm -ivh opensearch-dashboards-<version>-linux-x64.rpm

To start service:
#start service
sudo systemctl start opensearch
sudo systemctl start opensearch-dashboards

#check status
sudo systemctl status opensearch
sudo systemctl status opensearch-dashboards

#stop service
sudo systemctl stop opensearch
sudo systemctl stop opensearch-dashboards

Once the cluster is up, you can then use the API to validate the state, and start to index your data:
https://opensearch.org/docs/latest/opensearch/popular-api/
Frequently Asked Questions

What are the prerequisites to deploy OpenSearch Clusters alongside OpenSearch-Dashboards with DEB/RPM?

You need to have a host of LINUX OS from the compatibility list here.
2. We will include runtime dependencies such as JAVA and NODEJS so user does not need to install them manually like in ODFE. (Outdated as of 2022/01/24, see Requirements above for information related to adding these as dependencies)

What are the steps to deploy OpenSearch Clusters and OpenSearch-Dashboards with DEB/RPM?

Run these commands:

If you install by using package manager directly (Future Steps):

APT: apt install opensearch`` opensearch_dashboards
YUM: yum install opensearch opensearch_dashboards

If you install by downloading the packages from our website:

DEB: dpkg -i opensearch-<VERSION>-linux-<ARCH>.deb opensearch-dashboards-<VERSION>-linux-<ARCH>.deb
RPM: rpm -ivh opensearch-<VERSION>-linux-<ARCH>.rpm opensearch-dashboards-<VERSION>-linux-<ARCH>.rpm

Do you support other OS that are not mentioned in this README?

No, we will only support the Linux OS for DEB/RPM on the compatibility list of our website.

Why are we not using the existing functionalities within OpenSearch Min code to generate DEB/RPM?

Because those functionalities will only include the Min binary, and lack of all the plugins.

What will happen if I do not specify any --distribution when running the assemble_workflow

--distribution is an optional argument exposed to assemble.sh . argparse module helped us to define the argument and automatically generates help and usage messages and issues errors when users give the program invalid arguments. The default is the keyword we used to specify what value should be used when the --distributio is not present. We set default="tar", which means that if --distributio is not present, the workflow will assemble tarball.

What should I do if I’d like to have the assembled Distribution/Bundle stored in other directory instead of the root folder?

You can change the output directory in the dist.py file. For now, we use the os.getcwd() to get the current root folder. You can change it to any other directory based on your requirement. The path will be passed into the packaging process.

How do I contribute code to the workflow?

We welcome your contribution and recommend you to read the CONTRIBUTING.md as well as the DEVELOPER_GUIDE.md before getting started. You can also create issues here if you have any questions and bug reports. Thanks.

Will the RPMs be signed, like the ODFE ones were?

Will the RPMs be signed, like the ODFE ones were?

We generally sign everything we release, so let's make sure they are.

Will the RPMs be signed, like the ODFE ones were?

... and will be they signed with a strong algorithm like SHA256? (Suggestion: they should).
If it isn't it will prevents the use of the rpms / yum repo for install on Redhat / Centos 8 (replacements) when the machine is in FIPS mode, which is quite important for a segment of the user population and not something that can be resolved by 'turning it off'. Without SHA256, the rpm's won't install and there is no way of overriding on the dnf/yum command.
Also, what repo will be they hosted out of?  Will the repo have its metadata signed as well?

@peterzhuamazon Do we have documentation on what the signer process produces, keys, etc.? If not let's make sure to add this to this repo.

Please fix the URL on this line - it goes to a document that most of us don't have access to:

You need to have a host of LINUX OS from the compatibility list here.

I'm not following the decision to include copies of the JDK and Node.JS runtime in the deb and rpm packages. You say it's so a user "does not need to install them manually", but the package manager would do this. I'd consider this a strength of package managers, not a burden.

I'm not following the decision to include copies of the JDK and Node.JS runtime in the deb and rpm packages. You say it's so a user "does not need to install them manually", but the package manager would do this. I'd consider this a strength of package managers, not a burden.

I'm a little confused by that as well.  That is why I asked about what repo they will be serving it out of.  I fear they will just post a bare RPM without dependencies or meant to fit into the standard package systems.  Although, to be honest, I am not holding my breath as I starting asking some of these questions in June of last year (see #27), but no one ever answered.  This project hasn't been the easiest to communicate with or the most transparent, unfortunately.

I'm not following the decision to include copies of the JDK and Node.JS runtime in the deb and rpm packages. You say it's so a user "does not need to install them manually", but the package manager would do this. I'd consider this a strength of package managers, not a burden.

I'm a little confused by that as well. That is why I asked about what repo they will be serving it out of. I fear they will just post a bare RPM without dependencies or meant to fit into the standard package systems.

This is the right time to ask ourselves what we want and clarify anything that's unclear. What should we be doing? Is there anything in https://github.com/opensearch-project/opensearch-build/pull/1443 that is not doing the right thing already (please CR)?

Although, to be honest, I am not holding my breath as I starting asking some of these questions in June of last year (see #27), but no one ever answered. This project hasn't been the easiest to communicate with or the most transparent, unfortunately.

Nobody was working on RPM then, but we should have been able to answer signing questions in general, apologies. I opened https://github.com/opensearch-project/opensearch-build/issues/1502 to document what we do now, which should carry into RPM signing.

Btw, I don't know how to answer "what repo they will be serving it out of". Does anyone? @bbarani or @peternied?

The goals should be to make it easy for anybody who wants to directly download an rpm/deb package and install it, as well as to make it easy for the maintainers of repos to include OpenSearch deb/rpm packages in their repos. I wonder if the assumption that a single file meets all these needs is wrong. A couple of questions:

Should we assemble multiple flavors of RPM/DEB files oriented toward each of these uses? Ones intended for consumption by other software repos would ideally use those repos for managing runtime dependencies. However, folks who want an all-in-one package (similar to the .tgz distribution, but in RPM form) might want to get that from the opensearch.org website.
Should we provide support/instructions for people who want to add opensearch.org as one of their trusted repos, so they can use rpm/etc directly to pull & update OpenSearch (rather than downloading a file locally and installing from it.)

This is the right time to ask ourselves what we want and clarify anything that's unclear. What should we be doing? Is there anything in #1443 that is not doing the right thing already (please CR)?

I am not going to pretend to be an expert on how elasticsearch/opensearch builds.  I have some rudimentary background in packaging and understand some of the complexities, but not enough to critique the packaging implementation of the shell scripts, python scripts, etc...  I can expand some on the 'what' should happen from my viewpoint, however.
I believe we should strive for something similar in how elasticsearch operated: setup some repo in /etc/yum.repos.d/  (although if this wanted to be some already in place like EPEL in the case of redhat, that would be just fine by me) and run the yum/dnf install command with some list of packages (assumedly, opensearch and opensearch-dashboards as appropriate).  The yum/dnf command would then process dependencies, install dependent packages, install the indicated opensearch package, and configure startup scripts (like the systemd service files, any required selinux call setups for the paths, etc...).  Successive calls to yum/dnf update should install updates as available on the repo server and reload/restart services as appropriate.  Calls specifying specific versions of opensearch (like 1.3) or some relation (like most current version <1.3 to stay on the 1.2 series bugfix) should be supported.  Updates which change versions should automatically do any migration needed to support the new versions.
All of the above should obviously work for supported platforms substituting relevant commands (like apt-get for yum/dnf).  It appears that by the names of the DEB/RPM it seems like Debian and Red Hat flavor distributions are being explicitly supported, which appears sensible, but we should probably make that clear.  Support for Red Hat should also include the restrictions for FIPS, which is officially supported by the Red Hat distribution.  Pragmatically, I have seen that means that RPMs should be signed with strong algorithms (such as SHA256 instead of, or at least in addition to MD5) and that the repos serving the RPMs should similarly sign their metadata with SHA256 as well (repomd.xml.asc).  These are needed to assure the integrity of the metadata which trigger updates and the updates themselves, the need of which should be readily apparent with supply chain attacks becoming prominent in discussions.

Please feel free to use this as guidance for contributing on DEB/RPM, as well as raising questions about our approach.

@peterzhuamazon It was stated that this would be used for raising questions about the approach.  While there appear to be a number of questions raised, it is a bit light on answers.  Do you think some will be able to be given?

Also, what repo will be they hosted out of? Will the repo have its metadata signed as well?

@justchris1 The ODFE repo has its metadata signed...

Also, what repo will be they hosted out of? Will the repo have its metadata signed as well?

@justchris1 The ODFE repo has its metadata signed...

Is that the repo they are using?  There had been a lot of talk of the forums of getting rid of the ODFE nomenclature, so it is unclear if they would use that repo or not.  Of course, RPM had been a 1.0 GA feature that kept getting pushed and pushed through time.  It wouldn't shock me that since no one seems to have any answers that this just keeps getting pushed to the right.  I imagine this isn't of much value to Amazon.  Others, like @dblock have also asked, but crickets continue to be the predominant sound heard.

Hi All,
We realized there were missing pieces in the initial proposal, which is why we appreciate your feedbacks to the post.
We have since added a lot more details in the requirement section of the original post.
If you search for Requirements in the post, you will find 6 new milestones we created with more details on all the aspects of the RPM package that we need to consider.
Note: The PR associated with initial design is more of a POC code and not ready for production consumption. We will making multiple changes to the RPM distribution generation code corresponding to the milestones listed on the parent issue to meet the quality bar of the RPM artifact
Please let us know about your thoughts after reading through our new requirements.
Thanks.
@jimmyjones2 @justchris1

@jcgraybill @dblock please also take a look in the Requirement section.
We will start to create issues and tasks in this repo and link to the meta issue once we finalize all the details.
Thanks.

Thanks @peterzhuamazon for providing an update with answers to everything that's been provided here. Those requirements and user experience details look good to me.

Just one comment - no one at this point should ever install packages with "rpm" directly (and -ivh is particularly bad), but always use "yum" or "dnf".  You can install a locally downloaded rpm by specifying the filename, e.g. yum install opensearch-1.3.0-1.x86_64.rpm

Close this as our design is already done without any changes.
The artifacts of rpm on 2.0.0-rc1 and 1.3.2 have been released now.
Thanks.

Excited to see RPMs with the latest release! Is there a place where progress towards packaging deb files is tracked?

Excited to see RPMs with the latest release! Is there a place where progress towards packaging deb files is tracked?

DEB is out with the latest 2.5.0 release.
https://opensearch.org/downloads.html
Thanks.


timeFactor default value and documentation

So, I started using this and was wondering why my tokens weren't being refreshed automatically.
Turns out it was because the timeFactor was set incorrectly. My server returned expiry times in seconds (Unix time).
It took me a while to track the problem because I assumed timeFactor to be correctly set to 1 because the docs say that the default value of 1 refers to seconds:
  /**
    Default time unit.
    @property timeFactor
    @type Integer
    @default 1 (seconds)
  */
  timeFactor: 1,

Then I saw the code comparing the expiry time to JS getTime() which is in milliseconds.
Since the JWT spec specifies that the time should be in seconds, shouldn't the default be 1000?

@engwan I think I had set that to 1 just because javascript uses milliseconds by default but I don't have a problem setting it to 1000 since my backend also sends time out in seconds

@engwan do you think it would be better to have a more verbose and strict value, instead of timeFactor it could be something like backendServerTimeUnit: seconds?

Yes, I think that would be much better. 99% of the time it's gonna be either seconds or milliseconds.
I don't think anyone would use timeFactor values other than 1 or 1000 :)

@jpadilla what do you think? ill submit pr if it makes sense... still haven't caught up with latest changes to this library but im about to as im using it in active project...

@erichonkanen not entirely sure what the proposal here is? Better documentation around timeFactor? Setting timeFactor to 1000?

@jpadilla instead of having timeFactor be an integer value, one proposal would be to have e.g. two values you can use for it with one being the default:
timeFactor: seconds or
timeFactor: milliseconds
Those are the only two cases anyways and it's easier to understand if it's verbose as a word. The variable name could be adjusted also to e.g.:
backendTimeUnit: seconds

@erichonkanen I feel like this can actually just be solved with better docs/examples instead of adding more config/settings. Thoughts?

@jpadilla the reason I like the idea of switching from timeFactor to a more semantic serverTimeUnit is that there are really only 2 cases which are seconds and milliseconds... So right now someone is either going to set it to 1 (seconds) or 1000 (milliseconds), but that seems more confusing that just saying hey either you set it to the verbose "seconds" or "milliseconds".. the name could remain the same as timeFactor even


[gpuCI] Forward-merge branch-22.12 to branch-23.02 [skip gpuci]

Forward-merge triggered by push to branch-22.12 that creates a PR to keep branch-23.02 up-to-date. If this PR is unable to be immediately merged due to conflicts, it will remain open for the team to manually merge.

SUCCESS - forward-merge complete.


Switching to asset editor and back sometimes deletes project code

To Reproduce
Steps to reproduce the behavior:

Open existing project, immediately go to asset editor
Switch back to blocks, make several changes
Switch to asset editor and quickly back to blocks
New code is gone

Oops, duplicate of https://github.com/microsoft/pxt-arcade/issues/2506


Unexpected end of jason input

Hi Team,
we are trying to build the casdoor application linux machine, we configured everything, upto login page it came, after entering credentials it shows Unexpected end of jason input.
Uncaught runtime errors:
×
ERROR
Unexpected end of JSON input
SyntaxError: Unexpected end of JSON input
at http://<IP_ADDRESS>:7001/static/js/bundle.js:6236:16
Kindly suggest on this

99% is your own issue, closed here


Internal: Move fetch-engine logic to https://github.com/prisma/engines-wrapper

Problem
Right now, pointed out by @williamluke4
@prisma/engines requires @prisma/fetch-engine
https://github.com/prisma/engines-wrapper/blob/master/packages/engines/package.json#L11
    "@prisma/fetch-engine": "2.18.0-dev.32",

and @prisma/fetch-engine requires @prisma/engines-version
Suggested solution
We could move the logic of fetch-engine to https://github.com/prisma/engines-wrapper

Done in https://github.com/prisma/engines-wrapper/pull/78


Change Stage from complete to annotation

Actions before raising this issue

[X] I searched the existing issues and did not find anything similar.
[X] I read/searched the docs

Is your feature request related to a problem? Please describe.
I have a CVAT project containing 100 tasks that has already labeled. Now, I need to draw bounding boxes around a new object in these tasks. While I can manually change the status of each task from "completed" to "annotation," is there a more efficient way to do this for all tasks at once?
Describe the solution you'd like
A python code that enable me to change all at once

You may write a simple Python script using CVAT SDK. There is no way to do it in the graphical interface


[Bug]: No ability to disable source maps

What happened?
Options for the esbuild rule only allow for truthy source map options, there is no way to disable source maps.
Code in question:
https://github.com/aspect-build/rules_esbuild/blob/65d93acaa5f79d17e991b0db582b966ba2086532/esbuild/private/esbuild.bzl#L204
Version
Development (host) and target OS/architectures:
Output of bazel --version:
bazel 5.1.1
Version of the Aspect rules, or other relevant rules from your
WORKSPACE or MODULE.bazel file:
http_archive(
    name = "aspect_rules_esbuild",
    sha256 = "1e365451341ffb2490193292dfd9953f2ca009586c2381cb4dc08d01e48866b7",
    strip_prefix = "rules_esbuild-0.12.0",
    url = "https://github.com/aspect-build/rules_esbuild/archive/refs/tags/v0.12.0.tar.gz",
)

Language(s) and/or frameworks involved:
How to reproduce
No response
Any other information?
Source map omitted on the command-line shows no map is generated
>>> pnpm exec esbuild foo.js
console.log("Hi");
>>> pnpm exec esbuild --sourcemap foo.js
console.log("Hi");
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiZm9vLmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zb2xlLmxvZygnSGknKTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFFBQVEsSUFBSSxJQUFJOyIsCiAgIm5hbWVzIjogW10KfQo=

>>> pnpm exec esbuild --outfile=foo_bundle.js --bundle foo.js

  foo_bundle.js  48b

⚡ Done in 13ms

/// (Confirmed no .map file generated)

Potential implementation: missing sourcemap option should not produce a source map or setting sourcemap to False
Fund our work

[ ] Sponsor our open source work by donating a bug bounty

Work-around:
in the esbuild rule add:
args_file = "esbuild_args.json",

create that JSON file with this:
{
  "sourcemap": false
}


Document the gcc bug that genreates a spurious warning.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105329
Is triggering issues in single-char string assignments to strings:
here:
https://github.com/chipsalliance/verible/blob/c730042f4a0ac27e7d936baaf801df225d9352cc/verilog/tools/ls/verilog-language-server.cc#L190
and here:
https://github.com/protocolbuffers/protobuf/blob/9c2211be08af10dd5964cf8b65364afaef001fdf/src/google/protobuf/io/tokenizer.cc#L588
This is a spurious warning in gcc 12.2, with c++20 and optimizations enabled and is safe to ignore. So just document why we enable -Wno-restrict.

Codecov Report
Base: 92.96% // Head: 92.96% // No change to project coverage :thumbsup:

Coverage data is based on head (8a20937) compared to base (9c79c6b).
Patch has no changes to coverable lines.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1708   +/-   ##
=======================================
  Coverage   92.96%   92.96%
=======================================
  Files         352      352
  Lines       25241    25241
=======================================
  Hits        23465    23465
  Misses       1776     1776

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Implement "inset" text field auto-complete

This is one part of https://github.com/flutter/flutter/issues/3969, which I've split out due to the priority (blocking) for customer:mulligan.
Their application has textfields which take user input of a large range of values (essentially a giant enum) for which the only valid values the server will accept are the ones which the server sent down as part of auto-complete.
This is probably M1-M3.  They're working around this now by using locally-cached static data so they don't have to hit their server with invalid values (and have it reject them).

Are there any UI mocks for this widget?

Yes, sorry, I should have linked to https://material.io/guidelines/components/text-fields.html#text-fields-auto-complete-text-field above.  Note there are 4 types.  Mulligan mocks only use the inset type.

As far as I can tell, that's a list with a card with a column with a row with an input field and some icons, a divider, and some lines of styled text, and some other cards below for more structured suggestions. I'm not sure what additional features the platform would need to provide to make this possible. There's not much reusable logic here -- the difficult work is in fetching the data, mapping the user input to a set of suggestions, formatting the structured suggestions, and so on. Many parts of this would differ from use case to use case (for example whether there's a back button, or an X).

FYI @paolosoares

Building separate widgets for the suggestion list, input, fetching data, etc is trivial. The non-trivial part is implementing the "right" visual behavior, for example:

The suggestions need to be overlaid below/above the input, covering the other UI elements while not being a modal;
The positioning of the suggestions depends on the screen real state and the position of the input. 3. Showing the suggestions might also require pushing the input slightly up or down to give space for the user to scroll on the list, specially when the keyboard is visible;

That's just from the top of my head. I'm sure there are more details we should be aware of.
Getting these things right is important to provide a consistent behavior and is not as simple as cobbling some widgets together and requires more in-depth knowledge about how Flutter works (e.g. how to overlay the suggestions? how to handle back button? how to resize/scroll the view to make space for the keyboard?).

The suggestions need to be overlaid below/above the input, covering the other UI elements while not being a modal

This seems straight-forward; just put your widget above the others.

The positioning of the suggestions depends on the screen real state and the position of the input

This seems straight-forward as well, it's just a matter of placing the containers in a column along with the text input.

Showing the suggestions might also require pushing the input slightly up or down to give space for the user to scroll on the list, specially when the keyboard is visible

This seems straight-forward as well; position the input or the column in a stack, or provide a ListView to scroll it, etc.
We could certainly provide a widget that does all this, but it seems to me it would be more effective for this kind of thing to be implemented directly in your application, at least until we have more collective experience as a community.

How should the hierarchy of widgets look like to create overflow widget with suggestions for TextField? I have Column of custom TextFields and I want to show suggestions for each of them. Should I use OverflowBox somehow?

Given how common this pattern is (simple to implement or otherwise), I think we are going to want to provide a helper implementation of this as part of the Material package, no?

I find myself looking for an auto suggest text input widget today.

We had a 3rd customer ask for this this morning.  @HansMuller I think this is something we should consider building an example for, or even adding to the framework.  Even if it's simple it seems to be a common request.

I'm pulling this back in to M3.  Either we will need to write this for our customers.  Or we will need to find someone to.  Having a Material-Design compliant Inset-Autocomplete widget is definitely self-implementable as @Hixie describes above.  However it's also likely to be a popular use-case, and one which has fiddly little details which may desire the care of some of our core Framework team.

I'm going to take this on and discuss further with Mulligan.  We want to get:

[ ] An implementation for this inset-autocomplete widget (and all the fiddly little details)
[ ] A story about the future ownership of this widget (here in flutter/material or internal to the g3 clients' codebase)

@Hixie I am kind of confused by your description of the solution. What I can get from your response is to have a Text widget which works as suggested text and put a TextField on top of it by putting both the Text and TextField widgets in a Stack. Then add a ListView under that Stack to show other suggestions. Is this what we need to do?

I don't really understand the overlapping Text and TextField thing. Do you have a mock showing why you would want that? (The material spec linked above seems to have removed all mention of this widget.)

The new spec has been moved to describe generic search widgets: https://material.io/guidelines/patterns/search.html#search-in-app-search
The old spec is archived here: https://web.archive.org/web/20170209102004/https://material.io/guidelines/components/text-fields.html#text-fields-character-counter
@aubykhan Neither specification calls for having suggestions overlaid, only for showing a hint text when the field is unselected.  This can be built with a TextField.  You can put a ListBody (or ListView for scrolling) of suggestions after the TextField inside of a column:
return new Column(children: [
  new TextField(controller: _textFieldController), // the controller can define hint text
  new ListBody(children: _getSuggestions().map(_buildSuggestion).toList(),
]);

...
Widget _buildSuggestion(String suggestion) {
  // build a widget containing the suggested text.
}

From talking with the Mulligan team, they're interested in using multiple autocompleting widgets inside several forms in their app, and so they're interested in overlaying the suggestions above the screen (like in a dropdown) instead of drawing them inline.  This isn't currently a material widget specification.
I'm meeting with Mulligan further to develop a story for fitting this widget specification in with Material design, the extension of Material common to Leafy, Mulligan and others, or just the project-specific needs of Mulligan.

Got that now, I was looking at the TextField guidelines earlier and it has this thing for autocomplete:

So I got that feeling that this effect can be achieved through overlapping. I'm going to try out what's in my mind and will post the result here if I succeed at all :)
Thanks for your support @Hixie and @DaveShuckerow!

I would implement that at the RenderEditable level, as one paragraph with two styled TextSpans. It might need framework changes (which you should feel empowered to make and contribute).

What milestone is autocomplete now assigned too?

@aubykhan that's exactly what I wanted, inline auto-completion, instead of a big list popping up.
please let us know when you reached some conclusion, thanks.

An update on this: For Mulligan, the need was satisfied with the showSearch widget.  The goal was to show multiple suggestions in response to a single query.
showSearch is the Material Design pattern for this behavior, so I'm going to resolve this issue.


Push to non-existing ref causes panic

Seems to happen during backward transform because a commit cannot be found -> investigate.

Fixed in 040f2a804db22278f225d516cbf4877b5fab46fb


backend/drm: add support for the link-status property

Fixes https://github.com/swaywm/wlroots/issues/995

@ascent12 bump


Use auto so we can get the benefits of Eigen template expression optimizations

Was profiling and came across these Eigen memory allocations as the hotspot for our current performance test (which I realize is not super indicative of broad Stan performance issues, but still).
This seemed to get rid of the allocations entirely. I think the performance test is only using the chain() method with Cb=1 (line 339)
Copyright and Licensing
Please list the copyright holder for the work you are submitting (this will be you or your assignee, such as a university or company): Columbia University
By submitting this pull request, the copyright holder is agreeing to license the submitted work under the following licenses:

Code: BSD 3-clause (https://opensource.org/licenses/BSD-3-Clause)
Documentation: CC-BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

Seems to speed up the jenkins performance test by like 35%, too! Wonder if we can do this across the codebase. Need some more realistic performance tests, too.

You mean the function tests for this function or bigger speedups?  I don't know where the latter would come from by just modifying this function, though it is used all over the place.
We can absolutely do this for all the matrix code.  Assignment to the base type Matrix<T,...> (including by having it as a return value or function argument) is what triggers the alloc and copy.
So a big speedup shoul dbe available from generalizing function arg types using Eigen references so we can pass template expressions without copying.

On Mar 15, 2018, at 8:52 PM, seantalts<EMAIL_ADDRESS>wrote:
Seems to speed up the jenkins performance test by like 35%, too! Wonder if we can do this across the codebase. Need some more realistic performance tests, too.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

I think it'd be useful to have as part of the test suite that runs on Jenkins performance tests for (many) more models than just this simple logistic regression model.
Sweet!

Does anyone know exactly how clever Eigen's lazy evaluation will be with code like this?  Is it possible that it will end up redoing calculations for some cases in the loops that use adjA and adjB?  It's probably fine in this case, but I would dig into it a bit deeper before doing this elsewhere and maybe even benchmark on a range of matrix sizes in this case.

Here's a page about some of it: http://eigen.tuxfamily.org/dox/TopicWritingEfficientProductExpression.html

I agree that should have a way to instrument realistic microbenchmarks for all of this.  That's a pretty big job to make part of the build, but I think we can proceed as Sean did by looking at specifics and profiling them more informally.
Eigen's very good at minimizing copies and maximizing memory locality.  They recommend maintaining template expression types as long as possible.  The usual style is to maximize expression size to give Eigen the greatest chance at static optimization.  That doesn't always work, though as not every single possible pair of operations is templated, so sometimes you need to eval down to a matrix manually.

I read much more about it and learned some stuff. To summarize, it seems like using auto is usually discourage with Eigen ("unless you know what you're doing"), because it will create these temporary values that 1) change when the underlying values used to create them change and 2) are good for 1 evaluation only. I will double check that all of these changes fit the bill as "safe," though all of the unit tests pass (Jenkins is having some kind of ridiculous trouble on Windows now, where it can't delete files).
Sources:
https://eigen.tuxfamily.org/dox/TopicPitfalls.html
http://eigen.tuxfamily.org/index.php?title=FAQ#Optimization
https://stackoverflow.com/questions/37658651/eigen-coding-styles-effect-on-performance
https://stackoverflow.com/questions/26705446/eigen-auto-type-deduction-in-general-product
https://stackoverflow.com/questions/32510183/can-the-use-of-c11s-auto-improve-performance
http://www.alecjacobson.com/weblog/?p=4043
https://stackoverflow.com/questions/33664976/avoiding-eigens-memory-allocation
https://eigen.tuxfamily.org/dox/TopicInsideEigenExample.html

Egads.  That I wouldn't have expected either.  I knew they were views, but I didn't realize operations like transposition were internally destructive.

On Mar 16, 2018, at 12:35 PM, seantalts<EMAIL_ADDRESS>wrote:
I was expecting most of this, but the idea that the "view" would point to invalid memory after e.g. a .transpose() operation was called on it and used elsewhere surprised me (learned about that here).
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

I would actually not even call these views, because of that...

I actually wasn't able to replicate the same destructive .transpose() behavior from the StackOverflow post with anything like the situation here. It might have to do with the way that person defines the Id() function?

:-)  Yes, that's the answer on Stackoverflow from the Eigen Developer Gael.  Specifically the problem was using a reference to a local variable.

Wow, Gael made that super unclear, haha. They made it sound like Eigen's default behavior was to return some kind of temporary variable.
It still seems like we need to be really careful with auto, especially in larger expressions.

Agreed.  Just making larger expressions is the better approach as long as it avoids expensive recomputations.

I actually made some benchmarks and discussed them on the discourse thread. Hoping anyone with Eigen knowledge or theories can comment on some weird results there :)


a tcp socket connection to docker is done by http://docker-engine:2375 not tcp://docker-engine.2375

If you for example do docker-in-docker ( docker:did ) or a usual remote docker-eninge, you would connect using a tcp socket rather then a lock unix socket.
This socket is usually either given by a simple domain:port combination ( since tcp:// is the default if the socket scheme is not given ). This is also part of the docker-client configurations of DOCKER_HOST https://github.com/docker-library/docker/blob/6e7677bec19c214ef5445c0d2b96c56e42098ca1/docker-entrypoint.sh#L17
in elastic-agents though, one has to put http:// instead, which is undocumented and also not what is expected and not used by usual docker clients.
Can we fix this, on which layer this is mapped? using tcp:// does not work at all

I too came across this issue when trying to use a remote docker daemon. @EugenMayer this issue helped.
It's worth mentioning it in the docs.

This issue is caused due to the underlying docker-client library.
Here is an open issue for the same: https://github.com/spotify/docker-client/issues/946


R-script call slow ?

Hi,
I call r-script a lot of times (hundreds). in my node script.
Each call of r-script takes 1s whereas nothing is performed in the R script (just gives back a number without any computation).
In my node script, I put a "console.log(new Date());" before AND after calling r-script -> this is how I evaluated duration of r-script call.
Do you know how to make things faster ?
Thank you in advance
Kind regards
XAvier

I have also noted that calling R from Node.js involves quite some overhead.
I don't know how to speed up the R call.
Since you are calling R hundreds of times, it would be beneficial if R would not be terminated between the separate calls. However, I have no idea how to realize this quickly in the given Node.js environment. You would need some kind of R demon or R server running all the time, and then you would pass your scripts to it. This would at least save you the constant starting / terminating of RScript.
What you maybe can do: I understand that you loop through "something", resulting in hundreds of calls to R. Can you move that loop to R directly?
Br, M.


Add support for CV reading and writing

As a train configurer, I want to be able to read and write CV values to and from locos.

Basic CV reading/writing implemented with 3bdc88c899bd3ba2b8c39c140126454f51dc37b1


Changes to "Has capability test"

Hello @nichoth :wave:
We've seen your PR at https://github.com/ucan-wg/ts-ucan/pull/58 :+1:
I'm proposing some changes to that PR. This fixes some stuff, like removing commented out things, renaming emailCapabilityFn back to emailCapability, as well as cleaning up the tests & fixing the tests :)
I know we're getting into the 2nd level of PRs here, and it's across forks, so quite confusing.
I'm hoping you'll merge this PR into your PR 58, and then we'll be able to merge PR 58 in the ucan-wg repo :)

thanks @matheus23


updated fuse/amq version 7.3, toolbox 0.12.4 image, and fixed issue against OCP4

updated fuse/amq version 7.3, toolbox 0.12.4 image, and fixed issue against OCP4
Signed-off-by: Abdul Hameed<EMAIL_ADDRESS>

@nmasse-itix can you merge the PR, if there are no comments.

@nmasse-itix I am merging this to avoid blocking forward progress. Please review when you're back and let's address any potential issues in a follow-up PR


使用imgSrc参数传入图片显示有不正确

Version of js-screen-shot
1.9.9-rc.10
Operating system and its version
MacOS, Windows
Browser and its version
Nwjs
Sandbox to reproduce
No response
What happened?

这个问题应该和高分辨率屏幕的缩放有关，在1080p分辨率下没有设置缩放的显示器下不会有这个问题。
报错信息
No response

Hello @miludedeng. Your feedback has been received, and you will be notified in the issue area when the problem is resolved.
你好 @miludedeng，已收到你反馈的问题，问题解决后将在issue区域通知你。

修复了。更到1.9.9-rc.11


Recent Clipper Reliability Issues

Seems to freeze up nowadays.

Notes: maybe remove tmux

Tried to make killing better


[NT-1140] Add-Ons Phase 2

📲 What
Feature branch containing all of the phase 2 add-ons related work.

[NT-1455, NT-1458] Add-Ons GraphQL Refactor #1263
Performs a fairly large refactor of how we fetch data from GraphQL for add-ons and our manage pledge flows.
NT-1391 Change Bonus Amount in USD to decimal currency #1262
Updates our tracking property checkout_bonus_amount_usd to be a decimal currency String rather than an Int representing the amount in USD cents.
NT-1439 Add Empty States and Pull-to-Refresh #1261

Empty
Error
Pull-to-refresh

NT-1443 Choose another Reward -> Edit Reward #1260

Before 🐛
After 🦋

NT-1401 Reward Card UI updates #1259

Before 🐛
After 🦋

NT-1368 Reward Add-On Card View UI Fixes #1258

Before 🐛
After 🦋

NT-1450 Allow Dissimilar Shipping Cost for Add-Ons #1257
Allows the selected base reward and its add-ons to have dissimilar shipping costs.
[NT-1371, NT-1331, NT-1391, NT-1400, NT-1436] Create/Update Backing with Add-Ons #1253

Before 🐛
After 🦋

NT-1371 Add-on Reward Selection and Continue Button #1252

Before 🐛
After 🦋
Selected Add-Ons ➕

NT-1370 Filter Add-Ons by Location #1251
Filters the add-ons available for a given base reward by the selected shipping location.
NT-1366 Add-Ons Header Font Size Fix #1249

Before 🐛
After 🦋

NT-1368 Reward Add-On Card UI #1248

Before 🐛
After 🦋

NT-1367 Add-Ons List #1246

Before 🐛
After 🦋

NT-1366 Add header UI to add-ons selection view #1244

Before 🐛
After 🦋
Blended layers 🍭

NT-1366 Add-ons Selection Navigation #1243
Navigates to RewardAddOnSelectionViewController when a Reward's hasAddOns flag is true.

          1 Warning

:warning:
Big PR

  Generated by :no_entry_sign: Danger

Once tests pass I will merge this into the #1242 as we plan to now release this as one feature.


Create Tool Tips

This is a Unity Editor functionality/feature to give users more info on how to use a component.

On hold, Editor code will have to wait due to time constraints.


Chip-Tool should support the "wild card" to read for all the commands from all the clusters for wildcard endpoint

Problem
While verifying the Wild Card to read the all the features that is all the commands from all the clusters for wildcard endpoint
it throws the status code as 0x7f (unsupported endpoint).

expected behavior:- Chip-tool should list all the available commands from all the clusters for wildcard endpoint.

actual behavior:- 0x7f (unsupported endpoint)

steps to reproduce:-sudo ./chip-tool any command-by-id  0xFFFFFFFF 0xFFFFFFFF 0 1 0xFFFF

system configuration
Chip-Tool: RPI
DUT: RPI
Platform : IP and Wifi
Commit-ID:-883528dd3dadfcc665492be864866ad2e3889e16

PFA log below:-
wildcard command.txt

Please see "<IP_ADDRESS>. Valid Command Paths" in the spec.  You can't "read for all the commands", because that's nonsense.


Ensure all pre 2.0.0 documentation is captured in the new readthedocs documentation

Do a comprehensive review of all existing WCT documentation (usually found in .md, .pdf and .txt files) and ensure that the documentation is captured in the readthedocs documentation (found under the /docs branch).
All pre-2.0.0 documents will be split out into a legacy-docs project, so they shouldn't be deleted from the repository.
Change the root README.md to refer to the readthedocs documentation.

Changes will be captured by branch https://github.com/DIA-NZ/webcurator/tree/additional-developer-docs-for-v2

Documents to review:

[ ] harvest-agent-h1/docs/JMXSetup.txt
[ ] harvest-agent-h3/docs/JMXSetup.txt
[ ] harvest-agent-h3/readme.md
[ ] wct-core/docs/readme_1.6.2.txt (also 1.6 and 1.6.1)
[ ] wct-core/docs/WCT Configuration and Deployment Guide (WCT 1.6).pdf
[ ] wct-core/docs/WCT Technical Note - Wayback Indexing Issue.doc
[ ] wct-core/docs/WCT_and_Heritrix_v3_notes.doc
[ ] wct-core/docs/Web Curator Tool Data Dictionary (WCT 1.6.2).pdf
[ ] wct-core/docs/Web Curator Tool Quick Start Guide (WCT 1.6.2).pdf
[ ] wct-core/docs/Web Curator Tool System Administrator Guide (v1.6.2 onwards).pdf
[ ] wct-core/docs/Web Curator Tool Upgrade Guide (WCT 1.6.2).pdf
[ ] wct-core/docs/Web Curator Tool User Manual (WCT 1.6.2).pdf
[ ] wct-store/maven_dependencies.txt
[ ] wct-submit-to-rosetta/Readme.txt
[ ] development.txt
[ ] readme.md
[ ] upgrade_config.txt

See https://github.com/DIA-NZ/webcurator/pull/81 for the pull request for these changes.

Now covered by https://github.com/DIA-NZ/webcurator/pull/84 for the pull request.


added csrf and other fields into multipart form to make sure it still

Added more fields to the multipart form.

@elorest 👍 thanks!


Ensure scoped packages works

Probably the same issue as in the dotfiles repo.

Seems to work for this repo
Test:


Typo "Azure CosmosDB"→"Azure Cosmos DB"

Purpose

Typo "Azure CosmosDB"→"Azure Cosmos DB"
https://github.com/Azure-Samples/azure-cosmos-db-sample-data/blob/main/README.md
#PingMSFTDocs

Does this introduce a breaking change?

[ ] Yes
[x] No

Pull Request Type
What kind of change does this Pull Request introduce?

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[x] Documentation content changes
[ ] Other... Please describe:

How to Test

Get the code

git clone [repo-address]
cd [repo-name]
git checkout [branch-name]
npm install

Test the code

What to Check
Verify that the following are valid

...

Other Information

Duplicate #1
Cloesd #4


feat(editInPlace): allow to provide custom onBlur function otherwise use default behavior

Closes #
https://github.com/carbon-design-system/ibm-products/issues/5148
What did you change?
Allow developer to provide a custom onBlur function to the component, otherwise if not provided default to the previous behavior
How did you test and verify your work?
Storybook
https://github.com/carbon-design-system/ibm-products/assets/10100397/d2765d32-4873-480b-9ee0-e1d888eb46e1

This should be save change to make because I default to the previous behavior if user doesn't provide their own custom function.

Hi @IgnacioBecerra can you help review this please? Thanks!

@elycheea is there a 2nd person we can have review? Seems Ignacio isn't available currently, thanks!


Bump rack-graphite dependency

That gem didn't previously have a lookout-statsd version dependency, but
we need at least 1.3 for new lookout-statsd.

:thumbsup:


HAproxy logs are not visible in vamp-router.log file

 ###
 #
 # Experimental: Logging Setup
 #
 # We log to a unix socket and read that socket from the Go program
 #
 #
 log /var/run/vamp.log.sock local0

logs do not appear...

Hi seregasheypak, thanks for reporting! What version of Vamp are you running?

Hi!
docker run --net=host magneticio/vamp-router:latest
2015-10-13 22:16 GMT+02:00 Olaf<EMAIL_ADDRESS>
Hi seregasheypak, thanks for reporting! What version of Vamp are you
running?
—
Reply to this email directly or view it on GitHub
https://github.com/magneticio/vamp-router/issues/26#issuecomment-147839653
.


How to remove useless managed servers in cluster after scale up/down?

I use docker-compose scale up the weblogic cluster,  it works well. Then I scale down, the containers works well, but the useless managed servers in weblogic admin console are still there. Even I scale up again, docker will not use the servers anymore. How to solve this issue??  Waiting your replay, thanks!

This is a WebLogic specific question, not related to Docker actually. There are some WLST python scripts that admins write to go through a domain and check dead managed servers, and remove them.


Implement Array cache using Yii3 cache library

Q
A

Is bugfix?
❌

New feature?
❌

Breaks BC?
❌

Fixed issues
19979

What are the benefits of using this package?

What are the benefits of using this package?

For this array one not really anything significant. But given the plan is to move whole Yii2 caching to use Yii3 packages under the hood, that gives big advantages in terms of quality and easy to maintain.

Cache in Yii2 is quite mature and does not need that much of the maintenance. This approach also does not really help people to prepare their apps/libraries for Yii 3, which AFAIK was the main goal of Yii 2.2.

Cache in Yii2 is quite mature and does not need that much of the maintenance. This approach also does not really help people to prepare their apps/libraries for Yii 3, which AFAIK was the main goal of Yii 2.2.

I picked the list from https://github.com/yiisoft/yii2/discussions/19875
To the best of my knowledge, no body objected it. Can we move tempoarily the discussion as to which libraries there merit the effort, if we are not going to replace all of them?
Another question would be, after Yii3 is fully adopted and before Yii2 is fully unsupported, will there be enough maintainers to fix issues like PHP version compatibility or new language feature as they come and go? IMHO, having as many Yii3 library under the hood will easy this whole burden as Yii3 libraries will be upd-to-date with language feature set/compatibility
Take it as a Yii1 thing of today.

From my understanding #19875 was not about using Yii3 packages through decorators, but using them directly, so people could switch to new API and easier migrate to Yii3.

So basically, assuming that you understood it correctly, PR should be about new Cache API (Yii3 api Actually) for Yii2 with Yii3 cache package replacing Yii2 caching everywhere in the framework itself. Is that correct?

I'm not entirely sure how to handle this, but I don't think that hiding Yii3 implementation behind decorators with Yii2 API is worth the effort - it is probably more work than maintenance of old implementation, and as a result you only get bugs and BC breaks. If Yii 2.2 is supposed to be a bridge between Yii 2.0 and Yii 3, then we should focus on that, not on refactoring.

I'm not entirely sure how to handle this, but I don't think that hiding Yii3 implementation behind decorators with Yii2 API is worth the effort - it is probably more work than maintenance of old implementation, and as a result you only get bugs and BC breaks.

I agree that I got this wrong. I think that is clear now

If Yii 2.2 is supposed to be a bridge between Yii 2.0 and Yii 3, then we should focus on that, not on refactoring.

How is the bridge supposed to look like? I think we have not done a good job defining this one. We need somehow to reach clear resolution on definition of the bridge. What entails the bridge a part from language bar and removing deprecations due to old stuffs?


什么时候会公布训练代码呢

@shl-ybu Configuration files for training have been uploaded. The specific instruction will be updated soon.


Typo in "Limitations of Virtual Tables"

The limitation "Search functionality is not support for virtual tables as they do not persist data" needs to "support" updated to "supported".

https://learn.microsoft.com/en-us/power-apps/developer/data-platform/virtual-entities/get-started-ve

@NotExZACKly-MSFT Fixed. Thanks for the feedback.


Fix timrender stuff (mostly tests).

Automated message from Dropbox CLA bot
@showell, it looks like you've already signed the Dropbox CLA. Thanks!

Merged, thanks @showell!


fix(collapse): 修复collapse未深度监听导致Pc端tiny-collapse activeNames直接push无法响…

…应的Bug
PR
PR Checklist
Please check if your PR fulfills the following requirements:

[x] The commit message follows our Commit Message Guidelines
[x] 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?

[x] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Documentation content changes
[ ] Other... Please describe:

What is the current behavior?

Issue Number: N/A
What is the new behavior?
Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information

@all-contributors please add @wkif for code.


Autogenerate sample site after each commit in github pages branch

@mariobehling
Tries to resolve #724 and #727 .
Please set the following variables in Travis repository settings.

GH_TOKEN: Github access token for the repo (for more refer here )
GH_TIMEOUT( optional but please set this to 60s , default: 120s ): The maximum time for which the the server + cli are allowed to run. Recommended 60s (actually completes in less time than that, 60s to be on the safe side ) .
GH_ENDPOINT ( OPTIONAL ): Default = "https://raw.githubusercontent.com/fossasia/open-event/master/sample/FOSSASIA16/" i.e. current Fossasia 16 sample on open even event. To be changed if default sample moves to some other place ( e.g if  OTS16 becomes the default sample instead of FOSSASIA16 )

Check the demo at https://shubham-padia.github.io/open-event-webapp/

Current coverage is 40.30% (diff: 100%)

Merging #859 into development will not change coverage

@@           development       #859   diff @@
=============================================
  Files                6          6
  Lines              784        784
  Methods             83         83
  Messages             0          0
  Branches           128        128
=============================================
  Hits               316        316
  Misses             468        468
  Partials             0          0

Powered by Codecov. Last update e8ca0b6...982cf5d


unixtime

Has unixtime been removed from the latest version? I see it working in 2.3.8 (on your demo site) but I do not see it working in the latest verison.

Seems to be. Just tried to find it in v2.5.4 - no luck.


Setting impossible restriction corrupts the shaka internal state

It is a simple bug. If I set restrictions that is not met by any of the stream, it throws a RESTRICTIONS_CANNOT_BE_MET error but the stream continues. The assumption here is that the restrictions did not affect the instance of shaka player. But probing the player instance for getVariantTracks() returns empty array.

@anuragkalia
Thanks for the report. Let's if i got the repro steps correctly:

start a video
use player.configure() to set restrictions that aren't met by any of the streams

Expected:
Video stops playing
Observed:
The currently selected streams continue to play
Is that right?

Steps to repro:

Open https://shaka-player-demo.appspot.com/demo/#audiolang=en-GB;textlang=en-GB;uilang=en-GB;asset=https://storage.googleapis.com/shaka-demo-assets/angel-one/dash.mpd;panel=HOME;build=uncompiled
In console, type:

shakaDemoMain.player_.getVariantTracks()

In console, type:

shakaDemoMain.player_.configure({
    restrictions: {
        minHeight: 720
    }
})

In console, type:

shakaDemoMain.player_.getVariantTracks()

Expected:
After step 4, video should continue to play. Step 4 should return same array as step 2.
Observed:
Video continues to play. Step 4 gives empty array instead.

It looks like what is happening is that the player tries to pick a new variant in response to the configuration change. It realizes that there is no such variant, and defaults to not changing the variant at all.
According to the documentation on that configuration field:

The application restrictions to apply to the tracks. These are "hard" restrictions. Any track that fails to meet these restrictions will not appear in the track list. If no tracks meet these restrictions, playback will fail.

So I think that what we are doing currently is not the correct behavior, as you surmised. But the intended behavior is apparently to just stop playing, not ignore the new restriction.

Hello @anuragkalia ,
In your case no video meets the restriction of 'minHeight: 720', so getVariantTracks() will return an empty array, which is expected. Could you please let us know if there's anything else that's different from your expected behavior?
Thank you!

Expected:
After step 4, video should continue to play. Step 4 should return same array as step 2.

Observed:
Video continues to play. Step 4 gives empty array instead.

The empty tracks array is working as intended.  If all tracks are restricted, there are effectively no tracks, making the content unplayable.
However, since your restrictions are fictional/arbitrary, the video does continue to play.  This is also to be expected.
The restrictions system is intended for your application to communicate to Shaka Player that these tracks cannot be played, for example, because you won't have the keys.  (This can take the place of key statuses, which are missing on IE 11.)  If you restrict everything after startup, but the current track is actually still playable, then it will, of course, continue to play.
Since the continuation of playback is a natural consequence of the active track being playable, and the empty tracks array is a natural and intended consequence of the restrictions, there is no corrupted state in Shaka Player.  (I'll rename the issue accordingly.)
Now, we could change this behavior so that the playback artificially stops on error RESTRICTIONS_CANNOT_BE_MET, but it's not clear why this would be worth the effort.  Can you explain why you want to restrict all tracks in the first place?

Since it's been a while, I'm going to close this for now.  If you'd like to reopen the issue, just reply with @shaka-bot reopen.  Thanks!


Python CLI Refactor for readable and better solid design

[https://app.zenhub.com/workspaces/palmtree-5d99d900491c060001c85cba/issues/cyberark/conjur-api-python3/194|https://app.zenhub.com/workspaces/palmtree-5d99d900491c060001c85cba/issues/cyberark/conjur-api-python3/194]

https://ca-il-jira.il.cyber-ark.com:8443/browse/ONYX-11534


[Question] send alert email failed ,how to check

Describe the question
I have configured   the alert.properties .but when  the  task run failed  I didn't   receive  any emails. How can  I  fix this problem?

Which version of DolphinScheduler:
-[1.3.6-preview]
Additional context
Add any other context about the problem here.
Requirement or improvement

Please describe about your requirements or improvement suggestions.

You can try to use MailUtilsTest to test.

maybe  sth wrong  with the port 25


StickyToolbar component

This is a toolbar that sticks to the bottom of the screen and renders children, e.g.
<StickyToolbar>
  <Button text="Foo" />
  <Button text="Bar" />
</StickyToolbar>

I think the only props need to be its children
Requirements

[ ] Sticks to the bottom of the screen, absolutely positioned
[ ] Casts a shadow, something like box-shadow: 0px -2px 2px rgba(0, 0, 0, 0.25);
[ ] 15px of padding

Example:

I can get a pr up for this

Closed by #506


Example logs

Hi could you please paste some of your output? I'm getting lots of errors and am wondering if this is just because the code is wrong or if there is something wrong with my setup... This is some example log output:
Bruteforce is running...
Currently testing code<PHONE_NUMBER>866480
Progress: 10.14%
                                                   FAILED (remote: 'password wrong')
fastboot: error: Command failed

Rebooting to prevent bootloader from rebooting...
Rebooting into bootloader                          OKAY [  0.032s]
Finished. Total time: 0.033s
Bruteforce is running...
Currently testing code<PHONE_NUMBER>908570
Progress: 10.14%
                                                   FAILED (Write to device failed (Too many links))
fastboot: error: Command failed

USB communications error.  Retrying.
Bruteforce is running...
Currently testing code<PHONE_NUMBER>908570
Progress: 10.14%
< waiting for any device >
                                                   FAILED (remote: 'password wrong')
fastboot: error: Command failed

Bruteforce is running...
Currently testing code<PHONE_NUMBER>950660
Progress: 10.14%
                                                   FAILED (remote: 'password wrong')
fastboot: error: Command failed

Bruteforce is running...
Currently testing code<PHONE_NUMBER>992750
Progress: 10.14%
                                                   FAILED (remote: 'password wrong')
fastboot: error: Command failed

Rebooting to prevent bootloader from rebooting...
Rebooting into bootloader                          OKAY [  0.022s]
Finished. Total time: 0.024s
Bruteforce is running...
Currently testing code<PHONE_NUMBER>034840
Progress: 10.14%
                                                   FAILED (Write to device failed (Too many links))
fastboot: error: Command failed

Is this looking like a normal log?
I also added FIX (https://github.com/SkyEmie/huawei-honor-unlock-bootloader/issues/84) of the main project
Thanks for your help!

Well it all looks fine, the too many links error is a weird one, I've encountered one before but don't know what to do about it.
password wrong is expected when trying to brute force the password...
So yeah mostly normal, just try it and if you have more luck than a person winning every lotto game in their life, you will get the code :)
ps
what fix are you talking about? #9 does not contain any fix

Yeah this too many links error appears after every cycle of printing...
I fixed the link above. I meant the issue (https://github.com/SkyEmie/huawei-honor-unlock-bootloader/issues/84) from the main project

Well I never tested not approved that fix. I don't know its effects on the result.
This fix seems to just skip the tested number if an error occured.
Point is, that error should not occur in the first place.
Maybe try different ports and cables?
Actually that error occurs during/right after phone reboot, prob the bootloader ain't ready for commands yet. idk
Also check if your phone requires the reboot.

i had the same output, and added a little sleep time because it really seemed like the bootloader wasn't ready yet.           if (n%autorebootcount==0 and autoreboot):             print("Rebooting to prevent bootloader from rebooting...")             os.system('fastboot reboot bootloader')             **time.sleep(3)**
although 3 secs might look a little too much ;)


Upgrade swift-bridge version to incorporate new features.

We've implemented the following features, but right now users couldn't use them since swift-bridge isn't upgraded yet:

Support Rust fn return Result<enum, enum>
Rust async fn return Result<enum, enum>
Support Rust async fn ret Result<(),enum>
Adding derive() macro support to SharedStructs
Add Vec and Vec support #200
Fix dangling pointer warning
Support Option in Swift fns
Add Performance section to README
Support tuples #195
Support primitive tuples Swift -> Rust #205
Add compile error for associated_to attribute #206
Support derive(Debug) on enums #194
Support tuples from Swift -> Rust #211
Add RustVec.as_ptr method
Support returning Result<tuple, Any Type> from Rust
Fix returning Result<Vec<>, ...> from Rust
Fix async Rust fn return Result<(), OpaqueType>
Fix already_declared attribute for enums and structs
Swift Vec ret type and fn arg
Add docs on RustString
Support RustString in extern Swift functions

Yeah sorry I procrastinated on this since making the release notes takes some time and isn't automated.
I have an unusually busy weekend so I'll get this done within the next week.
Thanks for opening this issue. We can release more regularly going forward.

https://github.com/chinedufn/swift-bridge/releases/tag/0.1.52

Thanks a lot!!


Does not work Shortcut "⌘ double tap". in macOS Mojave

I set "Command double tap" in history, but the history window does not open.
It was working before the Mojave update.
OS: MacOS Mojave 10.14.4（18E227）
Clipy Version: v1.2.1

On Sonoma, it also happened and found the solution.

Go System Settings > Privacy & Security > Accessibility
Disable Clipy
Enable Clipy again
Quit Clipy from the menu bar
Open Clipy


[$1000] Profile : Keyboard is visible for a brief moment when hit "Save" in display name and Personal details page

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Open the app
Open settings
Open Profile
Open Display name
Click on first name or last name and once the keyboard is open, click on save
Repeat same steps in personal details

Expected Result:
App should close the keyboard first before getting back to profile page.
Actual Result:
App displays the keyboard for few seconds on profile page before closing it.
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: 1.2.83-1
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos:
https://user-images.githubusercontent.com/43996225/224821790-5440519d-b9a2-4478-ad9d-7eaadae046fa.mp4
https://user-images.githubusercontent.com/43996225/224822235-b04e3260-e9f6-4963-a4d1-164197f02ee5.mp4
Expensify/Expensify Issue URL:
Issue reported by: @dhanashree-sawant
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1678631111900989
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0186d12a6ed046e3f4
Upwork Job ID:<PHONE_NUMBER>800230912
Last Price Increase: 2023-03-16

Triggered auto assignment to @zanyrenney (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details.

Bug0 Triage Checklist (Main S/O)

[ ] This "bug" occurs on a supported platform (ensure Platforms in OP are ✅)
[ ] This bug is not a duplicate report (check E/App issues and #expensify-bugs)

If it is, comment with a link to the original report, close the issue and add any novel details to the original issue instead

[ ] This bug is reproducible using the reproduction steps in the OP. S/O

If the reproduction steps are clear and you're unable to reproduce the bug, check with the reporter and QA first, then close the issue.
If the reproduction steps aren't clear and you determine the correct steps, please update the OP.

[ ] This issue is filled out as thoroughly and clearly as possible

Pay special attention to the title, results, platforms where the bug occurs, and if the bug happens on staging/production.

[ ] I have reviewed and subscribed to the linked Slack conversation to ensure Slack/Github stay in sync

reviewed!

Job added to Upwork: https://www.upwork.com/jobs/~0186d12a6ed046e3f4

Current assignee @zanyrenney is eligible for the External assigner, not assigning anyone new.

Triggered auto assignment to @techievivek (External), see https://stackoverflow.com/c/expensify/questions/7972 for more details.

Hey Nicola! Awesome! Thank you. @narefyev91

Have removed the upwork posting then, as you'll be working on this one!

Adding my 2 cents here for the root cause:
https://github.com/Expensify/App/blob/44f98719e4d77f033044b5649f901e7cd0a3b94f/src/components/ScreenWrapper/index.js#L60-L65
There's issue in navigation event listener.
beforeRemove event is not triggered when dismiss page from navigate method in react-navigation.
It works well with goBack or android device back button.
You can confirm this by calling Navigation.goBack() here:
https://github.com/Expensify/App/blob/44f98719e4d77f033044b5649f901e7cd0a3b94f/src/pages/settings/Profile/PersonalDetails/LegalNamePage.js#L92

Looks like something related to react-navigation may have been mentioned in this issue discussion.
As a reminder, please make sure that all proposals are not workarounds and that any and all attempt to fix the issue holistically have been made before proceeding with a solution. Proposals to change our DeprecatedCustomActions.js files should not be accepted.
Feel free to drop a note in #expensify-open-source with any questions.

How about dismissing the keyboard on Navigation transitionStart event if the keyboard is open?
https://github.com/Expensify/App/blob/c40148b5ddd82b54ddb40f7437d1bee22fbf5682/src/components/ScreenWrapper/index.js#L41-L43

Proposal
Please re-state the problem that we are trying to solve in this issue.
Keyboard is showing after user save information and navigate back to previous screen
What is the root cause of that problem?
The root problem is that we do not really hide keyboard when user finish typing and click save - for android we need to manually hide keyboard to avoid such transition.
The main suggestion will be - add additional logic on Save to dismiss keyboard (this function should be expanded with additional check - if keyboard is shown - we need to hide it - before firing save event
    updateDisplayName(values) {
       // Here will be additional check for keyboard visibility
        PersonalDetails.updateDisplayName(
            values.firstName.trim(),
            values.lastName.trim(),
        );
    }

What alternative solutions did you explore?
Alternative solution is also can be kept in mind - after user updates details - API request fires - and after it we can see Navigation.navigate(ROUTES.SETTINGS_PROFILE);
We already add one useful prop in SectionWrapper - which called shouldDismissKeyboardBeforeClose - which controls when user move away from screen / go to other stack navigation - and dismiss keyboard automatically. The problem here that when we use .navigate - navigation will pick already existing screen in stack - and those events will not be fired.
Possible solution here can be - instead of Navigation.navigate(ROUTES.SETTINGS_PROFILE); we can use Navigation.goBack(). Because we 100% know that prev screen in stack is SETTINGS_PROFILE

I think solution needs to be more general. This also happens in other places like Legal name, Home address pages.

I think that's why a new prop and event listener for navigation were introduced. Following the same pattern will require to change how navigation is happened after information saved - in any places like Legal name, Home address pages and etc.

@techievivek do you have any thoughts on these proposals or the questions above?

@narefyev91 Thanks for picking this up. I like the alternative solution because as @situchan highlighted we would want the solution to be more general.

The problem here that when we use .navigate - navigation will pick already existing screen in stack - and those events will not be fired.

Just making sure I understand the solution here since the LegalNamePage still sits in the stacks the beforeRemove event is not called and thus the keyboard is not dismissed or is there any other reason the events are not called?
Also, another question for clarification given we are using navigate for other cases in the PersonalDetails page we would need to fix them as well, right?

@narefyev91 Thanks for picking this up. I like the alternative solution because as @situchan highlighted we would want the solution to be more general.

The problem here that when we use .navigate - navigation will pick already existing screen in stack - and those events will not be fired.

Just making sure I understand the solution here since the LegalNamePage still sits in the navigation stack the beforeRemove event is not called and thus the keyboard is not dismissed or is there any other reason the events are not called?
Also, another question for clarification given we are using navigate for other cases in the PersonalDetails page we would need to fix them as well, right?

@techievivek yup you are right - when we use navigate - and screen already exists in stack - navigation event will not be triggered - and keyboard will not be dismissed
And yes - whenever we want to keyboard be automatically dismissed we need to fire beforeRemove event - which will be done by using correct navigation option

@narefyev91 Great, I will wait for @mananjadhav to have a look at the proposed solution.

Thanks for the discussions folks, I agree with @narefyev91’s solution.
I just have one question, whether we’re considering other pages like legal name, etc. in the current scope

Proposal
Please re-state the problem that we are trying to solve in this issue:
App displays the keyboard for a few seconds on the profile page before closing it.
What is the root cause of that problem:
Missing dismiss() function call before the navigation to a particular screen.
What changes do you think we should make in order to solve the problem :
To dismiss the keyboard, dismiss() function of Keyboard is required. By adding Keyboard.dismiss()
at line no 42 in index.js file of ScreenWrapper folder, Keyboard will close before the navigation.

What alternative solutions did you explore:
None

Thanks for the discussions folks, I agree with @narefyev91’s solution.
I just have one question, whether we’re considering other pages like legal name, etc. in the current scope

@mananjadhav do you ask me - or someone else? If me - i think yes - changes should be done everywhere :-)

Yes, let's fix this everywhere and test it to make sure everything is good as expected. @narefyev91 You can work on the PR now, thanks.

thanks for handling @techievivek - hows the PR going @narefyev91 ? Thanks!

PR is done I think. It's with me, where I am currently testing it.

@mananjadhav, @techievivek, @zanyrenney Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

Reviewing label has been removed, please complete the "BugZero Checklist".

The solution for this issue has been :rocket: deployed to production :rocket: in version 1.2.96-4 and is now subject to a 7-day regression period :calendar:. Here is the list of pull requests that resolve this issue:

https://github.com/Expensify/App/pull/16470

If no regressions arise, payment will be issued on 2023-04-14. :confetti_ball:
After the hold period is over and BZ checklist items are completed, please complete any of the applicable payments for this issue, and check them off once done.

[ ] External issue reporter
[ ] Contributor that fixed the issue
[ ] Contributor+ that helped on the issue and/or PR

As a reminder, here are the bonuses/penalties that should be applied for any External issue:

Merged PR within 3 business days of assignment - 50% bonus
Merged PR more than 9 business days after assignment - 50% penalty

BugZero Checklist: The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:

[ ] [@mananjadhav / @techievivek] The PR that introduced the bug has been identified. Link to the PR:
[ ] [@mananjadhav / @techievivek] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment:
[ ] [@mananjadhav / @techievivek] A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:
[ ] [@zanyrenney] Determine if we should create a regression test for this bug.
[ ] [@mananjadhav] If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.
[ ] [@zanyrenney] Link the GH issue for creating/updating the regression test once above steps have been agreed upon:

@mananjadhav Do you think we need to add a regression test for it in the testRail? Maybe we can add one in the navigation suite?

We could do that. Quick question do we add for specific platforms as this is specific for Android.

Asked in bug-zero channel to confirm: https://expensify.slack.com/archives/C01SKUP7QR0/p1681226888598129

@mananjadhav Confirmed that we can add the test just for the Android. @narefyev91 Can you propose the test for this? Thanks

Thanks for the regression test, looks good to me. @mananjadhav Can you please cross-check it?
@zanyrenney, Can we get this added to the TestRail? Thanks.

Checked and it looks fine to me

Heyb @mananjadhav - let me send that to you now.

I've applied now. Thanks for taking this up @zanyrenney

@mananjadhav we are good now, thanks. @zanyrenney we just have to add the regression test to testrail.

Hi @zanyrenney, should I apply to the job for reporting bonus?

Not overdue, waiting for Zany to add the regression test and issue the reporting bonus.

@techievivek C+ review payment is also pending

@mananjadhav Sorry for missing that.

I've requested this to be added to TestRail here- https://github.com/Expensify/Expensify/issues/276329

dhanashree-sawant yes, please apply.
reporting bonus - dhanashree-sawant
contributor -  @narefyev91
contributor + -  @mananjadhav

Thanks @zanyrenney, the upwork job is no longer available, if possible, can you invite me to the job?

I've sent offers to you both. Please accept.
@narefyev91 is part of CallStack so paid outside upwork.

@zanyrenney I've received two invites but not an Offer. Can you please help with the same?

Both have been paid - closing!

Thanks @zanyrenney for the help here. Could you also close the contract on Upwork.


Support division for numerical types

Numerical types currently have add, sub (subtract), and mul (multiply) functions but do not currently support div (divide). We should add it.

division is now supported for numeric types


Cannot uncheck some checkboxes in /me

To reproduce, go to http://www.sydjs.com/me and try unchecking When there is a new meetup or When there is a new post
It won't apply the changes.

...which is quite critical because it basically makes it impossible to unset notifications (emails).

I just ran into this and have a code change for routes/view/me.js
Basically, if the field is not checked on the form, then it is not included in the body object.
`	view.on('post', { action: 'profile.details' }, function(next) {
    if ( !('mentoring.available' in req.body) ) req.body['mentoring.available'] = false;
    if ( !('mentoring.paid' in req.body) ) req.body['mentoring.paid'] = false;
    if ( !('mentoring.swap' in req.body) ) req.body['mentoring.swap'] = false;
    if ( !('mentoring.free' in req.body) ) req.body['mentoring.free'] = false;

    req.body['mentoring.paid'] = req.body['mentoring.paid'] && req.body['mentoring.available'];
    req.body['mentoring.swap'] = req.body['mentoring.swap'] && req.body['mentoring.available'];
    req.body['mentoring.free'] = req.body['mentoring.free'] && req.body['mentoring.available'];

	req.user.getUpdateHandler(req).process(req.body, {
		fields: 'name, email, notifications.meetups, notifications.posts,' +
		'website, isPublic, bio, photo,' +
		'mentoring.available, mentoring.free, mentoring.paid, mentoring.swap, mentoring.have, mentoring.want',
		flashErrors: true
	}, function(err) {

		if (err) {
			return next();
		}

		req.flash('success', 'Your changes have been saved.');
		return next();

	});

});

`

@rleddy to be complete:
        if ( !('mentoring.available' in req.body) ) req.body['mentoring.available'] = false;
        if ( !('mentoring.paid' in req.body) ) req.body['mentoring.paid'] = false;
        if ( !('mentoring.swap' in req.body) ) req.body['mentoring.swap'] = false;
        if ( !('mentoring.free' in req.body) ) req.body['mentoring.free'] = false;
        if ( !('isPublic' in req.body) ) req.body['isPublic'] = false;
        if ( !('notifications.meetups' in req.body) ) req.body['notifications.meetups'] = false;
        if ( !('notifications.posts' in req.body) ) req.body['notifications.posts'] = false;

        req.body['mentoring.paid'] = req.body['mentoring.paid'] && req.body['mentoring.available'];
        req.body['mentoring.swap'] = req.body['mentoring.swap'] && req.body['mentoring.available'];
        req.body['mentoring.free'] = req.body['mentoring.free'] && req.body['mentoring.available'];

This cries for re-factorization, but this works for now.


projects using this lib ?

Is there is a list of projects using this library ?
It would really help let people see how to do certain things, and probable lead to less noobs like me asking silly questions :)

http://www.material-ui.com/#/discover-more/showcase

@puranjayjain
@mbrookes
None of the showcased ones are open source. So its not possible to "see how to do certain things".
If there are none then thats how it is.

@joeblew99 I don't know many projects other than that but for starters you can see my implementation.
https://github.com/puranjayjain/youtube-dl-gui

thanks Puranjay. Will have a look.
Hate to sounds like a broken record, but the move open examples out there
the LESS people raise questions on github so the devs can get stuff done..
Please make a list on the Readme
On Wed, Jun 1, 2016 at 5:37 PM Puranjay Jain<EMAIL_ADDRESS>wrote:

@joeblew99 https://github.com/joeblew99 I don't know many projects
other than that but for starters you can see my implementation.
https://github.com/puranjayjain/youtube-dl-gui
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/callemall/material-ui/issues/4404#issuecomment-223032789,
or mute the thread
https://github.com/notifications/unsubscribe/ALcacxyA0ruLyUzFzqoilVtes53gZWXiks5qHadWgaJpZM4Irj-Y
.


Fixes and improvements

taking care of tabs inside replaceChild method
adding missing package
emitting 'itemDropped' event

Awesome, thanks. Will test and merge shortly

Tested locally; seems to work great. Will merge; apologies for the long time coming on this.

well...I merged and pushed usnig the command-line but this PR still seems active...closing; please reopen if you have further issues!


Failed jobs are not being removed with removeOnComplete(true)

Hi, I'm creating a new job the following way:
function createDictionaryJob(inputTerm, country, device, language){
queue.create('build-dictionary',{
inputTerm: inputTerm,
country: country,
device: device,
language: language
}).priority('high').attempts(config.jobs_max_retry_count).removeOnComplete(true)
.backoff(backoffFunction).save();
}
max retry is 20
When the job fails 20 times it is not removed, it is kept in memory, is this the expected behavior?
Im using kue 0.8.12

removeOnComplete only removes completed not failed jobs :) this is the defined behavoir


Update comictagger to not use google code

Fork was made official with this post.
See #10461.

Thank you for the contribution. It was merged directly as 59f34dc4563e2169b9e4deeab1be8fdf26fc1b4f to keep commit history cleaner. Your contribution is still credited to you.


How to obtain testing_list.txt ?

Dear,
In the project,
the testing_list.txt in data_dir file is not written in training data,it existed before,
so how to write the testing_list.txt with my data?
Thx

testing_list.txt should only be used for testing outside of TensorFlow, so I don't think this is a bug? Closing, but please file a Stack Overflow issue if you need help doing something with TF.


Not getting results on RARBG

I noticed I'm not getting results at all  from RARBG recently. I search for something that I know RARBG has, and still no results. Enabled in Burst, running kodi 17.6 windows 10.
Thank you

You should, at least, provide what to search and what you expect to see. At most - provide a kodi.log with debug mode "on", so I can see what pages it requests and what expects.

I was searching for 4k content. Increased the maximum file size in burst and now I cant see the torrent.

I believe you.
Still you are not helping.
You should, at least, provide what to search and what you expect to see.

I was trying to say that by increasing the file size in burst, everything works properly in RARBG,

Can confirm, increasing the size works

They have limitation of 1 search request per 2 seconds.
I have checked and rarbg successfully returns movies and episodes.