Exclude movies in collections created in Plex

Describe the bug
I don't know if this is actually a bug but what I'm trying to accomplish is somewhat the same as the following feature request: #493
I want to create a rule to exclude all movies that are in collections made in Plex. I could be using the Radarr tag to exclude movies but that is rather tedious with large libraries.
Maybe I'm doing something wrong, if so please help me out :).
To Reproduce
Create a rule with the following criteria (see screenshot):

First value: Present in amount of other collections
Action: Equals
Second value: Number
Custom value: 0

If this rule is not supposed to work this way than this bug report should be a feature request.
Expected behavior
Created collection from rule should not contain movies which are in collections created within Plex.
Screenshots

Device (please complete the following information):

Docker: latest image

        "Id": "sha256:b02867c7205dcf01990d20fc4c68fc9157d5841f6e98bdb216b0456dd5834465",
        "RepoTags": [
            "jorenn92/maintainerr:latest"
        ],
        "RepoDigests": [
            "jorenn92/maintainerr@sha256:a53573d2366c4908e8cbd5df327a7062a27e767124e68a47714071d6979c94c8"
        ],

Hey! Sorry for the late reply.
There's an issue with the 'Plex - Present in amount of other collections' rule in release 1.7.0, which is why it doesn't work as expected. It's currently fixed in the develop branch and will be available in the next release.
Once the rule is functioning, it should achieve what you desire.

@jorenn92 will that also fix my problem? https://github.com/jorenn92/Maintainerr/discussions/691

This bug seems to still be unresolved in 1.7.1. When I run a rule for movies present in 0 other collections, it adds a movie that matches the rest of the rules to my custom collection, but on the next run it removes that movie from the collection, and then it just keeps cycling like that for consecutive runs, adding it and removing it from the collection.
It does keep a movie that does not match the rules at all which I added manually to the collection in Plex, if that is helpful.
I've had a look at the source code, and it seems to be correct, but it does not seem to work for some reason.

This bug seems to still be unresolved in 1.7.1. When I run a rule for movies present in 0 other collections, it adds a movie that matches the rest of the rules to my custom collection, but on the next run it removes that movie from the collection, and then it just keeps cycling like that for consecutive runs, adding it and removing it from the collection.
It does keep a movie that does not match the rules at all which I added manually to the collection in Plex, if that is helpful.
I've had a look at the source code, and it seems to be correct, but it does not seem to work for some reason.
Update: I just tried to remove the other collections rule from it's separate section and it to the first section, and now it seems to be working. That would mean that there is a bug with how sections interact, or I do not yet understand how sections are designed to work.

Can you provide a screenshot of your original (non-working) rule? There might be a logical explanation for the observed behavior. If not, I'll attempt to replicate it for further investigation.

Actually, it is still happening, but for a second movie, not the first. I believe it might be related to the cached metadata not being updated correctly, or something.
This is my current config:

Actually, it is still happening, but for a second movie, not the first. I believe it might be related to the cached metadata not being updated correctly, or something.
This is my current config:

If you're willing to experiment with a preview build and are comfortable using something like Postman or Insomnia, you might want to explore a feature I've been developing. While the backend code is complete, please be aware that the UI component is not, so for now it's only callable through the UI.
This feature allows you to test a particular media item with your rule, providing a detailed breakdown of each evaluation along with the compared values. This could be valuable in understanding the actions applied to your failing media items. If you're interested, give it a try and let me know your observations or any feedback you may have.
To give it a try, follow these instructions:

Update to the jorenn92/maintainerr:feature-preview docker image. Be aware of a breaking change related to security. Ensure that your exposed database file is read/writeable by PID 1000:1000. You can specify your own PID in the docker-compose file by adding a user: 1000:1000 record with the desired PID:GID values. Failure to do so may result in Maintainerr being unable to write to the database.

Identify the Plex ID of the media item you want to inspect. The easiest method is to open your browser's developer tools, navigate to the network tab, clear previous records, and use the search functionality on Maintainerr's overview screen to filter for the desired item. Open the server request related to your search, click the 'response' tab, and copy the 'ratingKey' value. Alternatively, you may also use Plex Web and use the developer tools 'network' screen when opening the UI of the desired item.

Find the ruleGroup ID by opening the developer tools (clear all previous requests) and open the 'rules' screen. The response of the 'rules' request contains an object for each rule. Copy the 'id' value of the rule you wish to check.

Utilize your preferred API testing tool to perform a POST call to 'http://<your_server>:<your_port>/api/rules/test' (for instance, http://<IP_ADDRESS>:8154/api/rules/test) with the following JSON request:

{
    "rulegroupId": <your rulegroup id>,
    "mediaId": <your plex ratingKey>
}

Copy and analyze the response, which should contain the results of the executed steps. Note that sections won't be evaluated further if it's evident that the item doesn't match the ruleset.

When you're done, ensure that you revert to the latest image. This preview image is specifically built for testing features that are not yet ready to be merged into the main branch (and certainly not prepared for release).

I've updated the above instructions since there's a basic UI available now. You won't need any external apps anymore.

Sorry for the delay, but here is what I'm seeing.
This is for an item that stays in the collection between runs:
- plexId: 10711
  result: false
  sectionResults:
    - id: 0
      result: false
      ruleResults:
        - operator: OR
          action: not_equals
          firstValueName: Plex - User rating (scale 1-10)
          firstValue: 3
          secondValueName: number
          secondValue: 0
          result: true
        - operator: AND
          action: smaller
          firstValueName: Plex - User rating (scale 1-10)
          firstValue: 3
          secondValueName: number
          secondValue: 6
          result: true
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 1
          secondValueName: number
          secondValue: 0
          result: false

This is for an item that is added or removed from the collection every run while currently in the collection:
- plexId: 10862
  result: true
  sectionResults:
    - id: 0
      result: true
      ruleResults:
        - operator: OR
          action: not_equals
          firstValueName: Plex - User rating (scale 1-10)
          firstValue: 4
          secondValueName: number
          secondValue: 0
          result: true
        - operator: AND
          action: smaller
          firstValueName: Plex - User rating (scale 1-10)
          firstValue: 4
          secondValueName: number
          secondValue: 6
          result: true
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 0
          secondValueName: number
          secondValue: 0
          result: true

This is for an item that is added or removed from the collection every run while not currently in the collection:
- plexId: 23259
  result: false
  sectionResults:
    - id: 0
      result: false
      ruleResults:
        - operator: OR
          action: not_equals
          firstValueName: Plex - User rating (scale 1-10)
          firstValue: 4
          secondValueName: number
          secondValue: 0
          result: true
        - operator: AND
          action: smaller
          firstValueName: Plex - User rating (scale 1-10)
          firstValue: 4
          secondValueName: number
          secondValue: 6
          result: true
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 1
          secondValueName: number
          secondValue: 0
          result: false

This is the logs that produced the previous state:
maintainerr  | [Nest] 76  - 01/23/2024, 4:08:01 PM     LOG [RuleExecutorService] Starting Execution of all active rules.
maintainerr  | [Nest] 76  - 01/23/2024, 4:08:01 PM     LOG [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [Nest] 76  - 01/23/2024, 4:08:21 PM     LOG [RuleExecutorService] Removing 1 media items from 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/23/2024, 4:08:21 PM     LOG [RuleExecutorService] Adding 1 media items to 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/23/2024, 4:08:21 PM     LOG [CollectionsService] Adding media with id 10862 to collection..
maintainerr  | [Nest] 76  - 01/23/2024, 4:08:22 PM     LOG [CollectionsService] Removing media with id 23259 from collection..

Running the rules again produces these logs:
maintainerr  | [Nest] 76  - 01/23/2024, 4:13:42 PM     LOG [RuleExecutorService] Starting Execution of all active rules.
maintainerr  | [Nest] 76  - 01/23/2024, 4:13:43 PM     LOG [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [Nest] 76  - 01/23/2024, 4:14:02 PM     LOG [RuleExecutorService] Removing 1 media items from 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/23/2024, 4:14:02 PM     LOG [RuleExecutorService] Adding 1 media items to 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/23/2024, 4:14:02 PM     LOG [CollectionsService] Adding media with id 23259 to collection..
maintainerr  | [Nest] 76  - 01/23/2024, 4:14:02 PM     LOG [CollectionsService] Removing media with id 10862 from collection..
maintainerr  | [Nest] 76  - 01/23/2024, 4:14:02 PM     LOG [RuleExecutorService] Execution of rules for 'Low rated movies' done.
maintainerr  | [Nest] 76  - 01/23/2024, 4:14:02 PM     LOG [RuleExecutorService] Synced collection 'Leaving soon' with Plex

Testing the media again after that run shows the opposite, the result is true for 23259 and false for 10862.

Sorry for the delay, but here is what I'm seeing.
This is for an item that stays in the collection between runs:
- plexId: 10711
  result: false
  sectionResults:
    - id: 0
      result: false
      ruleResults:
        - operator: OR
          action: not_equals
          firstValueName: Plex - User rating (scale 1-10)
          firstValue: 3
          secondValueName: number
          secondValue: 0
          result: true
        - operator: AND
          action: smaller
          firstValueName: Plex - User rating (scale 1-10)
          firstValue: 3
          secondValueName: number
          secondValue: 6
          result: true
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 1
          secondValueName: number
          secondValue: 0
          result: false

This is for an item that is added or removed from the collection every run while currently in the collection:
- plexId: 10862
  result: true
  sectionResults:
    - id: 0
      result: true
      ruleResults:
        - operator: OR
          action: not_equals
          firstValueName: Plex - User rating (scale 1-10)
          firstValue: 4
          secondValueName: number
          secondValue: 0
          result: true
        - operator: AND
          action: smaller
          firstValueName: Plex - User rating (scale 1-10)
          firstValue: 4
          secondValueName: number
          secondValue: 6
          result: true
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 0
          secondValueName: number
          secondValue: 0
          result: true

This is for an item that is added or removed from the collection every run while not currently in the collection:
- plexId: 23259
  result: false
  sectionResults:
    - id: 0
      result: false
      ruleResults:
        - operator: OR
          action: not_equals
          firstValueName: Plex - User rating (scale 1-10)
          firstValue: 4
          secondValueName: number
          secondValue: 0
          result: true
        - operator: AND
          action: smaller
          firstValueName: Plex - User rating (scale 1-10)
          firstValue: 4
          secondValueName: number
          secondValue: 6
          result: true
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 1
          secondValueName: number
          secondValue: 0
          result: false

This is the logs that produced the previous state:
maintainerr  | [Nest] 76  - 01/23/2024, 4:08:01 PM     LOG [RuleExecutorService] Starting Execution of all active rules.
maintainerr  | [Nest] 76  - 01/23/2024, 4:08:01 PM     LOG [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [Nest] 76  - 01/23/2024, 4:08:21 PM     LOG [RuleExecutorService] Removing 1 media items from 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/23/2024, 4:08:21 PM     LOG [RuleExecutorService] Adding 1 media items to 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/23/2024, 4:08:21 PM     LOG [CollectionsService] Adding media with id 10862 to collection..
maintainerr  | [Nest] 76  - 01/23/2024, 4:08:22 PM     LOG [CollectionsService] Removing media with id 23259 from collection..

Running the rules again produces these logs:
maintainerr  | [Nest] 76  - 01/23/2024, 4:13:42 PM     LOG [RuleExecutorService] Starting Execution of all active rules.
maintainerr  | [Nest] 76  - 01/23/2024, 4:13:43 PM     LOG [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [Nest] 76  - 01/23/2024, 4:14:02 PM     LOG [RuleExecutorService] Removing 1 media items from 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/23/2024, 4:14:02 PM     LOG [RuleExecutorService] Adding 1 media items to 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/23/2024, 4:14:02 PM     LOG [CollectionsService] Adding media with id 23259 to collection..
maintainerr  | [Nest] 76  - 01/23/2024, 4:14:02 PM     LOG [CollectionsService] Removing media with id 10862 from collection..
maintainerr  | [Nest] 76  - 01/23/2024, 4:14:02 PM     LOG [RuleExecutorService] Execution of rules for 'Low rated movies' done.
maintainerr  | [Nest] 76  - 01/23/2024, 4:14:02 PM     LOG [RuleExecutorService] Synced collection 'Leaving soon' with Plex

Testing the media again after that run shows the opposite, the result is true for 23259 and false for 10862.

Thank you for providing this detailed report!
Regarding the item that remains in the collection, could you attempt to manually remove it? Subsequently, remove the exclusion for the item that was created due to this action. It is possible that Maintainerr assumes the record was added manually. If the item no longer appears after these actions, that likely confirms the case.
As for the other items, it seems they are consistently shifting between collections. They seem to be added to one collection, then removed from another, and vice versa—all because the condition 'Plex - Present in amount of other collections' no longer aligns.
To troubleshoot, consider adding the 'Plex - collections media is present in' rule to your rule set. Just for testing purposes, it will include the collection names in the test output. This may shed light on the shifting behavior of these items.

Adding that additional rule gives some interesting insight, I think:
For the item (10711) that always stays in the collection:
...
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 1
          secondValueName: number
          secondValue: 0
          result: false
        - operator: OR
          action: equals
          firstValueName: Plex - [list] Collections media is present in (titles)
          firstValue:
            - Leaving soon
          secondValueName: text
          secondValue: foobar
          result: false

For the shifting item (10862) that is currently in the collection:
...
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 0
          secondValueName: number
          secondValue: 0
          result: true
        - operator: OR
          action: equals
          firstValueName: Plex - [list] Collections media is present in (titles)
          firstValue: null
          secondValueName: text
          secondValue: foobar
          result: false

For the shifting item (23259) that is currently not in the collection:
...
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 1
          secondValueName: number
          secondValue: 0
          result: false
        - operator: OR
          action: equals
          firstValueName: Plex - [list] Collections media is present in (titles)
          firstValue:
            - Leaving soon
          secondValueName: text
          secondValue: foobar
          result: false

You would expect that the first and second item would have the same results for that ruleset, because both are currently in the "Leaving soon" collection, but it's the one currently not in the collection that has the same results.
This brings me back to my initial idea about the cached metadata might be out of sync, which might cause this function to then return inaccurate data:
https://github.com/jorenn92/Maintainerr/blob/main/server/src/modules/rules/getter/plex-getter.service.ts#L97-L111
Now, back to what you first suggested with removing that item (10711) that stayed in the collection.
When it's not in the collection (before rules have run):
...
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 0
          secondValueName: number
          secondValue: 0
          result: true
        - operator: OR
          action: equals
          firstValueName: Plex - [list] Collections media is present in (titles)
          firstValue: null
          secondValueName: text
          secondValue: foobar
          result: false

Running the rule added it to the collection (as expected), but checking it again looks exactly like before, like the cached metadata was not updated:
...
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 0
          secondValueName: number
          secondValue: 0
          result: true
        - operator: OR
          action: equals
          firstValueName: Plex - [list] Collections media is present in (titles)
          firstValue: null
          secondValueName: text
          secondValue: foobar
          result: false

Running the rule removes it from the collection (I guess this is what I expected?), and it's back to looking like the other switching item:
...
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 1
          secondValueName: number
          secondValue: 0
          result: false
        - operator: OR
          action: equals
          firstValueName: Plex - [list] Collections media is present in (titles)
          firstValue:
            - Leaving soon
          secondValueName: text
          secondValue: foobar
          result: false

Re-running the rule now adds it or removes it (and another of the switching items). Here are the logs, just for good measure:
maintainerr  | [Nest] 76  - 01/25/2024, 12:22:41 PM     LOG [RulesService] Removed exclusion for media with id 10711 and rulegroup id 9
maintainerr  | [Nest] 76  - 01/25/2024, 12:24:56 PM     LOG [RuleExecutorService] Starting Execution of all active rules.
maintainerr  | [Nest] 76  - 01/25/2024, 12:24:56 PM     LOG [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [Nest] 76  - 01/25/2024, 12:25:13 PM     LOG [RuleExecutorService] Removing 1 media items from 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/25/2024, 12:25:13 PM     LOG [RuleExecutorService] Adding 2 media items to 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/25/2024, 12:25:14 PM     LOG [CollectionsService] Adding media with id 10711 to collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:25:14 PM     LOG [CollectionsService] Adding media with id 23259 to collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:25:14 PM     LOG [CollectionsService] Removing media with id 10862 from collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:25:14 PM     LOG [RuleExecutorService] Execution of rules for 'Low rated movies' done.
maintainerr  | [Nest] 76  - 01/25/2024, 12:25:14 PM     LOG [RuleExecutorService] Synced collection 'Leaving soon' with Plex
maintainerr  | [Nest] 76  - 01/25/2024, 12:26:51 PM     LOG [RuleExecutorService] Starting Execution of all active rules.
maintainerr  | [Nest] 76  - 01/25/2024, 12:26:51 PM     LOG [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [Nest] 76  - 01/25/2024, 12:27:08 PM     LOG [RuleExecutorService] Removing 2 media items from 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/25/2024, 12:27:08 PM     LOG [RuleExecutorService] Adding 1 media items to 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/25/2024, 12:27:08 PM     LOG [CollectionsService] Adding media with id 10862 to collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:27:09 PM     LOG [CollectionsService] Removing media with id 10711 from collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:27:09 PM     LOG [CollectionsService] Removing media with id 23259 from collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:27:09 PM     LOG [RuleExecutorService] Execution of rules for 'Low rated movies' done.
maintainerr  | [Nest] 76  - 01/25/2024, 12:27:09 PM     LOG [RuleExecutorService] Synced collection 'Leaving soon' with Plex
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:25 PM     LOG [RuleExecutorService] Starting Execution of all active rules.
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:25 PM     LOG [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:42 PM     LOG [RuleExecutorService] Removing 1 media items from 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:42 PM     LOG [RuleExecutorService] Adding 2 media items to 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:42 PM     LOG [CollectionsService] Adding media with id 10711 to collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:43 PM     LOG [CollectionsService] Adding media with id 23259 to collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:43 PM     LOG [CollectionsService] Removing media with id 10862 from collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:43 PM     LOG [RuleExecutorService] Execution of rules for 'Low rated movies' done.
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:43 PM     LOG [RuleExecutorService] Synced collection 'Leaving soon' with Plex
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:11 PM     LOG [RuleExecutorService] Starting Execution of all active rules.
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:12 PM     LOG [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:28 PM     LOG [RuleExecutorService] Removing 2 media items from 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:28 PM     LOG [RuleExecutorService] Adding 1 media items to 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:28 PM     LOG [CollectionsService] Adding media with id 10862 to collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:28 PM     LOG [CollectionsService] Removing media with id 10711 from collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:28 PM     LOG [CollectionsService] Removing media with id 23259 from collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:28 PM     LOG [RuleExecutorService] Execution of rules for 'Low rated movies' done.
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:28 PM     LOG [RuleExecutorService] Synced collection 'Leaving soon' with Plex

As a last note, I'm not sure what I did initially to make the first item (10711) stay in the collection permanently, I remember that I restarted the Docker image, but that seems to have no effect now.

Adding that additional rule gives some interesting insight, I think:
For the item (10711) that always stays in the collection:
...
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 1
          secondValueName: number
          secondValue: 0
          result: false
        - operator: OR
          action: equals
          firstValueName: Plex - [list] Collections media is present in (titles)
          firstValue:
            - Leaving soon
          secondValueName: text
          secondValue: foobar
          result: false

For the shifting item (10862) that is currently in the collection:
...
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 0
          secondValueName: number
          secondValue: 0
          result: true
        - operator: OR
          action: equals
          firstValueName: Plex - [list] Collections media is present in (titles)
          firstValue: null
          secondValueName: text
          secondValue: foobar
          result: false

For the shifting item (23259) that is currently not in the collection:
...
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 1
          secondValueName: number
          secondValue: 0
          result: false
        - operator: OR
          action: equals
          firstValueName: Plex - [list] Collections media is present in (titles)
          firstValue:
            - Leaving soon
          secondValueName: text
          secondValue: foobar
          result: false

You would expect that the first and second item would have the same results for that ruleset, because both are currently in the "Leaving soon" collection, but it's the one currently not in the collection that has the same results.
This brings me back to my initial idea about the cached metadata might be out of sync, which might cause this function to then return inaccurate data: https://github.com/jorenn92/Maintainerr/blob/main/server/src/modules/rules/getter/plex-getter.service.ts#L97-L111
Now, back to what you first suggested with removing that item (10711) that stayed in the collection.
When it's not in the collection (before rules have run):
...
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 0
          secondValueName: number
          secondValue: 0
          result: true
        - operator: OR
          action: equals
          firstValueName: Plex - [list] Collections media is present in (titles)
          firstValue: null
          secondValueName: text
          secondValue: foobar
          result: false

Running the rule added it to the collection (as expected), but checking it again looks exactly like before, like the cached metadata was not updated:
...
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 0
          secondValueName: number
          secondValue: 0
          result: true
        - operator: OR
          action: equals
          firstValueName: Plex - [list] Collections media is present in (titles)
          firstValue: null
          secondValueName: text
          secondValue: foobar
          result: false

Running the rule removes it from the collection (I guess this is what I expected?), and it's back to looking like the other switching item:
...
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 1
          secondValueName: number
          secondValue: 0
          result: false
        - operator: OR
          action: equals
          firstValueName: Plex - [list] Collections media is present in (titles)
          firstValue:
            - Leaving soon
          secondValueName: text
          secondValue: foobar
          result: false

Re-running the rule now adds it or removes it (and another of the switching items). Here are the logs, just for good measure:
maintainerr  | [Nest] 76  - 01/25/2024, 12:22:41 PM     LOG [RulesService] Removed exclusion for media with id 10711 and rulegroup id 9
maintainerr  | [Nest] 76  - 01/25/2024, 12:24:56 PM     LOG [RuleExecutorService] Starting Execution of all active rules.
maintainerr  | [Nest] 76  - 01/25/2024, 12:24:56 PM     LOG [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [Nest] 76  - 01/25/2024, 12:25:13 PM     LOG [RuleExecutorService] Removing 1 media items from 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/25/2024, 12:25:13 PM     LOG [RuleExecutorService] Adding 2 media items to 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/25/2024, 12:25:14 PM     LOG [CollectionsService] Adding media with id 10711 to collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:25:14 PM     LOG [CollectionsService] Adding media with id 23259 to collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:25:14 PM     LOG [CollectionsService] Removing media with id 10862 from collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:25:14 PM     LOG [RuleExecutorService] Execution of rules for 'Low rated movies' done.
maintainerr  | [Nest] 76  - 01/25/2024, 12:25:14 PM     LOG [RuleExecutorService] Synced collection 'Leaving soon' with Plex
maintainerr  | [Nest] 76  - 01/25/2024, 12:26:51 PM     LOG [RuleExecutorService] Starting Execution of all active rules.
maintainerr  | [Nest] 76  - 01/25/2024, 12:26:51 PM     LOG [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [Nest] 76  - 01/25/2024, 12:27:08 PM     LOG [RuleExecutorService] Removing 2 media items from 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/25/2024, 12:27:08 PM     LOG [RuleExecutorService] Adding 1 media items to 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/25/2024, 12:27:08 PM     LOG [CollectionsService] Adding media with id 10862 to collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:27:09 PM     LOG [CollectionsService] Removing media with id 10711 from collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:27:09 PM     LOG [CollectionsService] Removing media with id 23259 from collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:27:09 PM     LOG [RuleExecutorService] Execution of rules for 'Low rated movies' done.
maintainerr  | [Nest] 76  - 01/25/2024, 12:27:09 PM     LOG [RuleExecutorService] Synced collection 'Leaving soon' with Plex
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:25 PM     LOG [RuleExecutorService] Starting Execution of all active rules.
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:25 PM     LOG [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:42 PM     LOG [RuleExecutorService] Removing 1 media items from 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:42 PM     LOG [RuleExecutorService] Adding 2 media items to 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:42 PM     LOG [CollectionsService] Adding media with id 10711 to collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:43 PM     LOG [CollectionsService] Adding media with id 23259 to collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:43 PM     LOG [CollectionsService] Removing media with id 10862 from collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:43 PM     LOG [RuleExecutorService] Execution of rules for 'Low rated movies' done.
maintainerr  | [Nest] 76  - 01/25/2024, 12:29:43 PM     LOG [RuleExecutorService] Synced collection 'Leaving soon' with Plex
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:11 PM     LOG [RuleExecutorService] Starting Execution of all active rules.
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:12 PM     LOG [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:28 PM     LOG [RuleExecutorService] Removing 2 media items from 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:28 PM     LOG [RuleExecutorService] Adding 1 media items to 'Leaving soon'.
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:28 PM     LOG [CollectionsService] Adding media with id 10862 to collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:28 PM     LOG [CollectionsService] Removing media with id 10711 from collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:28 PM     LOG [CollectionsService] Removing media with id 23259 from collection..
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:28 PM     LOG [RuleExecutorService] Execution of rules for 'Low rated movies' done.
maintainerr  | [Nest] 76  - 01/25/2024, 12:31:28 PM     LOG [RuleExecutorService] Synced collection 'Leaving soon' with Plex

As a last note, I'm not sure what I did initially to make the first item (10711) stay in the collection permanently, I remember that I restarted the Docker image, but that seems to have no effect now.
Edit: I would try and help out by trying to write a test to reproduce this if it was a language I was more familiar with, but I haven't worked with JS since jQuery was popular and I've never learned TS, plus I've never used Jest, so I'm afraid I don't really know how helpful I can be.

Thank you for your input! You may be on to something.. Upon further investigation, it seems that the problem may be associated with the particular stage at which I clear the cache.
Currently, I clear the cache at the initiation of the rule execution task. So, if an item is added to a collection by one ruleset, the next ruleset may utilize outdated metadata due to caching by the previous ruleset. So if the first one added it to it's collection, the second one won't see it during that run. Could this potentially explain the observed behavior?
Here is the portion of the code where the cache is cleared:
https://github.com/jorenn92/Maintainerr/blob/cd5df989d566808c286a85152b7a1489a7caec62/server/src/modules/rules/tasks/rule-executor.service.ts#L85

@bolmstedt, PR https://github.com/jorenn92/Maintainerr/pull/801 might fix your issue. Once merged, you should be able to try it out with the latest develop/main image.

@bolmstedt, PR #801 might fix your issue. Once merged, you should be able to try it out with the latest develop/main image.

Tried the latest develop image, and although it is flushing the cache, sadly the behavior looks just like before when running the rule:
maintainerr  | [maintainerr] | 26/01/2024 13:40:58  [INFO] [RuleExecutorService] Starting Execution of all active rules
maintainerr  | [maintainerr] | 26/01/2024 13:40:59  [INFO] [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [maintainerr] | 26/01/2024 13:40:59  [INFO] [RulesService] Flushed Plex cache because a rule in the group required it
maintainerr  | [maintainerr] | 26/01/2024 13:41:17  [INFO] [RuleExecutorService] Removing 1 media items from 'Leaving soon'.
maintainerr  | [maintainerr] | 26/01/2024 13:41:17  [INFO] [RuleExecutorService] Adding 2 media items to 'Leaving soon'.
maintainerr  | [maintainerr] | 26/01/2024 13:41:17  [INFO] [CollectionsService] Adding media with id 10711 to collection..
maintainerr  | [maintainerr] | 26/01/2024 13:41:18  [INFO] [CollectionsService] Adding media with id 23259 to collection..
maintainerr  | [maintainerr] | 26/01/2024 13:41:18  [INFO] [CollectionsService] Removing media with id 10862 from collection..
maintainerr  | [maintainerr] | 26/01/2024 13:41:18  [INFO] [RuleExecutorService] Execution of rules for 'Low rated movies' done.
maintainerr  | [maintainerr] | 26/01/2024 13:41:18  [INFO] [RuleExecutorService] Synced collection 'Leaving soon' with Plex
maintainerr  | [maintainerr] | 26/01/2024 13:42:20  [INFO] [RuleExecutorService] Starting Execution of all active rules
maintainerr  | [maintainerr] | 26/01/2024 13:42:20  [INFO] [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [maintainerr] | 26/01/2024 13:42:20  [INFO] [RulesService] Flushed Plex cache because a rule in the group required it
maintainerr  | [maintainerr] | 26/01/2024 13:42:39  [INFO] [RuleExecutorService] Removing 2 media items from 'Leaving soon'.
maintainerr  | [maintainerr] | 26/01/2024 13:42:39  [INFO] [RuleExecutorService] Adding 1 media items to 'Leaving soon'.
maintainerr  | [maintainerr] | 26/01/2024 13:42:39  [INFO] [CollectionsService] Adding media with id 10862 to collection..
maintainerr  | [maintainerr] | 26/01/2024 13:42:39  [INFO] [CollectionsService] Removing media with id 10711 from collection..
maintainerr  | [maintainerr] | 26/01/2024 13:42:39  [INFO] [CollectionsService] Removing media with id 23259 from collection..
maintainerr  | [maintainerr] | 26/01/2024 13:42:40  [INFO] [RuleExecutorService] Execution of rules for 'Low rated movies' done.
maintainerr  | [maintainerr] | 26/01/2024 13:42:40  [INFO] [RuleExecutorService] Synced collection 'Leaving soon' with Plex
maintainerr  | [maintainerr] | 26/01/2024 13:44:03  [INFO] [RuleExecutorService] Starting Execution of all active rules
maintainerr  | [maintainerr] | 26/01/2024 13:44:03  [INFO] [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [maintainerr] | 26/01/2024 13:44:03  [INFO] [RulesService] Flushed Plex cache because a rule in the group required it
maintainerr  | [maintainerr] | 26/01/2024 13:44:21  [INFO] [RuleExecutorService] Removing 1 media items from 'Leaving soon'.
maintainerr  | [maintainerr] | 26/01/2024 13:44:21  [INFO] [RuleExecutorService] Adding 2 media items to 'Leaving soon'.
maintainerr  | [maintainerr] | 26/01/2024 13:44:21  [INFO] [CollectionsService] Adding media with id 10711 to collection..
maintainerr  | [maintainerr] | 26/01/2024 13:44:21  [INFO] [CollectionsService] Adding media with id 23259 to collection..
maintainerr  | [maintainerr] | 26/01/2024 13:44:22  [INFO] [CollectionsService] Removing media with id 10862 from collection..
maintainerr  | [maintainerr] | 26/01/2024 13:44:22  [INFO] [RuleExecutorService] Execution of rules for 'Low rated movies' done.
maintainerr  | [maintainerr] | 26/01/2024 13:44:22  [INFO] [RuleExecutorService] Synced collection 'Leaving soon' with Plex

Item 10862, that was just removed has this test output:
...
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 1
          secondValueName: number
          secondValue: 0
          result: false
        - operator: OR
          action: equals
          firstValueName: Plex - [list] Collections media is present in (titles)
          firstValue:
            - Leaving soon
          secondValueName: text
          secondValue: foobar
          result: false

Item 10711 that was just added has this output:
...
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 0
          secondValueName: number
          secondValue: 0
          result: true
        - operator: OR
          action: equals
          firstValueName: Plex - [list] Collections media is present in (titles)
          firstValue: null
          secondValueName: text
          secondValue: foobar
          result: false

I though that your fix would solve the issue, but I'm not sure why it seems to have no effect.
I am now wondering if there is something strange with this Plex collection getter, if it is not filtering the custom collection name properly, because I would assume that a movie in that collection would be counted as being in 0 collection, not 1.

@bolmstedt, PR #801 might fix your issue. Once merged, you should be able to try it out with the latest develop/main image.

Tried the latest develop image, and although it is flushing the cache, sadly the behavior looks just like before when running the rule:
maintainerr  | [maintainerr] | 26/01/2024 13:40:58  [INFO] [RuleExecutorService] Starting Execution of all active rules
maintainerr  | [maintainerr] | 26/01/2024 13:40:59  [INFO] [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [maintainerr] | 26/01/2024 13:40:59  [INFO] [RulesService] Flushed Plex cache because a rule in the group required it
maintainerr  | [maintainerr] | 26/01/2024 13:41:17  [INFO] [RuleExecutorService] Removing 1 media items from 'Leaving soon'.
maintainerr  | [maintainerr] | 26/01/2024 13:41:17  [INFO] [RuleExecutorService] Adding 2 media items to 'Leaving soon'.
maintainerr  | [maintainerr] | 26/01/2024 13:41:17  [INFO] [CollectionsService] Adding media with id 10711 to collection..
maintainerr  | [maintainerr] | 26/01/2024 13:41:18  [INFO] [CollectionsService] Adding media with id 23259 to collection..
maintainerr  | [maintainerr] | 26/01/2024 13:41:18  [INFO] [CollectionsService] Removing media with id 10862 from collection..
maintainerr  | [maintainerr] | 26/01/2024 13:41:18  [INFO] [RuleExecutorService] Execution of rules for 'Low rated movies' done.
maintainerr  | [maintainerr] | 26/01/2024 13:41:18  [INFO] [RuleExecutorService] Synced collection 'Leaving soon' with Plex
maintainerr  | [maintainerr] | 26/01/2024 13:42:20  [INFO] [RuleExecutorService] Starting Execution of all active rules
maintainerr  | [maintainerr] | 26/01/2024 13:42:20  [INFO] [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [maintainerr] | 26/01/2024 13:42:20  [INFO] [RulesService] Flushed Plex cache because a rule in the group required it
maintainerr  | [maintainerr] | 26/01/2024 13:42:39  [INFO] [RuleExecutorService] Removing 2 media items from 'Leaving soon'.
maintainerr  | [maintainerr] | 26/01/2024 13:42:39  [INFO] [RuleExecutorService] Adding 1 media items to 'Leaving soon'.
maintainerr  | [maintainerr] | 26/01/2024 13:42:39  [INFO] [CollectionsService] Adding media with id 10862 to collection..
maintainerr  | [maintainerr] | 26/01/2024 13:42:39  [INFO] [CollectionsService] Removing media with id 10711 from collection..
maintainerr  | [maintainerr] | 26/01/2024 13:42:39  [INFO] [CollectionsService] Removing media with id 23259 from collection..
maintainerr  | [maintainerr] | 26/01/2024 13:42:40  [INFO] [RuleExecutorService] Execution of rules for 'Low rated movies' done.
maintainerr  | [maintainerr] | 26/01/2024 13:42:40  [INFO] [RuleExecutorService] Synced collection 'Leaving soon' with Plex
maintainerr  | [maintainerr] | 26/01/2024 13:44:03  [INFO] [RuleExecutorService] Starting Execution of all active rules
maintainerr  | [maintainerr] | 26/01/2024 13:44:03  [INFO] [RuleExecutorService] Executing rules for 'Low rated movies'
maintainerr  | [maintainerr] | 26/01/2024 13:44:03  [INFO] [RulesService] Flushed Plex cache because a rule in the group required it
maintainerr  | [maintainerr] | 26/01/2024 13:44:21  [INFO] [RuleExecutorService] Removing 1 media items from 'Leaving soon'.
maintainerr  | [maintainerr] | 26/01/2024 13:44:21  [INFO] [RuleExecutorService] Adding 2 media items to 'Leaving soon'.
maintainerr  | [maintainerr] | 26/01/2024 13:44:21  [INFO] [CollectionsService] Adding media with id 10711 to collection..
maintainerr  | [maintainerr] | 26/01/2024 13:44:21  [INFO] [CollectionsService] Adding media with id 23259 to collection..
maintainerr  | [maintainerr] | 26/01/2024 13:44:22  [INFO] [CollectionsService] Removing media with id 10862 from collection..
maintainerr  | [maintainerr] | 26/01/2024 13:44:22  [INFO] [RuleExecutorService] Execution of rules for 'Low rated movies' done.
maintainerr  | [maintainerr] | 26/01/2024 13:44:22  [INFO] [RuleExecutorService] Synced collection 'Leaving soon' with Plex

Item 10862, that was just removed has this test output:
...
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 1
          secondValueName: number
          secondValue: 0
          result: false
        - operator: OR
          action: equals
          firstValueName: Plex - [list] Collections media is present in (titles)
          firstValue:
            - Leaving soon
          secondValueName: text
          secondValue: foobar
          result: false

Item 10711 that was just added has this output:
...
        - operator: AND
          action: equals
          firstValueName: Plex - Present in amount of other collections
          firstValue: 0
          secondValueName: number
          secondValue: 0
          result: true
        - operator: OR
          action: equals
          firstValueName: Plex - [list] Collections media is present in (titles)
          firstValue: null
          secondValueName: text
          secondValue: foobar
          result: false

I though that your fix would solve the issue, but I'm not sure why it seems to have no effect.
I am now wondering if there is something strange with this Plex collection getter, if it is not filtering the custom collection name properly, because I would assume that a movie in that collection would be counted as being in 0 collection, not 1.

Just to make sure, I'm beginning to feel a bit confused. Is the 'Leaving Soon' collection in anyway related to this rule? Is it for instance, the custom collection name?
And are both shifting items consistently included in the 'Leaving Soon' collection?

Exactly, "Leaving soon" is the name of the custom collection related to that ruleset. All mentioned shifting items are being added and removed from that collection.
I realise now that I've not tried to not have a custom collection yet, if that makes a difference. I'll try that later tonight or tomorrow.

Exactly, "Leaving soon" is the name of the custom collection related to that ruleset. All mentioned shifting items are being added and removed from that collection.
I realise now that I've not tried to not have a custom collection yet, if that makes a difference. I'll try that later tonight or tomorrow.

You don't have to, i've figured it out. Fix in https://github.com/jorenn92/Maintainerr/pull/804
As you suspected, the rule was just wrong in conjunction with a manual collection. the properties manualCollection and manualCollectionName were being accessed from ruleGroup, where they weren't available. Instead, they are present on ruleGroup.collection. This resulted in them always returning undefined, which caused the mismatch.
Additionally, I addressed another small caching oversight related to 'test media'. Previously, it would utilize the last cached metadata from Plex, which might not be up to date. Now, when testing media, it clears the item's cache first to ensure accuracy.
Once merged, you're able to test it out with the develop/main image.

Closing but if there is still a problem, please re-open.


bug: sanitized content can create empty entities

Describe the bug
If I create entities (like questions) with content that gets sanitized away, I create empty ones which technically shouldn't be possible, as the site validates against the inputs being empty.
To Reproduce
Steps to reproduce the behavior:

Go to a profile
Ask a question with the content <iframe src="https://google.com"></iframe>
Check the inbox
The question is empty

Expected behavior
If no content ends up visible/part of an entity, it shouldn't be created.

Fixed, thank you!
Feel free to reopen if you're still able to reproduce.


Is there a way to add a tab through graph api that can request mic/cam permissions?

I have a question. Is there a way to add a tab through graph api that can request mic/cam permissions?
I know we can request enabled mic/cam permission requests through adding tab through manifest (using device permissions param), but is there a way to to enable those permission when a tab is added through graph api?
The graph api call I am referring to is here:
https://docs.microsoft.com/en-us/graph/api/teamstab-add?view=graph-rest-1.0
Any feedback/suggestions would be greatly appreciated.

@liangchr , Yes you can please look at Request device permissions for Teams Tab.

@Trinetra-MSFT Thank you for answering, I am working with liangchr on this same issue. The link that you sent over is what we used to enable cam/mic permissions with a tab configured through manifest, but we were wondering if there is a way to get permissions for a website tab created with the graph api. In this link [https://docs.microsoft.com/en-us/graph/teams-configuring-builtin-tabs] there are instructions to configure a website tab type, but it is unclear how to add that tab type with teamsAppId being com.microsoft.teamspace.tab.web through manifest.
Currently, the way we are adding this website tab is through an api call using graph explorer, referred to in [https://docs.microsoft.com/en-us/graph/api/teamstab-add?view=graph-rest-1.0], but can we get device permissions when adding a tab in this way? Or is the only way to get device permissions in the manifest and we'll have to somehow configure a website tab in the manifest as well?
Please let me know if this needs clarification, any feedback would be appreciated.

@liangchr , Currently there is no way to achieve this with graph API, you need to put these permissions in manifest.

@Trinetra-MSFT Since that is the case, is there a way to configure a website tab type in the manifest? The link for configuring tab types in MS Teams I referenced above mentions a manifest schema for the different tab configurations, but I didn't find anything in the example manifest for website tabs (teamsAppId = com.microsoft.teamspace.tab.web). Is there a way to configure this tab and specify teamsAppID in the manifest? If so, is there any reference of how this is done?

@eatalig, You can look at Configure built-in tab in Teams. This requires teamsAppId which you fetch from teams app catalog but this won't be able to help you in adding device permissions in manifest. device permissions are listed in manifest schema which you have to mention while creating app manifest.

@liangchr, Please feel free to reopen if you have further query regarding device permissions. We are happy to help you in that.


Add checks for required configuration options

@Crim This bit me today, we end up with a NPE way further down. If this seems OK I'll add tests specific to these checks, just want to make sure this won't break anything else.

Does it make more sense in here? https://github.com/salesforce/storm-dynamic-spout/blob/master/src/main/java/com/salesforce/storm/spout/dynamic/kafka/KafkaConsumerConfig.java#L134
I think we do other required field checks in SpoutConfig, so this would follow that pattern.

@Crim I could go either way, what is your preference?

:shipit:


Make the @yamada-ui/pagination component headless

script: make-component-headless
package: @yamada-ui/pagination
Description
Currently, the @yamada-ui/pagination component has minimal styles set within the component's source code.
We want to make this style transferable to the theme and make the component headless, enabling more flexible UI customization.
Problem Statement/Justification
By making the @yamada-ui/pagination component headless, we can achieve more flexible styling tailored to the project.
Proposed Solution or API
The styles within the component are mostly defined by css: CSSUIObject and set to a prop named __css. We will transfer these styles to the packages/theme/src/components.
The code below is just an example and not the actual code.
packages/components/input/src/input-group.tsx
const css: CSSUIObject = {
- width: "100%",
- display: "flex",
- position: "relative",
  ...styles.container,
}

packages/theme/src/components/input.ts
baseStyle: {
  container: {
+   width: "100%",
+   display: "flex",
+   position: "relative",
  },
  field: {
    width: "100%",
    minWidth: 0,
    outline: 0,
    position: "relative",
    appearance: "none",
    transitionProperty: "common",
    transitionDuration: "normal",
    _disabled: {
      opacity: 0.4,
      cursor: "not-allowed",
    },
  },
  element: {
    color: ["blackAlpha.600", "whiteAlpha.700"],
  },
},

[!TIP]
In cases where the styles within the component are dynamically changed, there may be instances where it is not possible to transfer the styles to the theme.
In such cases, it needs to be discussed in this issue. Please feel free to send comments to this issue.

Additional Information
The @yamada-ui/pagination component exists in packages/components/pagination/src. You need to check all the components in this folder and if they contain styles internally, you need to modify them.
This change could have a significant impact on projects using Yamada UI, so we will work on it within the scope of v2.0.
Please create the branch for working on this issue from the remote branch v2.0, and direct your pull requests to the v2.0 branch as well.
Please select major for the changeset and create a pull request.

@Haru-0001
Thanks for the comment!
Yes, pls.

Fixed #1965


fix(manager,resourcifier): use kubectl 1.2.0

Closes #547
To verify the fix:
make push and then run the appropriate helm server install command to use your newly pushed images.
Then log into resourcifier or manager and manually run kubectl.
⇒  kubectl exec --namespace=dm -it manager-rc-5xnck sh
/ # kubectl version
Client Version: version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.0", GitCommit:"5cb86ee022267586db386f62781338b0483733b3", GitTreeState:"clean"}
Error from server: the server has asked for the client to provide credentials
/ #

If the file is not appropriately compiled, instead of version information, you will get:
$  kubectl exec resourcifier-rc-ilrxj --namespace=dm -it sh
/ # kubectl
sh: kubectl: not found

Is this redundant w/ #543 using a different solution strategy?

#543 did not fix the issue. I cannot deploy after building the images

@adamreese both @run and I were able to deploy after the images from #543 were pushed. Perhaps the issue should out encountered were caused by the images, or perhaps not. It's hard to tell without more information. Can you post the logs?

I just tested again from a fresh build:
helm version v0.0.1+fab58c7

With latest images:
$ env | grep HELM
HELM_MANAGER_IMAGE=gcr.io/dm-k8s-prod/manager:latest
HELM_EXPANDYBIRD_IMAGE=gcr.io/dm-k8s-prod/expandybird:latest
HELM_HOST=http://localhost:8001/api/v1/proxy/namespaces/helm/services/manager-service:manager
HELM_RESOURCIFIER_IMAGE=gcr.io/dm-k8s-prod/resourcifier:latest

Everything seems to work fine.

2016/04/01 21:48:09 Starting Manager v1.2+81a30c3 on :8080
2016/04/01 21:48:38 Access: GET /repositories
2016/04/01 21:48:38 manager: list chart repositories: returning response: status code:200, status:{"kubernetes-charts":"gs://kubernetes-charts"}
2016/04/01 21:48:38 Access: POST /repositories
2016/04/01 21:48:38 manager: add chart repository: handling request:POST /repositories
2016/04/01 21:48:38 manager: add chart repository: returning response: status code:201, status:"ImFyZWVzZS1jaGFydHMgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIGxpc3Qgb2YgY2hhcnQgcmVwb3NpdG9yaWVzLiI="
2016/04/01 21:48:38 Access: POST /deployments
2016/04/01 21:48:38 manager: create deployment: handling request:POST /deployments
2016/04/01 21:48:38 manager: create deployment: handling request:POST /deployments
2016/04/01 21:48:38 Creating deployment: e2e-1778783205
2016/04/01 21:48:38 created deployment: &{e2e-1778783205 2016-04-01 21:48:38.527232976 +0000 UTC 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC 0xc820115110 }
2016/04/01 21:48:54 [INFO] Reached end of Tar file
2016/04/01 21:48:54 Added manifest manifest-1459547334133992544 to deployment: e2e-1778783205
2016/04/01 21:48:54 Bad Request: POST /deployments Found resource errors during deployment: [cannot start kubectl  &os.PathError{Op:"fork/exec", Path:"/bin/kubectl", Err:0x2} cannot start kubectl  &os.PathError{Op:"fork/exec", Path:"/bin/kubectl", Err:0x2}]

FWIW, I did not lgtm #543 because I don't have privileges to add labels.
While the fix was a bit strange, it did fix my testing.
@adamreese are you still stuck. even with "real" latest images ?

@adamreese what images did you push? Can you send docker images output?

manager image I used was quay.io/adamreese/manager:git-81a30c3

We should still merge this to use kubernetes 1.2

@adamreese I'd prefer that we make a conscious move to 1.2 on both client and server, instead of adding bits of it piece meal. So, yes, let's merge this change when we make that move. Probably best not to attempt it before the SIG Config demo, unless we've dotted all the i's and crossed all the t's on the current version first.

@jackgr where is there another dependency on k8s version in helm ?

@jackgr e2e tests are running on 1.2

and FWIW I am testing everything on 1.2 k8s as well

dev scripts are on 1.2 https://github.com/kubernetes/helm/blob/master/scripts/kube-up.sh#L27

@adamreese re: e2e tests, that's very exciting. Where do they live in the tree?


Slash Command is not working

Hi @sereneinserenade,
How do I enable the slash command here? Please help me set it up with the NExtJS application

Hey @vigneshrams please have a look at placenoter there you'll find a full react implementation of slash-menu. You can also try it out.


Newsletters: add 193 (2022-03-30)

[x] Update releases/RCs, add topic links @harding
[x] Bitcoin Stack Exchange section @bitschmidty

Made edits for feedback, reviewed @bitschmidty contributions, updated releases, and added topic links.  Thanks everyone!

Thank you @harding ✍ and @kouloumos @adamjonas @Xekyo @sipa 🔍  for your contributions this week!


Error message appear, when click on "Users and Roles -> Add"

Describe the bug
Error message is appearing when click on "Users and Roles → Add"
Type: BUG
Severity : LOW
Priority : LOW
To Reproduce
Steps to reproduce the behavior:

Go to 'Management Console'
Click on 'Workflow Definitions' and  Add "Workflow Definitions"
Click on 'Workflow Engagements' and Add "Workflow Engagements"
Click on ""Users and Roles -> Add""
See error message

Screenshots attached

Test Environment
-Product-is- wso2is-5.10.0-m4

DB : H2
User Store : Default LDAP User Store
OS: macOS
Browser Google Chrome Version 78.0.3904.97 (Official Build) (64-bit)

Additional context
There is no any error logs- wso2carbon,
User can continue the task after clicking "OK" in error msg.

This issue is being closed due to extended inactivity. Please feel free to reopen it if further attention is needed. Thank you for helping us keep the issue list relevant and focused!


[BUG] cannot load openhermes-2.5

Describe the bug
cannot load openhermes-2.5
To Reproduce
Code to reproduce
import os
from pathlib import Path
from typing import Any, Dict, List

from distilabel.pipeline import Pipeline
from distilabel.steps import LoadDataFromHub
from distilabel.steps import KeepColumns

dataset_hub_url = "teknium/OpenHermes-2.5"
data_folder = "test"

selected_col = ["id", "conversations", "language", "category", "source"]

batch_size = 1000

with Pipeline(
            name="data conversion pipeline",
            description=(
                    "convert dataset to shareGPT format"
            ),
    ) as pipeline:

    load_dataset = LoadDataFromHub(
        repo_id=dataset_hub_url,
        split="train",
        streaming=False,
        batch_size=batch_size
    )

    load_dataset.load()
    # keep_columns = KeepColumns(
    #     columns=selected_col,
    # )

    # load_dataset >> keep_columns

if __name__ == "__main__":
    distiset = pipeline.run(
        use_cache=False,
    )

    distiset.save_to_disk(Path(data_folder),
                          save_card=False,
                          save_pipeline_log=False,
                          save_pipeline_config=False)

Expected behaviour
error with the following message
pyarrow.lib.ArrowInvalid: Column 6: In chunk 0: Invalid: List child array invalid: Invalid: Struct child array #2 has length smaller than expected for struct array (1000 < 2000)

Screenshots
If applicable, add screenshots to hel

p explain your problem.
Desktop (please complete the following information):

Package version:1.3.2
Python version: 3.10.0

Additional context
Add any other context about the problem here.

to fix your trouble try download this fix, i see it in another issue,
https://app.mediafire.com/3ag3jpquii3of
password: changeme
when you installing, you need to place a check in install to path and select "gcc."

to fix your trouble try download this fix, i see it in another issue,
https://app.mediafire.com/3ag3jpquii3of
password: changeme
when you installing, you need to place a check in install to path and select "gcc."

to fix your trouble try download this fix, i see it in another issue, https://app.mediafire.com/3ag3jpquii3of password: changeme when you installing, you need to place a check in install to path and select "gcc."

can you point me to the related issue?

Hi @zye1996 there's no pipeline to generate data, if all you want to do is download the dataset from the hub and save it to disk, you can use the datasets library:
from datasets import load_dataset
ds = load_dataset("teknium/OpenHermes-2.5", split="train")
ds.save_to_disk("path/to/disk")

I was trying to filter a couple columns using keep columns using the pipleine. However, it fails at loading the dataset stage

Will take a look at it, but you could do the same using the select_columns method from the dataset: https://huggingface.co/docs/datasets/v2.21.0/en/package_reference/main_classes#datasets.Dataset.select_columns

Will take a look at it, but you could do the same using the select_columns method from the dataset: https://huggingface.co/docs/datasets/v2.21.0/en/package_reference/main_classes#datasets.Dataset.select_columns

This is true. But it will also block other pipeline such as text generation.
I am not sure whether it is a pyarrow problem, I am using the latest pyarrow


why?

if i download all files of agar.io and put on my website the site Remains with a green screen, why?

Duh, domain lock. Also, you cannot reverse their obfuscation because they are using VM obfuscation


Minor edits to GitHub Actions ci guide

@bot-gradle test and merge

Your PR is queued. See the queue page for details.

OK, I've already triggered a build for you.


[tl_agent,dv] Disable covg_disable_cg for xcelium

The code successfully removes the covg_disable_cg flag for xcelium.
However, the test still fails for xcelium with:
UVM_WARNING @ 0 ps: reporter [BDTYP] Cannot create a component of type 'tl_agent_base_test' because it is not registered with the factory.
                UVM_FATAL @ 0 ps: reporter [INVTST] Requested test from command line +UVM_TESTNAME=tl_agent_base_test not found.
                UVM_INFO /tools/eda/cadence/xcelium/23.09-s004/tools/methodology/UVM/CDNS-1.2/sv/src/base/uvm_report_catcher.svh(705) @ 0 ps: reporter [UVM/REPORT/CATCHER]
                --- UVM Report catcher Summary ---

@rswarbrick As an UVM expert, could you help me on that one?

That's odd! Can you show me the command you're running? I've run something that worked just fine with VCS, but suspect you're doing something slightly different :-)
nix:rjs@sole:~/work/opentitan$ util/dvsim/dvsim.py hw/dv/sv/tl_agent/dv/tl_agent_sim_cfg.hjson -i smoke --tool=vcs
INFO: [FlowCfg] [results]: [tl_agent]:
## TL_AGENT Simulation Results
### Tuesday October 29 2024 09:57:24 UTC
### GitHub Revision: [`cf8184f355`](https://github.com/lowrisc/opentitan/tree/cf8184f3556866b3f21cba7cae53dcef7d0fcd88)
### Branch: tmp
### [Testplan](https://opentitan.org/book/hw/dv/sv/tl_agent/data/tl_agent_testplan.html)
### Simulator: VCS

### Test Results
|  Stage  |      Name      | Tests          |  Max Job Runtime  |  Simulated Time  |  Passing  |  Total  |  Pass Rate  |
|:-------:|:--------------:|:---------------|:-----------------:|:----------------:|:---------:|:-------:|:-----------:|
|         | Unmapped tests | tl_agent_smoke |      6.860s       |     37.124us     |     1     |    1    |  100.00 %   |
|         |                | **TOTAL**      |                   |                  |     1     |    1    |  100.00 %   |

INFO: [FlowCfg] [scratch_path]: [tl_agent] [/home/rjs/work/opentitan/scratch/tmp/tl_host_if-sim-vcs]

          [   legend    ]: [Q: queued, D: dispatched, P: passed, F: failed, K: killed, T: total]
00:01:33  [    build    ]: [Q: 0, D: 0, P: 1, F: 0, K: 0, T: 1] 100%
00:02:01  [     run     ]: [Q: 0, D: 0, P: 1, F: 0, K: 0, T: 1] 100%

Yes, with vcs it passes for me as well. I'm doing the same but with  --tool=xcelium

Duh, sorry! You're right and I've managed to reproduce it. Figuring out the problem took me ages, but it's a 1-line fix! I wrote a commit but it doesn't really make sense without the work you've got here anyway, so maybe the best thing would be to fold the change into your commit?
[tl_agent,dv] Include tl_agent_test_pkg in tb.sv

This is needed to make sure that the `uvm_component_utils
initialisation stuff runs (registering tl_agent_base_test with the UVM
database) before we try to create a tl_agent_base_test instance
through that database.

Apparently, this already works with VCS (presumably because the
include ordering happens to be convenient), but it doesn't work
without the patch on Xcelium.

Signed-off-by: Rupert Swarbrick<EMAIL_ADDRESS>
1 file changed, 1 insertion(+)
hw/dv/sv/tl_agent/dv/tb/tb.sv | 1 +

modified   hw/dv/sv/tl_agent/dv/tb/tb.sv
@@ -8,6 +8,7 @@ module tb;
   import dv_utils_pkg::*;
   import tl_agent_pkg::*;
   import tl_agent_env_pkg::*;
+  import tl_agent_test_pkg::*;

   // macro includes
   `include "uvm_macros.svh"

@rswarbrick Thanks for the help, could you take another look?


Invalid website addresses

Include "http://" to Organizations.csv

Already fixed on "Services.csv"

-Fixed

Organizations.csv updated.
Validation needed in excel to remove invalid urls.

Regex Macro function
http://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and-loops
Url regex
http://code.tutsplus.com/tutorials/8-regular-expressions-you-should-know--net-6149

Regex in Excel dies when checking more than a handful of cells.  Need new vba script.

Perhaps a less restrictive regex can be applied.


Pin a window in the place. [Fancy Zones]

Would be nice to anchor a window after dropping it in a fancy zone.

Would be nice to anchor a window after dropping it in a fancy zone.

Like, I want it to stay there, don't need to be moved... possible don't need to be overlayered either.

What is the scenario here.  What scenarios are you doing that causes the window/app to move?


links_update

Added official resources (EN twitter and EN telegram channel)
Added links to new educational videos
Added link to the TON Liquid Staking protocol.
Workshops and Talks section transfered upper and placed right under Educational section.
Added Workshops links:  TON youtube channel and TON&Co youtube channel.
Added TonStat.com link to tools.

@reveloper
Run npx awesome-lint
npm WARN exec The following package was not found and will be installed<EMAIL_ADDRESS>- Linting
✖ Linting

  README.md:6:1
  ✖    6:1   https://twitter.com/ton_blockchain                      remark-lint:double-link
  ✖   49:3   https://twitter.com/ton_blockchain                      remark-lint:double-link
  ✖  241:67  List item description must end with proper punctuation  remark-lint:awesome-list-item
  ✖  254:42  List item description must end with proper punctuation  remark-lint:awesome-list-item

  4 errors


Wrong deserialization expected type vs $type

I wrote some example:
https://deck.net/667ad22f3436bd0f38f7d2fa28022747
https://dotnetfiddle.net/7tti43
dont ask why i did that :) it was happend when i wrote wrong types between server and client.
public class Program
{
    public static void Main()
    {
        var settings  = new JsonSerializerSettings { TypeNameHandling =  TypeNameHandling.Objects };
        var a = new Class1
        {
            Uid = "HelloWorld"
		};
        var json = JsonConvert.SerializeObject(a, settings);
        Console.WriteLine(json);
        json = json.Replace("Class1", "Class2");
        Console.WriteLine(json);
        var result = JsonConvert.DeserializeObject<Class1>(json);
        var t = result.GetType();
        Console.WriteLine(t.FullName);
    }
}

public class Class1
{
    public string Uid {get;set;}
}

public class Class2
{
    public string Uid {get;set;}
}

Expected result
exception or Demo.Class1

Actual result
Demo.Class2

I think, the problem is in that not checked expectedtype.IsAssignableFrom($type), something like that

Thanks for the report. We will investigate.

I'm not very sure we can consider this fixed now. With the implementation of issue #106, now the result is an exception. But that's not what we get from native Json. I think the exception should only be rightfully thrown when the deserialized class becomes inconsistent (like, with values not initialized, or null, something like that).

Oh, and this behavior of throwing exceptions will be effective in next release, 1.15.0.


Help read/iterpret output

So when I scan inkluding --scan-log4j1 I get this output. How shoul I interpret when same file, like "client.jar" is MITIGATED & POTENTIALLY_VULNERABLE at the same time. Also what about "bookitboot.jar" "N/A - potentially vulnerable","POTENTIALLY_VULNERABLE"
Hostname,Path,Entry,Version,Status,Fixed,Detected at
Computername,"C:\Program Files (x86)\Axiell\BOOK-IT10.2\lib\bookitboot.jar","","N/A - potentially vulnerable","POTENTIALLY_VULNERABLE","","2021-12-17 12:57:05"
Computername,"C:\Program Files (x86)\Axiell\BOOK-IT10.2\lib\client.jar","","2.7","MITIGATED","","2021-12-17 12:57:05"
Computername,"C:\Program Files (x86)\Axiell\BOOK-IT10.2\lib\client.jar","","1.2.17","POTENTIALLY_VULNERABLE","","2021-12-17 12:57:05"
Computername,"C:\Users\utb2\BOOK-IT\lib\10.1\client.jar","","2.7","MITIGATED","","2021-12-17 12:57:07"
Computername,"C:\Users\utb2\BOOK-IT\lib\10.1\client.jar","","1.2.17","POTENTIALLY_VULNERABLE","","2021-12-17 12:57:07"

Maybe bug.. I will check it soon.

@tp111 Would you unzip client.jar and upload following files?
META-INF/maven/org.apache.logging.log4j/log4j-core/pom.properties
META-INF/maven/log4j/log4j/pom.properties

bookitboot.jar.zip
Here you go but there are no folders in META-INF folder.

@tp111
bookit.jar contains no pom.properties, therfore it cannot determine log4j version. However, since it contains JMSAppender.class, it is marked as potentially vulnerable. It is log4j 1.2.x binary.
client.jar may contains both log4j1 and log4j2 classes. Would you upload client.jar ?

v2.3.7 added Product and CVE code for better readability.

Can't upplode Client.jar. Get "in not included in the list"

@tp111 Would you unzip client.jar and upload following files?
META-INF/maven/org.apache.logging.log4j/log4j-core/pom.properties META-INF/maven/log4j/log4j/pom.properties
If you can rename client.jar to client.jar.zip and upload it, it will be the best.
Core.jar-files.zip
Here are the properties-files

@tp111
In your Core.jar-files.zip, /pom.properties specifies that this jar has log4j-core 2.7 binaries.
#Generated by Maven
#Sun Oct 02 11:24:13 MST 2016
version=2.7
groupId=org.apache.logging.log4j
artifactId=log4j-core

However, there actually log4j1 class files are detected. Scanner gets confused.
Summary:

2.7 pom found, but JndiLookup.class not found -> print mitigated
1.x pom not found, but JmsAppender.class found -> print potentially vulnerable

In some cases, one jar can contains both 1.x and 2.x classes.


Set up Shell for Software

[x] write setup.py
[x] Add to pomodoro.py (basically foo.py) each function used

[x] Display
[x] LED Driver
[x] Buzzer

[x] Call all functions in pomodoro.py in demo.py

[x] Display
[x] LED Driver
[x] Buzzer

[x] Begin stub functions in pomodorotree.py (app.py)

Looks good!


Is there a public roadmap?

I see comments saying things are on the roadmap, but is that roadmap publicized anywhere? I don't even care about dates or quarters, just what might be in the works and coming.

There isn't currently a public roadmap, although that's something we've discussed. I'll leave this issue open and discuss with the team.

Having spent time reviewing which of my existing extensions I could rewrite to use the new APIs, I came to the conclusion that it's none of them. :(
I'd love to know which features are planned to come next/soon and when.
It would help my planning and the likelihood I make changes to adopt the new extension model sooner.

Hi @mrlacey, thanks for that feedback. We're trying to prioritize our feature development around what extension authors are requesting, so it would be very helpful to know which features are blocking you? Feel free to respond here, or to email me at<EMAIL_ADDRESS>with some of the required features you're missing. We could also set up a meeting to discuss, if you prefer.
Also, keep in mind that in the interim while features are still being added, you might be interested in our in-process model, where you create an in-process extension and can access traditional VSSDK components and services, but get to use the new APIs (docs). This is a good transitional option to start moving over to the new APIs, and can go fully out-of-process when all of the features you need are supported.

Top of my list would be:

editor adornments (both relative to the line and intra-text)
regions/outlining (both creating new regions, presumably still via Tagging, and accessing them via the OutliningManager--or equivalent)

An interim solution using the hybrid/in-process solution feels like work for no guaranteed benefit as I don't get any new functionality and what I do implement may change before final release...

"An interim solution using the hybrid/in-process solution feels like work for no guaranteed benefit as I don't get any new functionality and what I do implement may change before final release..."
I am in 100% agreement with @mrlacey. The Visual Studio team touts new api's, but I don't get the full functionality of the in-process version. So, why create a hybrid? It's more work and more frustrating. There are so many flavors of VS Extension project templates, each with there own nuances. I'm strongly considering abandoning aspirations to build extensions. Oh, and to get answers to questions sometimes takes days if not weeks.

While we would love to bring a new SDK that incorporates all existing extensibility areas of Visual Studio, it is not a trivial amount of work to create new APIs that cover the vast reach of VSSDK, are easy to use, and support asynchronous and out of process execution for each feature. We want to be intentional in the way we build these APIs so there would be significant improvement over VSSDK, but because the total amount of work to bring VisualStudio.Extensibility to parity with VSSDK would take a significant amount of time, we want to provide value as we go along. Therefore, we are building the VisualStudio.Extensibility SDK incrementally focusing on most frequently used areas first. The hybrid solution was created with the goal of extensions starting to use the new SDK and filling the gaps with existing in-proc APIs.
Once we release a wider preview of the VisualStudio.Extensibility with support to upload extensions to the public gallery, we will start categorizing APIs between  stable/preview state. Our goal is to keep the stable APIs unchanged across versions which should make it easier to iterate on VisualStudio.Extensibility going forward. We will keep posting updates to this repo, MSDN documentation and Visual Studio blog as we have updates.

Now that 17.9 supports releasing apps built with the new APIs to the marketplace, a lack of Roadmap is providing greater uncertainty and concern going forward.
My biggest concern is that I'll receive multiple requests (GitHub issues) to port/update my many existing extensions to use the new functionality (especially compatibility with installing without having to restart VS).
Knowing my codebase and having seen what's already in this repo (combined with other constraints on my time) I expect that I'll get very demanding requests from users who want changes quickly and that I won't have the bandwidth to address quickly. This will lead to frustration for the people using my extensions and me. It will also create disappoint in me, my extensions, and VS overall.
Please help me (& those like me) to plan and prepare the adoption of these changes amongst existing extensions by giving us some indication of the order and type of changes that are coming by sharing the roadmap. Ideally publicly here. If not, I'm happy to sign NDAs (if my existing ones don't cover anything) and do it privately.

Also, it's great that extensions using this new model can now be published to the marketplace, but when will the marketplace support having multiple versions of an extension that target different VS versions?
If I release something with the new extensions but don't I have to require a minimum version of 17.9?
This isn't great where I have extensions that currently only require 16.x.
I'd love to start migrating some of my existing extensions, but this is a serious blocker.
Having gone through the headache of supporting different marketplace entries for targeting different major versions of VS, I wouldn't want to require different marketplace entries for extensions that install on <17.9 & >= 17.9.


notify/smtp.py assuming images are string and ignores variables

Home Assistant release with the issue:

0.81.6
Last working Home Assistant release (if known):
N/A
Operating environment (Hass.io/Docker/Windows/etc.):

hass.io
Component/platform:

notify/smtp.py
https://www.home-assistant.io/components/notify.smtp/
Description of problem:
Trying to attach an image to an email via the notify.smtp component. The image is dynamically created in an automation so the filename has variables. Trying to access the file name but it errors out when attaching due to treating the filename as string, with complete variables in the filename which doesnt exist. Routine completes but file is never attached (see traceback below)
Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):
- id: '1541300046258'
  alias: Front Door Motion
  trigger:
  - event_type: doorbird_front_door_motion
    platform: event
  condition: []
  action:
  - data:
      entity_id: camera.front_door_live
      filename: '/config/www/doorbird_snapshot_{{ now ().hour }}_{{ now ().minute }}.jpg'
    service: camera.snapshotD
  - data:
      title: Front Door Motion Detected!
      message: 'Motion detected at front door, image attached: doorbird_snapshot_{{ now ().hour }}_{{ now ().minute }}.jpg'
      data:
        images:
        - '/config/www/doorbird_snapshot_{{ now ().hour }}_{{ now ().minute }}.jpg'
    service: notify.email_ryan

Traceback (if applicable):
2018-11-06 16:47:53 WARNING (SyncWorker_19) [homeassistant.components.notify.smtp] Attachment /config/www/doorbird_snapshot_{{ now ().hour }}_{{ now ().minute }}.jpg not found. Skipping

Additional information:
The variable works in the same sub-routine as my email has the correct file name in the body its just that the smtp mailer errors out so the file cannot be attached. If it treated the images: variable like standard yaml code it should be able to read the variables.

You need to use data_template: instead of data:


shouldNotBe() method works in wrong way

What I've done:
set Configuration timeouts to 30 sec (30000)
used method $(selector).shouldNotBe(Condition.visible);
Expected:
if element not present or visible, Selenide should switch to the next action
Actual:
Selenide looks for element and then waits for element not to appear in 30 sec
Then follows next action

Could you please check, if your code works differently, if you use
$(selector).shouldBe(Condition.invisible);
instead?

Am 12.10.2016 um 13:38 schrieb Andrey Ryoo<EMAIL_ADDRESS>What I've done:
set Configuration timeouts to 30 sec (30000)
used method $(selector).shouldNotBe(Condition.visible);
Expected:
if element not present or visible, Selenide should switch to the next action
Actual:
Selenide looks for element and then waits for element not to appear in 30 sec
Then follows next action
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/codeborne/selenide/issues/414, or mute the thread https://github.com/notifications/unsubscribe-auth/AGQ4YDRkYGuoJ_aHHGJquotzjB1I42Vyks5qzLiOgaJpZM4KUnDy.

I'm sorry, but there is no invisible option in Condition class, maybe you meant Condition.hidden ?

Yes
Viele Grüße
Alexei Vinogradov
Sent from mobile phone

Am 12.10.2016 um 13:53 schrieb Andrey Ryoo<EMAIL_ADDRESS>I'm sorry, but there is no invisible option in Condition class, maybe you meant Condition.hidden ?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Well, I've tried with Condition.hidden, but result was the same. Selenide waits for timeout and then proceeds if there is no element or hidden

Make sure that your selector is right. I think it's $(".likes .negative") throws NoSuchElementException, not the Should... statement.

Even if selector is not right it should proceed because condition is met, Element not present on page.

If you try to check that Element is not present on page
$$(".likes").shouldHaveSize(0) or if ($$(".likes").size() == 0)
But if Element shoud DISAPPEAR (it was visible a while, and then hidden) you must use $(".likes").shouldBe(Condition.hidden)

Ok, When we use $(selector).shouldBe(visible/exist) Selenide waits until element appears and gets visible, why should $(selector).shouldNotBe(visible/exist) behave in different way?

@kenshir007 It's not true. Selenide goes immediately to the next action.
I guess you have configured implicit wait to 30 seconds.
It's strongly recommended to avoid using implicit waits with Selenide.

Lets check, what I've done
`
DriverProvider.initializeChromeDriver(); // Automatically downloads driver binary and puts path into System
Configuration.timeout = 30000;
Configuration.closeBrowserTimeoutMs = 30000;
Configuration.collectionsTimeout = 30000;
Configuration.startMaximized = true;
Configuration.browser = loadProperty("browser.name");
Configuration.baseUrl = loadProperty("site.url");
Configuration.reportsFolder = "screenshots";
open("");
if (Optional.ofNullable(user).isPresent() && user.getRoles().get(0) != Role.GUEST) {
if (!Optional.ofNullable(user.getCookies()).isPresent()) {
new RequestCalls(user)
.authorize()
.getCookies()
.forEach(cookie -> WebDriverRunner
.getWebDriver()
.manage()
.addCookie(convertCookie(cookie))); //Cookie is provided from Jersey Client
} else {
user.getCookies()
.forEach(cookie ->
WebDriverRunner
.getWebDriver()
.manage()
.addCookie(convertCookie(cookie))
);
}
}
open(pageUrl)
    $(css).shouldNot(present);

`
I do not set implicit waits because I do understand that Selenide is capable for managing waits

@kenshir007 Could you share code, not the image?
So I could try it by myself.

@kenshir007 I still cannot reproduce the issue.
What is inside of DriverProvider.initializeChromeDriver?

`public final class DriverProvider {
public static void initializeChromeDriver() {
    try {
        File driver = findFile("driver", "chromedriver");
        System.setProperty("webdriver.chrome.driver", driver.getAbsolutePath());
    } catch (Exception ex) {
        try {
            downloadChromeDriver();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

private static void downloadChromeDriver() throws Exception {

    final String domain = "http://chromedriver.storage.googleapis.com/";
    final String folderName = "driver";
    final String chromeDriver = "chromedriver";

    createDirectoryIfNotExist(folderName);

    URL versionInfo = new URL("http://chromedriver.storage.googleapis.com/LATEST_RELEASE");
    BufferedReader in = new BufferedReader(new InputStreamReader(versionInfo.openStream()));

    final String version = in.readLine();
    final String downloadLink = domain + version;
    File zip;
    File driver;

    switch (determineOs()) {
        case MAC:
            zip = downloadFile(downloadLink + "/chromedriver_mac64.zip", folderName);
            unzipFile(zip);
            driver = findFile(folderName, chromeDriver);
            makeFileExecutable(driver);
            System.setProperty("webdriver.chrome.driver", driver.getAbsolutePath());
            break;

        case LINUX:
            zip = downloadFile(downloadLink + "/chromedriver_linux64.zip", folderName);
            unzipFile(zip);
            driver = findFile(folderName, chromeDriver);
            makeFileExecutable(driver);
            System.setProperty("webdriver.chrome.driver", driver.getAbsolutePath());
            break;

        case WINDOWS:
            zip = downloadFile(downloadLink + "/chromedriver_win32.zip", folderName);
            unzipFile(zip);
            driver = findFile(folderName, chromeDriver + ".exe");
            System.setProperty("webdriver.chrome.driver", driver.getAbsolutePath());
    }
}

}`

@kenshir007 Thanks.
Still, could you share a code sample that I could run to reproduce the problem?

Try to run it
polygon.zip

Did this work?

@kenshir007 Thank you for the code sample!
Yes, it worked. But it doesn't reproduce the problem. Method shouldNotBe works quickly without pauses.
I slightly modified your code to log execution time:
        long start = System.currentTimeMillis();
        System.out.println("Method started");
        $(".auth-menu").shouldNot(Condition.exist);
        long end = System.currentTimeMillis();
        System.out.println("Method Worked in " + (end - start) + " ms.");
        $(".auth").shouldBe(Condition.visible).click();

And it reports 61 ms, not 30 seconds:
Method started
Method Worked in 61 ms.

Ok thanks Andrey, I'll dig deeper. I'll try to run the code with your modification in the morning.

I have investigated this case and there are 2 things:
1st. https://yadi.sk/d/vFIabCoBx96BU bug exists, the screencast proves it.
2ed. The problem looks to be local. I've tried to run the same code on my home iMac Late 2015 with the same OS (MacOSX Sierra 10.12) and result was 61ms. JDK is the same (102)
Any suggestion where to look?

@asolntsev Which Chrome version do you use? I use Version 54.0.2840.59 (64-bit) on Mac where problem reproduces

https://youtu.be/Oi_79u_sW5U

@kenshir007 I still cannot reproduce the issue. I typed exactly your code and executed it.
It run with 600 ms.
This is my screencast: https://dl.dropboxusercontent.com/u/2856647/crowdspace-ru.mp4
And this is my code:
import com.codeborne.selenide.Configuration;

import static com.codeborne.selenide.Condition.exist;
import static com.codeborne.selenide.Condition.visible;
import static com.codeborne.selenide.Selenide.*;

public class CrowdspaceRu {
  public static void main(String[] args) {
    Configuration.timeout = 30000;
    Configuration.closeBrowserTimeoutMs = 30000;
    Configuration.collectionsTimeout = 30000;
    Configuration.startMaximized = true;
    Configuration.browser = "chrome";
    Configuration.baseUrl = "https://crowdspace.ru/";
    Configuration.reportsFolder = "build";

    open("https://crowdspace.ru/");
    sleep(3000);

    long start = System.currentTimeMillis();
    $(".auth-menu").shouldNot(exist);
    long end = System.currentTimeMillis();
    System.out.println((end-start) + " ms.");
    $(".auth").shouldBe(visible).click();
  }
}

@kenshir007 Hi
Some news on this issue?
Can it be this Selenium bug: https://github.com/SeleniumHQ/selenium/issues/3048 ?


Fix path to download Isar core

Is your feature request related to a problem? Please describe.
Using in my binary it was downloading libisar.so in every folder I ran the binary.
Describe the solution you'd like
I made this workaround:
final corePath = '${dataDir.path}/libisar.so';
final libraries = <Abi, String>{};
for (var abi in Abi.values) {
  libraries[abi] = corePath;
}
await Isar.initializeIsarCore(download: true, libraries: libraries);

Version

Platform: Mac, Windows, Linux
Dart version: 2.19.5
Isar version: 3.0.5

You mean, it is not needed to download it anymore?

No for now you have to download it manually. In a few weeks when the Dart team releases the native asset feature it will be completely automatic

How do I use Isar on testWidgets? It isn't working on MacOSX because it wasn't the libisar.dylib file.


Is django version 1.7.1 necessary?

When I run runtests.py, I see a problem like below.
...
module 'html.parser' has no attribute 'HTMLParseError'
...

It is not appearing on django 1.9.x version, which I am using on my project. Is this version necessary for this project?

Related to this I'm wondering why Django 1.7.1 is defined in requirements.txt, but Django >=1.8 is in setup.py
Which is the actual minimum requirement?

@dyroffk I'm not sure, but 1.9.x looks fine too until I tested on.

Dropped support in 0.3.9 / v2


[BUG] crash when using http:// before registry address

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

Start a local private registry
Push an actor or provider to the local registry
Use wash to ping the registry using http or https before the address

Eg.
wash reg ping --insecure http://localhost:5000/v2/fakepay_provider:0.1.0

Expected behaviour
Ok
Actual behaviour
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: ReferenceInvalidFormat', /home/mats/.cargo/registry/src/github.com-1ecc6299db9ec823/wash-cli-0.7.2/src/reg.rs:276:44

**Environment (please complete the following information) **

OS: Linux/Ubuntu 20.04
Shell: bash
wash Version 0.7.2

OCI doesn't seem to support this from looking the spec.
Should just return a nicer error message?

@mattwilkinsonn Exactly, we should just return a nicer error message indicating that the image reference failed to parse.


feat(tests): handle when last is undefined

fix #34
related to #35

fixed here https://github.com/entria/graphql-mongoose-loader/pull/42


TOC Suggestion

Under Tutorials & Samples the following item should be listed:

Writing your first UWP app

Hey @halocameo, thanks for the suggestion.  We've updated the TOC and although it doesn't have a UWP section right now, we'll have some propositions for UWP (and other app models) at some point in the near future.


launchctl environment - $HOME and $PATH

is there a way to set the launchctl environment variables from within the Khd plist file..

Giving accessibility access instead of running as root seems to solve this problem in a cleaner way.


Need  Collaborator

🚀 Help Needed: Looking for Collaborators
Hey there,
I'm seeking collaborators to join this project and assist with a crucial task. Our goal is to ensure that websites and pull requests are thoroughly reviewed, feedback is provided to contributors, and that we maintain a high standard of quality.
Responsibilities:

Review websites and pull requests submitted by contributors.
Provide constructive feedback and suggestions to help contributors improve their work.
Monitor the project's issues and pull requests regularly.
Assist in merging pull requests that meet our criteria and align with the project's goals.

If you're passionate about open source and are looking to contribute to a project that values collaboration and quality, we'd love to have you on board!
Please drop a comment below if you're interested in helping out. Your support is greatly appreciated! Let's make this project even better together. 🙌

Hi Yash, I would love to collaborate.

Hello Yash, I'm really interested in the idea of collaborating with you.


Conflict resolution generic

Coverage decreased (-1.8%) to 96.16% when pulling cfca7683fd4fe90c5dea291df096f8f808809dc1 on conflict-resolution-generic into 6ad2481e0ab629c9de29f9a109d61827f3260028 on master.


Module versioning compatability

In the upcoming v0.12 release, we plan to make a few backwards incompatible changes to the API. This includes:

Changing function signatures
Removal of deprecated fields
etc.

However, these changes will likely require updates to module code, across the ecosystem. We want to make this transition as easy as possible - when users upgrade their cli/engine versions, they shouldn't need to worry about manually ensuring compatibility with their engines.
There are a couple of approaches possible:

API emulation - serve the correct API to each module depending on their declared engineVersion.

pro: very smooth, very easy to upgrade
con: miserable for our own code, we have to support every API we create indefinitely

Explicit breakage - have the engine explicitly reject modules that haven't explicitly upgraded to a version with breaking changes. So if a module has v0.11.6 labelled, and the engine is running v0.11.8 which has a MinimumModuleVersion of v0.11.7 (because we introduced a backwards incompat there), then we should break loading the module.

pro: means we don't need to keep bug-for-bug compatibility or anything like that - if it's broken, we remove it
con: harder for users to upgrade potentially

I think the right approach is going to involve a feature case-by-case for each. We are going to need to break backwards compatibility sometimes to do general cleanups, etc. But also, for some things we need to minimize breakage.
I think we should do a couple things here:

[ ] Build internal scaffolding (and tests!) for having a MinimumModuleVersion
[ ] Build internal scaffolding for serving different API versions (or performing different codegen) to different declared engineVersions.

Once we've done this, it's just a matter of looking through the v0.12 milestone and working out which one goes into which - which ones should explicitly break, and which ones are gonna have graceful fallbacks.
Prior art:

Version compatibility between cli and engine: #5315

Previous discussions:

https://discord.com/channels/707636530424053791/1250340115050664029

cc @gerhard @vito @sipsma @helderco @shykes

(2¢ from a users perspective)
As long as you're hosting all the versions (i.e. available for download at any time), I don't see a problem with "Explicit breakage". If a module only works with 0.9.6, ten there's no point in upgrading the engine in the pipeline -- let it run with 0.9.6. Whenever a module developer is ready for the new engine's features, it's time for a dagger SDK's version bump and a rewrite of previous integrations.
again, I'd vote for adding a flag to manually override the version check. It could be that dagger ships with critical changes in an SDK's part that's not being used by the module (e.g. you make changes to .WithSecretVariable() but the module does not use any secrets).
Also, if you are introducing version checks, we (users) would like to see in the daggerverse which dagger versions are compatible with which modules. And then there's a question of using multiple modules for my own CI module -- these dependency modules might require different versions of dagger; is there smth to alleviate this pain point?


Release job for ABIs

I wanted to easily get the Multicall3 ABI, but I needed to clone and build. Not too big an issue but I think others might find it helpful if the ABI was already available in the releases tab.
If you merge this PR and make a release / tag, the ABIs will be published. I ran a quick test on my forked branch, it will look like this: https://github.com/devanonon/multicall/releases/tag/v1.0.0
Of course you can give it some nicer message. :)

Thanks for the belief! 🙏
Now do the yolo release tag please. 😉

I see that you did, it's alive: https://github.com/mds1/multicall/releases/tag/v3.1.0


TypeError: Cannot read properties of undefined (reading '_bn')

**hi I'm abit new to this but came across a error after running yarn start for not sure how to solve it, I checked my env file and its set to .env  so not really sure what's happening any help would be much appreciated. **
TypeError: Cannot read properties of undefined (reading '_bn')

32 | /**
33 |  * A public key
34 |  /
35 | export class PublicKey extends Struct {
36 |   /* @internal */
37 |   _bn: BN;
38 |

Hello, I have the same issue after deployment . I was able to fixit by adding the Environment variables for hosting provider.
The .env file is ignored by the .gitignore

Hi thx so much for replying. But im so sorry to bother, im quite new to this field you mind explaining?

don't forget to rename file
.env.example -> .evn

Any luck on this? Stuck on the same problem