[W-9143348] Enforce LWC Jest code coverage

Enforces 100% LWC Jest code coverage among all measures except for the following block list:

gauExpenditureRow
lookup
manageExpenditures
manageExpendituresTableHeader

We needed at least one test at 100% code coverage, so fully tested warningBanner.

For a11y, needed to change to only render <h2>{message}</h2> if there is a message.  Else, empty headers is not allowed.
warningBanner does not yet support translations.  Exported English labels so test can assert the proper labels are used.

Updated package.json name to follow proper naming convention.

Critical Changes
Changes
Issues Closed
New Metadata
Deleted Metadata
Definition of Done
Refer to Definition of Done to see any additional details for the items below:

[x] Any net new LWC work has JEST test coverage 50% or above
[x] Default Sa11y tests pass for all LWC components
[x] 🔒 Secure both Front-end (LWC) & back-end (Apex) as necessary
[x] 🔑 Grant users access in Permission Sets (Object, Field, Apex Class) as necessary
[x] Link the pull request and work item by PR comment and Chatter post respectively, e.g. GUS: W-0000000: Work Name
[x] Make sure that ACs are updated (if any gaps)
[ ] All acceptance criteria have been met

[x] Developer
[ ] Code Reviewer

[x] Pull Request contains draft release notes
[x] Labels, help text, and customer facing messages are reviewed by Docs
[x] QE story level testing completed

W-9143348

@jstvz , can you give a RelEng review?


[WIP] Introduce Plugin Architecture

Coverage remained the same at 100.0% when pulling 50c8fb53487fb25313a9701d9439d8a78720c4ad on plugin-architecture into d8b0266c9b87fbac2b68216dc8a6b493265e2246 on master.

Any updates on this?

This change is very stale, so I'll recreate the Pull Request once I come up with the new idea.


Sidecar for step workflow not working as expected -- use a daemon

Pre-requisites

[X] I have double-checked my configuration
[X] I have tested with the :latest image tag (i.e. quay.io/argoproj/workflow-controller:latest) and can confirm the issue still exists on :latest. If not, I have explained why, in detail, in my description below.
[X] I have searched existing issues and could not find a match for this bug
[ ] I'd like to contribute the fix myself (see contributing guide)

What happened? What did you expect to happen?
What i did:
run argo submit -n argo  --log  workflow-sidecar.yaml
What happened:

There is not sidecar container

What did you expect to happen?

Sidecar container is run and available on each step

Version(s)
v3.5.11
Paste a minimal workflow that reproduces the issue. We must be able to run the workflow; don't enter a workflows that uses private images.
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: workflow-test-
spec:
  entrypoint: run-app
  templates:
    - name: run-app
      sidecars:
        - name: db
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: "root"
          image: mysql:8.0.36
          args: [ "--default-authentication-plugin=mysql_native_password" ]
      steps:
        - - name: setup-sidecars
            template: setup-sidecars
        - - name: run-echo
            template: img
    - name: setup-sidecars
      container:
        image: alpine:3.18
        command: [sh, -c]
        # Try to read from nginx web server until it comes up
        args:
          - |
            function wait_for() {
              echo -n '.';
              until "$@";  do
                echo -n  ".";
                sleep 1
              done
              echo
            }
            apk add --no-cache mysql-client
            wait_for mysql -h <IP_ADDRESS> -uroot -proot  -e 'select version()'
            mysql -h <IP_ADDRESS> -uroot -proot -e "CREATE DATABASE a;"
    - name: img
      container:
        image: alpine:3.18
        command: [ sh, -c ]
        args:
          - |
           echo ok

Logs from the workflow controller
time="2024-10-10T21:23:26.417Z" level=info msg="Processing workflow" Phase= ResourceVersion=176270 namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:23:26.420Z" level=info msg="Task-result reconciliation" namespace=argo numObjs=0 workflow=workflow-test-mcn2z
time="2024-10-10T21:23:26.420Z" level=info msg="Updated phase  -> Running" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:23:26.420Z" level=warning msg="Node was nil, will be initialized as type Skipped" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:23:26.421Z" level=info msg="was unable to obtain node for , letting display name to be nodeName" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:23:26.421Z" level=info msg="Steps node workflow-test-mcn2z initialized Running" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:23:26.421Z" level=info msg="StepGroup node workflow-test-mcn2z-2846631130 initialized Running" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:23:26.421Z" level=warning msg="Node was nil, will be initialized as type Skipped" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:23:26.421Z" level=info msg="Pod node workflow-test-mcn2z-2730403668 initialized Pending" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:23:26.430Z" level=info msg="Created pod: workflow-test-mcn2z[0].setup-sidecars (workflow-test-mcn2z-setup-sidecars-2730403668)" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:23:26.430Z" level=info msg="Workflow step group node workflow-test-mcn2z-2846631130 not yet completed" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:23:26.430Z" level=info msg="TaskSet Reconciliation" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:23:26.430Z" level=info msg=reconcileAgentPod namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:23:26.436Z" level=info msg="Workflow update successful" namespace=argo phase=Running resourceVersion=176273 workflow=workflow-test-mcn2z
time="2024-10-10T21:23:36.419Z" level=info msg="Processing workflow" Phase=Running ResourceVersion=176273 namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:23:36.419Z" level=info msg="Task-result reconciliation" namespace=argo numObjs=1 workflow=workflow-test-mcn2z
time="2024-10-10T21:23:36.419Z" level=info msg="node changed" namespace=argo new.message= new.phase=Running new.progress=0/1 nodeID=workflow-test-mcn2z-2730403668 old.message= old.phase=Pending old.progress=0/1 workflow=workflow-test-mcn2z
time="2024-10-10T21:23:36.420Z" level=info msg="Workflow step group node workflow-test-mcn2z-2846631130 not yet completed" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:23:36.420Z" level=info msg="TaskSet Reconciliation" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:23:36.420Z" level=info msg=reconcileAgentPod namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:23:36.427Z" level=info msg="Workflow update successful" namespace=argo phase=Running resourceVersion=176301 workflow=workflow-test-mcn2z
time="2024-10-10T21:24:48.019Z" level=info msg="Processing workflow" Phase=Running ResourceVersion=176301 namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:24:48.019Z" level=info msg="Task-result reconciliation" namespace=argo numObjs=1 workflow=workflow-test-mcn2z
time="2024-10-10T21:24:48.020Z" level=info msg="node unchanged" namespace=argo nodeID=workflow-test-mcn2z-2730403668 workflow=workflow-test-mcn2z
time="2024-10-10T21:24:48.020Z" level=info msg="Workflow step group node workflow-test-mcn2z-2846631130 not yet completed" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:24:48.020Z" level=info msg="TaskSet Reconciliation" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:24:48.020Z" level=info msg=reconcileAgentPod namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:34:12.019Z" level=info msg="Processing workflow" Phase=Running ResourceVersion=176301 namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:34:12.019Z" level=info msg="Task-result reconciliation" namespace=argo numObjs=1 workflow=workflow-test-mcn2z
time="2024-10-10T21:34:12.019Z" level=info msg="node unchanged" namespace=argo nodeID=workflow-test-mcn2z-2730403668 workflow=workflow-test-mcn2z
time="2024-10-10T21:34:12.020Z" level=info msg="Workflow step group node workflow-test-mcn2z-2846631130 not yet completed" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:34:12.020Z" level=info msg="TaskSet Reconciliation" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:34:12.020Z" level=info msg=reconcileAgentPod namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:39:59.044Z" level=info msg="Processing workflow" Phase=Running ResourceVersion=176301 namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:39:59.045Z" level=info msg="Task-result reconciliation" namespace=argo numObjs=1 workflow=workflow-test-mcn2z
time="2024-10-10T21:39:59.045Z" level=info msg="node unchanged" namespace=argo nodeID=workflow-test-mcn2z-2730403668 workflow=workflow-test-mcn2z
time="2024-10-10T21:39:59.045Z" level=info msg="Workflow step group node workflow-test-mcn2z-2846631130 not yet completed" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:39:59.046Z" level=info msg="TaskSet Reconciliation" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:39:59.046Z" level=info msg=reconcileAgentPod namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:43:31.612Z" level=info msg="Processing workflow" Phase=Running ResourceVersion=176301 namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:43:31.612Z" level=info msg="Task-result reconciliation" namespace=argo numObjs=1 workflow=workflow-test-mcn2z
time="2024-10-10T21:43:31.612Z" level=info msg="node unchanged" namespace=argo nodeID=workflow-test-mcn2z-2730403668 workflow=workflow-test-mcn2z
time="2024-10-10T21:43:31.613Z" level=info msg="Workflow step group node workflow-test-mcn2z-2846631130 not yet completed" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:43:31.613Z" level=info msg="TaskSet Reconciliation" namespace=argo workflow=workflow-test-mcn2z
time="2024-10-10T21:43:31.613Z" level=info msg=reconcileAgentPod namespace=argo workflow=workflow-test-mcn2z

Logs from in your workflow's wait container
time="2024-10-10T21:23:27.857Z" level=info msg="Starting Workflow Executor" version=v3.5.11
time="2024-10-10T21:23:27.861Z" level=info msg="Using executor retry strategy" Duration=1s Factor=1.6 Jitter=0.5 Steps=5
time="2024-10-10T21:23:27.861Z" level=info msg="Executor initialized" deadline="0001-01-01 00:00:00 +0000 UTC" includeScriptOutput=false namespace=argo podName=workflow-test-mcn2z-setup-sidecars-2730403668 templateName=setup-sidecars version="&Version{Version:v3.5.11,BuildDate:2024-09-20T14:10:04Z,GitCommit:25bbb71cced32b671f9ad35f0ffd1f0ddb8226ee,GitTag:v3.5.11,GitTreeState:clean,GoVersion:go1.21.13,Compiler:gc,Platform:linux/arm64,}"
time="2024-10-10T21:23:27.871Z" level=info msg="Starting deadline monitor"
time="2024-10-10T21:28:27.862Z" level=info msg="Alloc=7441 TotalAlloc=13905 Sys=24421 NumGC=5 Goroutines=8"
time="2024-10-10T21:33:27.860Z" level=info msg="Alloc=7454 TotalAlloc=14274 Sys=24421 NumGC=7 Goroutines=8"
time="2024-10-10T21:38:27.883Z" level=info msg="Alloc=7384 TotalAlloc=14648 Sys=24421 NumGC=10 Goroutines=8"
time="2024-10-10T21:43:27.887Z" level=info msg="Alloc=7455 TotalAlloc=14998 Sys=24421 NumGC=12 Goroutines=8"

@agilgur5, Thanks for suggestion, I already modified my workflow to use "daemon"
is there any reason why there is no validation?

The Controller does some validation and will mark a Workflow as errored if it fails.
Full schema validation via CRDs is unfortunately not possible as most of Argo's CRDs exceed the etcd 1MB size limit; see also #11266, #13503, and upstream https://github.com/kubernetes/kubernetes/issues/82292

I see, thank for clarification


Avoid the mounting the blockdevice on the host and resulted compromises

It is better to avoid doing mount the block device in the host.

the host might not have the ability to mount it. For example, if the block device is from ceph, and the host doesn't have krbd.ko. And even the host has it, userspace ceph lib + qemu are always the best choice.

Security, if the block device was once mounted inside the vm, the host should not mount it. the code in the vm might hack into the guest kernel, and modify the metadata of the filesystem of the block device. The host kernel might be also broken into when mounting the block device.

Performance: to speed up the starting of the container, host avoids mounting the block device on the host.

Compromises:

access to /etc/passwd in the vm/sandbox, and string user name should be allowed in the agent API.
init the docker-init layer inside the vm/sandbox.
populate the content of the volume in vm/sandbox. (When a path which is not empty is assigned to be a volume, the content of the path should be copied to the volume when initializing the volume.)

If you use virtuous-blk/scsi to make the rbd device available to the guest, it also means that only the host needs to be on the Ceph public network and have Cephx authentication keys. In a multi-tenant environment, this is critical.

Not sure I understand the concerns here. I thought we were actually not mounting block devices, but simply passing them inside the VM and the mount was happening into the guest. What did I miss ?

@sboeuf I think @laijs was pointing at the device mapper handling in kata runtime. Or more generally, any block device based volumes. This is a layer higher than kata runtime, e.g., docker daemon is the one mounting the device mapper devices on the host. We should try to ask these upper layers not to mount the block devices on the host, and just pass them to the runtime directly.
It applies to @mmgaggle's concern about ceph rbd as well.

Okay I was not aware about that. But I still don't understand how from a Kata Containers perspective we might have some control over what you're describing ?
If this has been already mounted before it's been passed to Kata, how do you expect to prevent this from happening ?

@sboeuf For one thing, we do not have control right now. For another thing, we can provide relevant infrastructures for it to work. The storage hotplug APIs would allow such a solution to work and frakti is already able to pass the block devices down to the runtime without mounting them on the host first.
On the kata cli side, we should work on pushing proper storage description to the OCI runtime spec and then CRI-O and containerd cri plugin can both pass the block devices down to the runtime without mounting them no the host.
This is a long term todo item and we need to push forward step by step.

The storage hotplug APIs would allow such a solution to work and frakti is already able to pass the block devices down to the runtime without mounting them on the host first.

Yes I understand, and I do expect Frakti to handle this, meaning the storage hotplug should never mount the block device on the host (but I don't think this has ever been into the scope of the storage hotplug).

we should work on pushing proper storage description to the OCI runtime spec

This sounds like a good proposal to me, and it would make a lot of sense to let the container runtime know what it should do with a specific volume, instead of letting him determine by himself.

but I don't think this has ever been into the scope of the storage hotplug

The kata runtime never mounts it, so it's out of the scope of kata APIs. OTOH, the storage hotplug API also exposes the storage descriptors, making it possible for frakti to pass raw block device as source of rootfs/volume to kata runtime.

So, do you mean that the storage API will provide a way to mount vs not-mount a block device passed as source, depending on some flags passed through the storage descriptors ?
I am fine with every case, but I always thought there was no interest in mounting a block device on the host anyway.
But we gotta capture the proposal about providing a type regarding the storage that is passed by OCI, before it gets lost through the comments on this issue ;)

do you mean that the storage API will provide a way to mount vs not-mount a block device passed as source, depending on some flags passed through the storage descriptors ?

There is no difference at the kata API level. mounted hostpath is just one storage type for kata runtime, which will translate into 9pfs shared to the guest.

But we gotta capture the proposal about providing a type regarding the storage that is passed by OCI, before it gets lost through the comments on this issue ;)

Indeed! Maybe create a separate ticket for it so that it cannot be buried by other topics?

Yeah we need a specific issue saying that we want to extend OCI. And this might not be easy, but worth the shot ;)

Is this something it could be driven now with shim-v2 or even in at that level we have no powers to do that ?  If not lets close it

Closing as this is a very old and nobody appears to be working on it.


Database Migration error on update

Please verify that this bug has NOT been raised before.

[X] I checked and didn't find a similar issue

Describe the bug*
While following the procedure to update our Inventree server instance (0.9.0 -> stable) I have encountered an issue with the database migration within the invoke update command.
The migration step
Applying company.0064_move_address_field_to_address_model... fails with psycopg2.errors.StringDataRightTruncation: value too long for type character varying(50). While further investigating the reason I found that indeed the company entry failing the migration has a 71 character long address. This case seems to be however already handled by the migration script. The address in question also contains several non ASCII characters Jugoslávských partyzánů 9876/54 32 11 Prague 6...` (Slightly redacted and shorted)
Trying to reduce the slicing to 49 characters also has not solved the issue. According to the PostgreSQL the actual character number is relevant not their byte representation length. Is this however still possibly the underlying issue here?
Steps to Reproduce

Have Inventree instance on version 0.9.0
Create a company with address field set to Jugoslávských partyzánů 9876/54 32 11 Prague 6 - Random Padding
Follow upgrade procedure for Bare Metal installation (upgrade to stable)

Expected behaviour
Migration running through without error
Deployment Method

[ ] Docker
[X] Bare metal

Version Information
Version Information:
InvenTree-Version: 0.9.0
Django Version: 3.2.16
Commit Hash: 989aee27f
Commit Date: 2022-12-21
Database: postgresql
Debug-Mode: True
Deployed using Docker: False
Active plugins: False
Please verify if you can reproduce this bug on the demo site.

[ ] I can reproduce this bug on the demo site.

Relevant log output
Running InvenTree database migrations...
========================================
No changes detected
Operations to perform:
  Apply all migrations: InvenTree, account, admin, auth, authtoken, build, common, company, contenttypes, django_q, error_report, exchange, flags, label, order, otp_static, otp_totp, part, plugin, report, sites, socialaccount, stock, taggit, user_sessions, users
Running migrations:
  Applying company.0064_move_address_field_to_address_model...

Traceback (most recent call last):
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
psycopg2.errors.StringDataRightTruncation: value too long for type character varying(50)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/inventree/src/InvenTree/manage.py", line 23, in <module>
    execute_from_command_line(sys.argv)
  File "/home/inventree/env/lib/python3.9/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "/home/inventree/env/lib/python3.9/site-packages/django/core/management/__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/inventree/env/lib/python3.9/site-packages/django/core/management/base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/inventree/env/lib/python3.9/site-packages/django/core/management/base.py", line 398, in execute
    output = self.handle(*args, **options)
  File "/home/inventree/env/lib/python3.9/site-packages/django/core/management/base.py", line 89, in wrapped
    res = handle_func(*args, **kwargs)
  File "/home/inventree/env/lib/python3.9/site-packages/django/core/management/commands/migrate.py", line 244, in handle
    post_migrate_state = executor.migrate(
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/migrations/executor.py", line 117, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/migrations/executor.py", line 147, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/migrations/executor.py", line 227, in apply_migration
    state = migration.apply(state, schema_editor)
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/migrations/migration.py", line 126, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/migrations/operations/special.py", line 190, in database_forwards
    self.code(from_state.apps, schema_editor)
  File "/home/inventree/src/InvenTree/company/migrations/0064_move_address_field_to_address_model.py", line 16, in move_address_to_new_model
    Address.objects.create(company=company,
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/models/query.py", line 453, in create
    obj.save(force_insert=True, using=self.db)
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/models/base.py", line 739, in save
    self.save_base(using=using, force_insert=force_insert,
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/models/base.py", line 776, in save_base
    updated = self._save_table(
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/models/base.py", line 881, in _save_table
    results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/models/base.py", line 919, in _do_insert
    return manager._insert(
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/models/query.py", line 1270, in _insert
    return query.get_compiler(using=using).execute_sql(returning_fields)
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1416, in execute_sql
    cursor.execute(sql, params)
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/backends/utils.py", line 98, in execute
    return super().execute(sql, params)
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/backends/utils.py", line 66, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/home/inventree/env/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
django.db.utils.DataError: value too long for type character varying(50)

s = "Jugoslávských partyzánů 9876/54 32 11 Prague 6 - Random Padding"
print(len(s))
>> 63

I think this is confirmed now to be the case. Collation is 'C' while erver encoding is SQL_ASCII for some strange reasons. Guess I have to fix the database then. Thanks for the hint!


[Documentation/Wiki] Compiling for wasm/html5 on Linux

In the Wiki, it instructs to compile for linux using the command make PLATFORM=PLATFORM_WEB -B, however, this does not pass the enviornment variables to make, (using GNU Make 4.3 on Ubuntu) resulting in an unsuccessful compilation, with make unable to find emcc and the other emsdk tools. I've found out (from this stackoverflow post) that passing -e to the options is required, and removes this issue.

It should likely use emmake make rather than simply make too, but I'm not entirely sure myself. I've run into similar issues myself with the Makefiles, so had switched over to CMake.
Would you mind trying out the change to the project template I made over at https://github.com/raysan5/raylib/pull/2274 ? It adds some documentation to the CMake project template, and enables web compatibility.


[Independent Pharmacy Module] The system does not display the status of the prescribed drugs

[Actual Results]: The system does not display the status of the prescribed drugs in the pickup drugs list and in the prescribed drugs list in the prescription tab
[Expected results]: The system should display the status of the drug in the pickup history
[Steps to reproduce]:

Go to pharmacy module, look for a patient with prescribed drugs and go to the prescribed drus list
Go to pharmacy module, look for a patient with prescribed drugs and click on pickup history tab

@Benilde , Please pay attention to the point 1 ( prescribed drus list) there is a STATUS for each Drug  and can be Active or Finalized .
For the point 2  (pickup history) the status will be provided together with the cancelation of dispensation

@Guimino I have seen, but the way it is written it looks lke it makes part of the drug name. Please try to folwo the documentationand use orange or red to Finalized drugs and blue or green for Active drugs.

@Benilde , I followed your suggestion to use (Green for Active and orange for finalized status), please close this issue after verify


CMV Editor widget issue in WAB enabled cmv viewer since api 3.21

Today a user reported to us this issue, if we update the viewer to 3.25, then the CMV editor widget stops working, the error popup is
Uncaught RangeError: Maximum call stack size exceeded

If we switch back to 3.21, it still works, tried 3.22, 3.23, 3.24, 3.25, and 3.26, all failed. Please see if you experienced the same or not, any suggestion on how to fix this issue.
Thanks!

@ERS-Long Which version of CMV and which version of Web App Builder?

I tried most current CMV (3.26) with WAB 2.9. (if change api from 3.26 to 3.21, then no error).
Thanks,

@ERS-Long Are you using the CMV Identify widget with:
defaultMapClickMode: 'identify',

in the config. file?
Changes in the Esri Editor Toolbar are causing the endless recursion. It is in confict with this section of the WAB Mixin. Presently, I don't have a work-around for all cases. But if you are not using identify, you can possibly solve this by removing the defaultMapClickMode or commenting out the section of code in the MixIn. I can verify this solves the issue but may not be acceptable for your application.

@ERS-Long When using this cmv-wab-widgets, another consideration is to use the WAB Edit widget. It doesn't work in the current version of cmv-wab-widgets for reasons not directly related to the Edit widget itself. Thanks to your question, I have explored the issue and have the Edit widget working locally. 😄

Good to know, try to stay away from default WAB widgets as far as possible, use them only when i have to as the last resort. :)  That being said, I tried to load the WAB default edit widget in, no luck, when you have time if you could share your trick to get that work in CMV, that will be great. But no urgent, only when you have time. Thanks!


Added laparams parameter to PDFQuery class

I stumbled over some problems with extremly narrow spaces in some pdf file. So I needed to take control over the PDFMiner parameters.
I suggest to include those as a parameter to PDFQuery class.
Thanks!
Stefan Winkler

Hi, ste-winkler. Thanks for the suggestion! I added https://github.com/jcushman/pdfquery/commit/088865e7472616877ddbe1f345b95dd11c168736 based on your code, but with some tweaks. If you update to v0.4.3 the laparams parameter should now work. You can pass None if you want to not use LAParams at all, or a dict if you want to set your own options to LAParams.


Requesting tantivy release to support zstd dependency

Cut new release to support latest zstd
Mac Homebrew installs zstd 1.5.6 and it is not compatible with the tantivy available on crates.io. Pushing the latest tantivy with latest zstd would get builds working on OS X.
% brew info zstd
==> zstd: stable 1.5.6 (bottled), HEAD
Zstandard is a real-time compression algorithm
https://facebook.github.io/zstd/
/opt/homebrew/Cellar/zstd/1.5.6 (31 files, 2.1MB) *
  Poured from bottle using the formulae.brew.sh API on 2024-03-28 at 12:53:31
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/z/zstd.rb
License: BSD-3-Clause
==> Dependencies
Build: cmake ✘
Required: lz4 ✔, xz ✔
==> Options
--HEAD
        Install HEAD version
==> Analytics
install: 141,990 (30 days), 342,625 (90 days), 1,666,727 (365 days)
install-on-request: 7,894 (30 days), 11,864 (90 days), 117,268 (365 days)
build-error: 52 (30 days)

and when I try to install the latest tantivy cli from crates.io:
% cargo install tantivy-cli --force
    Updating crates.io index
  Installing tantivy-cli v0.21.0
    Updating crates.io index
[[[ SNIP ]]]
error[E0432]: unresolved import `zstd_sys::ZSTD_cParameter::ZSTD_c_experimentalParam6`
   --> /Users/xlange/.cargo/registry/src/index.crates.io-6f17d22bba15001f/zstd-safe-6.0.6/src/lib.rs:609:13
    |
609 |             ZSTD_c_experimentalParam6 as ZSTD_c_targetCBlockSize,
    |             -------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |             |
    |             no `ZSTD_c_experimentalParam6` in `ZSTD_cParameter`
    |             help: a similar name exists in the module: `ZSTD_c_experimentalParam1`

For more information about this error, try `rustc --explain E0432`.
error: could not compile `zstd-safe` (lib) due to 1 previous error
error: failed to compile `tantivy-cli v0.21.0`, intermediate artifacts can be found at `/var/folders/mc/3pj1vp8s239fn610rbv56f440000gp/T/cargo-installKaoKx6`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.

but if I do a little legwork, clone tantivy-cli and manually bump the tantivy dependency:
tantivy-cli % git diff
diff --git a/Cargo.toml b/Cargo.toml
index 9641415..d6d8a40 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -27,7 +27,7 @@ urlencoded = "0.6"
 mount = "0.4"
 log = "0.4"
 env_logger = "0.10"
-tantivy = { git = "https://github.com/quickwit-oss/tantivy/", rev = "5b1bf1a"}
+tantivy = { git = "https://github.com/quickwit-oss/tantivy/", rev = "4e79e11007b6c9fc3d3965beefe33e1ffcf641d3"}
 crossbeam-channel = "0.5.8"

and that build goes through AOK:
% cargo build --release
[[[ SNIP ]]]
tantivy-cli % echo $?
0

The workaround would be to get Mac homebrew to install a previous zstd release. But everyone who uses tantivy would have to figure that out.

Right, the tantivy-cli was just an example. Yours is proof as well that what is in crates.io is not compatible with the latest zstd.

My next problem is that my project (https://github.com/rdkit-rs/cheminee) cannot be published to crates.io from my Mac because of this build issue. Cargo does not allow releasing crates with git dependencies.

A new release is planned for next week

@PSeitz Thank you! Would you please share with us on where we are for the new release?

@PSeitz Thank you! Would you please share with us on where we are for the new release?

All the changes for the new release have been merged on main. I plan to release today or tomorrow.

tantivy 0.22 has been released!


How to manage same layer between 2 sync maps ?

Hello,
Perhaps it's more a question than an issue, but i don't know where to ask question about this Leaflet plugin.
I have to manage 2 sync map, in which some layers are the same.
If i use the same var for each one, i have conflicts on the layer control button.
To make it work, i have to state 2 var from the same parameters :
        var mylayer1 = L.tileLayer('mylayerurl', {mylayeroptions});
        var mylayer2 = L.tileLayer('mylayerurl', {mylayeroptions});

I do not think it's the best choice (layers URL and option are pretty big).
I have test with this, but it do not work :
        var mylayer = L.tileLayer('mylayerurl', {mylayeroptions});
        var mylayer1 = mylayer;
        var mylayer2 = mylayer;

Does someone could tell me the right method ?
Thanks in advance !
Sylvain M.

Use leaflet-clonelayer for this: https://github.com/jieter/leaflet-clonelayer

Thanks : its perfect for me !
:+1:


Vagrant: Add random generator passthrough for OSD

This could help the encrypted OSDs.
https://github.com/vagrant-libvirt/vagrant-libvirt#random-number-generator-passthrough
Signed-off-by: Dimitri Savineau<EMAIL_ADDRESS>

jenkins test centos-non_container-lvm_osds

jenkins test centos-container-lvm_osds

jenkins test centos-container-all_daemons

jenkins test centos-container-ooo_collocation

jenkins test centos-container-ooo_collocation

jenkins test centos-non_container-lvm_osds

jenkins test centos-container-lvm_osds


Edit composer.json to require mageplaza/module-core instead of mageplaza/core-m2

Sorry we cannot merge this pull request, please contribute to Crowdin or read this guide


osxphotos sync to also consider --merge location and folder structure

Is your feature request related to a problem? Please describe.

GPS Location:

When performing osxphotos sync --import db --set all or --merge all the GPS location is not carried over from the original DB into the sync'ed DB.

Folder Structure:

Additionally the Album name is set correctly but the Folder structure is ignored, which osxphotos import does not ignore.

Describe the solution you'd like

GPS Location:

osxphotos --set / --merge all to also consider location
optionally: osxphotos --set / --merge location
With some pointers from you I could eventually try to work out the code changes into a PR 😄

Folder Structure:

osxphotos --set / --merge all to also consider folder structure by default
or osxphotos --set / --merge folder option
or osxphotos --set / --merge album/all --folder option
I imagine the code changes for this option might be a bit too much for me at this time to make a PR 😄

Describe alternatives you've considered

GPS Location:

osxphotos import --exportdb does this wonderfully, with the exceptions of i) taking some time and ii) AppleScript returning errors on import (some time overcome with rerun and --resue, sometimes not)

Folder Structure:

hmm... Manual. Aside from osxphotos import none I could thing of.

Additional context

Related with #1267

Good suggestions.
For location, it obviously can't be merged so the behavior would need to be determined for what happens if user uses --merge location. Currently the code doesn't have separate lists of properties for --set or --merge. I would recommend the behavior be the same as it is for favorite: if --merge and property is set in the destination then no action is taken; if property is not set in the destination but is set in the source, then the value is copied to destination.
The location field would need to be added to SYNC_IMPORT_TYPES:
https://github.com/RhetTbull/osxphotos/blob/9a07c29e50dd45c178eba5d890314729fa048997/osxphotos/cli/sync.py#L52-L58
Then the import_metadata_for_photo function would need to be updated to handle this, either in a separate block like albums are handled:
https://github.com/RhetTbull/osxphotos/blob/9a07c29e50dd45c178eba5d890314729fa048997/osxphotos/cli/sync.py#L372C1-L375C79
Or in _set_metadata_for_photo and _merge_metadata_for_photo functions.
The folders/albums feature will take a bit more work and I'll have to dig in a bit more when I get a chance.

Working on location... oPromessa - osxphotos - sync-location branch
What's the best strategy to update test_cli_sync.py to cover this scenario?

FYI only....
While trying to run --tests-sync I bumped into the get_os_version code in tests/conftest.py expecting to get my current OS version Sonoma's 14.6.1. I got 10.16 instead!!. Explained here: pythons-platform-mac-ver-reports-incorrect-macos-version.
I'm pretty sure you @RhetTbull are aware of  SYSTEM_VERSION_COMPAT mode variable:
$ SYSTEM_VERSION_COMPAT=0 python3.11 -c 'import platform; print(platform.mac_ver())'
('14.6.1', ('', '', ''), 'x86_64')
$ SYSTEM_VERSION_COMPAT=1 python3.11 -c 'import platform; print(platform.mac_ver())'
('10.16', ('', '', ''), 'x86_64')

For now I'll edit  tests/conftest.py to also accept OS_VER[1] == 16 to allow me to run the --tests-sync option locally.
https://github.com/RhetTbull/osxphotos/blob/9a07c29e50dd45c178eba5d890314729fa048997/tests/conftest.py#L70-L72

Working on set/merge location... Compare branches Rhet's main - oPromessa's sync-location branch
What's the best strategy to update test_cli_sync.py to cover this scenario?
Update:

I'm moving along nicely.
Found issue #1641.
Changed conftest.py
Added location tests that run successfully locally with python -m pytest -vv --test-sync tests/test_cli_sync.py
🛑 But the Actions tests are failing on or around (weird!) tests/test_catalina_10_15_7.py::test_asdict
https://github.com/RhetTbull/osxphotos/blob/9a07c29e50dd45c178eba5d890314729fa048997/tests/test_catalina_10_15_7.py#L1506

Great! I'll take a look at the failing tests when I get a chance. I responded to #1641 -- I don't believe it's actually a bug but intended behavior.

--set / --merge location feature added via #1642

Thanks! Should be merged in 0.68.5.  I will work on the folder path part as I have time. Currently working on some changes to date handling so OSXPhotos can access the original date of an image even if it's been changed by the user in Photos.

Thanks! Should be merged in 0.68.5.  I will work on the folder path part as I have time. Currently working on some changes to date handling so OSXPhotos can access the original date of an image even if it's been changed by the user in Photos.

Cool. Now that you mention dates; I was also thinking if sync should also set dates coming from the original database ?

Yes that's a good idea.

I'll work on adding the date + folder structure soon. Finishing some re-factoring of the date/time code to allow retrieval of the original date even if user has changed it. (Will allow osxphotos timewarp to reset dates, for example). I need to finish that code first.
My plan at the moment is to have albums or all sync folder structure by default as this avoids conflicts if user has Folder1/Album1 in one library and Album1 as a top level album in another -- photos get synced to the "right" album.  With the code I posted to #1650 I could also remove photos from albums...make make that a separate option.


enh(notion): allow more concurrent activities per worker

@fontanierh sitrep?

@fontanierh sitrep?

Didn't have time yet


Write adapter for GitHub API to ASBase

From @davclark on February 24, 2015 22:52

[x] Pull data from github API for https://github.com/glass-bead-labs repositories using requests
[x] Post data to ASBase

Can you see this issue? Can you see the commit that solves the issue (and each sub-component)? Can you see whether the issue was automatically closed or whether it was manually closed?
Copied from original issue: glass-bead-labs/sensor-group#17

From @davclark on February 24, 2015 23:43
In collaboration with @KishPatel1996.

From @dianecw on February 25, 2015 0:28
Made a basic issue tracker that pulls issues from this repository and posts basic information about the issue to ASbase. Doesn't cover information about solving issues/closed issues.

From @dianecw on February 25, 2015 1:41
Yep, we posted the current issues in this sensor-group repository to the database. Every time we run our python script, it posts issue creator info (github url, creator id, creator github username), issue url/id, and repository info (github url, id, name) to the database. This is in the data format specified on the ASbase API.
Right now, we're working on functionality to only post new data if there's an update to the issue.

There seems to be an issue with the way the Activity Stream is displaying the target information
Here is an example:
Actor davclark does/did/had issue with/to 57076355 at 19:20:08 (2015-02-09)
Instead of taking the name of the target, it seems to be displaying the id even though the fields have been entered correctly.  Is this the way the stream was designed, or have we missed something?

From @smnmyr on February 25, 2015 1:14
Sounds great! Is that information posted to ASbase already? What's its basic structure?

From @smnmyr on February 25, 2015 22:59
That behavior is intended. Indeed, the 57076355 thing is the object that davclark worked on, not the target (and the object doesn't have a displayName). Since the target is not used in lots of Activity Streams, the platform is not considering it in the digests on the front page - you are able to see the entire activity in the /query resource though, here: http://russet.ischool.berkeley.edu:8080/query/
One more comment about your activity itself: Is "issue" the verb you wanna go with? I'd say that you could be more expressive, depending on what you wanted to say:

Did davclak raise an issue - then the verb could be "post", "raise", etc.
Did he resolve an issue - the verb could be "post", "resolve", etc.
etc.

Have a look at http://activitystrea.ms/registry/verbs/ to find if there is already something that could be used.
cool that the plumbing is working ;-)

From @dianecw on February 27, 2015 0:37
Quick Update: We got it working! The database updates when you run the script if any issues have been created, updated, or closed since the last post. We'll add continuous stream functionality later. @KishPatel1996  is adding some verbs and functionality, but the basics are all there.
Note: I'm using a temporary personal authentication token, which needs to be reset after a certain amount of time. For the future, we should look into OAuth to authenticate our application.

From @davclark on February 26, 2015 5:1
And along those lines, don't forget these recommendations from @smnmyr:
When you create activities to push to ASbase, adhere to a process along these guidelines (more details here: http://dret.net/lectures/iot-spring15/rest from slide 34)

Try to use verbs and objects that are already defined in the activity schema, here http://activitystrea.ms/registry/verbs/
If that doesn't feel fully right (but approximately), try to use one of the defined verbs, but extend it. For our project, we've added a "subVerb" property that extends (but not hijacks!) the base verb
If it's just not possible to reuse an already defined verb without hijacking, create a new one (and document it!)

From @smnmyr on February 25, 2015 23:13
I updated the server to display more information about the activities (incl. the target) on the front-page digest.

Ah, understood.  Right now, "issue" is a placeholder since we haven't added some functionality yet (checking for updates, seeing if any issues were closed, etc).  @dianecw and I will be meeting up tomorrow from 2 to 4 to complete this.  We'll add more descriptive words at that point.
Also, thanks for the activitystrea.ms link.  Really helpful!

From @smnmyr on February 27, 2015 0:59
Nice work! Since github doesn't have an event-based API, this is the way to do it ;-)

From @dianecw on February 27, 2015 1:35
Looks like they do here, but it might take some time to figure out how it works.
Basic list of all comments on this specific issue here

Does the GitHub API support getting the user who last commented on an issue?

We have completed the git issue tracker program!  It updates the ASBase depending on whether an issue has been created (create), updated (update), and closed (close).
The program currently runs every 10 seconds.  Is there a more efficient way to keep the program running other than a while loop?
while True:
    updateASBase() #this gets the latest changes and posts them on ASBase
    time.sleep(10)

From @davclark on February 27, 2015 15:51
I can give you some pointers on using oauth, that side of things can be hairy. Let me know if you want assistance!

@dianecw   It seems like the code is now reporting "Bad credentials," most likely from the auth parameter of requests.get.
The code runs without the authentication, but it eventually gets this ...
'https://developer.github.com/v3/#rate-limiting', 'message': "API rate limit exceeded for <IP_ADDRESS>. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.
Can you check what's going on with the authentication?  Pull from master again, as I have hashed out the requests with authentication and written requests without them.
Edit
Here is what updated_issues (line 23) is assigned to
{'message': 'Bad credentials', 'documentation_url': 'https://developer.github.com/v3'}

From @dianecw on February 27, 2015 2:5
@KishPatel1996  Yeah, I added a note above. I got around that by generating a temporary authentication key from my account (you can do it too from settings -> applications -> personal web tokens). I need to regenerate it every session. If we want a more permanent solution, we'll have to learn how to use OAuth, which I don't have experience with but am willing to learn for the future.

From @postfalk on February 27, 2015 16:57
Good work. There is a (at least one) Python library supporting oauth
(oauthlib) as well as an integration of this library into requests
requests/requests-oauthlib · GitHub
https://github.com/requests/requests-oauthlib
Falk
On Fri, Feb 27, 2015 at 7:51 AM, Dav Clark<EMAIL_ADDRESS>wrote:

I can give you some pointers on using oauth, that side of things can be
hairy. Let me know if you want assistance!
—
Reply to this email directly or view it on GitHub
https://github.com/BIDS/sensor-group/issues/17#issuecomment-76416231.

--
Falk Schuetzenmeister, PhD
Web Application Developer
Geospatial Innovation Facility http://gif.berkeley.edu/
University of California Berkeley
111 Mulford Hall
94720 Berkeley, CA
<EMAIL_ADDRESS>1-510-642-4897

I believe we need to "register a new OAuth Application."  Here is the link
https://github.com/settings/applications/new

From @postfalk on February 27, 2015 21:32
That might or might not be correct. I think what you are looking at is a
way to use Github's authorization system as an authorization layer for a
third party app. You surely know that principle from web pages asking you
to log-in with facbook, google+, or github. This the core use case for
OAUTH.
What you want to do is to just login to github. More along those lines ...
https://developer.github.com/v3/#authentication
You can use just user/password authorization
https://gist.github.com/caspyin/2288960. In practice you should use the
user/passwd authorization only to request a token and use the token for
further interaction.
Saying this, I am not sure how we should go about this. Could you increase
the request on the public BIDS repo issues even if you authorized to
another account. I am not sure whether we should share the BIDS credentials
for this experiments.
Falk
On Fri, Feb 27, 2015 at 12:56 PM, Kishan Patel<EMAIL_ADDRESS>wrote:

I believe we need to "register a new OAuth Application." Here is the link
https://github.com/settings/applications/new
—
Reply to this email directly or view it on GitHub
https://github.com/BIDS/sensor-group/issues/17#issuecomment-76470268.

--
Falk Schuetzenmeister, PhD
Web Application Developer
Geospatial Innovation Facility http://gif.berkeley.edu/
University of California Berkeley
111 Mulford Hall
94720 Berkeley, CA
<EMAIL_ADDRESS>1-510-642-4897

From @davclark on February 28, 2015 1:44
The standard approach I've seen other apps use is OAuth tokens (not username / password). That said, I'm going to suggest that while we are developing an "app" - it's not going to ask users to generate keys. I think probably the right approach is to use personal access tokens (accessible from the same root page):
https://github.com/settings/applications
"Personal access tokens function like ordinary OAuth access tokens. They can be used instead of a password for Git over HTTPS, or can be used to authenticate to the API over Basic Authentication."

ok, i generated a key and added it to the file.  Should work

From @postfalk on March 2, 2015 17:41
That is correct. However, in some instances tokens expire, in this case you
might need to request a new token first. However, for github.com it looks
like you can create this token with the online form and it does not expire.
So Dav's way should work.
Falk
On Fri, Feb 27, 2015 at 5:44 PM, Dav Clark<EMAIL_ADDRESS>wrote:

The standard approach I've seen other apps use is OAuth tokens (not
username / password). That said, I'm going to suggest that while we are
developing an "app" - it's not going to ask users to generate keys. I think
probably the right approach is to use personal access tokens (accessible
from the same root page):
https://github.com/settings/applications
"Personal access tokens function like ordinary OAuth access tokens. They
can be used instead of a password for Git over HTTPS, or can be used to
authenticate to the API over Basic Authentication."
—
Reply to this email directly or view it on GitHub
https://github.com/BIDS/sensor-group/issues/17#issuecomment-76503249.

--
Falk Schuetzenmeister, PhD
Web Application Developer
Geospatial Innovation Facility http://gif.berkeley.edu/
University of California Berkeley
111 Mulford Hall
94720 Berkeley, CA
<EMAIL_ADDRESS>1-510-642-4897

this project is trying to do something similar re: data collection from github issues and the code may serve as inspiration for how to set up a simple web app that crawls the API.
https://github.com/codeforamerica/gotissues

@dianecw and @KishPatel1996 - this is done, right? Let's close things once you've finished them!


[dotnet][java][js][py][rb][rust] Update java_image_base Docker digest to 38e4b51

This PR contains the following updates:

Package
Type
Update
Change

java_image_base
oci_pull
digest
161a1d9 -> 38e4b51

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

Edited/Blocked Notification
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠ Warning: custom changes will be lost.


Any way to remove injected sources from .html if removing a bower dependency from project?

Is there any way to use wiredep to remove a dependency from my .html file that has been injected via wiredep?
I'm thinking that if i end up removing a bower dependency that is no longer needed, it'd be nice to use the bower hook preuninstall to remove the files from my .html file that were previously inject if i decide i no longer need a bower dependency.

I was lacking this too, and had a good with it today. I used gulp-delete-lines to delete injected dependencies. I made one task for deleting <link ref="stylesheet"> tags and one for deleting <script> tags. Then I added my wiredep task to both the postinstall and preuninstall hooks in my .bowerrc file, and made the delete tasks and the wiredep task depend on each other in a serially:

delete-styles
delete-scripts
wiredep

Unfortunately, it didn't work out. Running the delete tasks manually works great, but when I run all three tasks together, nothing is deleted. According to console output, each task completed before the next started, but things were still not deleted in the HTML.
I'm content with the delete tasks I created, and run them manually. Hopefully, gulp.series() in Gulp 4 will solve it.

Run wiredep again and it will automatically remove them. Is it not doing that for you?

If that doesn't work then I will re-open this issue.


Not able to prevent Release transforms from running during build

I tried to follow the instructions here. No matter what I did, the Release transform was run during the msbuild task in my build pipline.

Removed the dependant on tag for the transform files.
Added /p:TransformWebConfigEnabled=false to my msbuild command line
Added /p:ProfileTransformWebConfigEnabled=false to msbuild command line

After all these steps, it was still performing the transform during the build. I worked around it, but this topic content should be checked, perhaps things have changed.

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

ID: 315ff823-9992-9f9b-62a1-42ce622ed41c
Version Independent ID: 72ec3ffc-1dc9-b2dc-e3d4-4f14deae3720
Content: File transforms and variable substitution - Azure Pipelines
Content Source: docs/pipelines/tasks/transforms-variable-substitution.md
Product: devops
GitHub Login: @alexhomer1
Microsoft Alias: ahomer

Thank you for your feedback. I have passed this on to the product team for advice.

@PilotBob how did you work around this issue? I'm in the same boat - want the build to run without any transform, and perform transforms in deployment instead.

@PilotBob how did you work around this issue? I'm in the same boat - want the build to run without any transform, and perform transforms in deployment instead.

I created a web.stagename.config files that are transformed in the release pipeline during the web deploy task. So my web.release.config only now turns off debug and other things common to all the release environments.

Any update on this?
I am seeing the same behavior locally in Visual Studio 2019.


[sw/silicon_creator] rstmgr alert and cpu info collection in ROM

CHANGE AUTHORIZED: hw/ip/otp_ctrl/data/otp_ctrl.hjson
CHANGE AUTHORIZED: hw/ip/otp_ctrl/data/otp_ctrl_mmap.hjson
CHANGE AUTHORIZED: hw/ip/otp_ctrl/rtl/otp_ctrl_part_pkg.sv
CHANGE AUTHORIZED: hw/ip/otp_ctrl/rtl/otp_ctrl_reg_pkg.sv
Discussed in m2.5 sync, happy this is not a functional RTL change so authorizing.

CHANGE AUTHORIZED: hw/ip/otp_ctrl/data/otp_ctrl.hjson
CHANGE AUTHORIZED: hw/ip/otp_ctrl/data/otp_ctrl_mmap.hjson
CHANGE AUTHORIZED: hw/ip/otp_ctrl/rtl/otp_ctrl_part_pkg.sv
CHANGE AUTHORIZED: hw/ip/otp_ctrl/rtl/otp_ctrl_reg_pkg.sv


fix: Remove defaultChecked attribute from exec tx checkbox

What it solves
Relates to #3539
How this PR fixes it
Removes the defaultChecked attribute as it conflicts with using the Checkbox as a controlled input.
How to test it
Behaviour is still the same, only the console error is gone now.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 34.555%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
3321

Relevant Lines:
8627

💛  - Coveralls


[recipes] new chart

Description of the change
Recipes chart based on the dependent 'common' chart.
https://github.com/vabene1111/recipes
Checklist

[x] Chart version bumped in Chart.yaml according to semver.
[x] Title of the PR starts with chart name (e.g. [home-assistant])
[x] Chart is using our common library as a dependency.
[x] (optional) Variables are documented in the README.md

I noticed that your CI is failing, so I glanced over it and wanted to give you a heads-up: make sure that your values.yaml doesn't depend on anything pre-existing (like CRD's or PVC's and databases being available).

Yes I need to change values.yaml content. Thanks for the help.

Yes I need to change values.yaml content. Thanks for the help.


Header Links are not spaced

Environment
x
Version
"@nuxt/ui-pro": "^1.0.2",      "@nuxt/ui": "^2.11.1",
Reproduction
x
Description
The link look like this:

This is due to the wrong tailwind class, implemented on the link itself.
class="text-sm/6 font-semibold flex items-center gap-1 hover:text-primary"
The gap-1 needs to go on the ul element, where it is not. If I add the gap-1 manually, the problem gets solved.

...

Additional context
No response
Logs
No response

You might have overridden something that broke your links, please provide a reproduction so we can help you. The header links work just fine as you can see here: https://ui.nuxt.com/


Update README.md

Have replaced karlwittins account in Readme with yours. The whole readme is in need of improvement. Would like to rewrite it if you agree.

Hi doconnoronca,
i cant make it work. If i run
 $ renderd -f -c /usr/local/etc/renderd.conf
I get error messageges as the following:
renderd[11439]: An error occurred while loading the map layer 'hydda_roads_and_labels': Shape Plugin: shapefile '/home/darwin/carto-style-hydda//data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp' does not exist  encountered during parsing of layer 'land-low' in Layer at line 381 of '/home/renderaccount/hydda/hydda_roads_and_labels.xml'
'/home/darwin/' sounds like Mac is involved somewhere but i don't have one. I used Java to produce hydda_*.xml documents and i used ubuntu server 20.04 in a virtual machine. Do you have any idea how to get ride of these errors?

It finally works, but i had to made some crude sed replacements and copy the img folder to an other place. As mentioned above, the readme is in need of improvement. First it says you should run
cd ~/src
git clone https://github.com/karlwettin/carto-style-hydda.git
but later it says you should run the build process in:  ~/src/hydda/build/
but it's in  ~/src/carto-style-hydda/build
The readme contains several such inconsistencies and the files seems to have some bugs as well. I'm wondering what's the most elegant way to make this stuff work... I don't think i can do it all on my own but maybe we could work this out together?


Improve method of returning content block data in CMS SiteTree searches

Original issue: #163
The method proposed in #188 enables support for this, but using DataList::filterByCallback after returning a full set of pages is expensive and will become a problem in larger data sets.
We should improve this for a future minor release after this module is 2.0 stable.
In a private message, @tractorcow suggested replicating what DataQuery::getFinalisedQuery() does in terms of searching all base element classes for all of their text/searchable fields, then left joining your way back up to the page that owns them.
Limitation would be that we set a default/fixed depth so it won't be arbitrary and won't let you search in scalable depth. We could however make this configurable or extensible for devs to customise it to suit their own projects.
Some example pseudo code:
$blocks = ClassInfo::dataClassesFor(BaseElement::class);
$fields = [];
foreach ($blocks as $blockClass) {
   $fields = array_unique(array_merge($fields, $blockClass::config()->get('search_fields')));
}
$conditions = [];
foreach ($fields as $field) {
   $conditions[$field] = $text;
}
$pages = BaseElement::get()->filterAny($conditions)->column('PageID'); // needs to join via ElementArea to get the page ID
$pageIds = SiteTree::get()->byIDs($pages);
// use $pageIds to add extra filter to the parent DataList after other filters have been applied to it

Example code would need to join to the ElementArea that owns the block to be able to get the page ID. We could add an extension point here so as mentioned earlier devs could add more specific joins for deeper nesting into their own project code.

Discussed with @tractorcow - suggested approach:

Add a many_many through relationship from SiteTree (not whatever the elemental extension is on) to BaseElement
When a page that has elemental applied is written, find all nested element IDs and collate into a list
Set the many many relations e.g. $this->owner->FlattenedBlocks()->setByIDs($collatedListOfIds);

Then when searching, we collate a list of all searchable fields from all content blocks and use the FlattenedBlocks relations to filter by each field type e.g. $filters["FlattenedBlocks:{$fieldName}:PartialMatch"] = $searchTerm;.
If we can apply these filters on top of the default search filters from SiteTreeFilter_Search then regular CMS search should still work as well (note: it works in the current implementation too).

The solution is the shortest path to a baseline implementation, but I think it's a missed opportunity. We should at least evaluate all possible options.
Option 1a: Nested Joins

Pro: Closest to status quo (using CMSSiteTreeFilter and PartialMatchFilter which produces LIKE queries)
Pro: Doesn't require denormalisation, uses original data
Con: Could result in joining dozens of tables for larger sites (every content block type), plus dozens more for additional types beyond blocks (e.g. "GalleryBlockItem"). If we make this deep searching opt-in for devs, very few authors will actually see the benefits
Con: Unclear how you'd combine type-based joins with object hierarchy joins (temp tables?)
Con: No relevancy ranking across columns, a page/block that contains a term in one column will be ranked just as highly as another page/block that contains it in every column. There's no way to rank matches in "title" field higher than in "content" field.
Con: Does not allow for fuzzy matches (e.g. "car port" vs. "carport"), or any intelligence around multi-term searches

Option 1b: Flattened Joins

Pro: Could make it easier to create an activity feed?
Con: Two-stage process - search blocks, then include matching blocks in page search. No meaningful relevancy ranking between the two result sets. Could be resolved via nested joins (same cons from Option 1a apply)
Con: Denormalisation - need to keep relationships in sync on any ORM updates

Option 2a: Denormalise by "all content" column across tables
Store all content in an object hierarchy on the "root" object (e.g. blocks, nested blocks, other related records, all would be stored on page). Note that MySQL doesn't support FULLTEXT indexes across tables, so this would need to happen on an app level.

Pro: Only requires expensive hierarchy traversal on write time (could be done via background queue)
Con: Roughly doubles uncompressed database storage
Con: More complex search engine behaviour debugging
Con: Requires migration task for existing websites (and potentially time intensive creation of index on deployment)

Option 2b: Denormalise by "all content" column within a single table
MySQL supports this for FULLTEXT indexes (e.g. MATCH(col1, col2, col3) AGAINST "my term")

Pro: Allows relevancy ranking across columns
Pro: Increases index sizes, but doesn't alter content storage requirements
Con: Same concerns as with "nested joins" to get cross table behaviour
Con: All of Option 2a

Option 2c: Denormalise by storing rendered HTML

Pro: Doesn't need to know anything about the internal model relationships
Con: Requires HTML output, doesn't work on headless or app-based systems
Con: Requires HTML templates to be completed before output becomes searchable
Con: All of Option 2a

Option 2d: Denormalise via fulltext search engine

Pro: Fully featured search implementation (e.g. ranking, fuzzy matching)
Pro: Potential to reuse indexes created for website visitors
Con: Requires additional system components (e.g. Solr), would need to be optional
Con: Moves away from our CMSSiteTreeFilter PHP API, wouldn't cleanly apply to a Solr query

Note: I think we've stopped using MySQL FULLTEXT as part of migrating from MyISAM to InnoDB in order to get transaction support, and at some earlier point InnoDB didn't have fulltext capabilities. That's been solved with MySQL 5.6, which came out in 2013: https://www.percona.com/blog/2013/02/26/myisam-vs-innodb-full-text-search-in-mysql-5-6-part-1/.

It's worth noting that the way Elemental worked in the SS3 version was pretty similar to option 2c - we moved away from this to stop duplicating data in the DB (for performance reasons), but it did have the benefit of working natively with both CMS and frontend searches since the denormalised content is still stored in the Content field.

A bit more detail on "Option 2a: Denormalise by "all content" column across tables": Specifically, this
concern here is a big one:

Con: No combination with faceted search, unless we specifically copy column data over. This will make it harder to customise ModelAdmin and GridField searches while also retaining fulltext search abilities.

I've also added "Option 2e: Denormalise through database index per table" to distinguish it from "Option 2a".
Here's an example on how Option 2a could work out, which illustrates limitations of that approach:

Page has_many Block
GalleryBlock has_many GalleryBlockItem
Page: Created, LastEdited, Title, Content, Description, IsFeatured
GalleryBlock: Created, LastEdited, Title, Content
GalleryBlockItem: Created, LastEdited, SlideTitle, SlideDescription, Copyright
SearchIndex: ObjectID, ObjectClassName, Created, LastEdited, Title, Content, Page_IsFeatured
Page indexes Created into SearchIndex.Created
Page indexes LastEdited into SearchIndex.LastEdited
Page indexes IsFeatured into SearchIndex.Page_IsFeatured
Page indexes Title into SearchIndex.Title
Page indexes Content and Description into SearchIndex.Content
GalleryBlock indexes Title into SearchIndex.Title
GalleryBlock indexes Content into SearchIndex.Content
GalleryBlock doesn't index Created and LastEdited
GalleryBlockItem indexes SlideTitle into SearchIndex.Title
GalleryBlockItem indexes SlideDescription and Copyright into SearchIndex.Content
GalleryBlockItem doesn't index Created and LastEdited
=> Title can be boosted separately from Content, but not per-column or per-record
=> Built-in faceted search only applies to root object (Created and LastEdited)
=> Custom faceted search like IsFeatured requires explicit data copy to index

Discussed with @chillu and we decided to leave this as it is for now and consider it again in more detail in future.
cc @be2n

@robbieaverill Can you please get this on your radar again? Might need to split out some PoC for one or two options, to figure out how feasible they are.

cc @brynwhyman @rupachup

This reared its ugly head again in a different shape: link tracking (https://github.com/silverstripe/silverstripe-cms/issues/2276)

We have a couple of content-heavy sites (1000+ pages containing large numbers of elements), that are experiencing this issue. Happy to provide more detail if needed.


Add empty ctrlc handler on Windows.

Fixes #6000.
This is a 'better' version of PR #6002 that accomplishes the same thing using only winapi calls without the dependency on the ctrlc crate or spawning an additional thread.

When exec_replacing the cargo process, we want the new process to get any signals. This already works fine on Unix.
On Windows, pressing ctrlc kills the cargo process and doesn't pass the signal on to the child process. By adding an empty handler, we allow the child process to handle the signal instead.

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @matklad (or someone else) soon.
If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.
Please see the contribution instructions for more information.

I would still like to add a test for this, but it's unclear how I would do so.
@alexcrichton suggested using GenerateConsoleCtrlEvent, but are there examples of tests right now that spawn an external cargo process and then manipulate it? Even if so, how would I know when it succeeded? It seems like it'd have to be some sort of three-tiered test where there's an executable that has a Ctrl-C handler that does something, and then the Cargo process runs that, and then the test calls the cargo process, sends it a Ctrl+C, and then verifies that the correct output happens.
But...uh...I think I need help figuring out how to set that up. :)

@zachlute oh what I'm thinking is a test that does this:

First, this is a windows-specific test
A project is create with one binary. This binary sets a ctrl-c handler that prints something and then exits. Otherwise the binary in its main function prints a different marker and then sleeps forever.
We then run cargo run for this project.
When the binary prints the first marker, we kill the cargo process with GenerateConsoleCtrlEvent.
We then wait for everything to get torn down and assert that the output contains the marker printed by the ctrl-c handler.

I think that when cargo run is spawned we'll need to place it in a dedicated process group as well to avoid killing all the other tests.
Does that sounds possible?

Yeah, that's pretty much what I was imagining, so good to hear confirmation I'm not ridiculous. I'll try to give it a go in the next couple of days. Thanks for the help!

I'm beginning to believe writing a test for this is impossible. The basic issue is that GenerateConsoleCtrlEvent can't actually be sent to another process group:

Generates a CTRL+C signal. This signal cannot be generated for process groups. If dwProcessGroupId is nonzero, this function will succeed, but the CTRL+C signal will not be received by processes within the specified process group.

Things I have tried so far:

Creating a program with a Ctrl+C handler and sending GenerateConsoleCtrlEvent from the test. Kills the test.
Creating two programs, one with a Ctrl+C handler and another that attaches to that one's console and uses GenerateConsoleCtrlEvent to try to kill the process in the attached console.

The fundamental issue is that there's no way to run even the special killer process as NOT under the same console as the test, so no matter what I do, the event kills the test.
To do any of this at all required adding a way to spawn the runner process but not actually wait on it until we'd had a chance to run the second process, so that's in there, too.
You can view this abomination here in case you have any brilliant ideas, but I am out of them:
https://github.com/zachlute/cargo/commit/1a4ca1dd7f6743a31968989ad05a45eac9c0f1e9

It's probably also worth noting that this broken test is horrifically slow, because it has to download and build the winapi stuff.

FWIW, that issue appears to be a duplicate of https://github.com/rust-lang/cargo/issues/4575, so maybe @retep998 has some insight here as to:

Why my solution here may not work?
How to write a test for this solution, assuming it's okay.

Oh dear, that really does make for a complicated function! I do think though that this'll be very valuable to have a test for! I'll take a crack at it tonight when I get back to a windows machine.

:pushpin: Commit 6a3f4b9a5a2cce6acd289cd722b076f3cb538fea has been approved by alexcrichton

@bors: r+

:hourglass: Testing commit 6a3f4b9a5a2cce6acd289cd722b076f3cb538fea with merge 044a52542441f00e3d82b27188e39b9aa3374200...

:sunny: Test successful - status-appveyor, status-travis
Approved by: alexcrichton
Pushing 044a52542441f00e3d82b27188e39b9aa3374200 to master...


Backend - POC CRUD of Level Data, with a limited "Get All" Query

Actually....I'm realizing this doesn't get the 10 most recently updated levels :smh:
I'll address this

Fixed it! I'm still figuring out DynamoDB, it's a bit weird with how they do the partition key and sort key and you're quite restricted in the querying you can do...I ended up trying something like: https://stackoverflow.com/a/65158123/6860168
I'm going to do more research about DynamoDB and I'll summarize what I've learned so that everyone can have at least a baseline understanding of how we're using it. Not sure if this schema is what we'll actually want, I was just trying to understand DynamoDB better and get working what I thought we might want


Fix test_cmp_cli for extended tests

The test_cmp_cli was failing in the extended tests on cross-compiled
mingw builds. This was due to the test not using wine when it should do.
The simplest solution is to just skip the test in this case.
[extended tests]
I am expecting some extended tests to still fail. That is due to other issues not addressed by this PR.

Travis red cross is due to extended test failures not relevant to this PR. As hoped the extended tests that were previously red due to test_cmp_cli failures, are now green.

Forgot the "approved" tag, sorry.

24 hours has passed since 'approval: done' was set, but as this PR has been updated in that time the label 'approval: ready to merge' is not being automatically set.  Please review the updates and set the label manually.

I have no recollection of pushing this. But apparently I did and jumped the gun on the 24-hour timer. Sorry!


Bump versions in pkg.json

From what I understand you cut new releases directly from CI, but you do not bump version field in pkg.json. It would be nice to have it bumped automatically too, otherwise it leads to confusion that something is off - when inspecting this repo, latest tag on npm etc

Added to V3 Roadmap (#354).


chrome.runtime.sendMessage is an empty function

In the success callback of opr.addons.installExtenion, chrome.runtime.sendMessage is an empty function. So, basically I need to reload the page after inline installation in order to communicate with the extension. I am using Opera 39.0.2256.71 on Mac OS X 10.10.5 64-bit
chrome.runtime.sendMessage works when I already have the extension installed from a webpage.

This repository is related to Dev.Opera site development and site’s content only. It’s not the right place for filing bugs. Please contact @shwetank directly.

Contacted directly. :) Following up.


Messages.vue and Notifications.vue (error)

Hello.
Why dont working Messages and Notifications?
In console i get it 2 error.

You need to use either pusher, or echo. Did you define a service? https://github.com/voten-co/voten/blob/master/.env.example#L33-L42


Implemented data rate transmission for the server side.

Fixed the mismatch between server and client side data rate transmission.
Added a execution pause when there are no clients connected to reduce the CPU usage. This is useful for small spec devices.

@novicas Please cancel this one and make a new pull request to bugfix-v1.0.1 branch.


fix Diffractor compat

This was requiring an old version of Diffractor

Good catch but it was done on purpose, the following versions of Diffractor broke DI and no one had time to fix it. You can see it because the corresponding test is failing: https://github.com/JuliaDiff/DifferentiationInterface.jl/actions/runs/11860118951/job/33054648333?pr=624.
Related:

https://github.com/JuliaDiff/Diffractor.jl/issues/290

Is it okay if I close this for the time being?


Improved result AST

dry-v now adds its own :error nodes, this should not be needed if dry-logic had a better AST; so ie we could add :failure and :success result nodes, and see where we don’t need to provide result “names” (which can be a symbol or a path array) so that the AST could shrink
tweak things a bit so we could apply rules in 2 modes: full tracing of success/failures or failures exclusively - and this will make dry-v work super fast even when everything is valid (it’s currently a huge bottleneck).
I'll try to come up with some specific node types soon and post it here.

@fran-worley I'm gonna add a bunch of specs to dry-v with an improved result ast so that we can have a reference; it's better to do it like that because we'll know what structure makes sense, and then we'll be able to adjust dry-logic to produce the expected ast


Different genetable between API and Web Interface

The issue is that the Knetscores and other values are different between genetables obtained through /ricknet/genome API requests and oryza_sativa web Interface, for the same set of genes with same keywords. For example:
This is the geneTable obtained with web interface for users.

genes.txt

This is the geneTable obtained with /riceknet/genome API.

API_genes.txt

The same set of genes were used from summary_gene_discovered.txt

summary_genes_discovered.txt

The keywords were also identical for both methods.

keywords_list.txt

The codes used to replicate the API request was.

smalltest.txt
I am only able to upload txt version as Jupyter is not supported but will offer the python codes outside of txt format on discussion.

This is weird. Can you test the same list of genes but with one single keyword (e.g. germination). Attach the UI and API gene tables; and provide the exact API URL you have used. Thanks!

Hi Keywan, sorry for the late update, my github has been a bit glitchy this morning due to username change. With one keyword we get same Knetscores so I really think it's because of no double quotes.
This is the genetable from API
germination_genes.txt
This is the genetable from UI
germ_genes.txt
The exact API URL I have used was
https://knetminer.rothamsted.ac.uk/riceknet/genome?list=Os03g0413000%2COs03g0426900%2COs05g0187800%2COs05g0186100%2COs05g0188700%2COs03g0411100%2COs03g0407400%2COs05g0180400%2COs05g0186000%2COs05g0188500%2COs05g0181000%2COs05g0186300%2COs05g0187000%2COs03g0408300%2COs05g0180600%2COs03g0412200%2COs03g0407900%2COs03g0413400%2COs03g0411600%2COs05g0182500&keyword=(germination)

I am a bit surprised that this time it seems our comma between genes are automatically taken out even though they seem to be there for the past.

linked to #374, should be fixed now but needs testing; fyi @KeywanHP

@colinli1690  - we have updated the rice knetminer to v3.1 which includes a fix to "" in keywords. Can you check if your issue still exists or has been resolved in the new update.

I am little bit confused on the 29th July post in  #374.
Can I confirm which format of keywords should be used for v3.1 for the parser to work, please? For example with germination rate and coleoptile length:

"germination%20rate"+OR+"coleoptile%20length"
Or
"germination rate"+OR+"coleoptile length"

Both space or %20 should be working. Don’t use “+”.  Your script uses genome and genepage endpoints. The returned gene Network should only show evidence nodes that contain the entire phrase “a b c”.

For some reason when I tried the following:
https://knetminer.rothamsted.ac.uk/riceknet/genepage?list=OS05G0186900&keyword="**coleoptile%20length"%20OR%20"mesocotyl%20length**"
the API is not leading me to any genepage.
I then tried the same address but without the double quotes "" and it lead me to the same page as before. Are we still using the adress /riceknet/genepage with V3.1?

I tried some other URLs and again and the "" works on other URLs.
https://knetminer.rothamsted.ac.uk/riceknet/genepage?list=OS03G0122600&keyword="mesocotyl%20length"%20OR%20"root%20length"%20OR%20%"seminal%20root%20length"

I have edited a clone of my gwas-gene-discovery repository so that it provides keywords in the format of: 'mesocotyl length' OR 'root length'
The resulting genepage I received however still seems to show the same problem in that it picks up root than 'root length' as shown in the attachment.

Oddly enough, when I switched to "" instead of '' as in "root length" the URL no longer works.

The exact URL used to generate the attached image was:
https://knetminer.rothamsted.ac.uk/riceknet/genepage?
https://knetminer.rothamsted.ac.uk/riceknet/genepage?list=OS05G0187000&keyword='coleoptile%20length'%20OR%20'mesocotyl%20length'%20OR%20'root%20length'%20OR%20'seminal%20root%20length'%20OR%20'germination%20rate'%20OR%20'seedling%20growth'
The browser automatically removed the '' when this was clicked but keeps " " double quotes. However, with "" in the URL we don't get anything.

Thank you for testing @colinli1690. You need to use double-quotes to trigger a phrase query; single quotes are treated as normal characters. There seems to be an issue when you combine multiple phrase queries with OR.
Single phrase queries work fine (check the phenotype or publication concepts):

https://knetminer.rothamsted.ac.uk/riceknet/genepage?list=OS05G0187000&keyword="shoot development"
https://knetminer.rothamsted.ac.uk/riceknet/genepage?list=OS05G0187000&keyword="shorter roots"

Combining them however with OR returns a blank page:

https://knetminer.rothamsted.ac.uk/riceknet/genepage?list=OS05G0187000&keyword="shorter roots" OR "shoot development"

@mdonepudi - It looks like #374 has only partially fixed the issue.

Thank you very much for the details! I will try to append the script more with new developments.

Created a new ticket for multiple phrase queries, see #424

@KeywanHP can we close this?


mapServersFromHealthEndpoint receives array of URLs, instead of complete response

My application crashes from time to time due to mapServersFromHealthEndpoint receiving a list of URLs for the service such as ['http://my-host-one:3000', 'http://my-host-two:3000'], whereas it should receive an array of service definition objects such as:
{
  "Node": {
    "Node": "my-host-one",
    "Address": "xx.xx.xx.xx",
    "CreateIndex": 65,
    "ModifyIndex": 120501
  },
  "Service": {
    "ID": "my-host-one:my-service:3000",
    "Service": "my-service",
    "Tags": null,
    "Address": "ip-172-31-24-131",
    "Port": 3000,
    "EnableTagOverride": false,
    "CreateIndex": 27226,
    "ModifyIndex": 27228
  },
  "Checks": []
}

The error is that s.Service in https://github.com/h2non/resilient-consul/blob/master/consul.js#L86 is obviously undefined. mapServersFromCatalogEndpoint is filtering these, which I didn't understand the first time I saw it, but I believe we shouldn't need to filter anything in these functions, but address the root cause.
The issue may be in resilient.js to be honest, but I don't have enough knowledge of it yet to have a clearer idea. Any suggestions?

The adapter should always provide an array of URL to resilient. Perhaps the response from consul has not always the same interface but it's estrange, in that case the adapter should infer the interface type and map the data accordingly.

I've investigated the issue a bit more. The URL used to retrieve the service info from Consul is consistent, and so is the response. It looks like in some rare cases, the middleware function is called twice, the 1st time with the response from Consul, and the 2nd time with the response from the 1st middleware function call, which is the array of URLs meant to be passed to resilient.

Are you attaching the middleware function more than once? If not, there could an scenario where the first discovery fetching process fails, and then resilient retries it. The consul middleware could ignore mapping the servers if res.data already has the desired interface. I can provide a fix for this easily.

Only attaching it once.
Fixing it here wouldn't be too hard, but it just doesn't seem to be its responsibility. resilient-consul shouldn't have to deal with already parsed responses (incorrect input) being passed to it.

Hi @h2non. Were you able to find the root cause? Shall we implement the quick workaround in resilient-consul for the time being?

I can't invest time on this, I'm sorry. Seems like resilient is triggering the middleware chain more than one time under some particular scenario. As I said, you can prevent that directly from this middleware plugin until the possible issue can be mitigated in resilient. Feel free to make a PR for the fix and I'll merge it asap.
From the other hand, I've plans to completely redesign resilient core in an inminent future since it has some bad design issues and it's hard to maintain and extend from different perspectives.


Feat: Improve Twitter scraper to retrieve the user profile data

Describe the feature
Improve Twitter scraper to retrieve the user profile data such as name, followers, following count, is verified, profile photo, etc.
Add ScreenShots

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC 23 contributor
[X] I want to work on this issue

Go ahead @Mihan786Chistie

Thanks 👍

hey @nikhil25803, twitter recently updated their website where if you go to any page inside twitter it will redirect you to the login page if you are not logged in, and then you will get the access to visit the page. I was thinking maybe I will create two more arguments for the Twitter Class constructor that is the email and password of the user who is trying to scrape and then use Selenium to automate the workflow of logging in to twitter using their email id and password and then scrape the required page. What do you think?

hey @nikhil25803, twitter recently updated their website where if you go to any page inside twitter it will redirect you to the login page if you are not logged in, and then you will get the access to visit the page. I was thinking maybe I will create two more arguments for the Twitter Class constructor that is the email and password of the user who is trying to scrape and then use Selenium to automate the workflow of logging in to twitter using their email id and password and then scrape the required page. What do you think?

@nikhil25803 ??


feature: add relay integration for prisma plugin

Still needs lots of testing and docs.

<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>

Hey, i played around with the alpha versions, setup a new project based on the tests/example. I noticed that the t.relatedConnection("posts") loads all 300 posts that i seeded, from the database instead of using first/last (take) args, also after doesn't seem to work. I know you're not finished with this yet, but just wanted to let you know. I'm very excited to see this in giraphql.
I've added the e.params to logs:
  console.log(`Query: ${e.query}`);
  console.log(`Params: ${e.params}`);
  console.log(`Duration: ${e.duration}ms`);

builder.prismaNode("User", {
  id: {
    resolve: (user) => user.id,
  },
  findUnique: (id) => ({ id: Number.parseInt(id, 10) }),
  fields: (t) => ({
    email: t.exposeString("email"),
    name: t.exposeString("name", { nullable: true }),
    profile: t.relation("profile"),
    posts: t.relation("posts", {
      args: {
        oldestFirst: t.arg.boolean(),
      },
      query: (args) => ({
        orderBy: {
          createdAt: args.oldestFirst ? "asc" : "desc",
        },
      }),
      resolve: (query, user) =>
        db.post.findMany({
          ...query,
          where: { authorId: user.id },
        }),
    }),
    postsConnection: t.relatedConnection("posts", {
      cursor: "id",
    }),
    profileThroughManualLookup: t.field({
      // eslint-disable-next-line @typescript-eslint/no-use-before-define
      type: Profile,
      nullable: true,
      resolve: (user) =>
        db.user.findUnique({ where: { id: user.id } }).profile(),
    }),
  }),
});

This is the query i executed
query {
  me {
    id
    name
    postsConnection(first: 7) {
      edges {
        cursor
        node {
          id
          title
          content
          author {
            id
            name
          }
        }
      }
      pageInfo {
        hasNextPage
        hasPreviousPage
        endCursor
        startCursor
      }
    }
  }
}

Result:
Query: SELECT `main`.`Post`.`id`, `main`.`Post`.`createdAt`, `main`.`Post`.`updatedAt`, `main`.`Post`.`title`, `main`.`Post`.`content`, `main`.`Post`.`published`, `main`.`Post`.`authorId` FROM `main`.`Post` WHERE (1=1 AND `main`.`Post`.`authorId` IN (?)) LIMIT ? OFFSET ?
Params: [1,-1,0]
Duration: 0ms

Yup, looks like I am not merging in the connection args part of the query yet,.  So far I had just been working on making sure all the nested query stuff worked correctly.  I still need to write a bunch of tests for this.


[supply] Fix Google API timeout option names (#9496)

Checklist

[x] I've run bundle exec rspec from the root directory to see all new and existing tests pass
[x] I've followed the fastlane code style and run bundle exec rubocop -a to ensure the code style is valid
[x] I've read the Contribution Guidelines
[x] I've updated the documentation if necessary.

Motivation and Context
Supply throws an error when attempting to connect to the Google APIs due to a gem update and some setting name changes.
Resolves https://github.com/fastlane/fastlane/issues/9496
Description
Migration setting updates detailed at https://github.com/google/google-api-ruby-client/blob/8ef5c84c78f6eae4292be8c37ba901a847718dd7/MIGRATING.md#timeouts

I signed it!

I did indeed test locally, both before and after making the changes as noted by the excellent documentation. My test is comprised of a single action:
platform :android do
  lane :upload do
    supply(
      json_key: "fastlane/android-developer.json",
      apk: "./platforms/android/build/outputs/apk/android-release-signed.apk",
      track: "alpha",
      package_name: "com.company.myapp"
    )
  end
end

Would be great to have some tests in place to ensure that in the future that updates do the google gems / supply does not break actual uploading.
Not 100% sure how to accomplish that, but it seems like the original PR wouldn't have been merged if we had tried to actually upload an APK?
https://github.com/fastlane/fastlane/pull/9445

We need that in, and probably in a point release. Merging

We would need an immediate release, if its possible.
And thank you for the quick fix!

Hey @TewWe! we are going to get a release out this morning with this change! Apologies for any inconvenience!

Just shipped 2.39.1 with a hotfix for this! 🚀


feat: add livestream channel clip samples and tests

Fixes b:341726237
Important: FFmpeg (https://www.ffmpeg.org/) must be installed in the test environment.
sudo apt install ffmpeg

Checklist

[X] I have followed Contributing Guidelines from CONTRIBUTING.MD
[X] Tests pass:   go test -v ./.. (see Testing)
[X] Code formatted:   gofmt (see Formatting)
[X] Please merge this PR for me once it is approved

Closing as @irataxy  no longer works at Google. Thank you for all your contributions over the years!


Automated cherry pick of #7459: fix cache non lvm disks

Cherry pick of #7459 on release/3.2.
#7459: fix cache non lvm disks

/lgtm

/approve