[Accordion] theme overrides not working for expanded state as expected

[x] The issue is present in the latest release.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Current Behavior 😯
The component ignores expanded style overrides.
Expected Behavior 🤔
It should apply styles from the theme provided.
Steps to Reproduce 🕹
https://codesandbox.io/s/reverent-leftpad-h9hk2?file=/src/App.js
Steps:

Adding custom theme
Override MuiAccordion.expanded
Open accordion and inspect

Context 🔦
Wanted to remove margin-bottom from the expanded state
Your Environment 🌎

Tech
Version

Material-UI
v4.11.0

React
16.13.1

Browser
chrome latest

TypeScript
no

I just saw the console warning about this which tells me to define the rule like which is working fine for sure:
`"root": {
"&$expanded": {

  "color": "red",

  "margin": 0

}

}`
However it isn't straightforward from the docs and also don't get why it is like this. E.g. for inputs with multiline true it's simply {      MuiInput: {         root: { ... }         multiline: { ... }     }  }

See https://material-ui.com/customization/components/#pseudo-classes

I recently revisited this when migrating from v4 to v5.
How come
MuiAccordion: {
  styleOverrides: {
    root: {
      '&.Mui-expanded': {
        flex: '1 1 auto',
      },
      flexShrink: 0,
    },
  },
},

applies the flex shorthand to the element when
MuiAccordion: {
  styleOverrides: {
    root: {
      flexShrink: 0,
    },
    expanded: {
      flex: '1 1 auto',
    }
  },
},

doesn't?
I would expect both snippets to have the same result.

@aldebout You should get a warning when you use the latter in v4. If there is none, then it's a hole from our side. expanded is a pseudo-class, it can't host styles.

I guess I've just been very confused for a long time 😅 .
I expected styleOverrides.expanded (or the v4 equivalent) to create the associated class (.MuiAccordion.Mui-expanded or .MuiAccordion-root.Mui-expanded).
What's the use case for the styleOverrides.expanded then? I can't find an example in the docs :/

What's the use case for the styleOverrides.expanded then? I can't find an example in the docs :/

none


Adding data to continue training failed.

Is your feature request related to a problem? Please describe.
I trained a language model in about 4 datasets. And then I add some new datasets for translation. The config file is changing from:
    "train-data-paths": [
        "/data/pile-00-04-train_text_document",
        "/data/clue_pretrain_0-train_text_document",
    ],
    "train-data-weights": [40.0, 60.0],

to
    "train-data-paths": [
        "/data/pile-00-04-train_text_document",
        "/data/clue_pretrain_0-train_text_document",
        "/data/mt/en-zh-train_text_document",
        "/data/mt/ja-zh-train_text_document"
    ],
    "train-data-weights": [40.0, 40.0, 10.0, 10.0],

Then the training is failed with error message:
Traceback (most recent call last):
  File "/data/yard/workspace/gpt-neox/train.py", line 27, in <module>
    pretrain(neox_args=neox_args)
  File "/data/yard/workspace/gpt-neox/megatron/training.py", line 120, in pretrain
    iteration = train(
  File "/data/yard/workspace/gpt-neox/megatron/training.py", line 583, in train
    loss_dict, skipped_iter = train_step(
  File "/data/yard/workspace/gpt-neox/megatron/training.py", line 490, in train_step
    reduced_loss = train_step_pipe(
  File "/data/yard/workspace/gpt-neox/megatron/training.py", line 539, in train_step_pipe
    loss = model.train_batch(data_iter=data_iterator)
  File "/data/yard/workspace/lib/python3.9/site-packages/deepspeed/runtime/pipe/engine.py", line 305, in train_batch
    self._exec_schedule(sched)
  File "/data/yard/workspace/lib/python3.9/site-packages/deepspeed/runtime/pipe/engine.py", line 1312, in _exec_schedule
    self._exec_instr(**cmd.kwargs)
  File "/data/yard/workspace/lib/python3.9/site-packages/deepspeed/runtime/pipe/engine.py", line 791, in _exec_load_micro_batch
    batch = self._next_batch()
  File "/data/yard/workspace/lib/python3.9/site-packages/deepspeed/runtime/pipe/engine.py", line 650, in _next_batch
    batch = next(self.data_iterator)
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 681, in __next__
    data = self._next_data()
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 1376, in _next_data
    return self._process_data(data)
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 1402, in _process_data
    data.reraise()
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/_utils.py", line 461, in reraise
    raise exception
RuntimeError: Caught RuntimeError in DataLoader worker process 0.
Original Traceback (most recent call last):
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/worker.py", line 302, in _worker_loop
    data = fetcher.fetch(index)
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/fetch.py", line 52, in fetch
    return self.collate_fn(data)
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 160, in default_collate
    return elem_type({key: default_collate([d[key] for d in batch]) for key in elem})
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 160, in <dictcomp>
    return elem_type({key: default_collate([d[key] for d in batch]) for key in elem})
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 149, in default_collate
    return default_collate([torch.as_tensor(b) for b in batch])
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 141, in default_collate
    return torch.stack(batch, 0, out=out)
RuntimeError: stack expects each tensor to be equal size, but got [1369] at entry 0 and [2049] at entry 1

Are there any arguments I missed for fine-tuning from a model? Or is there anything to fix this?
Any response is appreciated!

It's possible your dataset builder is overflowing when calculating the sample indices once you introduce more data, which is a bug we fixed in https://github.com/EleutherAI/gpt-neox/pull/835.
Can you try again with the latest commit?

It's possible your dataset builder is overflowing when calculating the sample indices once you introduce more data, which is a bug we fixed in #835.
Can you try again with the latest commit?

Thank you @Quentin-Anthony for your reply. I try to update the code with #835 , but it still failed.

It's possible your dataset builder is overflowing when calculating the sample indices once you introduce more data, which is a bug we fixed in #835.
Can you try again with the latest commit?

Thank you @Quentin-Anthony for your reply. I try to update the code with #835 , but it still failed. And there are some error messages missed before:
Original Traceback (most recent call last):
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/worker.py", line 302, in _worker_loop
    data = fetcher.fetch(index)
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/fetch.py", line 52, in fetch
    return self.collate_fn(data)
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 160, in default_collate
    return elem_type({key: default_collate([d[key] for d in batch]) for key in elem})
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 160, in <dictcomp>
    return elem_type({key: default_collate([d[key] for d in batch]) for key in elem})
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 149, in default_collate
    return default_collate([torch.as_tensor(b) for b in batch])
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 140, in default_collate
    out = elem.new(storage).resize_(len(batch), *list(elem.size()))
RuntimeError: Trying to resize storage that is not resizable

Is it possible that the data size is too large, causing an OOM error?

It's possible your dataset builder is overflowing when calculating the sample indices once you introduce more data, which is a bug we fixed in #835.
Can you try again with the latest commit?

Thank you @Quentin-Anthony for your reply. I try to update the code with #835 , but it still failed. And there are some error messages missed before:
Original Traceback (most recent call last):
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/worker.py", line 302, in _worker_loop
    data = fetcher.fetch(index)
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/fetch.py", line 52, in fetch
    return self.collate_fn(data)
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 160, in default_collate
    return elem_type({key: default_collate([d[key] for d in batch]) for key in elem})
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 160, in <dictcomp>
    return elem_type({key: default_collate([d[key] for d in batch]) for key in elem})
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 149, in default_collate
    return default_collate([torch.as_tensor(b) for b in batch])
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 140, in default_collate
    out = elem.new(storage).resize_(len(batch), *list(elem.size()))
RuntimeError: Trying to resize storage that is not resizable

Is it possible that the data size is too large, causing an OOM error? Can gpt-neox load parts of the data?

I find my own machine translation data will cause this error. Are there any scripts to process the txt file to the required format for gpt-neox? I already changed the data to json file, but it seems something wrong with the preprocess.

It's possible your dataset builder is overflowing when calculating the sample indices once you introduce more data, which is a bug we fixed in #835.
Can you try again with the latest commit?

Thank you @Quentin-Anthony for your reply. I try to update the code with #835 , but it still failed. And there are some error messages missed before:
Original Traceback (most recent call last):
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/worker.py", line 302, in _worker_loop
    data = fetcher.fetch(index)
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/fetch.py", line 52, in fetch
    return self.collate_fn(data)
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 160, in default_collate
    return elem_type({key: default_collate([d[key] for d in batch]) for key in elem})
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 160, in <dictcomp>
    return elem_type({key: default_collate([d[key] for d in batch]) for key in elem})
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 149, in default_collate
    return default_collate([torch.as_tensor(b) for b in batch])
  File "/data/yard/workspace/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 140, in default_collate
    out = elem.new(storage).resize_(len(batch), *list(elem.size()))
RuntimeError: Trying to resize storage that is not resizable

Is it possible that the data size is too large, causing an OOM error? Can gpt-neox load parts of the data?

I find my own machine translation data will cause this error. Are there any scripts to process the txt file to the required format for gpt-neox? I already changed the data to json file, but it seems something wrong with the preprocess.

I found "train_micro_batch_size_per_gpu": 4, is ok for pile, but it will cause this error. Change "train_micro_batch_size_per_gpu" to 1 is ok for my mt data. I don't know why.

I find my own machine translation data will cause this error. Are there any scripts to process the txt file to the required format for gpt-neox? I already changed the data to json file, but it seems something wrong with the preprocess.

While this is not the only format the library supports, I typically have data stored in jsonl files with the following structure:
{"text": "this is document number one."}
{"text": "this is document number two."}
{"text": "this is document number three."}

I find my own machine translation data will cause this error. Are there any scripts to process the txt file to the required format for gpt-neox? I already changed the data to json file, but it seems something wrong with the preprocess.

While this is not the only format the library supports, I typically have data stored in jsonl files with the following structure:
{"text": "this is document number one."}
{"text": "this is document number two."}
{"text": "this is document number three."}

Thank you for your reply! I did change my data to the jsonl format like you showed here. I found if I change the train_micro_batch_size_per_gpu to 1, it went well. I am not sure the reason.

@SefaZeng Can you post a link to download a small sample from your data and a command we can run to reproduce this effect?
To be clear, my understanding is that the current situation is:

Finetuning with Pile has no issue
Finetuning with your dataset causes RuntimeError: Trying to resize storage that is not resizable when MBS/GPU = 4
This error goes away when you set MBS/GPU = 1
Using the recommended jsonl format doesn’t make this error go away

Is that a correct summary?

@SefaZeng following up

Closing due to inactivity. Feel free to re-open if you'd like to continue debugging @SefaZeng.

Is too many train steps cause same problem?
I try to 6400000 steps / batch size 16.
cause this error below.
RuntimeError: Trying to resize storage that is not resizable


Pattern matching bug in serverReadyAction? (vscode.debug-server-ready)

Does this issue occur when all extensions are disabled?: Yes

VS Code Version:  1.88.0 | 5c3e652f63e798a5ac2f31ffd0d863669328dc4c | x64 + 1.89.0-insider f8d35f6a712c59f96078161799435d0e83461556
x64
OS Version: EndeavourOS x86_64
Kernel: 6.6.25-1-lts
KDE Plasma 6.0.3
Shell: zsh 5.9
Terminal: konsole 24.2.1 / yakuake 24.02.1 / code 1.88.0
Node: v21.6.2
Bun: 1.1.3

Steps to Reproduce:

Copy either command-by-command or copy into a file and execute (sh setup.sh)

# Setup Remix and Next.js project
npx -y create-remix@latest remix -y && npx -y create-next-app@latest next --ts --eslint --tailwind --src-dir false --app true --import-alias false

# Create .vscode folders
mkdir -p ./next/.vscode && mkdir -p ./remix/.vscode/

# Create launch.json in current folder
read -r -d '' JSON <<'EOF'
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Issue",
            "type": "node-terminal",
            "request": "launch",
            "command": "npm run dev",
            "serverReadyAction": {
                "pattern": ".+Local:.+(https?:\/\/.+)",
                "uriFormat": "%s",
                "webRoot": "${workspaceFolder}",
                "action": "debugWithChrome"
            }
        }
    ],
    "compounds": []
}
EOF
echo $JSON > launch.json

# Symlink ./launch.json into the next and remix project
ln -s ../../launch.json ./next/.vscode/launch.json && ln -s ../../launch.json ./remix/.vscode/launch.json

# Open both projects
code remix && code next

Press F5 (or launch "Issue" configuration in "Run and Debug") in both projects and observe the serverReadyAction's opened browser (URL). The Remix project opens http://localhost5173/ (missing :) while the Next.js project opens http://localhost:3000.

I'm not sure why the : is omitted in the case of Remix. Is that a bug?

Debugging efforts:
I'm not sure if this is helpful: I sadly don't know how to debug built-in extensions in VSCode, but  I located the responsible part and tried if I could replicate it that way, to see what was causing the issue. I modified the code to only the parts necessary and removed any calls to VSCode classes, instead console.log-ing and console.error-ing.
I couldn't replicate it:
import * as util from 'util';

const stdout = '  ➜  Local:   http://localhost:5173/';

const pattern = '.+Local:.+(https?://.+)';
const uriFormat = '%s';

const regexp = new RegExp(pattern, 'i');

function removeAnsiEscapeCodes(str: string): string {
  const CSI_SEQUENCE = /(:?\x1b\[|\x9B)[=?>!]?[\d;:]*["$#'* ]?[a-zA-Z@^`{}|~]/g;

  if (str) {
    str = str.replace(CSI_SEQUENCE, '');
  }

  return str;
}
function openExternalWithString(captureString: string) {
  const URI_PORT_FORMAT = 'http://localhost:%s';
  const URI_FORMAT = '%s';
  let uri;
  if (captureString === '') {
    // nothing captured by reg exp -> use the uriFormat as the target uri without substitution
    // verify that format does not contain '%s'
    const format = uriFormat || '';
    if (format.indexOf('%s') >= 0) {
      console.error(
        `"Format uri ('{0}') uses a substitution placeholder but pattern did not capture anything.",`,
      );
      return;
    }
    uri = format;
  } else {
    // if no uriFormat is specified guess the appropriate format based on the captureString
    const format =
      uriFormat ||
      (/^[0-9]+$/.test(captureString) ? URI_PORT_FORMAT : URI_FORMAT);
    // verify that format only contains a single '%s'
    const s = format.split('%s');
    if (s.length !== 2) {
      console.error(
        "Format uri ('{0}') must contain exactly one substitution placeholder.",
        format,
      );
      return;
    }
    uri = util.format(format, captureString);
  }

  console.log(`would open:`, uri);
}

function detectPattern(s: string) {
  const matches = regexp.exec(removeAnsiEscapeCodes(s));

  if (matches && matches.length >= 1)
    openExternalWithString(matches.length > 1 ? matches[1] : '');
}

detectPattern(stdout); // would open: http://localhost:5173/

This outputs would open: http://localhost:5173/ - so in the end, I'm not sure if the bug is on my side. Can anyone reproduce this?

I'm trying to repro this in a simpler way
const stdout = '  ➜  Local:   http://localhost:5173/';
console.log(stdout);

and the same serverReadyAction that you have. It works fine. Can you check the output of the project that isn't working? Maybe a screenshot or copy/paste of the exact output?
If you want to debug, you can follow the steps at https://github.com/microsoft/vscode/wiki/How-to-Contribute and set a breakpoint somewhere around https://github.com/microsoft/vscode/blob/a4053a1d769c8d73825076168dcc20ff7b6759d4/extensions/debug-server-ready/src/extension.ts#L150

@roblourens Hey! I'm coming back with results after debugging. :)

Previous steps
1. openWithExternalString
https://github.com/microsoft/vscode/blob/a4053a1d769c8d73825076168dcc20ff7b6759d4/extensions/debug-server-ready/src/extension.ts#L150
Reveals that the value is already set in the detectPattern function.

2. detectPattern:
https://github.com/microsoft/vscode/blob/9deb01df504be7108c8d2aa79aec5ebe3eefa5ef/extensions/debug-server-ready/src/extension.ts#L140-L142
Reveals that the value that is regex'ed on is:
"  ➜  Local:   http://localhost5173/\r\n  ➜  Network: use --host to expose\r\n  ➜  press h + enter to show help\r\n"

... which results in a matches array of:
[
  "  ➜  Local:   http://localhost5173/",
  "http://localhost5173/",
]

... where matches[1] is picked. Okay, let's go one further back.

startListeningTerminalData
The issue becomes visible here.
https://github.com/microsoft/vscode/blob/9deb01df504be7108c8d2aa79aec5ebe3eefa5ef/extensions/debug-server-ready/src/extension.ts#L98
e.data has the following value:
'  ➜  Local:   http://localhost:5173/\r\n  ➜  Network: use --host to expose\r\n  ➜  press h + enter to show help\r\n'

... and after removeAnsiEscapeCodes, the value becomes what is given to detectPattern:
'  ➜  Local:   http://localhost5173/\r\n  ➜  Network: use --host to expose\r\n  ➜  press h + enter to show help\r\n'

... missing the :.

Reproduction
To reproduce the issue quickly, you can create a test.js that logs the string in e.data, as follows:
console.log(`'  ➜  Local:   http://localhost:5173/\r\n  ➜  Network: use --host to expose\r\n  ➜  press h + enter to show help\r\n'`)

.. and then start that with the serverReadyAction above.

Now, my assumption is that removeAnsiEscapeCodes shouldn't remove the : at this place. Is that correct?

The culprit matching : in the regex seems to be [\d;:]*, but I don't know anything about CSI sequences, and just removing this probably breaks other stuff.

Thanks for doing that investigation! I think the problem is actually the :?

Indeed, good find

There's a lot here and I wanna make sure the steps are clear for verification. Adding verification steps needed.

This should do it-

Have a js file that is just

const stdout = '  �[32m➜�[39m  �[1mLocal�[22m:   �[36mhttp://localhost:�[1m5173�[22m/�[39m\r\n�[2m  �[32m➜�[39m  �[1mNetwork�[22m�[2m: use �[22m�[1m--host�[22m�[2m to expose�[22m\r\n�[2m�[32m  ➜�[39m�[22m�[2m  press �[22m�[1mh + enter�[22m�[2m to show help�[22m\r\n';
console.log(stdout)

And add this to your node launch.json

            "serverReadyAction": {
                "pattern": ".+Local:.+(https?:\/\/.+)",
                "uriFormat": "%s",
                "webRoot": "${workspaceFolder}",
                "action": "debugWithChrome"
            }

When you debug, it should also start a Chrome debug session and the browser should be open to the correct port, http://localhost:5173 instead of omitting the colon, like http://localhost5173


Azure AD group sync broken after v0.0.17 upgrade

OpenShift Version 4.9.25
The group sync operator updated this morning to v0.0.17 and now Azure group sync has stopped working. I have deleted the the operator, the groupsync and even the project and redeployed.
The only issue I can see is that two conditions are stuck in pending:
PendingTrue
Apr 12, 2022, 11:39 AM
RequirementsUnknownrequirements not yet checked
PendingTrue
Apr 12, 2022, 11:39 AM
RequirementsNotMetone or more requirements couldn't be found
Anyone else experiencing this issue?

Can you provide additional details? I had deployed on an OCP 4.9 cluster today as well sucessfully

I'm not sure what additional info to provide :(. The two pending msgs on the operator is the only thing I can see that might be an issue.
I have 6 azure ad groups replicated into OpenShift via the operator and none are being updated. The configured "GroupSync" has a status of "Condition: ReconcileSuccess" so it seems to be working but the group membership does not update under openshift groups.

Can you confirm the v0.0.17 operator is currently running?
Are there any errors in the operator? Can you also provide the full GroupSync CR?

The operator is running, its status is "Succeeded". No errors under events, and the only issue I can see on the operator is those two pending msgs.
Here is my yaml of the GroupSync
apiVersion: redhatcop.redhat.io/v1alpha1
kind: GroupSync
metadata:
creationTimestamp: '2022-04-12T15:44:23Z'
generation: 1
managedFields:
- apiVersion: redhatcop.redhat.io/v1alpha1
fieldsType: FieldsV1
fieldsV1:
'f:spec':
.: {}
'f:providers': {}
'f:schedule': {}
manager: Mozilla
operation: Update
time: '2022-04-12T15:44:23Z'
- apiVersion: redhatcop.redhat.io/v1alpha1
fieldsType: FieldsV1
fieldsV1:
'f:status':
.: {}
'f:conditions':
.: {}
'k:{"type":"ReconcileSuccess"}':
.: {}
'f:lastTransitionTime': {}
'f:message': {}
'f:observedGeneration': {}
'f:reason': {}
'f:status': {}
'f:type': {}
'f:lastSyncSuccessTime': {}
manager: manager
operation: Update
subresource: status
time: '2022-04-12T15:44:24Z'
name: azure-groupsync
namespace: group-sync-operator
resourceVersion: '16483809'
uid: 6488ea5e-6773-4c66-bb60-ef74154dbe5b
spec:
providers:
- azure:
credentialsSecret:
kind: Secret
name: azure-group-sync
namespace: group-sync-operator
groups:
-
name: azure
schedule: '*/5 * * * *'
status:
conditions:
- lastTransitionTime: '2022-04-12T19:19:00Z'
message: ''
observedGeneration: 1
reason: LastReconcileCycleSucceded
status: 'True'
type: ReconcileSuccess
lastSyncSuccessTime: '2022-04-12T19:19:00Z'

Can you elaborate on why there is an empty groups parameter? this field is intended to limit the groups that are synchronized into OpenShift

I just removed them for the post as it would be the only item that is organizational specific and did not want to post the name of our groups on a public forum.

spec:
providers:
- azure:
credentialsSecret:
kind: Secret
name: azure-group-sync
namespace: group-sync-operator
groups:
- group01
- group02
- group03

I just tested out the operator in my environment and my tests passed (when providing a similar configuration as you presented).
Can you check the logs of the operator itself to see if any errors are being emitted?

I0412 15:39:23.216378       1 main.go:180] Valid token audiences:
I0412 15:39:23.216535       1 main.go:316] Reading certificate files
I0412 15:39:23.216618       1 reloader.go:98] reloading key /etc/certs/tls/tls.key certificate /etc/certs/tls/tls.crt
I0412 15:39:23.216861       1 main.go:350] Starting TCP socket on <IP_ADDRESS>:8443
I0412 15:39:23.220027       1 main.go:357] Listening securely on <IP_ADDRESS>:8443
This is what i got and it would appear to be ok from what i see in these logs.

Here is some additional info as well: (also looks good)
group-sync-operator-controller-manager-cd87b9766-4rbc6
Running
Conditions
TypeStatusUpdatedReasonMessage
InitializedTrue
Apr 12, 2022, 11:39 AM
ReadyTrue
Apr 12, 2022, 11:39 AM
ContainersReadyTrue
Apr 12, 2022, 11:39 AM
PodScheduledTrue
Apr 12, 2022, 11:39 AM

Hi everyone,
I add the same issue. So, i rolled back to 0.0.16 and it work great. I don't know how I can help on that case. But , ask me what you need..
By the way i'm a bit newbie in openshift.. But, still can help
Thank you

Awesome @DomDaigle, I was wondering if roll back was a possibility!! I will attempt that once I figure out how to do it!

@DomDaigle @muyari I just ran through everything.
Can you confirm your application registration has the following permissions

Yes it has the permissions you listed.

@muyari can you share the logs from the manager container?

@sabre1041 yes it has at least all permission as you show !

you could look to the controler log I sent in my first comment..  But everything looks good !!

@DomDaigle everything looks aok from your side. If you remove the restrictions on groups, do any groups populate?

@sabre1041 not sure what restriction your are asking to remove.

@DomDaigle You have the following defined
  groups:
    - secaro-dev-admin
    - secaro-dev-access
    - secaro-dev-reader

This limits the groups that are ultimately synchronized. Would you be able to remove this section to test whether any groups are synchronized?
Thanks for working through this together. We will be sure to get this identified and resolved in short order

@sabre1041  I removed the group in openshift directly and it didn't recreate it.
So, today i will remove the groups in the groupsync ressource and let you know !
Thank you

@sabre1041 Here's what I did :

upgrade from 0.0.16 to 0.0.17

check yaml groupsSync Config and saw status reconciled error

remove groupsSync config

create new groupsSync Config from UI and no group in it .

Had to remove all others providers in the yaml because it don't let me add new config.

result: Import all AAD Groups (+1000).. ;(

remove all groups synced from AAD

Specify the groups to sync directly in the YAML:
groups:       - secaro-dev-reader

result:
Did not sync that group secaro-dev-reader
I'm sending some log and yaml config whit there status.
groupsync-azure-groupsync.yaml.txt
clusterserviceversion-group-sync-operator.v0.0.17.yaml.txt
group-sync-operator-controller-manager-77966cc484-sq6rk-manager.log

@DomDaigle It appears the operator is functioning correctly, but is not matching the name of the group (The operator performs simple filtering of results based on the "Display Name".
Can you confirm the Display Name of the group matches the property specified?

@DomDaigle
I'm still having issues reverting to .16, should I be able to apply the yaml you posted earlier to install the operator? (yaml below)
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
labels:
operators.coreos.com/group-sync-operator.group-sync-operator: ''
name: group-sync-operator
namespace: group-sync-operator
spec:
channel: alpha
installPlanApproval: Manual
name: group-sync-operator
source: community-operators
sourceNamespace: openshift-marketplace
startingCSV: group-sync-operator.v0.0.16
I'm getting some errors when trying to apply "resource name may not be empty"

@muyari @DomDaigle Trying to understand where we are both at with this issue. It seems like it is an issue only when attempting to perform filtering based upon group name. As @DomDaigle shared, it looks like syncing works without restricting based on group. Can you confirm this is the case? Unfortunately, I am not facing a similar issue in my environment and it is a bit difficult to replicate.
I'd be happy to look into spinning up a "one off" operator that can provide much more debug logging if you are interested.

I am in the same situation as @DomDaigle I need group filtering as we have 10000+ groups (due to ms teams). We would like to filter in only the groups that we will leverage in OpenShift.
I would be open to deploying the "one off" operator however any logging that is produced I will need to review for any sensitive info prior to posting. (if any).

@muyari Here is a command that you can use to deploy a custom image. It contains debug logging that we can use to investigate
kubectl patch csv -n group-sync-operator group-sync-operator.v0.0.17 -type='json' -p='[{"op": "replace", "path": "/spec/install/spec/deployments/0/spec/template/spec/containers/1/image", "value":"quay.io/ablock/group-sync-operator:issue-185"}]'

Looking at your issue in more detail, depending on the structure of your AAD tree, you can leverage additional filtering logic (such as if all groups are nested within a single group or to use the filter fetaure)

what the equivalent oc command to replace kubectl?

just replace kubectl with oc

Getting the  following error:
oc patch csv -n group-sync-operator group-sync-operator.v0.0.17 -type='json' -p='[{"op": "replace", "path": "/spec/install/spec/deployments/0/spec/template/spec/containers/1/image", "value":"quay.io/ablock/group-sync-operator:issue-185"}]'
Error: unknown shorthand flag: 't' in -type=json
See 'oc patch --help' for usage.
oc patch --help
Update field(s) of a resource using strategic merge patch, a JSON merge patch, or a JSON patch.
JSON and YAML formats are accepted.
Usage:
oc patch (-f FILENAME | TYPE NAME) [-p PATCH|--patch-file FILE] [flags]
Examples:
Partially update a node using a strategic merge patch. Specify the patch as JSON.
oc patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'
Partially update a node using a strategic merge patch. Specify the patch as YAML.
oc patch node k8s-node-1 -p $'spec:\n unschedulable: true'
Partially update a node identified by the type and name specified in "node.json" using strategic merge patch.
oc patch -f node.json -p '{"spec":{"unschedulable":true}}'
Update a container's image; spec.containers[*].name is required because it's a merge key.
oc patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}'
Update a container's image using a json patch with positional arrays.
oc patch pod valid-pod --type='json' -p='[{"op": "replace", "path": "/spec/containers/0/image", "value":"new image"}]'
Options:
--allow-missing-template-keys=true: If true, ignore any errors in templates when a field or map key is missing in
the template. Only applies to golang and jsonpath output formats.
--dry-run='none': Must be "none", "server", or "client". If client strategy, only print the object that would be
sent, without sending it. If server strategy, submit server-side request without persisting the resource.
--field-manager='kubectl-patch': Name of the manager used to track field ownership.
-f, --filename=[]: Filename, directory, or URL to files identifying the resource to update
-k, --kustomize='': Process the kustomization directory. This flag can't be used together with -f or -R.
--local=false: If true, patch will operate on the content of the file, not the server-side resource.
-o, --output='': Output format. One of:
json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.
-p, --patch='': The patch to be applied to the resource JSON file.
--patch-file='': A file containing a patch to be applied to the resource.
--record=false: Record current kubectl command in the resource annotation. If set to false, do not record the
command. If set to true, record the command. If not set, default to updating the existing annotation value only if one
already exists.
-R, --recursive=false: Process the directory used in -f, --filename recursively. Useful when you want to manage
related manifests organized within the same directory.
--show-managed-fields=false: If true, keep the managedFields when printing objects in JSON or YAML format.
--template='': Template string or path to template file to use when -o=go-template, -o=go-template-file. The
template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].
--type='strategic': The type of patch being provided; one of [json merge strategic]
Use "oc options" for a list of global command-line options (applies to all commands).

@muyari It should be --type
oc patch csv -n group-sync-operator group-sync-operator.v0.0.17 --type='json' -p='[{"op": "replace", "path": "/spec/install/spec/deployments/0/spec/template/spec/containers/1/image", "value":"quay.io/ablock/group-sync-operator:issue-185"}]'

new error:
Error from server (NotFound): clusterserviceversions.operators.coreos.com "group-sync-operator.v0.0.17" not found

Find the version if the csv installed
oc get csv -n group-sync-operator

Do I need to have the group sync operator installed before running the following?:
oc patch csv -n group-sync-operator group-sync-operator.v0.0.17 --type='json' -p='[{"op": "replace", "path": "/spec/install/spec/deployments/0/spec/template/spec/containers/1/image", "value":"quay.io/ablock/group-sync-operator:issue-185"}]'

yes

ok my bad, I will install and try again! 5min.

ok it worked now when I did things properly :P. What am I looking for now that I have patched?

actually getting pull errors.

ugh. can you replace the tag to issue-184. I forgot i retagged it with the appropriate issue number
oc patch csv -n group-sync-operator group-sync-operator.v0.0.17 --type='json' -p='[{"op": "replace", "path": "/spec/install/spec/deployments/0/spec/template/spec/containers/1/image", "value":"quay.io/ablock/group-sync-operator:issue-184"}]'

No problem, will run it now

Ok I think were good now, no more pullback errors.

2022-04-17T14:24:00.660Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "Our_Group-01", "Group Being Tested Display Name": "SP05 Team 32/33"}
2022-04-17T14:24:00.660Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "Our_Group-01", "Group Being Tested Display Name": "SP05 Team 32/33"}
2022-04-17T14:24:00.660Z	INFO	controllers.GroupSync	Sync Completed Successfully	{"groupsync": "group-sync-operator/azure-groupsync", "Provider": "azure", "Groups Created or Updated": 0, "Groups Pruned": 0}

Allowed groups not matched for everything??

guess its just not picking up on the groups I want to sync configured in the GroupSync?

if you look at the logging. you should see the operator iterating through all of the groups that were retrieved and comparing them to the fields that you specified

yeah I see that, problem is that every single line has this "DEBUG: Allowed Groups NOT Matched!". I have checked my GroupSync and the groups I want to sync are good, no typo's or mistakes.

Do you see the name of the group that you want matched present?

So here is the actual group however Im not sure why after the comma there is "Group Being Tested Display Name": "OTSO-YPN Steering Committee Team"

seems like there are a bunch of comma delimited groups on each line. Is this the way you would expect things to be?

looks funky to me.

I also find it strange that I see the desired groups over and over again:
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-Regular_A_DG_AAD", "Group Being Tested Display Name": "IPS National MG Meeting – Réunion MG nationale du SPI"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-Regular_A_DG", "Group Being Tested Display Name": "IPS National MG Meeting – Réunion MG nationale du SPI"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-AllAccess_A_DG_AAD", "Group Being Tested Display Name": "Insolvency Team Leaders"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-AllAccess_A_DG", "Group Being Tested Display Name": "Insolvency Team Leaders"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-Regular_A_DG_AAD", "Group Being Tested Display Name": "Insolvency Team Leaders"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-Regular_A_DG", "Group Being Tested Display Name": "Insolvency Team Leaders"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-AllAccess_A_DG_AAD", "Group Being Tested Display Name": "LDA TRAINING"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-AllAccess_A_DG", "Group Being Tested Display Name": "LDA TRAINING"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-Regular_A_DG_AAD", "Group Being Tested Display Name": "LDA TRAINING"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-Regular_A_DG", "Group Being Tested Display Name": "LDA TRAINING"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-AllAccess_A_DG_AAD", "Group Being Tested Display Name": "Réunion d'équipe Stacy"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-AllAccess_A_DG", "Group Being Tested Display Name": "Réunion d'équipe Stacy"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-Regular_A_DG_AAD", "Group Being Tested Display Name": "Réunion d'équipe Stacy"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-Regular_A_DG", "Group Being Tested Display Name": "Réunion d'équipe Stacy"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-AllAccess_A_DG_AAD", "Group Being Tested Display Name": "Riverdale"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-AllAccess_A_DG", "Group Being Tested Display Name": "Riverdale"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-Regular_A_DG_AAD", "Group Being Tested Display Name": "Riverdale"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-Regular_A_DG", "Group Being Tested Display Name": "Riverdale"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-AllAccess_A_DG_AAD", "Group Being Tested Display Name": "Discussion"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-AllAccess_A_DG", "Group Being Tested Display Name": "Discussion"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-Regular_A_DG_AAD", "Group Being Tested Display Name": "Discussion"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-Regular_A_DG", "Group Being Tested Display Name": "Discussion"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-AllAccess_A_DG_AAD", "Group Being Tested Display Name": "SP05 Team 32/33"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-AllAccess_A_DG", "Group Being Tested Display Name": "SP05 Team 32/33"}
2022-04-17T14:38:01.383Z	INFO	syncer_azure	DEBUG: Allowed Groups NOT Matched!	{"Allowed Group Name": "CloudNuage_CloudOps-Admins-Regular_A_DG_AAD", "Group Being Tested Display Name": "SP05 Team 32/33"}

This is just logr formatting. There are two messages that are being printed. the first is one of the "allowed" groups that you have declared in the GroupSync CR. The second (Group being tested) is one of the values that was returned from AAD.
I assume CloudNuage_CloudOps-Admins-AllAccess_A_DG_AAD is one of the groups that you have specified in the GroupSync CR? Do you see if being printed in the "Group Being Tested Display Name"?

And that's not even all the entries, I would say close to 100 lines.

Yes "CloudNuage_CloudOps-Admins-AllAccess_A_DG_AAD" is a desired group and is in the group Sync.
Im not sure what you mean by "Do you see if being printed in the "Group Being Tested Display Name"?"

That is exactly what i was thinking as well. its a large dataset and it not iterating through all of them. my testing was using a somewhat small group list (7) groups. I could perform some testing to see if its indeed not iterating through them all

there are definitely a lot of group due to teams in our org. we have 50k + employees and teams groups create a Azure Ad group for membership.
We have over 22000 azure ad groups in our tenant.

not sure if that poses an issue but I thought I will give you more info if it helps.

My GroupSync is configure to sync 4 aad groups.

yes. I would HIGHLY recommend using a different approach for querying groups. The method that you are using now will attempt to retrieve all groups and then filter out the results. Take a look at either the baseGroups or filter options.
Can you estimate how many total group are being returned in the logs? 10? 100?

it seems to cap at 1000 lines

lots of duplication in the group names from what i can see for some reason.

Is there any documentation "Take a look at either the baseGroups or filter options." <-- for this? Also i would like to point out that before the upgrade we had been using it as is for a few month with no issues it worked amzing!

Correct. It is being extremely verbose. If will take each returned group from AAD and print out whether it matches the groups that you have specified in the groups field. How many unique groups are returned?
This is most likely due to the new official library from Microsoft that we are now using. If you can provide the number of unique groups that are being returned, I'll be able to test and confirm that iterating through all possible groups works as intended

well each time it runs it seems to cap at 1000 lines. I do see a lot of duplication in the logs so I would hazard a guess of around 800 unique groups during each run that are trying to match.
Seeing that we have 22k + groups why would I not see more entries when it iterates through each group name for a match?
I'm open to trying the baseGroups or filter option if you could guide me as to how to configure the required options.

Its most likely a pagination issue where the operator needs to request the next set of results.
I'll work on testing out what it will take in the next day or so and then provide updates as appropriate

Awesome! thanks so much @sabre1041 you have been very helpful :). By any chance is there an easy way I can get back to v.16? until you have figured out the changes?
I tried downloading the previous repo and running the manual install commands but it never ends up working.

It would be awesome if when installing via operator hub we could select the current version and the previous version so that we can revert if needed.

The is not an elegant way to revert to an older version since it appears that only one version is available in OperatorHub.
You should be able to set the image back to the older version since there were no drastic API changes. Just patch the CSV to version v0.0.16
oc patch csv -n group-sync-operator group-sync-operator.v0.0.17 --type='json' -p='[{"op": "replace", "path": "/spec/install/spec/deployments/0/spec/template/spec/containers/1/image", "value":"quay.io/redhat-cop/group-sync-operator:v0.0.16"}]'

Awesome! I will patch with this and see how it goes.

Amazing setting the image back to v0.0.16 has us back up and running :). Thanks so much for you assistance on this issue @sabre1041!! I look forward to the updates of this awesome operator!!

@muyari I have hopefully addressed the paging issue in this "preview" image. It does not contain any of the additional logging as the custom image that we tested earlier, but let me know if your groups are now synchronized.
You should be able to patch the CSV with the image quay.io/ablock/group-sync-operator:azure-paging
oc patch csv -n group-sync-operator group-sync-operator.v0.0.17 --type='json' -p='[{"op": "replace", "path": "/spec/install/spec/deployments/0/spec/template/spec/containers/1/image", "value":"quay.io/ablock/group-sync-operator:azure-paging"}]'

@sabre1041 and @muyari I was out for couples of days (easter hollyday).    So, I read your posts and what I can tell is that we have thousands of groups and it's look like groups sync take only 100 to compare. So, i used the "baseGroups" param and add the prefix name of those groups.   Strange things happened.  The log show an error, but the groups were sync..  And the status said 0 created or update !!  strange !
2022-04-19T18:07:54.602Z	INFO	controllers.GroupSync	Beginning Sync	{"groupsync": "group-sync-operator/azure-groupsync", "Provider": "azure"} 2022-04-19T18:07:55.699Z	INFO	syncer_azure	Failed to find a single base group to search from	{"Provider": "azure", "Base Group": "secaro"} 2022-04-19T18:07:55.699Z	INFO	controllers.GroupSync	Sync Completed Successfully	{"groupsync": "group-sync-operator/azure-groupsync", "Provider": "azure", "Groups Created or Updated": 0, "Groups Pruned": 0}

@DomDaigle
I'm still having issues reverting to .16, should I be able to apply the yaml you posted earlier to install the operator? (yaml below)
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: labels: operators.coreos.com/group-sync-operator.group-sync-operator: '' name: group-sync-operator namespace: group-sync-operator spec: channel: alpha installPlanApproval: Manual name: group-sync-operator source: community-operators sourceNamespace: openshift-marketplace startingCSV: group-sync-operator.v0.0.16
I'm getting some errors when trying to apply "resource name may not be empty"

I was out out for couples of days..  But I think @sabre1041  give you the answer further in the discussion.  am I right ?

@DomDaigle a few things.

if you have prior group(s) that were synchronized prior to the using the operator. If so, you would need to delete the groups and then have the operator synchronize all of the groups
baseGroups was added to support nested groups so that you can start from a particular group instead of synchronizing all groups. The full name of the group is required

@muyari Have you had the chance to review the "preview" image?

@sabre1041  Ok !  So if I recap this issue. The difference between 0.0.16 and 0.0.17, from my POV, considering that we have more over 100 groups,  is that I need to add the options "filter"  or "baseGroups" in the config.  Those options works for me !
I don't know if you can add it to the change log. But, maybe you could add this info to the documentation.
For me, this issue is resolved.
It was a pleasure to work on that issue with you. So, if you need more info/help. Just ask me ...
Thank you
Dominic

@sabre1041
Want to tell you that even we also faced the same issue what muyari have faced that group sync is not happening on version v0.0.17.
And the command which you have given to patch the older version of operator v0.0.16 --> After doing it its working perfectly and able to sync new Group.
oc patch csv -n group-sync-operator group-sync-operator.v0.0.17 --type='json' -p='[{"op": "replace", "path": "/spec/install/spec/deployments/0/spec/template/spec/containers/1/image", "value":"quay.io/redhat-cop/group-sync-operator:v0.0.16"}]'
This command helped to work fine on Group Sync things. Can you check once what make any such difference in v.0.0.17 version.
Thanks for your wonderful suggestion

@sabre1041
Want to tell you that even we also faced the same issue what muyari have faced that group sync is not happening on version v0.0.17.
And the command which you have given to patch the older version of operator v0.0.16 --> After doing it its working perfectly and able to sync new Group with below command which you have given.
oc patch csv -n group-sync-operator group-sync-operator.v0.0.17 --type='json' -p='[{"op": "replace", "path": "/spec/install/spec/deployments/0/spec/template/spec/containers/1/image", "value":"quay.io/redhat-cop/group-sync-operator:v0.0.16"}]'
Can you also help how we can Prune the group which we dont want to add into our environment.?
Like after deleting the name from Group --> Field its not deleting the group and not pruning is happening on v.0.0.16
This command helped to work fine on Group Sync things. Can you check once what make any such difference in v.0.0.17 version.
Thanks for your wonderful suggestion

@jaahin14 @DomDaigle @muyari I built a test image which should have the updated logic to manage paging large groups. Can you please test in your environments:
quay.io/ablock/group-sync-operator:azure-paging

@sabre1041
Sure I will try to check your above command given and update you in 1 hour
So below command that i have to use right..
oc patch csv -n group-sync-operator group-sync-operator.v0.0.17 --type='json' -p='[{"op": "replace", "path": "/spec/install/spec/deployments/0/spec/template/spec/containers/1/image", "value":"quay.io/ablock/group-sync-operator:azure-paging"}]'

@jaahin14 yup! I am very interested in resolving this issue so thanks for offering to help test

Hi @sabre1041
I just tried to patch "quay.io/ablock/group-sync-operator:azure-paging" but What i am able to se that Prune is not happening.
Example -->
Step -1  Initially I added 2 group --> So both group Synced very well
Step -2 Then I remove 1 group from "kind: GroupSync" yaml file.. But still I am able to see that deleted group inside oc get group  list..
But When we are adding and removing any user from Azure then its perfectly working.

@jaahin14 lets hold off on pruning as that's separate. Can you confirm at least all groups are synchronizing successfully now with this image?

Hi @sabre1041
Yes I am able to sync all group "quay.io/ablock/group-sync-operator:azure-paging" with mentioned image.

@jaahin14 great to hear! Opened up #188 to resolve this issue. Will continue to track the pruning issue in #169

@sabre1041 Sorry I went mia on this issue, but I have also confirmed that the "quay.io/ablock/group-sync-operator:azure-paging" image is working :). Thanks so much for your work on this!!

@muyari fantastic. we are working through a few CI/Release issues. will be looking to push out v0.0.18 ASAP


Don't copy classes to hidden input

So I noticed in your code when creating the hidden input for doing the actual upload, it copies over every attribute from whatever element the directive is placed on.
// angular-file-upload.js v3.2.4, lines 244-247
for (var i = 0; i < elem[0].attributes.length; i++) {
    var attribute = elem[0].attributes[i];
    fileElem.attr(attribute.name, attribute.value);
}

My specific issue at hand is that the additional classes messes up my styling despite the hidden input being hidden and given position absolute. I am wondering if it were possible to exclude classes from being copied over when generating this element, or whether there is a specific reason classes must also be included. Also I'm guessing it would be a good idea to exclude copying id attribute as well.
For those curious about the styling issue, it's because I am using bootstrap.css and it has the following CSS:
.btn-block + .btn-block {
    margin-top: 5px;
}

So having something like this:

Upload

results in:
<input classes="btn btn-block" ... />

Upload

gonna fix in the next version

Cool, good to know.

Fixed in version 3.3.0


Regex search for Shape.text fields

Tests passing :)

I've added same method to Page object also - and I'll include in next release

@dave-howard That's great 😊.
Also, (since it would be pretty easy,)  perhaps one could add functionality to search other Shape/Page fields via Regex, e.g. Shape.ID.
The only thing is that I'm not sure which fields make sense to have this feature for. So, if you like, you could open an issue with me assigned and required functions in the description and I'll be happy to support this project 😊


Portability on Windows

Closes #444
About
The purpose of this PR is to allow the portability of Chromium on Windows with the addition of two new switches :

disable-machine-id : Allows disabling the machine ID generation on Windows.
disable-encryption : Allows disabling encryption of cookies, passwords, settings.
Related threads :

portapps/brave-portable#4
brave/brave-browser#694
brave/brave-core#795

Test
disable-machine-id

Launch chormium with switch --disable-machine-id
Install an extension
Close chormium and copy data to a second computer
Launch chormium on the second computer
The extension must be ok

disable-encryption

Launch chormium with switch --disable-encryption
Login to a known website with credentials and save them (will add unencrypted cookies and passwords to database)
Close chormium and copy data to a second computer
Launch chormium on the second computer
You must be still logged in on the website and credentials must be kept intact in the database

use both switches

Previous and following settings must be ok too :

Default search engine
Homepage
Startup pages
Pinned tabs

Looking good, but a couple questions:

Why is this marked as a WIP? What else needs to be done?
What happens if you disable machine ID but leave encryption enabled? Is encryption still tied to the current machine? Are the machine ID and encryption mechanisms independent of each other?

@Eloston

WIP to handle certificates but I think we cannot do something about it so feel free to remove the WIP :)
For me encryption is not tied to machine-id. Machine ID seems to be linked to extensions and only used on Windows.

BTW on Windows, does Chromium store credentials internally in the user data directory by default? Or is there a credential storage mechanism that Chromium uses? I'm trying to understand why passwords are included in the encryption.

And Chromium uses CryptProtectData to encrypt passwords in the password_value BLOB.

I see, it kinda sucks that the Windows version doesn't use a credentials storage. Thanks for the info.

@crazy-max
@Eloston
Thanks!
Good job, much desired behaviour.

请问这两个参数现在还支持最新的chrome吗？

Thank you for this patch. Works great with 76.0.3809.100.

Hi @Eloston,
Looks like the patches for portability on Windows have been removed?

@crazy-max This was merged before the fragmentation refactor (i.e. before platform repos were created). They now live in here: https://github.com/ungoogled-software/ungoogled-chromium-windows/tree/master/patches/ungoogled-chromium/windows

@Eloston Perfect thanks

Why appdata/local/chromium is not stored just beside chromium.exe to be really portable??
This could make it possible for me to use ungoogled chromium on my two pcs from my Nextcloud drive...

Do we also lose history, settings, extensions and bookmarks even when we update/upgrade ungoogled-chromium on the same machine on Windows??? Because that's what happened to me right now.

I have been using command line switches disable-machine-id and disable-encryption for ages now, all was good, but I noticed on the main project website these 2 parameters are now crossed out, but I can't find any details what happened. Also with the latest build I noticed all my cookies doesn't survive browsers restart and I'm forced to login to absolutely all sites from scratch each time, which is a huge issue for me.  I initially thought that is related to 3PCD, but doesn't seems like, as I manually marked all my required websites as allowed for 3rd party cookies still if I restart the browser I'm forced to login again everywhere absolutely. I was never the case and something changed only in the latest build 122.xxx, but I'm unable to find what it was exactly.

Do these switches still work with the current version of Chromium? I tried using them on Vivaldi, and they didn't seem to function.

@mavorse Apparently it's --disable-encryption-win now, see macchrome/winchrome#135

According to https://github.com/ungoogled-software/ungoogled-chromium-windows/blob/master/patches/ungoogled-chromium/windows/windows-disable-encryption.patch, the switch should still be just --disable-encryption-win. Please keep in mind that the binaries from are not official and may have additional modifications in comparison to the official Windows binaries distributed by https://github.com/ungoogled-software.

Well, passing --disable-encryption-win to chromium is the same as passing nothing. It's just an invalid argument.
disable-encryption-win doesn't even exist in either UG or winchrome.

Fyi if you reaaally want its possible to export dpapi keys and also resign chrome/chromiums securepreferences.

Also the issue with the current patches is if you ever accidentally run the exe without having those cli flags set, it'll wipe out the existing settings.

@AJolly Please file proper issues into Windows repository if you think those issues are a significant ones.


[Suggestion] messages.yml

Could you add a messages.yml for 90% of the messages!

You can create your own language file and use it in the config see Example.

You can leave a star if you want to support the project.

I am sorry for my blindness


TextFields dont show typed value after a firebase deploy

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce
I'm deploying my project to firebase hosting.
This web app has an authentication form, which has two fields.
When the deployment is completed, the web app gets auto refreshed.
After the auto-refresh, i'm trying to type my email and password, but the typed input is not shown in the textfield, although i can copy and paste it somewhere else via ctrl+c and ctrl+v.
After hitting refresh, the textfields work fine.
For the deployment i'm using the following commands:
flutter clean
flutter build web --web-renderer html
firebase use default
firebase deploy --only hosting
Expected results
A visible input that i'm typing in the textfields
Actual results
Invisible input that is copypaste-able and need to hit refresh to solve the issue.
Code sample
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: someFireBaseOptions);

  initializeServices();
  runApp(
    GetMaterialApp(
      navigatorKey: Get.key,
      builder: BotToastInit(),  //package:bot_toast/src/bot_toast_init.dart
      title: EnvironmentVariables.appLabel,
      themeMode: ThemeMode.dark,
      theme: ThemeData(
        useMaterial3: true,
      ),
      defaultTransition: Get.defaultTransition,
      debugShowCheckedModeBanner: false,
      initialRoute: '/',
      translations: MyTranslations(),
      locale: const Locale('el', 'GR'),
      home: PrivateRoute(
        index: NavigationIndexes.indexes[Routes.home]!,
        mustLogin: false,
        screen: () => const Scaffold(
          body: TextField(
            style: TextStyle(
              color: Colors.red,
            ),
          ),
        ),
      ),
      unknownRoute: GetPage(
        name: Routes.home,
        page: () {
          return const HomeScreen();
        },
      ),
    ),
  );
}

initializeServices() {
  Get.put<AuthenticationService>(AuthenticationService(), permanent: true);
  Get.put<CommandsService>(CommandsService(), permanent: true);
}

Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor summary (to see all details, run flutter doctor -v):
[!] Flutter (Channel stable, 3.7.12, on Ubuntu 20.04.6 LTS 5.15.0-69-generic, locale en_US.UTF-8)
    ! Warning: `dart` on your path resolves to /usr/lib/dart/bin/dart, which is not inside your current Flutter SDK checkout at /home/kman/development/flutter. Consider adding /home/kman/development/flutter/bin to the front of your
      path.
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
[✓] Chrome - develop for the web
[✓] Linux toolchain - develop for Linux desktop
[✓] Android Studio (version 2021.2)
[!] Android Studio
    ✗ android-studio-dir = /snap/android-studio/current/android-studio
    ✗ Android Studio not found at /snap/android-studio/current/android-studio
[✓] Android Studio
[✓] VS Code (version 1.77.3)
[✓] Connected device (2 available)
[✓] HTTP Host Availability

! Doctor found issues in 2 categories.

Hi, I'm unable to reproduce with the code provided at the top. Can you provide a minimal sample app that reproduces this behavior?
Other helpful pieces of information that would be great to have:

Are you using a custom font in your web app?
If you add a style definition in your TextFormField does the text display? (example: style: const TextStyle(color: Colors.red),
Can you confirm this is happening on Chrome, Linux?

Finally, it would be great to see your flutter doctor -v output, as that provides better detail for us.  Thanks!

@tomg2012  Sorry i closed the issue by mistake

Custom fonts?

@tomg2012 No custom fonts, everything comes from material. Also, another hint is that i'm using the getx package, for state management, but i don't this it matters in this case. As I told you, the problem occurs also by running the above sample code that I posted above...

@kostas95
the code sample doesn't seem to be runnable and also includes 3rd party package (getx)
please provide a minimal reproducible code sample w/o 3rd party packages

@kostas95 As suggested above, please retry with a minimal sample code with only a single TextField widget to see if the issue still persists or not.

Greetings to everyone, I'm posting the most minimal code I've tested, which still behaves as explained above.
This is inside the main.dart file and the only import is the material package.
void main() async {
  runApp(
    MaterialApp(
      themeMode: ThemeMode.dark,
      theme: ThemeData(
        useMaterial3: true,
      ),
      debugShowCheckedModeBanner: false,
      initialRoute: '/',
      home: Container(
        decoration: BoxDecoration(color: Colors.blue),
        child: TextFormField(),
      ),
    ),
  );
}

I'm editing the sample code above too. You can use this one. I'm running the mentioned commands for deployment and the texfields don't work.


"stopanimation" trigger

Sometimes having two animations overlap can cause unintended effects, so a way to stop execution of a specific animation would help

https://github.com/alesan99/mari0_ae/issues/339


How to check if subscription has ended or has been cancelled?

I've read a lot of closed issues here but yet I can't find a solid answer to what I'm looking for. I have the following issue - my app has only subscriptions (renewable subscriptions - one monthly and one 3-month subscription). I use restorePurchases() to restore currently purchased subscriptions. The thing is that restorePurchases() behaves differently on both platforms. On Android it returns only the currently active subscriptions - if I cancel a subscription and as soon as it's period ends it's no longer returned by restorePurchases(). As for iOS - it returns even subscriptions that should have been inactive. Keep in mind that I work with sandbox but the documentation says that all sandbox subscriptions (even renewables) expire after 6 renewals and therefore they are not active.
The local storage method doesn't seem to make sense for subscriptions because I can't know when to remove them. The user should be able to cancel the subscription at any time and then it should be available to purchase once again. Another specific case for my app is that the user should have only one active subscription at a time. If there is an active subscription, the user shouldn't see it and therefore should have access to the content that the subscription unlocks. Also I'm not sure how getStoreReceipt() could be helpful on iOS if it just returns the receipt of the last transaction

@hardmaster92 , you send the store receipt to your backend, validate it against google/apple servers and check if the user subscription is active or not. You cannot do this on the device only, like for normal purchases.

So you mean that if restorePurchases() returns 10 purchases, I have to check every one of them in the backend?

No I mean you have to send the receipt, which when validated should return the info you need for all subscriptions.

So let me check of I got it right - I get the receipt using getStoreReceipt() and then I can use it in my backend to validate and get info for all subscriptions?

Yes, at least this is how I understand the Google/Apple store documentations. I haven't implemented neither subscriptions nor purchases in any production app, so can't be 100% sure.

Yes, at least this is how I understand the Google/Apple store documentations. I haven't implemented neither subscriptions nor purchases in any production app, so can't be 100% sure.

Judging by the things that I see there it seems to be exactly the case for Apple. As for Android - this method returns always undefined (as mentioned in the docs). If I call restorePurchases() on Android it returns only the transaction for the currently active subscription (probably the transaction from the last renewal?) but when I call it on iOS it returns every single transaction, even old ones from my tests that I did yesterday.


ChArUco board detection

Hi there @shimat!
I've been using OpenCVSharp for 3 years and noticed that it still does not support ChArUco board detection.
I need to implement this for a project I am working on and I just wanted to ask if you are working on bringing ChArUco board detection to OpenCVSharp? And if not, are you interested on me doing a pull request once I am done implementing it or should I keep it to myself?
Thanks for all the support over the years!

Hello,
I am also interested in implementation of ChArUco Board Detection. @AlexandreLaborde: Have you implemented it? If so, could you send me the code? That would be really cool.
Thank you,
Best regards
Max

Hi @maxpeacock, sorry for taking so long to reply.
I tried to add the ChArUco Board Detection to opencvsharp but it was very difficult to understand how to build the solution so I gave up and made a small c++ function to detect the board and C# wrapper so I can use the results in my .NET project.


Update CONTRIBUTING.md

Describe why this should be added
Some information is out of date.
Other details
No response
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] If this is an issue with the app itself, I should be opening an issue in the app repository.
[X] I have updated the app to version 0.15.3.
[ ] I have admitted that I am a clown by having checked this box, as I have not read these acknowledgements.
[X] I have updated all installed extensions.
[X] I will fill out all of the requested information in this form.

Already tracked in #265.


Use dotnet tools from within a docker container to provide language services

Hi,
I do not know how feasible it would be but it would be great to be able to use the dotnet installation from a docker container to provide the dotnet tools required by OmniSharp in Visual Studio Code.
The main goals would be:

No need to install the dotnet sdk on the host machine, a machine running docker will suffice. This will also keep the host OS clean from having to install successive versions of .NET.
OSes where Visual Studio Code run but dotnet is not supported can use a docker container to get their development environment set up (e.g. Arch and other Linux distributions not officialy supported by .NET Core)

As said, I do not know if it is possible to expose the dotnet tools from a docker container as a service available outside of the docker container (through a volume?).
Thanks

I don't think we'd support this out of the box, but I suspect you could achieve it by mapping dotnet to an installation of .NET Core SDK in a docker container through a volume. In VS Code and OmniSharp, we only interact with the .NET Core SDK by shelling out to dotnet. OmniSharp might need a bit of extra because it tries to locate the .NET Core SDK by calling dotnet --info and then using the Base Path in the info text. If that path is local to the container, it wouldn't work for OmniSharp.

/cc @kendrahavens @glennc
We talked about this scenario today in our Docker sync. We would like to explore Docker integration more with VS Code. This isn't the very first thing on our list, but I could see it coming out of more general investment.

It may also be possible to do this by creating a docker image that contains not just the .NET Core SDK, but also OmniSharp itself. I imagine that one could create a shell script that calls docker run with the right arguments to launch OmniSharp and set omnisharp.path within VS Code to that script. If it works like I expect, C# for VS Code would communicate properly with the OmniSharp process in the docker container over stdin/stdout.

That makes sense. That would be straightforward to do. It would be straightforward to create an image that does this. I'd be happy work on a demo with you. There are few bits of info I'd need to get the image ready.

Two notes in case they are not obvious:

.NET Core 2.0 will support a much larger set of Linux Distros. So it should no longer be necessary to run tools in containers due to a lack of support on the OS running VS Code.
To my knowledge we still do not have a sample project that shows how to tie together Docker + .NET Core + VS Code so that one can easily build one's app into a container, launch an app into Docker with F5, and attach to a running Docker project. While running all the tools in a container sounds cool. Personally I think this sounds more like 'running' and I think we are still flat or our faces being unable to move :).

While running all the tools in a container sounds cool. Personally I think this sounds more like 'running' and I think we are still flat or our faces being unable to move :).

I agree completely. :smile: For me, this is more of a thought exercise.

@ggobbe
I managed to find a kind of a solution for your case ( you can find it in my repo on https://github.com/sleemer/docker.dotnet.debug)  ... The only downside of such approach, that you can't start debugging in container - you can only attach to existing one. One of the possible workarounds could be delaying execution of the debugged application in container by modifying ENTRYPOINT in Dockerfile.debug and adding some sleep operator. But, personally, I don't like such hacks... but I can't think of any other solutions for now. Hope it will help you.

@sleemer thanks, does it support intellisense (autocompletion) as well?

@ggobbe Actually not, it just gives you the ability to run and debug your app in the same environment as it will be on prod. But I see your point, you want to be able to develop in container as well, and not only be able to debug it inside the container... so, I don't think that we are there yet with current tooling...  but that would be nice option to have in the future)

hey @richlander / @gregg-miskelly / @DustinCampbell  any movement on this? Attempting to build a docker-compose project for dotnet development for my team which works across multiple OSs and setups, and includes a SQL Server backend. Would love to be able to provide a setup that enables omnisharp syntax checking etc. for those developing with VSCode. Thanks!

Maybe VS Code Remote for Container handles this better (even tough it is only Linux so far, but I guess they are working with everyone to make a Windows version possible)


🚀 Feature: parseRepoUrl should provide an output url without parameters

🔖 Feature description
It would be useful if the parseRepoUrl filter provided a more recognized formated version of the repository URL in addition to the separate fields as the RepoUrlPicker output that it parses is not well suited to appear in docs as a hyperlink.
🎤 Context
When generating the initial documents that are hosted on a backstage instance, it's useful to provide links directly to the repository inline at various points. However the current output of RepoUrlPicker is in the form <host>?owner=<owner>&repo=<repo> where as typically it would be useful to have https://<host>/<owner>/<repo> depending on which hosting service is being used.
It's also common for various files such as package.json or setup.py to include the repository URL which is then linked by package hosting services. While some might be able to handle the original format, many expect to have the form <schema>://<host>/<path>. While I've not tested it, I expect that most end up needing to construct something like the following to work around this:
https://${{ parameters.repoUrl | parseRepoUrl | pick('host') }}/${{ parameters.repoUrl | parseRepoUrl | pick('owner') }}/${{ parameters.repoUrl | parseRepoUrl | pick('repo') }}

For markdown files, rendering a URL will work, provided it is recognized, while it's been a while since I checked it, I'm pretty sure the default output of the RepoUrlPicker doesn't provide enough for most markdown rendering to spot that it's a URL.
Instead it would be more useful if it was possible to simply use the following in any location that benefits from the full URL:
${{ parameters.repoUrl | parseRepoUrl | pick('url') }}

While it's possible to get the final URL after a repository has been created, templating files as the initial contents usually need to be completed before this output would be available.
✌ Possible Implementation
Update parseRepoUrl to add a url field as part of the output. Since there is already a switch statement for handling the different type of source control services, it should be possible to set the value appropriately within each block https://github.com/backstage/backstage/blob/5623a818b957b0ef3d44434cd4b8afbf9ae43f7d/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/util.ts#L74-L98
👀 Have you spent some time to check if this feature request has been raised before?

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

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Are you willing to submit PR?
Yes I am willing to submit a PR!

First, I'll mention that I believe you can replace the builtin function with your own, which does essentially return { ...parseRepoUrl(input), url: computeUrlFor(input) }, to get unblocked.
But besides that, yeah that sounds convenient. The only thing that concerns me is that then this function will have even more random per-provider code in it :) That's not a big deal though. Go ahead and make a PR and we'll review it.

Still relevant, just busy with other stuff and not yet got back to this.


CDS-43115 Docker support for SHA and labels

Harness Developer Pull Request
Thanks for helping us make the Developer Hub better. The PR will be looked at
by the maintainers.
What Type of PR is This?

[ x] Issue
[ ] Feature
[ ] Maintenance/Chore

If tied to an Issue, list the Issue(s) here:

https://harness.atlassian.net/browse/CDS-43115

House Keeping
Some items to keep track of. Screen shots of changes are optional but would help the maintainers review quicker.

[ ] Tested Locally
[ ] Optional Screen Shoot.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app


Selective client in a v-for generates many client component references

Environment

Operating System: Darwin
Node Version:     v20.12.2
Nuxt Version:     3.11.2
CLI Version:      3.11.1
Nitro Version:    2.9.6
Package Manager<EMAIL_ADDRESS>Builder:          -
User Config:      devtools, experimental
Runtime Modules:  -
Build Modules:    -

Reproduction
https://github.com/Rigo-m/nuxt-selective-client-bug
Describe the bug

Cycling through a server component which contains a client component selectively hydrated breaks the page in the way which is shown above.
The moveTeleport function fails with this error:
Uncaught (in promise) TypeError: Failed to execute 'insertBefore' on 'Node': parameter 1 is not of type 'Node'.
@huang-julien any idea on what's happening here?
Additional context
No response
Logs
No response

Describe the bug
I think i have a very similar issue when rendering multiple server components at once like this:
<div class="flex flex-col gap-2">
  <CatGenerator />
  <CatGenerator />
</div>

Reproduction
https://github.com/Ev357/nuxt-selective-client-bug
Environment

Operating System: Ubuntu
Bun Version: 1.1.8
Nuxt Version: 3.11.2
CLI Version: 3.11.1
Nitro Version: 2.9.6
Package Manager<EMAIL_ADDRESS>User Config: devtools, experimental

@huang-julien why is this a minor bug? Is there a workaround?

@Rigo-m It is not only about the severity but also how many ppl are affected by the bug and if the related feature is experimental or not ☺

@manniL makes sense now 💘 thanks Alex

Thx you all guys very much for the work ❤❤

Thx you all guys very much for the work ❤❤

💘


Unhandled exception. System.InvalidOperationException: Default font family name can't be null or empty.

Ｕbuntu20.04
./PixelViewer.
Error:
Unhandled exception. System.InvalidOperationException: Default font family name can't be null or empty.

Fix has been released with PixelViewer 3.0 Preview.


Added ansible task to disable inter-user communication by default

In the past, the program "wall" would enable any competitor to broadcast a message to the terminals of all other shell server users. There are other such programs for "inter-user" communication on an Ubuntu box, but "wall" is esp. powerful. The solution I decided on, proposed by @maverickwoo in #205 , was to disable the reception of other users' messages by default by appending "mesg n" to the end of "/etc/profile". This protects shell server users from possible spam.
Testing this change:
From a fresh "vagrant up" I verified that the "mesg n" line was at the end of "/etc/profile". I verified that after my change, a normal user did not receive messages from other users.
Resolves #280

LGTM. I'm wondering if we should still set permissions on /usr/bin/wall so there's immediate feedback of permission denied.

@hiliang-cmu Hmm, right now, it appears to a shell user that "wall" works because a participant still gets their own messages. I think that's really good, actually. There is this psychological element of wanting to do anything that is expressly forbidden. I don't think we'll be able to avoid inciting that instinct for all the ways that we want to lock down the shell users, but at least we can take advantage of some built-in obscurity in the case of "wall".


Add get release version from RPC

Add get  release version from RPC
Requirements
rely  cryptape/cita-common#222
Verification Process

Add enable_version = true Or enable_version = false Or NOT;
POST getVersion to RPC

curl -X POST --data '{"jsonrpc":"2.0","method":"getVersion","params":[],"id":3}'  <IP_ADDRESS>:1337

Applicable Issues
#282 Get release version info of all modules from RPC.

We just get JSON-RPC's binary version, so I don't think we need so mush logic, just like:

Using a RountingKey to send the message from one thread to another;
A new thread to handle only the getVersion logic.

Is it possible to send the version back just after we get the command from http?

the origin RPC logic:
user ---> (1)http/ ws  ----> (2) dispach -----> (3)mq ----> (4) submodules ---->mq----> http/ws
(1): need change jsonrpc-types,
now logic:
user ---> (1)http/ ws  ----> (2) dispach -----> (3) self_handler ----> http/ws.
we hook request at (2) step.  and dispach requst to self responser.

We just get JSON-RPC's binary version, so I don't think we need so mush logic, just like:

Using a RountingKey to send the message from one thread to another;
A new thread to handle only the getVersion logic.

Is it possible to send the version back just after we get the command from http?

I can't find a better place to deal with both http and websocket request.
I think the logic would be more complex if I handle the request of each type.

We just get JSON-RPC's binary version, so I don't think we need so mush logic, just like:

Using a RountingKey to send the message from one thread to another;
A new thread to handle only the getVersion logic.

Is it possible to send the version back just after we get the command from http?

I can't find a better place to deal with both http and websocket request.
I think the logic would be more complex if I handle the request of each type.

@zeroqn , would you please review this PR for us.

This is a new feature, should add a UT or IT test for this feature.

If jsonrpc's version is enough, then we don't need to go around mq.
There is get_build_info_str to get jsonrpc's version.
IMO, handle (&Method::GET, "/version") and directly return that version should be enough.

If jsonrpc's version is enough, then we don't need to go around mq.
There is get_build_info_str to get jsonrpc's version.
IMO, add (&Method::GET, "/version") and directly return that version should be enough.

in this way, how to deal websocket call?

If jsonrpc's version is enough, then we don't need to go around mq.
There is get_build_info_str to get jsonrpc's version.
IMO, add (&Method::GET, "/version") and directly return that version should be enough.

in this way, how to deal websocket call?

There is a Sender, you can directly send json string back.

If jsonrpc's version is enough, then we don't need to go around mq.
There is get_build_info_str to get jsonrpc's version.
IMO, add (&Method::GET, "/version") and directly return that version should be enough.

If return directly by http without mq, we should consider about batch request. but it looks hard to implement.
Like Ethereum use Method::POST almost,  (&Method::GET, "/version")  isn't fit to JSONRPC specification, we should pass with method, id, params.
we should implement same logic in protocal of http and websock.

i agrese with your idea，so what's better?

Yea, batch request could be tricky.

Please rebase the latest develop branch.
And sorry for the ci problem, Still communicate with circel.
There is a solution:
I give you a contribute permission(that means you can push your branch into cryptape/cita),What do you think? or we can wait a few days. @luqz

You can push the branch to the cryptape/cita now, then you can ref this at a new pr


Disable ListenerImapReceiveTest due to intermittent test failures

Purpose
Disable ListenerImapReceiveTest due to intermittent test failures
Check List

[x] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[ ] Added necessary tests

[ ] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Required changes are already merged. Refer, https://github.com/ballerina-platform/ballerina-lang/pull/24749.
Created issue https://github.com/ballerina-platform/ballerina-lang/issues/24781 for the root cause issue.


🔧 Fix "purge cdn" step in publish storybook action

Link to report (will probably get outdated and die at some point): https://github.com/equinor/design-system/actions/runs/5122261561

Should be fixed now, but not tested yet.


Rework: Extensions

This PR involves a decent amount of rework of the internal design of JustRelax.jl. The point is to get rid of the old environment initialization
model = PS_Setup(:cpu, Float64, 2) #or (:CUDA, Float64, 2) or (:AMDGPU, Float64, 2)
environment!(model)

With this PR, we select the dimension of our problem by loading the corresponding 2D or 3D submodules
using JustRelax, JustRelax.JustRelax2D

or
using JustRelax, JustRelax.JustRelax3D

Extensions are used to switch to supported GPU backends. This simplifies the setup of the package by removing lots of hacky metaprogramming, and improves pre-compilation.
To ease a bit the usage of JustRelax, this PR also un-exports all the functions that required the @parallel macro. Instead, wrappers around them are exported. E.g.
compute_ρg!(ρg[2], phase_ratios, rheology, args)

substitutes the old
@parallel (@idx ni) compute_ρg!(ρg[2], phase_ratios.center, rheology, args)

Loading times.
This branch:
julia> @time using JustRelax, JustRelax.JustRelax2D
  1.418436 seconds (1.09 M allocations: 70.066 MiB, 2.59% gc time, 6.08% compilation time: 16% of which was recompilation)

#main branch:
julia> @time begin
    using JustRelax
    model = PS_Setup(:cpu, Float64, 2) # or (:CUDA, Float64, 3) or (:AMDGPU, Float64, 3)
    environment!(model)
end
 14.763798 seconds (25.05 M allocations: 1.577 GiB, 3.84% gc time, 59.66% compilation time: 4% of which was recompilation)

Hitting the order of magnitude improvement

Codecov Report
Attention: Patch coverage is 47.57482% with 508 lines in your changes are missing coverage. Please review.

 Let us know!


Background sync for datasets from CommCare HQ

Jira: SC-3212
This pull request includes

A series of small prefactor commits
A large commit that adds an API endpoint for accepting dataset change requests from CommCare HQ
A large commit that adds an OAuth 2.0 server for authenticating incoming requests
A migration for adding the models for the OAuth 2.0 server

Easiest to review :blowfish: commit :octopus: by :tropical_fish: commit :fish:
This code has been tested locally.
It will be deployed to Staging on Wed Feb 28.
QA is scheduled.

Tests are failing because they are not configured correctly. I'll fix that.
@mkangia you asked:

Are you able to break this down further for easier review?

I agree that Add OAuth 2.0 server is a monster. All the commits that went into it can be found here but I'm not sure that's any more helpful.
I'll try to unpack them. I'll timebox it and see how I get on. (Rearranging and squashing the commits from the draft PR took hours. Hopefully unpacking might be quicker.)

Thanks @kaapstorm
Good to timebox or else then If its easier, we could jump on a call where we can walk through the big commits

Absolutely great work, @kaapstorm !
Just a couple of comments, nothing big.

Please excuse the force-pushes. Ready for review @mkangia .
And thanks for the review @Charl1996 ! I'll follow up in the morning.

one critical query about why we chose to use OAuth instead of token based authentication

OAuth 2.0 is token-based authentication. (More info here.) CommCare HQ already supports OAuth 2.0 token-based authentication for repeaters.
Do you have a different kind of token-based authentication in mind? What standard are you thinking of?

Do you have a different kind of token-based authentication in mind? What standard are you thinking of?

Resolved offline.
OAuth is the better choice keeping security in mind and the library is already available via superset/flask so no new dependency was added.

New commits look good. Will wait for responses on other comments from the last review.

New commits look good :+1:

Hey @kaapstorm
I see some open comments from my earlier review. Waiting on those to do a full pass again. I hope these will be quick since they are mostly minor.

49d575aa47411ba211e1dda3ec260600c6dd64c4 fixed the problem with syncing from CommCare Staging. I don't like it, but the right way to do it didn't work.
"If at first (or second, or third, or fourth) you don't succeed, use a bigger hammer."

I think that's everything. If there is anything I've missed, please link to it.


regex-based input name sanitization

I've had a few failures when this tool gets unusual input names; these changes sanitize input names to safer alternatives.
notes:

my initial issue was caused by filenames with spaces being treated as multiple arguments in unmicstWrapper.py, but as it turns out extra . characters in the filenames caused errors as well, which this PR also fixes

regex breakdown:
re.sub('[^\w\-]', '_', str($image.name))

replace any character that is not (^) an alphanumeric (\w) or dash (\-) character with an underscore
e.g. p*&$( -#$)+   __ome.tiff -> p_____-_________ome_tiff

re.match('^(.*?)(_ome)?_tiff?$', $cleaned)[1] + "ome.tif"

^ - start of string
(.*?) - first capture group: any character (.) any number of times (*) non-greedily (?)
(_ome)? - second capture group: the character sequence _ome 0 or 1 times (?)
_tiff? - the character sequence _tif and another f 0 or 1 times (?)
[1] - from the re.match() result, take the first capture group and discard extension variations
+ "ome.tif" - append correct extension
e.g.:

p_____-_________ome_tiff -> p_____-________.ome.tif
abc_tiff -> abc.ome.tif
xyz_tif -> xyz.ome.tif

This looks great, thank you! One last request before merging, can you increment the tool version to version="<EMAIL_ADDRESS>


Request for a patch release 0.9.1

Unsuccessful authentication to the broker leads to an invalid error message in asyncio-mqtt. The issue was addressed in #58  and fixed with PR #59.
I'd really like to see the change on PyPI.org under a patch release 0.9.1.
By any chance, are there plans to release a patch release anytime soon?

Thanks for creating this issue. Let me have a look. :)
Sure thing, I'll make a release right away. :+1:

I just released v0.9.1 on PyPI. Thanks again for your request. :+1:

Thanks for responding so quickly! Awesome!


Add ability to change clip file structure via template

Codecov Report

Merging #33 (f4a0c2b) into main (af8ca90) will not change coverage.
The diff coverage is 0.00%.

@@          Coverage Diff          @@
##            main     #33   +/-   ##
=====================================
  Coverage   0.00%   0.00%
=====================================
  Files          3       3
  Lines        328     330    +2
=====================================
- Misses       328     330    +2

Impacted Files
Coverage Δ

unifi_protect_backup/cli.py
0.00% <0.00%> (ø)

unifi_protect_backup/unifi_protect_backup.py
0.00% <0.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update af8ca90...f4a0c2b. Read the comment docs.


Make URLs active hyperlinks in Data Pane of Browse Map Data

It would be great if weburl's were active and clickable in the Data Pane of Browse Map Data. Right now, they are static text.
This would be a great candidate to merge back upstream to https://github.com/openstreetmap/openstreetmap-website

I'm not sure this is still a needed issue since we'll manage the live links in the new OHM inspector. I recommend we leave the OSM Inspector untouched as much as possible.

I'm not sure this is still a needed issue since we'll manage the live links in the new OHM inspector. I recommend we leave the OSM Inspector untouched as much as possible.

Closing.

Closing.


md49_base_controller: 0.1.4-0 in 'kinetic/distribution.yaml' [bloom]

Increasing version of package(s) in repository md49_base_controller to 0.1.4-0:

upstream repository: https://github.com/Scheik/md49_base_controller.git
release repository: https://github.com/Scheik/md49_base_controller-release.git
distro file: kinetic/distribution.yaml
bloom version: 0.5.20
previous version for package: null

md49_base_controller
* No changes, keep release on track with md49_base_controller
* Contributors: Fabian Prinzing

md49_messages
* No changes, keep release on track with md49_base_controller
* Contributors: Fabian Prinzing

md49_serialport
* Update md49_serialport CMakeLists.txt: Marked header files for installation
* Contributors: Fabian Prinzing

Please either change the patch to not change the comment line manually or create a new patch using bloom-release ... -p after updating to the latest release of python-rosdistro.


Startup Codes should return void

Right now they return bool, but the return values are ignored.

Completed in 6145914b52f8aaa2c5b9ce0264676b6660e6a712


Themes doesn't work on IE 11

Hi,
I would like to use MuiThemeProvider but it doesn't work on IE 11.
I guess that it's because MatTheme uses Custom properties (--*): CSS variables. Is there any way to fix it ?

Hi Marcin,
yup, there are at least two ways:
#1
use a polyfill (common solution when using webcomponents for IE11), e.g.:
https://jhildenbiddle.github.io/css-vars-ponyfill/#
#2
instead of importing CSS (with custom props) via reference, use CSS as build time dependency and process it with PostCSS:
https://github.com/postcss/postcss-custom-properties
So transpiled CSS contains default values for browsers not supporting custom properties and custom properties for modern ones.
Hey!

@peterblazejewicz

Don't use IE11 :D

Just kidding, but still I don't know who wants to use a Browser with more security holes than features...

Just kidding, but still I don't know who wants to use a browser with more security holes than features...

Probably your customers or internal ID (we have such use-case), fact of live :)

@lukaszewskimar ,
This should be closed with IE11 set to be EOLed in 2021

@lukaszewskimar ,
This should be closed with IE11 set to be EOLed in 2021

They really did that? So glad to see :D

@lukaszewskimar ,
This should be closed with IE11 set to be EOLed in 2021

They really did that? So glad to see :D

https://www.xda-developers.com/microsoft-365-end-support-internet-explorer-11-legacy-microsoft-edge-2021/#:~:text=Other Microsoft 365 apps and services will then,have already received the new Chromium-based Edge browser.
😄


Profile Presets

Implement commands for creating updating and deleting profile presets
Also we need to add functionality for users to buy from shop thing that will allow you to create your own profile preset

rip bozo 👆