feat: V3 tensorflow plugin

What
TensorFlow Lite Plugin to drop any .tflite model in the JS bundle (src/assets) and just run it in VisionCamera. No native code at all.
This is gonna be a game changer to the mobile camera industry
const model = useTensorflowModel(require('../assets/model.tflite'));

const frameProcessor = useFrameProcessor(
  (frame) => {
    'worklet';
    const results = plugin.model.run(frame);
    console.log(results[0]);
  },
  [plugin.model],
);

The model can be a face detector, object detector, golf swing detector, whatever .tflite model you train. Possibilities are endless.
Example
function App() {
  const plugin = useTensorflowModel(require('../assets/object-detector.tflite'));

  const paint = Skia.Paint();
  paint.setStyle(PaintStyle.Stroke);
  paint.setStrokeWidth(20);
  paint.setColor(Skia.Color('red'));

  const frameProcessor = useFrameProcessor(
    (frame) => {
      'worklet';

      // runs the model on the GPU. The input frame is automatically resized
      const [boundingBoxes, classes, scores, count] = plugin.model.run(frame);

      for (let i = 0; i < scores.length; i++) {
        const confidence = scores[i];
        if (confidence > 0.4) {
          // we're more than 40% confident that this is an object - draw it!
          const top = boundingBoxes[i];
          const left = boundingBoxes[i + 1];
          const bottom = boundingBoxes[i + 2];
          const right = boundingBoxes[i + 3];

          // draws a red box to the screen using Skia - drawn on the GPU!
          frame.drawRect(
            Skia.XYWHRect(left, top, right - left, bottom - top),
            paint,
          );
        }
      }
    },
    [paint, plugin.model],
  );

  return <Camera frameProcessor={frameProcessor} />
}

https://github.com/mrousavy/react-native-vision-camera/assets/15199031/26a5fd83-19dc-40be-b30f-31ad9d132d15
Changes

Tested on

Related issues

Hi @mrousavy , this function can run with the custom model ? , you can explain it

@mrousavy cool that helped get through that part. Seems to run the model now. Brings up a fun new issue. The camera goes down to like .5 fps running the model. We are using an unofficial tflite blazepose model which might be the cause.
Running an official posenet model gives us just raw data when logged but performance is much improved.
{"0": -2.7642037868499756, "1": 5.746579647064209, "10": 27.31992530822754, "100": 61.20494842529297, "1000": 0, "1001": 0, "1002": 0, "1003": 0, "1004": 0, "1005": 0, "1006": 0, "1007": 0, "1008": 0, "1009": 0, "101": 66.36915588378906, "1010": 0, "1011": 0, "1012": 0, "1013": 0, "1014": 0, "1015": 0, "1016": 0, "1017": 0, "1018": 0, "1019": 0, "102": 7.78696870803833, "1020": 0, "1021": 0, "1022": 0, "1023": 0, "1024": 0, "1025": 0, "1026": 0, "1027": 0, "1028": 0, "1029": 0, "103":<PHONE_NUMBER>1367188, "1030": 0, "1031": 0, "1032": 0, "1033": 0, "1034": 0, "1035": 0, "1036": 0, "1037": 0, "1038": 0, "1039": 0, "104": 27.506017684936523, "1040": 0, "1041": 0, "1042": 0
Pose detection is a pain. When I was using the tfjs packages, it was a few steps to running the detection and estimating the poses so I wonder if that is why this is the case here. Did you happen to try any pose detection when building the plugin?

hi @eledahl  you have a solution for detecting pose net ?

@philip-bui-goldenowl No sir. The pose models I am using are slowing the cameras down or not outputting the keypoints as I intended. I may be using it wrong but that's the point I am at currently.

@eledahl I have the same problem, I convert the frame to CGImage but the context CGBitmapContextCreateImage: invalid context 0x0. Backtrace, not get keypoints

Hey @eledahl, can you share your .tflite model? if the model itself is slow there's nothing I can do about that.
I can check if the input parsing and output conversions are throttling.
Also, if you want to run something async, VisionCamera V3 introduced a new func: runAsync :) That way the Camera isn't throttled

@mrousavy Sure yeah here's the few that we were trying to use. Github doesn't like the file type so let me know if you have any issues downloading them from the drive:
Mediapipe blaze
Unofficial blaze
Posenet (didn't seem to run)
Oh, that's fancy about the runasync. We'll give that a shot today

@mrousavy Thank you for working on this; V3 is definitively going to be game-changing.
@eledahl, your pose model is not working for me, but this model is working. I'm getting between 55 and 60 fps!
Using the int8 version, I get a solid 60 fps!
I tried to run it using  runAsync, but it skipped the code inside runAsync. Is there anything more that I should do?
Here is a snippet of my code running the model and plotting the nose landmark on the frame if anyone wants to use it
const model = require('./assets/lite-model_movenet_singlepose_lightning_tflite_float16_4.tflite')
const plugin = useTensorflowModel(model);
if (plugin.state === 'loaded') console.log(JSON.stringify(plugin.model, null, 2));

const paint = Skia.Paint();
paint.setStyle(PaintStyle.Stroke);
paint.setStrokeWidth(20);
paint.setColor(Skia.Color('green'));

const inputShape = plugin.model?.inputs[0]?.shape;
const inputFrameSize = {
    width: inputShape?.[1] ?? 0,
    height: inputShape?.[2] ?? 0,
  };

 const frameProcessor = useFrameProcessor(
    (frame) => {
      'worklet';
      const addition = (frame.height - frame.width)/2
      const scaler = frame.width
      if (plugin.state === 'loaded') {

        const output = plugin.model.run(frame)
        // console.log(output[0][1]*scaler, output[0][0]*scaler + addition)
        frame.drawCircle(output[0][1]*scaler, output[0][0]*scaler + addition, 5,paint)
       } else {
        console.log(`Model state: ${plugin.state}..`);
      }
    },
    [inputFrameSize.height, paint, plugin.model, plugin.state],
  );

@mrousavy  two questions:

What happened to frameProcessorFps. It was a very handy addition to the frame processor; it would be great to have it available.
Is there any way to adjust the method to convert the input image to a square? Currently, the plugin ignores the top and bottom of the image (for portrait). Would it be possible to add padding as an alternative?

@dguari1 Ah thanks man. Your code seems to have fixed it for my model. It looks like my model does run if I only do the smaller console.log you did rather than logging the entire output. Do you happen to know how to extract the keypoints from the pose models this way?

@mrousavy frameProcessorFps works like a charm.
I think it would be great to have more control over the frame pre-processing; choosing between center crop or padding, normalization types ([0,1], Imagenet Normalization, ...), and data types.
Another issue is the data type. The TFLite Movenet works fine, this model requires unit8 input
inputs": [
    {
      "name": "serving_default_input:0",
      "dataType": "uint8",
      "shape": [
        1,
        192,
        192,
        3
      ]
    }
  ],

However, the  Mediapipe Pose (all their models are here), does not work, as this model needs float32 input and the frame data type is uint8
"inputs": [
    {
      "name": "input_1",
      "dataType": "float32",
      "shape": [
        1,
        256,
        256,
        3
      ]
    }
  ],

Right now, the output of the MediaPipe pose model is just random numbers. It doesn't process the image.
I made a short Python script to test these models, figure out what they do, and plot the results! It is outside this forum's scope, so I won't post it here.
@eledahl login the data in the terminal takes a lot of time; the MediaPipe Pose model returns a lot of data (it even returns the input image and the heatmaps)
  "outputs": [
    {
      "name": "Identity",
      "dataType": "float32",
      "shape": [
        1,
        195
      ]
    },
    {
      "name": "Identity_1",
      "dataType": "float32",
      "shape": [
        1,
        1
      ]
    },
    {
      "name": "Identity_2",
      "dataType": "float32",
      "shape": [
        1,
        256,
        256,
        1
      ]
    },
    {
      "name": "Identity_3",
      "dataType": "float32",
      "shape": [
        1,
        64,
        64,
        39
      ]
    },
    {
      "name": "Identity_4",
      "dataType": "float32",
      "shape": [
        1,
        117
      ]
    }
  ],

the pose should be the first component of that output. There should be 39 landmarks; you can get with something like this
for (let i = 0; i < output[0].length; i+=5) {
                const cx = output[0][i] * scaler
                const cy = output[0][i+1] * scaler
               console.log(`landmark_x = ${cx}, landmark_y = ${cy}`)
              }

but the model doesn't work at the moment due to the data type required.

If you can convert the model to uint8_t input that'd be better for performance as well. Converting to float32_t is a bit difficult and not sure how to even test that.

I'm not sure if its reasonable to assume most models would have a uint8 input. How difficult would it be to convert to float32_t on the native side? We can help test with blazepose and other mediapipe models.

I'm not sure if its reasonable to assume most models would have a uint8 input. How difficult would it be to convert to float32_t on the native side? We can help test with blazepose and other mediapipe models.
@dguari1
Could you share the python script to describing TFLite models?

The issue with input data type and normalization is really annoying. Some models need uint8, others float32, also some models need the data to be normalized, and others don't.
@mrousavy I have been looking for ways to adjust the input data type, but I don't think that is possible without re-training the model, and these models cannot be re-trained as Google doesn't share the data.
@pvedula7  the tflite models can be analyzed in Python using something like this:
# Import TF and TF Hub libraries.
import tensorflow as tf
import matplotlib.pyplot as plt
from PIL import Image, ImageOps

image_path = "PathToYourImage"
im = Image.open(image_path)
im = ImageOps.exif_transpose(im)

# Load the input image.

image = tf.convert_to_tensor(im)
# image = tf.compat.v1.image.decode_jpeg(image)
image = tf.expand_dims(image, axis=0)

interpreter = tf.lite.Interpreter(model_path="PathToYourModel.tflite")
interpreter.allocate_tensors()
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

# Resize and pad the image to keep the aspect ratio and fit the expected size.
ExpectedSize = input_details[0]['shape'][2]
imageResized = tf.image.resize_with_pad(image, ExpectedSize, ExpectedSize , antialias=True)

# Adjuste the data type
ExpectedType = input_details[0]['dtype']
input_image = tf.cast(imageResized, dtype=ExpectedType)

interpreter.set_tensor(input_details[0]['index'], input_image.numpy())
interpreter.invoke()
modelOutput = interpreter.get_tensor(output_details[0]['index'])

I am trying to use a text detection model, but I am getting 1 fps unfortunately. This is the model I am trying to use: https://tfhub.dev/sayakpaul/lite-model/east-text-detector/fp16/1 which is directly from the tensorflow example (https://www.tensorflow.org/lite/examples/optical_character_recognition/overview). I've also tried using both float32 and int8 versions of the model but still get 1 fps. Is there something about text models that makes them break when used in the frame processor?

I am trying to use a text detection model, but I am getting 1 fps unfortunately. This is the model I am trying to use: https://tfhub.dev/sayakpaul/lite-model/east-text-detector/fp16/1 which is directly from the tensorflow example (https://www.tensorflow.org/lite/examples/optical_character_recognition/overview). I've also tried using both float32 and int8 versions of the model but still get 1 fps. Is there something about text models that makes them break when used in the frame processor?

@timothygorer, your model's input type is float32; it would work with the current implementation of the plugin.
[{'name': 'input_images',
  'index': 0,
  'shape': array([  1, 320, 320,   3], dtype=int32),
  'shape_signature': array([  1, 320, 320,   3], dtype=int32),
  'dtype': numpy.float32,
  'quantization': (0.0, 0),
  'quantization_parameters': {'scales': array([], dtype=float32),
   'zero_points': array([], dtype=int32),
   'quantized_dimension': 0},
  'sparsity_parameters': {}}]

Also, your model is huge, so it is probably pretty slow.
Your model takes 220 ms to run on my computer using Python. As a reference, the small pose detection model that I'm using takes 9 ms to run on my computer using Python, and that pose detection model runs at 40 fps using the plugin.

Hey - all the models I worked on are uint8 or int8 - I tried to add some basic float32 conversion but I didn't really test it since that's quite tricky to do. Didn't want to spend more time on it since all the models I had were uint8/int8 :)

Hey - all the models I worked on are uint8 or int8 - I tried to add some basic float32 conversion but I didn't really test it since that's quite tricky to do. Didn't want to spend more time on it since all the models I had were uint8/int8 :)

Thank you for your answer and your work!
I imagine the work it can be !


Missing Path Parameters leading to API Version error

As seen in #803 and #805, in cases where there are missing arguments to path parameters, a misleading error comes back complaining about the API Version. I believe this is due to the fact that you end up hitting an ARM Resource endpoint instead of a particular subdomain, and the ARM Resource service will have it's own API Version expectations. As evidence of that, consider that the API Versions that are reported back don't match those of compute or network, but do match ARM's.
To prevent returning back a misleading error, we could add validation before the request is sent to ensure that Path items are not empty or at least that Resource Group is not empty.

@jhendrixMSFT  please syncup and handoff to @vladbarosan

This issue I would say is not Go SDK specific. I opened 2 new issues for the changes I am doing ( Azure/azure-rest-api-specs#1918 and  Azure/azure-rest-api-specs#1919 ) . I would close this as a duplicate.

duplicate of Azure/azure-rest-api-specs#1918


Handle scrolling correctly in Tree controls inside ScrollContainers

The same was done with other controls like ItemList here https://github.com/godotengine/godot/commit/01491aaf3235475353c16cf0c664d0ed4a81a8c2

Thanks!


⚠ Bofrost.be has degraded performance

In c5583eb, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 2378 ms

Resolved: Bofrost.be performance has improved in 4d64e01.


Container daemon crashes while trying to process a DNS request

Description
The contained daemon has crashed while one of the containers was handling an HTTP request.
Here is the panic log.
Steps to reproduce the issue:
I was not able to reproduce the issue.
Describe the results you received:
Container daemon panicked.
Describe the results you expected:
I'd expect the container daemon to not to crash.
Additional information you deem important (e.g. issue happens only occasionally):
This was the first time it happened, never experienced this issue before.

You are on a really old version of Docker.
I believe 1.11.2 is the most current in the 1.11 branch if you could try that, although realistically we don't backport patches to older releases right now... so giving 1.12.3 a try may be better.
This is likely already fixed, but pinging @sanimej anyway.

This was reported in #22081 and has been fixed in 1.11.1. Consider upgrading to 1.11.2 as suggested by @cpuguy83

Upgraded, thanks everyone!

Thanks!


feat: expose DoGet response headers & trailers

Which issue does this PR close?
-
Rationale for this change
HTTP/2 headers can already be sent by the client (and trivially by the server as part of the tonic::Response object). However the the client doesn't expose the response headers yet. They can include debug information like server version or other metadata.
Trailers are less commonly used but can include information that is only available AFTER the response stream finishes, e.g. "number of scanned files", "total rows read from files", etc. Tonic doesn't have a super nice way to write them from the server side, but a tower layer makes that possible. Also we have to consider non-Rust implementations that can make use of trailers.
People that read the HTTP/2 spec may wonder how headers and trailers are encoded in a stream scenario. Turns out that they have their own HEADERS message. The first HEADERS message transmit the HTTP headers, the last one at the stream end (w/ the END_STREAM flag set) the trailers. Now you may wonder if you could send headers mid-stream as well. Now the HTTP/2 spec doesn't seem to disallow that, but:

neither tonic and tower have a way to do that

this stackoverflow answer suggests that this is not allowed because HTTP itself has no semantic for that and indeed the HTTP/2 spec say:

This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax. HTTP's existing semantics remain unchanged.

This is also confirmed by this stackoverflow answer.

So I think metadata can only be sent at the beginning and at the end of a stream. Everything else would also be a bit of an API mess.
What changes are included in this PR?
Wires HTTP/2 headers and trailers into flight client DoGet method. Tests included.
Are there any user-facing changes?
New methods to get headers and trailers.

I can extend this to other client methods in follow-up PRs if this gets accepted.


Unchecked runtime.lastError: QUOTA_BYTES_PER_ITEM quota exceeded

MacBook Pro (16-inch, 2019)
macOS Catalina 10.15.6 (19G73)
Google Chrome 84.0.4147.135
CaretTab v3.0
If Quick Link List contains too many links, (64 links for example),  when "Save and close setting" button is clicked, chrome will throw an error like "Unchecked runtime.lastError: QUOTA_BYTES_PER_ITEM quota exceeded", save action takes no effect.

Thank you for the feedback. Unfortunately this is a limitation in the amount of data Chrome lets me save to the browser. It is not a hard limit though, it depends on what other settings you have as well.
There is not much I can do other than suggest using less quick links. I could also suggest using the bookmarks bar instead as that is also an option now, and that just pulls from your browser's bookmarks so there is no limit as far as the extension is concerned.

Older CaretTab can support more quick links.

I can see that, there are a lot more options I am saving in this new version which would decrease the amount of space available. I'm sorry but right now I do not plan to change this. If you would like to submit a pull request with changes that could resolve this I'd be more than happy to accept the help.


Add processName for Linux

This PR does two things:

sets default processName to MainProcess when not using multiprocessing as per logging which is not None by default..
sets the correct processName when using multiprocessing on Linux.

I suggest we can add these incrementally and this since this is by default a string I don't think we need to update any benchmarks. I did but did not see a significant difference.

Codecov Report

Merging #75 (372418f) into main (6f52f02) will increase coverage by 0.06%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main      #75      +/-   ##
==========================================
+ Coverage   88.57%   88.63%   +0.06%
==========================================
  Files          11       11
  Lines        2056     2067      +11
==========================================
+ Hits         1821     1832      +11
  Misses        235      235

Impacted Files
Coverage Δ

src/picologging/logrecord.cxx
86.63% <100.00%> (+0.76%)
:arrow_up:

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

Not sure why but I think the codecov comment is outdated, and this will not increase coverage.


Multi language not work google mlkit text recognition

google_mlkit_text_recognition not work multi language

Refer to comment: https://github.com/flutter-ml/google_ml_kit_flutter/issues/438#issuecomment-1574354576


Revert "feat: SOF integration"

Reverts projectawakening/world-chain-contracts#63

this still has v0.0.3 in it. except for that LGTM

@0xxlegolas yes, will revert more. This is the first of 3 reverts


Updating versioning guidelines to allow for bug fixes in patch releases

What type of PR is this?
/kind documentation
What this PR does / why we need it:
This updates versioning guidelines to allow for bug fixes in patch releases and creates a new docs page to mirror the GEP content. (This is part of the mitigation for https://github.com/kubernetes-sigs/gateway-api/issues/962).
Does this PR introduce a user-facing change?:
Clarification that bug fixes may be broader than just loosened validation.

/lgtm


⚠ ClamAV has degraded performance

In 05c5064, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 74 ms

Resolved: ClamAV performance has improved in e22e016.


[CT-209] [Bug] Error parsing env vars in on-run-start or on-run-end hooks

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
If the on-run-start or on-run-end hook contains jinja that calls the env_var function, the compilation will fail with an error like the following:
 Encountered an error:
'$PROJECT://./dbt_project.yml'

Expected Behavior
I would expect the compilation to succeed when using the env_var function.
Steps To Reproduce

Add an environment variable: export TEST_ENV_VAR="true"
Add that env var to the on-run-start as a jinja function call:

on-run-start:
  - "{{ env_var('TEST_ENV_VAR') }}"

Run dbt compile

Relevant log output
19:42:41.432145 [debug] [MainThread]: Flushing usage events
19:42:41.432955 [error] [MainThread]: Encountered an error:
'bug_test://./dbt_project.yml'
19:42:41.439341 [debug] [MainThread]: Traceback (most recent call last):
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/main.py", line 127, in main
    results, succeeded = handle_and_check(args)
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/main.py", line 192, in handle_and_check
    task, res = run_from_args(parsed)
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/main.py", line 246, in run_from_args
    results = task.run()
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/task/runnable.py", line 454, in run
    self._runtime_initialize()
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/task/runnable.py", line 156, in _runtime_initialize
    super()._runtime_initialize()
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/task/runnable.py", line 94, in _runtime_initialize
    self.load_manifest()
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/task/runnable.py", line 81, in load_manifest
    self.manifest = ManifestLoader.get_full_manifest(self.config)
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/parser/manifest.py", line 200, in get_full_manifest
    manifest = loader.load()
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/parser/manifest.py", line 326, in load
    parser_types
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/parser/manifest.py", line 482, in parse_project
    hook_parser.parse_file(file_block)
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/parser/hooks.py", line 119, in parse_file
    self.parse_node(hook)
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/parser/base.py", line 402, in parse_node
    self.render_update(node, config)
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/parser/base.py", line 377, in render_update
    context = self.render_with_context(node, config)
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/parser/base.py", line 268, in render_with_context
    parsed_node.raw_sql, context, parsed_node, capture_macros=True
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/clients/jinja.py", line 600, in get_rendered
    return render_template(template, ctx, node)
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/clients/jinja.py", line 549, in render_template
    return template.render(ctx)
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/jinja2/environment.py", line 1090, in render
    self.environment.handle_exception()
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/jinja2/environment.py", line 832, in handle_exception
    reraise(*rewrite_traceback_stack(source=source))
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/jinja2/_compat.py", line 28, in reraise
    raise value.with_traceback(tb)
  File "<template>", line 1, in top-level template code
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/jinja2/sandbox.py", line 462, in call
    return __context.call(__obj, *args, **kwargs)
  File "/Users/frankbertsch/repos/all-the-things/deployable/dbt/src/.venv37/lib/python3.7/site-packages/dbt/context/providers.py", line 1192, in env_var
    source_file = self.manifest.files[self.model.file_id]
KeyError: 'bug_test://./dbt_project.yml'

### Environment

```markdown
- OS: MacOS 11.5.2
- Python: Tested on 3.7.5 and 3.7.8
- dbt: 1.0.0

What database are you using dbt with?
snowflake
Additional Context
No response

Fixed with https://github.com/dbt-labs/dbt-core/pull/4524 - sorry for the noise! Upgrading to 1.0.1


Remove old jquery-ui files left behind in d1b2af36be4

Relates to #1197
Jquery-ui was updated in d1b2af36be4 leaving these behind - they don't seem to be used anywhere so let's remove them now.

r+ looks good to me.


CLOUDP-209691: Added OIDC and AWS IAM auth fields for AtlasDatabaseUser

All Submissions:
Added OIDC and AWS IAM auth fields for AtlasDatabaseUser

[x] Have you signed our CLA?
[ ] Put closes #XXXX in your comment to auto-close the issue that your PR fixes (if there is one).
[ ] Update docs/release-notes/release-notes.md if your changes should be included in the release notes for the next release.

Tests will be added today/tomorrow

@igor-karpukhin I see no explicit logic for handling these new fields on the Atlas side of things. Presumable this is because these fields are transparently copied via JSONCopy to Atlas fields?

LGTM but waiting for other comments to be revisited and the tests to pass

@igor-karpukhin I see no explicit logic for handling these new fields on the Atlas side of things. Presumable this is because these fields are transparently copied via JSONCopy to Atlas fields?

That's right. These values are just sent as is, without any processing.

Seems it needs a rebase


stale

@jodinathan Hello. No, this package currently has errors. I did not bother to correct them.


Add "Pronoun" custom profile field type

It is common for organizations to want to add a field for users to indicate their preferred pronouns (cf. #21214). At present, this can be done with a short text custom profile field.
We can make the experience nicer by creating a "Pronouns" custom profile field type, which will differ from a short text field in the following ways:

Label prefilled to "Pronouns" (can be edited).
Hint prefilled to "What pronouns should people use to refer to you?" (can be edited). (We can finalize the exact text when we're working on this.)
The profile field is free (short) text, but offers users typeahead suggestions for commonly used pronouns.
Once #21215 is implemented, the checkbox to show the field in the user's profile is on by default (can be turned off).

CZO discussion

@timabbott  Could we automatically migrate short text fields labeled "pronouns" to this new field type once it exists in order to add the typeahead?

I don't see any reason why not; though of course folks may choose different names for their field, so I'd plan that as a bonus change once we have the core feature done that involves a bit of research.

@zulipbot claim

@zulipbot claim

@zulipbot abandon

@zulipbot claim

Still working on this issue

@zulipbot claim

I am starting work on this.


Make sure local file handles are closed on error

Some changes are automatic style changes from vscode, moved opening the file after checks for force and existence to eliminate a few places and added some close calls in error cases.

Strictly speaking this would need error handling for the source.Close() calls again… 🤷♂ Sometimes finally {…} has it's appeal. 😎


how to create and register an Action Agent for ChatGPT

I try to build a custom Action Agent for ChatGPT that computes car's price based on current mileage and year made. I read a documentation online, but there is no complete example of how to do it. Can anyone provide a complete example? I followed the instructions on the links below, but could not make it work. Any help would be appreciated!
https://github.com/vocodedev/vocode-python/blob/main/docs/open-source/action-agents.mdx
https://github.com/vocodedev/vocode-python/blob/main/docs/open-source/agent-factory.mdx
https://github.com/vocodedev/vocode-python/blob/main/docs/open-source/create-your-own-agent.mdx

Please ignore the post. I look through the documentation and found the examples.

can you provide the solution please ?

@nphan20181 please can you provide the solution?


prematch api

And a folder for all requests and all responses is not cohesive. Better prematch/request prematch/response. Or prematch/sport (request/response)

What is the model package? Is it structures converted from response to simplify working?

Mainly, they are nested structures from the response XML tree, which contains requested data. Also, there are several common structures spread between responses (Names).
As Sergey said - it can be moved into API/common package. As we discussed it's reasonable to postpone this refactoring to the end of the SDK implementation.


pangraph is not on Hackage!

pangraph is sufficiently amazing, that its absence on hackage is.. noticeable! : -)
Are there plans for such a release?

Oh, wow, this is unexpected :-)
The library is in a very draft state at the moment -- I'm not sure it's ready to be used by others. We do use in our graph analysis project though and so far it was fit for our purpose.
@deepfire How do you intend to use it? I presume, to parse GraphML files, as I don't think pangraph can do anything else at this point.
@thisiswhereitype Do you plan to release the library on Hackage soon? If yes, we could discuss a release plan here. As a starting point, I'd advise to switch to an existing XML parser to ease future maintenance.

@snowleopard, GraphML parsing, indeed.  Although at the moment I'm discovering that things aren't quite that smooth in the GraphML land.. lack of a true standard being one.

@deepfire Yes, GraphML is a bit messy. Fortunately, in our project we only need to extract nodes and edges without any labels such as weight, etc. What are your requirements?

@snowleopard, ideally, I'd love to be able to use some generic, widely accepted graph format for knowledge representation -- but initially, "just" reading and writing yEd files would be exactly enough.

I see. Could you link to a precise definition of the yEd file format?

Here's what I managed to obtain:

http://www.yworks.com/xml/schema/graphml/1.1/doc/http___www.yworks.com_xml_graphml/index.html
http://yed.yworks.com/support/qa/5288/importing-graphml-with-labels
http://yed.yworks.com/support/qa/1663/generated-graphml-with-labels-and-layout
http://yed.yworks.com/support/qa/2991/appearance-of-graphml-primer-examples-in-yed -- context

Thanks! That looks like quite a lot of stuff...
The idea behind pandoc is to convert graphs between various formats, but since the overlap between all formats is very small -- just the connectivity info -- most of these conversions will be lossy. So, I'm not quite sure whether it makes sense to make a fully-featured parser for yEd a part of pandoc. I think it makes sense to have it as a separately maintained Hackage library, which will be used by pandoc to extract the transferable connectivity data.
@deepfire What do you think?

@snowleopard, personally, the interesting parts (outside the overlap you mention) are:

node coordinates & dimensions
plaintext node labels -- here are options, since yEd provides for multiple labels per node

Also, if I understand it correctly, the minimal transferable connectivity data is available as generic GraphML tags -- no yEd-specific nodes need to be descended into.

@deepfire Thanks! This sounds reasonable. Coordinates are useful for many graph representations, and so are node labels.
Let's wait for a response from @thisiswhereitype. I believe is currently in full exam mode :)

@deepfire  @snowleopard and I have discussed and agreed the library was not ready for release on Hackage as it is still in need of some polishing as mentioned briefly above. The yEd idea looks interesting but I must finish my exams before I can take time to code. Please let me know if you have any questions.

Just to document here the list of things to be done before the release:

[ ] Switch to an existing XML library.
[ ] Switch the API from Strings to ByteStrings.
[ ] Make pangraph datatypes abstract, isolating them from users, i.e. have nodes :: Pangraph -> [Node], and nodeLabel :: Node -> ByteString etc. to access the graph.
[ ] Implement yEd parsing as a useful test case.

I have been investigating how to implement the successor to the Graph types in my rewrite considering the above comment. I was thinking data Pangraph = Graph [Node] [Arc] where Node Arc are just a list of ByteString attributes. But is Data.Array a viable option as it can avoid indexing a O(n) list which would allow the library to operate on a large graph?
Also I encountered a few negative opinions about ByteString :
https://mail.haskell.org/pipermail/haskell-cafe/2010-August/082033.html
http://stackoverflow.com/questions/7357775/text-or-bytestring
Considering this is it worth providing interfaces to multiple string types? While still working with ByteString underneath due to its speed.

The string landscape will change really, really drastically, once Backpack arrives -- due to a whole new dimension of modularity, so a personal guess is that it's not worth the added complexity for now.

Another point is that arrays are more-or-less awful for arbitrary mutation, whereas maps are better -- and Data.IntMap is particularly good -- IIRC it's very optimized.

I will just use a ByteString interface for now, can always add more if needed. Reading about Int.Map it seems there will speed gains there. My concern was how will this effect the API but looking through Int.Map has toList methods.

I will just use a ByteString interface for now, can always add more if needed

@thisiswhereitype Sounds like a good plan.

My concern was how will this effect the API

As a first step I suggest to stick to the API I described here: https://github.com/tuura/pangraph/issues/7#issuecomment-274069387
Do the simplest useful thing first. You can expand later if need be, plus we'll iterate during the code review.

I have been working on the agreed plan and after trying out ideas I have today committed the core types and getters API. https://github.com/thisiswhereitype/pangraph/blob/rewrite/src/Pangraph.hs
I have had a good go at using Hexml and Bytestring. Both of which I am working on to implement.

I have another commit up on my development branch. The Pangraph API is updated with the discussion on the previous commit. Due to git being hard I also committed the some other parts I was working on. My plan is to abstract the concept of parsing an XML based file into an internal API for extracting a Pangraph type from it. This will take a little longer then writing a parser for Hexml -> Pangraph for graphML but it should hopefully save time in the long run for implementing other XML graph formats.

I have just released a commit to my branch which meets the following agreed goals. Namely:

[ x] Switch to an existing XML library.
[ x] Switch the API from Strings to ByteStrings.
[ x] Make pangraph datatypes abstract, isolating them from users, and using nodes :: Pangraph -> [Node], and nodeLabel :: Node -> ByteString etc. to access the graph.
[ ] Implement yEd parsing as a useful test case.

It should be quick to add a parse template for Workcraft and I will investigate yEd. Also I need to rewrite most of the readme and Haddock seems to be necessary for a Hackage release.   @deepfire @snowleopard

@thisiswhereitype This is a good start, but I've added a bunch of comments to your commit here:
https://github.com/thisiswhereitype/pangraph/commit/30f9f45381d42261fb4dc22fe8f7d445aa2cfada

I have addressed the all the comments on the commit except the abstraction of Attributes, Keys and Values Which I will do next. Also related is discussion ongoing in #11 regarding algebraic graphs.

https://hackage.haskell.org/package/pangraph :tada:

Congratulations!


libspdm_check_request_flag_compability() wrongly checked cert_cap

https://github.com/DMTF/libspdm/blob/main/library/spdm_responder_lib/libspdm_rsp_capabilities.c#L99
        if ((cert_cap == 1) || (pub_key_id_cap == 1)) {
...
        } else {
            /* If certificates or public keys are not enabled then these capabilities
             * cannot be enabled. */
            if ((chal_cap == 1) || (key_ex_cap == 1) || (mut_auth_cap == 1)) {
                return false;
            }
        }
    }

I dont think key_ex_cap == 1 should be there.  cert_cap == 1 is only for mutual auth.

I guess that such flag check should be needed since the slotID field is included in key_ex request and challenge although the slotID field is used only when mutual authentication is performed. Is it right?

Additionally, I think some flag check should be changed
In request capability compability check https://github.com/DMTF/libspdm/blob/main/library/spdm_responder_lib/libspdm_rsp_capabilities.c#L48,
-        if ((key_ex_cap == 0) && (psk_cap == 1)) {
-            if (handshake_in_the_clear_cap == 1) {
+        if ((key_ex_cap == 0) && (handshake_in_the_clear_cap == 1)) {
                 return false;
-            }
         }

becasue handshake_in_the_clear_cap is ignored in PSK case.
And, ((mut_auth_cap == 1) && (encap_cap == 0)) should also be checked in version 1.2 because mutual authentication is included in Session-based mutual authentication although basic mutual authentication is deprecated.
Then, ((meas_cap != 0) || (meas_fresh_cap != 0)) checking should be added for version 1.1

In responder's compability check, I have some suggestions.
https://github.com/DMTF/libspdm/blob/main/library/spdm_requester_lib/libspdm_req_get_capabilities.c#L18
The first is
     if (version == SPDM_MESSAGE_VERSION_10) {
-        /* If measurements are not signed then CERT_CAP must equal CHAL_CAP.
-         * If measurements are signed then CERT_CAP must be set. */
-        if ((meas_cap == 0) || (meas_cap == 1)) {
-            if (cert_cap != chal_cap) {
+        if (cert_cap == 0) {
+            if ((meas_cap == 2) || (chal_cap == 1)) {
                 return false;
             }
-        } else if (meas_cap == 2) {
-            if (cert_cap == 0) {
+        }
+        else {
+            if ((meas_cap != 2) && (chal_cap == 0)) {
                 return false;
             }
         }

The second is also
-        if ((key_ex_cap == 0) && (psk_cap == 1)) {
-            if (handshake_in_the_clear_cap == 1) {
+        if ((key_ex_cap == 0) && (handshake_in_the_clear_cap == 1)) {
                 return false;
-            }
         }

Lastly, for version 1.2
+        if ((pub_key_id_cap == 1) && (alias_cert_cap == 1)) {
+            return false;
+        }

should be added

@mcsmonk Feel free to open a new issue for those enhancements.

In https://github.com/DMTF/libspdm/blob/5de7be03b0ef17c3c8865f313e5b06d687b56daf/library/spdm_responder_lib/libspdm_rsp_capabilities.c#L70-L80 the (mut_auth_cap == 1) is also a bug, since chal_cap == 1 && key_ex_cap == 0 && psk_cap == 0 && mut_auth_cap == 1) is a legal combination, even if it is deprecated.

In
https://github.com/DMTF/libspdm/blob/5de7be03b0ef17c3c8865f313e5b06d687b56daf/library/spdm_responder_lib/libspdm_rsp_capabilities.c#L70-L80
the (mut_auth_cap == 1) is also a bug, since chal_cap == 1 && key_ex_cap == 0 && psk_cap == 0 && mut_auth_cap == 1) is a legal combination, even if it is deprecated.

I totally agree with this.
But, in below case,

https://github.com/DMTF/libspdm/blob/main/library/spdm_responder_lib/libspdm_rsp_capabilities.c#L99
        if ((cert_cap == 1) || (pub_key_id_cap == 1)) {
...
        } else {
            /* If certificates or public keys are not enabled then these capabilities
             * cannot be enabled. */
            if ((chal_cap == 1) || (key_ex_cap == 1) || (mut_auth_cap == 1)) {
                return false;
            }
        }
    }

I dont think key_ex_cap == 1 should be there. cert_cap == 1 is only for mutual auth.

although cert_cap means only that requester support DIGEST and CERTIFICATE response message, responder's pub_key_id_cap must be needed to set for requester to verify the signature of the KEY_EXCHANGE response message and this implies that requester support to capability which treats certification related to cert_cap or pub_key_id_cap literally

This was fixed by #1616.

@steven-bellock  Can I get the answer of why key_ex_cap be excludede?

https://github.com/DMTF/libspdm/blob/main/library/spdm_responder_lib/libspdm_rsp_capabilities.c#L99
        if ((cert_cap == 1) || (pub_key_id_cap == 1)) {
...
        } else {
            /* If certificates or public keys are not enabled then these capabilities
             * cannot be enabled. */
            if ((chal_cap == 1) || (key_ex_cap == 1) || (mut_auth_cap == 1)) {
                return false;
            }
        }
    }

I dont think key_ex_cap == 1 should be there. cert_cap == 1 is only for mutual auth.

although cert_cap means only that requester support DIGEST and CERTIFICATE response message, certificate-related capability must be needed for requester to verify the signature of the KEY_EXCHANGE response message and this implies that requester support to capability which treats certification related to cert_cap or pub_key_id_cap literally

Requester's CERT_CAP==1 means that the Responder can GET_CERTIFICATE from the Requester. There's no Requester capability that states the Requester can GET_CERTIFICATE from the Responder.


git.publish ask for remote if only one is setup

VSCode Version: 1.16.1
OS Version: Linux

Steps to Reproduce:

Create project with git setup and just one remote.
Execute git.publish
QuickPick is shown with the one configured remote

I would suggest to skip the quickpick if there is just one remote. It would simplify the UX of git.pubish.

Would you like to attempt a PR?

Sure :relaxed:


Tutorial: Add new command 'remark'

Tutorial 2 - Adding a new Command
Added a new command 'remark'

Codecov Report

Merging #2 (76a43a6) into master (510485a) will decrease coverage by 0.54%.
The diff coverage is 61.33%.

@@             Coverage Diff              @@
##             master       #2      +/-   ##
============================================
- Coverage     72.15%   71.61%   -0.55%
- Complexity      399      409      +10
============================================
  Files            70       73       +3
  Lines          1232     1293      +61
  Branches        125      131       +6
============================================
+ Hits            889      926      +37
- Misses          311      334      +23
- Partials         32       33       +1

Impacted Files
Coverage Δ

.../seedu/address/logic/parser/AddressBookParser.java
88.88% <0.00%> (-11.12%)
:arrow_down:

...in/java/seedu/address/logic/parser/ParserUtil.java
92.10% <0.00%> (-5.12%)
:arrow_down:

...eedu/address/logic/parser/RemarkCommandParser.java
0.00% <0.00%> (ø)

src/main/java/seedu/address/ui/PersonCard.java
0.00% <0.00%> (ø)

.../java/seedu/address/model/util/SampleDataUtil.java
25.00% <14.28%> (+5.00%)
:arrow_up:

...c/main/java/seedu/address/model/person/Remark.java
62.50% <62.50%> (ø)

...va/seedu/address/logic/commands/RemarkCommand.java
70.83% <70.83%> (ø)

...java/seedu/address/logic/commands/EditCommand.java
97.22% <100.00%> (+0.20%)
:arrow_up:

...a/seedu/address/logic/parser/AddCommandParser.java
100.00% <100.00%> (ø)

...a/seedu/address/logic/parser/ArgumentMultimap.java
100.00% <100.00%> (ø)

... and 6 more

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 510485a...76a43a6. Read the comment docs.


Fix/ins 1660 tooltip issues

Fixes tooltip positioning and open/close state issues.
Highlights:

Adds react-aria to make the tooltip accessible and handle positioning
Removes the usage of insomnia-components tooltip. Kept out of scope completely removing it since it's used by other insomnia-components internals.

React-Aria pros/cons

It took some time to read upon code of react-stately as it didn't seem to have good documentation. It's a cool headless UI, I have to admit.
One interesting thing I discovered though is captured here:
https://www.loom.com/share/7595338814c7478099b2c94bbcd8153b. The video demonstrates some delay to actually pop a tooltip popover. However once it is open, you can switch between different tooltip blocks and show tooltip popovers immediately.
I wonder if we should discuss what benefits this library would entail. I am looking at it positively, but how will we incorporate theme context with this for instance? Will it ever have a conflict if we put all the design tokens into the theme context/provider and read from it?

I wonder if we can shorten the delay time to display but that is just my personal opinion.

Good one! Moving to a function component I didn't keep the default value of 400ms.
Did some quick search in the codebase and we seem to have different delay values for our tooltips (400/500/800/1000 ms). I don't see any reason for having different delays but will keep it out of this PR's scope to fix them and do some research before updating this.


Bugfix Yahoo API

changes behaviour to use screen grabbing
open points on new implementation:

Convert currencys
work with fx

Changed according to review


Pulumi refresh does not detect resource name changes due to letter casing differences

What happened?
When there is a difference in letter casing in a resource's name, the pulumi refresh command does not detect it. The pulumi refresh command should recognize such changes and synchronize the stack with the resource name in Azure.
Example

Define a Log Analytics workspace in Azure named "lawTestService".
Define the stack containing the same resource, but with different letter casing in the workspace name, such as:
"workspaceName": "lawtestservice".
Run pulumi refresh in the command line – no changes are detected.

Expected behavior
The workspace name in the stack should be overwritten to "lawTestService" and synchronized with the name defined in the Azure provider.
Output of pulumi about
running 'dotnet build -nologo .'
  Determining projects to restore...

  All projects are up-to-date for restore.

C:\Users\cerma\.nuget\packages\microsoft.codeanalysis.netanalyzers\7.0.4\build\Microsoft.CodeAnalysis.NetAnalyzers.targets(593,5): warning : The .NET SDK has newer analyzers with version '8.0.0' than what version '7.0.4' of 'Microsoft.CodeAnalysis.NetAnaly
zers' package provides. Update or remove this package reference. [C:\Sources\NetCoreBoilerplate\infrastructure\Ori.NetCoreBoilerplate.Infrastructure\Ori.NetCoreBoilerplate.Infrastructure.csproj]

  Ori.NetCoreBoilerplate.Infrastructure -> C:\Sources\NetCoreBoilerplate\infrastructure\Ori.NetCoreBoilerplate.Infrastructure\bin\Debug\net8.0\Ori.NetCoreBoilerplate.Infrastructure.dll

Build succeeded.

C:\Users\cerma\.nuget\packages\microsoft.codeanalysis.netanalyzers\7.0.4\build\Microsoft.CodeAnalysis.NetAnalyzers.targets(593,5): warning : The .NET SDK has newer analyzers with version '8.0.0' than what version '7.0.4' of 'Microsoft.CodeAnalysis.NetAnalyzers' package provides. Update or remove this package reference. [C:\Sources\NetCoreBoilerplate\infrastructure\Ori.NetCoreBoilerplate.Infrastructure\Ori.NetCoreBoilerplate.Infrastructure.csproj]
    1 Warning(s)
    0 Error(s)

Time Elapsed 00:00:00.86

Workload updates are available. Run `dotnet workload list` for more information.

'dotnet build -nologo .' completed successfully
CLI
Version      3.133.0
Go Version   go1.23.1
Go Compiler  gc

Plugins
KIND      NAME          VERSION
resource  azure         5.78.0
resource  azure-native  2.42.1
resource  azuread       5.50.0
resource  azuredevops   3.1.1
language  dotnet        unknown

Host
OS       Microsoft Windows 11 Pro
Version  10.0.22631 Build 22631
Arch     x86_64

This project is written in dotnet: executable='C:\Program Files\dotnet\dotnet.exe' version='8.0.402'

Current Stack: organization/NcBoilerplateInfrastructureStack/we.uat

TYPE                                                      URN
pulumi:pulumi:Stack                                       urn:pulumi:we.uat::NcBoilerplateInfrastructureStack::pulumi:pulumi:Stack::NcBoilerplateInfrastructureStack-we.uat
pulumi:providers:azure-native                             urn:pulumi:we.uat::NcBoilerplateInfrastructureStack::pulumi:providers:azure-native::azure-native-tenant-e46bc88e-1a4b-44ff-a158-1b9f7eb4561e-subscription-bf92e86b-7b0b-4d78-8785-c104ce8ffaf4
pulumi:providers:azure                                    urn:pulumi:we.uat::NcBoilerplateInfrastructureStack::pulumi:providers:azure::azure-tenant-e46bc88e-1a4b-44ff-a158-1b9f7eb4561e-subscription-bf92e86b-7b0b-4d78-8785-c104ce8ffaf4
azure-native:resources:ResourceGroup                      urn:pulumi:we.uat::NcBoilerplateInfrastructureStack::azure-native:resources:ResourceGroup::rgncboilerplateuatwe-online
azure-native:operationalinsights:Workspace                urn:pulumi:we.uat::NcBoilerplateInfrastructureStack::azure-native:operationalinsights:Workspace::lawncboilerplateuatwe-online

Found no pending operations associated with we.uat

Backend
Name           Pavel-PC
URL            azblob://frameworks
User           PAVEL-PC\cerma
Organizations
Token type     personal

Dependencies:
NAME                           VERSION
Ori.Common.Analyzers.CSharp    7.0.2
Ori.Common.Analyzers.Security  5.0.1
Ori.Common.Pulumi              0.1.35

Additional context
Although pulumi refresh does not detect changes in letter casing, pulumi up does and attempts to replace the resource.
Contributing
Vote on this issue by adding a 👍 reaction.
To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

@cermakp thanks for writing this up. Please could you provide a minimal example program of the "before" and "after" programs that we can run to reproduce the issue and use as a basis of the investigation.
It's quite likely that this behaviour is coming from the upstream terraform provider though, so might be best to raise an issue on their side. There have been a number of new versions since v5.78.0 (including a major version) which might be worth testing first to see if this has already been addressed.

Hi @danielrbradley ,
You will find an example of the application here. The program defines a single resource group with a log analytics workspace inside it.
Here are the steps to reproduce the issue:

Create a new stack running the program. The log analytics workspace name will be lawPulumiRefreshSample

Open the stack definition file and manually change the workspace name to lawPulumiRefreshSAMPLE. This simulates a scenario where the resource name differs between the stack and Azure.

Run the pulumi refresh command in the terminal. You'll notice that the refresh command does not detect the difference in letter casing.

Run the pulumi up command in the terminal. The up command correctly detects the letter casing difference.We expect that the pulumi refresh command should detect the difference in letter casing and synchronize the name from Azure to the stack.

Thanks for the extra detail. This is very helpful.
Firstly, it looks like you're using the Natvie provider rather than the classic provider? If so, I'll transfer this issue.
I think this might be related to refresh only affecting outputs and not the inputs, but will likely need further diagnosis to understand the scenario fully.
How does this currently impact your use of the tool? It looks like doing another up resolves the discrepancy?


Fails on pixelbook go

Preflight generates the error in fimage-210528:
BUG: An internal command error occurred.
Could not run 'lspci'
Caused by:
No such file or directory (os error 2)
None of the files seemed to land in my linux container in a way they could be executed. Had to chmod -R 1777 * -
Then got this error: emulator: Android emulator version <IP_ADDRESS> (build_id ) (CL:N/A)
emulator: ERROR: can't find the emulator executable.

Same here on a different chomebook. You can get past lspci by installing pciutils, but it'll eventually fail.

Can you send a screenshot of the error?

In my case there is no error. It just never launches. Perhaps my Chromebook just isn't good enough and I also wasn't able to run it off the GPU.
I'll just try again some other day, maybe off a live Ubuntu system

Mayby try installing dnsmasq with sudo apt install dnsmasq if you don't have it installed it caused me problems before.


Restricting calendar timeline just for a day.

Is there a way though which I can restrict the calendar timeline only for a day? And the toggle cycles only through the day view and hour view.
Also, similar functionality for restricting a week?
What kind of issue are you experiencing?

[ ] Bug
[x] Feature Request
[x] Question

Yep, you can likely do this using a few props:
visibleTimeStart and visibleTimeEnd - https://github.com/namespace-ee/react-calendar-timeline#visibletimestart-and-visibletimeend
minZoom - https://github.com/namespace-ee/react-calendar-timeline#minzoom
maxZoom - https://github.com/namespace-ee/react-calendar-timeline#maxzoom
timeSteps - https://github.com/namespace-ee/react-calendar-timeline#timesteps
With timeSteps, just specify 0 for the units you don't want to zoom to.

I meant, just for a day and not an entire month or a year.

So the max zoom you want is one day? You can use the min/maxZoom prop.
Here's a related bug to zoom though: https://github.com/namespace-ee/react-calendar-timeline/issues/279

I'm into this.
I've set both minZoom and maxZoom to the same value (a month), assuming this would keep the view as "fixed".
Instead, the default view is not set to maxZoom, and when clicking the header renders a different range of time, ignoring minZoom.
My goal is to render a view only by month (and move on the calendar by month as well)

I made my component look like this:
function App() {

    const defaultTimeStart = moment().startOf('day');
    const defaultTimeEnd = moment().endOf('day');

    const defaultTimeRange = defaultTimeEnd - defaultTimeStart;

    return (
        <div>
            <Timeline
                minZoom={defaultTimeRange}
                maxZoom={defaultTimeRange}
                visibleTimeStart={defaultTimeStart}
                visibleTimeEnd={defaultTimeEnd}
                groups={groups}
                items={items}
                onTimeChange={(_start, _end, updateScrollCanvas) => {
                    updateScrollCanvas(
                        moment(defaultTimeStart).valueOf(),
                        moment(defaultTimeEnd).valueOf(),
                    );
                }}
            />
        </div>
    );
}

But that is not the only change you need to do, we need to change the CSS too:
.react-calendar-timeline .rct-scroll{
  overflow-x: hidden !important;
}

Credits: The SO answer.


Markdown-here is not compatible with Thunderbird >= 60.0

After updating Thunderbird, Markdown-here plugin gets deactivated because has not been ported to Thunderbird >= 60.0.

See #495.


[DNM] Update binaries

Generated by developer/images/dependencies-update/hack/bin/update.sh

/retest

/retest

/test pipeline-service-update-dependencies

/retest

/retest

@xinredhat Are we good on the Go version update? Or should it be frozen?

@Roming22 I think we are good on the Go version update. lets see the CI results.

/retest


Rename copyright notice to have markdown extension.

Seems to formatted as markdown, so rename to end in '.md'.

e.g. https://github.com/kickstarter/ios-oss/blob/frewsxcv/notice-markdown/NOTICE.md


Is there any example for linux c++ API?

Currently I try to inference the onnx model in c++ with ubuntu18, but I did not find any tutorial.

Currently I try to inference the onnx model in c++ with ubuntu18, but I did not find any tutorial.

Coincidentally, I have add some c++ demo in my repo, such as YoloV5.

Currently I try to inference the onnx model in c++ with ubuntu18, but I did not find any tutorial.

Coincidentally, I have add some c++ demo in my repo, such as YoloV5.

Thank you !


Make PHPunit setup more robust outside of VVV

Is your feature request related to a problem? Please describe.
Running the supplied bin/install-wp-tests.sh within VVV works, but this takes probably the 'happiest' path through the script.
It looks like this started out as a copy of the script from WP CLI Scaffold Command which has since also received some updates that fix the sed problems on Mac OS.
Features which would be great

use the system temp directory
ensure the paths are all correct and do not feature trailing slashes, even if set via environment variables
fix sed command syntax for darwin machines
update the download logic to deal with betas and RC's like in the above linked script

Describe the solution you’d like
PR will be submitted to resolve all issues
Describe alternatives you’ve considered
Can use in VVV, this is for people running things like laravel valet etc, overall it makes it more robust to run anywhere.
Additional context

@aj-adl's PR #1983 was worked on in #1995 which we merged in


[Doc] add explanations for time-based backlog quota

Add docs for https://github.com/apache/pulsar/pull/10093

@MarvinCai @Huanli-Meng can you help review? Thanks

/pulsarbot run-failure-checks


Certain Layers Aren't Visible at Lower minZoom Levels

No matter what value I set my minZoom level for certain layers, they still aren't visible until a higher level in the Maputnik editor.  "railway" is a perfect example of this:  I set my minZoom to level 8, but railway layers don't materialize until Level 11.  Level 11 would be fine for my map, but when I load it in tileserver-gl-light, it doesn't render there until level 14.
Another instance is with "water."  Certain bodies of water are shown properly in the Maputnik editor at zoom level 11, but when that style file is run with tileserver-gl-light they're shown as thin blue lines until level 13 where they become normal, wide bodies of water.
I didn't see this behavior when using my previous Mapbox OSM-Bright style with tileserver-gl-light.  Am I missing some sort of configuration change after the switch to OpenMapTiles?

I just discovered that this issue was previously handled by OpenMapTiles #146 (which is why it's visible at Zoom level 11 in Maputnik) and I can't see that change because I'm working off of an outdated (11/28/2016) mbtiles file.


Left align Text & Button don't align

Button wrapping td is 30px
While other elements are 25px
??

Yes, default padding on button is higher than other mjColumnElement. I guess we can standardize that..

Awesome. Thanks for fast response :muscle:

It will be good in the next 1.3 release !

1.3 is now available on npm !


Code 404

Sometimes web servers return 404 code from script but never from the browser in the same url, I think that it is possible because the script don´t send user-agent
sorry for my english

The script should always be sending a random legitimate-looking user-agent. Could you please provide an example or packet capture where it isn't? Thanks.

Not sure if I'm correct, but check the url for "Spaces". The browsers automatically replaces spaces with "%20", while, the script may not do so. That could also be the reason you're getting 404. If some website is checked user-agent and stuff, chances are that you'll get 403, but not 404. I may be wrong here though. Just double check your url.

Sorry , I have been disconnect from some days , I must to delete 1 character at the end of line "%20"
Thanks for the help


Is Flutter getstorage safe?

Hello everyone, as far as I see, get storage uses file manager to store data. I store some sensitive data and no one should be able to access it. In this case, will it be safe for the get storage package to store files openly in this way?

Absolutely no
To increase the security. there two option:

If you want to achieve the fastest and best performance db then you can keep to use the Get Storage, but you still need flutter_secure_storage to store the private key that will be used to encrypt and decrypt data that you save on GetStorage. That means, you need more time to achieve this.
If you only want to store the data safely and write/read time is not that important. just use flutter_secure_Storage directly.

class GsService extends GetxService {
  Future<GsService> init() async {
    final dir = await getApplicationSupportDirectory();
    for (var box in ListBox.values) {
      GetStorage(box.name, dir.path);
      GetStorage.init(box.name);
    }
    return this;
  }
}

enum ListBox { profile, setting }

// use
final GetStorage settings = GetStorage(ListBox.setting.name);
final GetStorage profile = GetStorage(ListBox.profile.name);

Not at all
If you find safe package for store data than i prefer flutter_secure_storage
It uses platform-specific secure storage solution
Key Features:
Stores key-value pairs securely.
Data is encrypted automatically.
Ideal for sensitive data like tokens, passwords, or user credentials.


cert-manager DDoSes DNS-01 solver - infinite rate limiting

Describe the bug:
When a certificate request is in read=false state, cert-manager contacts the DNS-01 API of my DNS service (digitalocean) in 150ms intervals which will inevitable lead to rate-limiting with no chance of automatic recover.
This leads to a situation where certificates running in production cannot be renewed and customers cannot connect to our services!
Certificaterequest:
NAMESPACE          NAME                             APPROVED   DENIED   READY   ISSUER             REQUESTOR                                         AGE
cert-manager       cluster-cert-ms8mt               True                False   letsencrypt-prod   system:serviceaccount:cert-manager:cert-manager   12d

Logs:
0721 08:42:41.579156       1 controller.go:167] "cert-manager/challenges: re-queuing item due to error processing" err="GET https://api.digitalocean.com/v2/domains/ai/records: 429 (request \"75f385ed-a803-4d77-acf5-a0f457fb0597\") Too many requests" key="cert-manager/cluster-cert-ms8mt-821875013-78874098"
E0721 08:42:41.732194       1 controller.go:167] "cert-manager/challenges: re-queuing item due to error processing" err="GET https://api.digitalocean.com/v2/domains/ai/records: 429 (request \"3442c50f-d3d1-42ff-852d-95bab3d164b2\") Too many requests" key="cert-manager/cluster-cert-ms8mt-821875013-78874098"
E0721 08:42:41.860402       1 controller.go:167] "cert-manager/challenges: re-queuing item due to error processing" err="GET https://api.digitalocean.com/v2/domains/ai/records: 429 (request \"245897de-3f4b-4d42-bc67-a010b2b95e5f\") Too many requests" key="cert-manager/cluster-cert-ms8mt-821875013-78874098"
E0721 08:42:41.988999       1 controller.go:167] "cert-manager/challenges: re-queuing item due to error processing" err="GET https://api.digitalocean.com/v2/domains/ai/records: 429 (request \"f0cd3e16-ce62-4772-b727-55038f35629c\") Too many requests" key="cert-manager/cluster-cert-ms8mt-821875013-78874098"
E0721 08:42:42.120888       1 controller.go:167] "cert-manager/challenges: re-queuing item due to error processing" err="GET https://api.digitalocean.com/v2/domains/ai/records: 429 (request \"c071a5a9-17b8-4e89-8a94-86571d91a0cc\") Too many requests" key="cert-manager/cluster-cert-ms8mt-821875013-78874098"
E0721 08:42:42.251326       1 controller.go:167] "cert-manager/challenges: re-queuing item due to error processing" err="GET https://api.digitalocean.com/v2/domains/ai/records: 429 (request \"781348f3-db55-41df-9a6f-09f7c01e2cc4\") Too many requests" key="cert-manager/cluster-cert-ms8mt-821875013-78874098"
E0721 08:42:42.382286       1 controller.go:167] "cert-manager/challenges: re-queuing item due to error processing" err="GET https://api.digitalocean.com/v2/domains/ai/records: 429 (request \"dc1ac01c-5ba7-4738-8d81-07d4cbf96c94\") Too many requests" key="cert-manager/cluster-cert-ms8mt-821875013-78874098"
E0721 08:42:42.519240       1 controller.go:167] "cert-manager/challenges: re-queuing item due to error processing" err="GET https://api.digitalocean.com/v2/domains/ai/records: 429 (request \"bab25904-faf2-4802-98ee-cdecca3c39d8\") Too many requests" key="cert-manager/cluster-cert-ms8mt-821875013-78874098"

Expected behaviour:

I expect cert-manager to respect 429 errors and slow down / stopping the bombardment with requests!
Also it would be great if cert-manager could react to response headers like retry-after as per ACME spec to find a timeslot when the request can be retried.
Steps to reproduce the bug:

Run into rate-limit once while a unfinished DNS request is present and there you go.
Environment details::

Kubernetes version: 1.26
Cloud-provider/provisioner: self-hosted
cert-manager version: v1.12.1
Install method: helm

/kind bug

same issue here, how can we solve this?

Same issue. Any update?

I am also running into this issue, any updates on this?

Any updates

+1

in my specific case there was an issue with DNS and it not being able to resolve the DNS challenge successfully, and to keep retrying. I ended up working around this to set an external DNS from google and cloudflare.
I installed CertManager via helm and gave it the following flags, after which i stopped running into problems:
extraArgs: ['--dns01-recursive-nameservers-only','--dns01-recursive-nameservers=<IP_ADDRESS>:53,<IP_ADDRESS>:53']
For the argo users:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: cert-manager
  namespace: argocd
  labels:
    app.kubernetes.io/name: cert-manager
spec:
  destination:
    name: ''
    namespace: cert-manager
    server: 'https://kubernetes.default.svc'
  sources:
    - chart: cert-manager
      repoURL: https://charts.jetstack.io
      targetRevision: v1.14.2
      helm:
        values: |
          installCRDs: true
          extraArgs: ['--dns01-recursive-nameservers-only','--dns01-recursive-nameservers=<IP_ADDRESS>:53,<IP_ADDRESS>:53']

/remove-lifecycle rotten
/remove-lifecycle stale

/remove-lifecycle stale

Related

https://github.com/cert-manager/cert-manager/issues/7234
https://github.com/cert-manager/cert-manager/issues/6308

Can someone provide a script/ explanation to reproduce this issue?

It's a somehow misconfigured certificate configuration. Hard to say what caused it, so it is also hard providing a "minimal example" as the log spam makes it really hard to get the actual error. The issue goes even further for me as i cannot at all (in my case via terraform) edit that domain entry anymore because of the rate limiting issue. A simple delay between retries should solve that issue imho.

In our case expired IAM credentials caused flooding of retries to AWS IAM. However, IAM has a significantly high request quota so the rate limit is not hit. If the same retry mechanism is used with Acme, then it’s the same code causing the flood of requests.
I decribed our issue here:

https://github.com/cert-manager/cert-manager/issues/7234#issuecomment-2301620262


fix: shebang required for exec format

This commit fixes the shebang required for exec format.

Closing to focusing only on the the main branch PR #8


[Character Sheet] Limited number of recordable skill tests

The limit of 4 skill tests for routine and difficult tests prevents routine tests for greed and hatred from being properly recorded (they are an exception to the rule and continue counting routine tests even after exponent 4)
It also prevents the 5th difficult test that is needed to advance to exponent 10 in any skill or attribute from being recorded.
And, aesthetically, the limit of 3 challenging tests, with the last bubble being already filled in, is confusing - as it can appear that there is a free test granted.
Thanks for taking this on!

Way I am thinking of implementing this is adding an option to tick the stat as an emotional attribute where it will continue calculating points needed.
Simple enough to add a fifth bubble for difficult.
Agree the already marked challenging bubble needs to go.

Fixed the limit and removed the challenging icon.
I will have a look into the routine marking for emotional stats.

https://github.com/Roll20/roll20-character-sheets/pull/3835

Really glad you added the fifth bubbles for all abilities. It looks so much nicer, and makes customised skill progression options a lot easier for house-ruling GMs like myself to handle.

Was close. Has been merged into main sheets on roll20.


Deprecate axom integer types

Deprecate axom integer types

This PR is a code deprecation.
It does the following (modify list as needed):

Adds the cmake AXOM_DEPRECATED_TYPES variable to allow staged removal of the deprecated types.
Guards the axom::int* types from Types.hpp, depending on the value of AXOM_DEPRECATED_TYPES.
Replaced all Axom use of the deprecated types with equivalent c++11 types.

AXOM_DEPRECATED_TYPES admits 3 values:

ERROR The deprecated types are removed and any use results in a compile error.  This is the eventual behavior.
WARN The deprecated types are supported, but with a deprecation warning.  This is the current default and is meant to motivate users to update their codes.
ALLOW The deprecated types are quietly allowed.

In a future date, we should set the default to ERROR and eventually remove the obsolete code and the AXOM_DEPRECATED_TYPES logic.
This PR resolves issue https://github.com/LLNL/axom/issues/223

@kennyweiss Correction to my earlier comment, which I deleted.  We would have to configure Axom with each of the 3 allowed values for AXOM_DEPRECATED_TYPES and check the presence/absence of the deprecation warnings.  To check that when the flag is set to ERROR, we would have to add a small test code that uses a deprecated type and expect its compilation fails.  I don't know if we currently have the logic to do that.

Thanks @gunney1 -- I think testing this by hand should suffice

Hey team.  Just a reminder.  I need another approval on this.  Thanks.


Issue #82: Added beadledom-json-common to beadledom-bom (3.x)

What was changed? Why is this necessary?
Explain the changes included in this request, and the reasons for them.
Added beadledom-json-common to the BOM to allow it's import with the BOM.
How was it tested?
Describe the strategy you used to validate these changes. For example, this should mention if you added unit/integration tests and summarize any manual testing you performed by running your branch locally or in a dev environment.
No functional changes.

This is bare minimum acceptable testing

[ ] mvn clean install -U

Reviewers

[ ] John Leacox
[ ] Sundeep Paruvu
[ ] Nimesh Subramanian
[ ] Supriya Lal
[ ] Brian van de Boogaard

Ran into some issues building 3.x, but I'm assuming that's just because it's under development. The changes are identical to PR #83. The build issue I ran into:
[ERROR] ----------------------------------------------------
[ERROR] .NET Assembly Analyzer could not be initialized and at least one 'exe' or 'dll' was scanned. The 'mono' executable could not be found on the path; either disable the Assembly Analyzer or configure the path mono. On some systems mono-runtime and mono-devel need to be installed.
[ERROR] ----------------------------------------------------

[ERROR] Failed to execute goal org.owasp:dependency-check-maven:3.1.0:aggregate (default) on project beadledom-parent: One or more exceptions occurred during dependency-check analysis: One or more exceptions occurred during analysis:
[ERROR] 	Failure to find com.cerner.beadledom:beadledom-configuration:jar:3.0-SNAPSHOT in http://repo.typesafe.com/typesafe/releases was cached in the local repository, resolution will not be reattempted until the update interval of typesafe-release has elapsed or updates are forced
[ERROR] 	Failure to find com.cerner.beadledom:beadledom-configuration:jar:3.0-SNAPSHOT in http://repo.typesafe.com/typesafe/releases was cached in the local repository, resolution will not be reattempted until the update interval of typesafe-release has elapsed or updates are forced
[ERROR] 	Failure to find com.cerner.beadledom:beadledom-configuration:jar:3.0-SNAPSHOT in http://repo.typesafe.com/typesafe/releases was cached in the local repository, resolution will not be reattempted until the update interval of typesafe-release has elapsed or updates are forced
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

^ Must've been a local issue since it succeeded on CI

For the 3.x PR I might just close it and rebase the 3.x branch off of master after merging your other PR that way 3.x always stays ahead of master until we release 3.0.

Sounds good to me! Thanks! 👍


Update repositories.txt

@ArduinoBot

Attempt to trigger a version update

Hello @italo-coelho. Both versions of the library are already available for installation from the Arduino Library Manager:

Once a library has been accepted into the Arduino Library Manager registry, all valid new releases will be picked up automatically, so there is no need to take any action in this repository for that. You can learn about it here:
https://github.com/arduino/library-registry/blob/main/FAQ.md#how-can-i-publish-a-new-release-once-my-library-is-in-the-list
Please let me know if you have any questions or problems.
Per


Calculating "last Wednesday", etc.

Reading the docs for the day setter, I see these examples:
moment().day(-7); // last Sunday (0 - 7)
moment().day(7); // next Sunday (0 + 7)
moment().day(10); // next Wednesday (3 + 7)
moment().day(24); // 3 Wednesdays from now (3 + 7 + 7 + 7)

These don't necessarily work consistently.  For example, consider:
moment('2015-07-29').day(6-7).format("YYYY-MM-DD (dddd)"); // "2015-07-25 (Saturday)"
moment('2015-07-29').day(0-7).format("YYYY-MM-DD (dddd)"); // "2015-07-19 (Sunday)"

I asked for "last Saturday", and "last Sunday" respectively.  Since the supplied date is a Wednesday, I would expect the results to only be a day apart (the 25th and 26th).
Consider also that we support .day("Sunday") in string format.  Both numeric and string forms would appear to prefer the current week - which is fine.  It's just the bubbling function of the numeric form that doesn't make logical sense.
I propose:

Remove the bubbling function.  Either modulo to the same day of week, or throw an error when out of range.
Add some new functions for getting the last/next instance of a day-of-week, perhaps with an optional n number of weeks (defaulting to 1).
Do the same thing with respect to locale-aware day of week functions and ISO day of week functions.
Update the docs accordingly.

I think the implementation makes sense -- we can imagine today being the Xth day of the week, and you request to set Y (might be negative/above 7). So we take the offset and move that many days up/down.
It depends on what is the begining of the week. If -7 means the Sunday of last week, then 0 means Sunday of this week, then week starts on Sunday. And if the week starts on Sunday (0), then this will be not the previous but the one before that.
So actually, if you want previous Sunday, you should do 7 - 7, and get 0, but note that 7 is Sunday for you, if the week starts at Monday, so its fine. You counted week start in one system, and expect the answer to be in another.
Also are your proposed functions based on actual need to compute something? You can take the beginning of  the week with a locale and do +/- 7  *  n + m. I don't think its that common to require specialization.

@ichernev - respectfully, I disagree.  If I want to determine "last Tuesday", it only matters the day of the week I'm starting from. It does not matter at all which day I choose to start my week.
The current function only allows one to choose a day "within the current week", or "within the previous week", or "within the next week".   That's quite different than saying "this Tuesday", "last Tuesday", or "next Tuesday".

Well, you're suggesting a change in semantics of the "last" and "next" words. To be fair

I'm pretty sure the meaning is different in different locales
People interpret them differently, in any case

If today is Monday, and somebody says next Tuesday, I'd assume the Tuesday of next week, but if it is Wednesday, I won't know if it was next week's Tuesday, or the one after that. If we use your semantics it should be next-next Tuesday.
We've had this discussion at least 3 times before. I can only agree on adding methods that handle both and let the users choose. Maybe in the future add locale option to specify the "default" for a locale, but that is a long stretch already.

All I'm saying is we don't have a reliable way to get the immediate-next or immediate-prior date matching the day-of-week.
How the week falls onto the calendar in the specific locale should not be relevant to this.

Related: http://stackoverflow.com/questions/34479079/how-do-i-find-last-monday-using-momentjs

I wanted to work on this.  Please guide me how to proceed. What should i know to figure out this issue?

I think that the current implementation of .day() is as expected (it's anchored within the current week, right?). But is there a need for a new method to get the last and the next day? I can imagine something like this:
So if we take the current date (2016-08-27):
// .lastDay(day, offset)
moment().lastDay("Friday").format("YYYY-MM-DD"); // "2016-08-26"
moment().lastDay("Friday", 1).format("YYYY-MM-DD"); // "2016-08-19" (offset 1 wk)

// .nextDay(day, offset)
moment().nextDay("Wednesday").format("YYYY-MM-DD"); // "2016-08-31"
moment().nextDay(3).format("YYYY-MM-DD"); // "2016-08-31"
moment().nextDay().format("YYYY-MM-DD"); // "2016-09-03"

So two similar methods that take two arguments, the day (defaults to current day one week from now) and the offset in weeks (defaults to 0).
If there's a place and need for this, I'd like to jump in create a PR for it – but I'm not sure if it's within the scope of moment.js.

@mj1856, is there still a need for this?

@mslooten I kinda like that API, but something about the wording seems a little of. To me, moment().nextDay() should give me tomorrow. I'm trying to think of a better thing to call it. Possibly just .next() and .last().
I think we would take this pull if the naming were cleaned up. Any ideas @mj1856 @ichernev @icambron @butterflyhug ?

I think that API would be a sensible feature addition.  I like the name .next(), and I think something like .previous() would be a clearer name than .last().

is this still open? would love to give this a shot! can someone give me an idea of how to start off?

I'm not sure if we're referring to the same problem, but I use this solution for getting the date for a specific day of the week. It involves using moment().startOf('week')
This will give you a Moment object for the Sunday that just passed. If you want the Sunday before that, you can subtract a week, and if you want the Sunday after that, you can add a week.
In this case, getting last Wednesday, if you mean Wednesday of last week, then you can

subtract a week from today
get the start of that week (this would give you the Sunday of that week)
add the appropriate amount of days for Sunday to Wednesday (Wednesday is 3 days away from Sunday, so +3 days)

Getting next Wednesday, (or Wednesday of next week), you can

add a week from today
get the start of that week (this would give you the Sunday of that week)
add the appropriate amount of days for Sunday to Wednesday (repeating step 3 from above)

See https://momentjs.com/docs/#/-project-status/


omnibus cache: simplify the build images handling

What does this PR do?
SImplify the build image handling when computing the cache key
Motivation
The existing approach could cause a cache miss including when the image for the currently running job didn't changed.
This is especially true now that multiple image version can be used independently of the others
Describe how you validated your changes

Possible Drawbacks / Trade-offs
Additional Notes

/merge


policy/modes - add pending to ec2-instance-state schema

resolves https://github.com/capitalone/cloud-custodian/issues/2772

Thanks, all is well again.  👍


Selectors: make file descriptors CInts everywhere

Motivation:
We and the OSes only support CInt as file descriptors. For some reason
we had interfaces that took Ints as fds which requires frequent
casting around. This is unnecessary.
Modifications:

make fds CInt (internally)
clean up some Int32 as CInt use

Result:
cleaner code, less casting

Merged the parent

thanks @Lukasa , updated this one


Integration of Advanced Routing Algorithms

Is your feature request related to a problem? Please describe.
Integrate advanced routing algorithms to optimize driver paths and reduce ride time.
Additional context

Connect to backend routing API for optimized route suggestions.
Update the UI to reflect real-time route changes.
Show ETA and route details to the user.

hey @visheshrwl I want to work on this issue!


Client monitor value on the special workspace does not change

Hi,
Actually I'm not sure whether it's a bug or a feature.
Starting from v0.26.0, togglespecialworkspace will show the special workspace on the currently focused monitor. However, for clients on the special workspace, the client monitor value remains always the same, equal to the id of the monitor the client was moved to the special workspace on. Is it intentional, or could it be fixed?

should be fixed with 871ab24c6e9d2fb6e48cbf990ddddf0c46a950af but lmk as I cant test cuz am on holiday

No hurry. I got my module to work anyway. Have fun!

Seems to work to some degree. If I togglespecialworkspace to hide it on one monitor, and then again to show it on another, the monitor value changes. However, if I move the mouse pointer to another monitor, and togglespecialworkspace, the special workspace shows up on the second monitor, but the monitor value remains unchanged.

I think I accidentally fixed this in https://github.com/hyprwm/Hyprland/pull/3163

should be fixed now


Github Workflows

We are running the unit tests on macOS 12,13,14 and Ubuntu 22 for python versions 3.11 and 3.12
Do we need all these different macOS types? Should we instead test on lower python versions to see potential errors

Removed MacOS 12 and 13 from the buildbot.
It looks like MacOS 13 is still under development so we should try to add that test back into the mix.

The next most common lower version of python is 3.9.  But if pydantic requires 3.11, then that sets the floor for where we can test.


Fix locking with unsaved changes bug

@MaicolBen @Tiltorito

This problem has been affecting me with attr_encrypted and lockbox gems, since they re-encrypt data on validation.
Breaking out the PR from here: https://github.com/lynndylanhurley/devise_token_auth/pull/1308/files
Fixing the bug where calling valid? leaves unsaved changes, which throws an error when calling @resource.with_lock

@mrkrlli Thank you very much for actually doing it, I couldn't find time to fix my PR :)

@MaicolBen Made the change, sorry it took so long.


Interactive Presentation (Question)

First of all would like to thank everyone who is contributing to this great open source project! It is a very handy one!
I was playing around with the interactive dismiss and all the presentations; however, was wondering what if I want to add an interactive presentation to another view controller while pushing/presenting. How would I go about it yet keeping the AnimatedViewControllers or AnimatedNavigationControllers transition animation type and interactive dismiss gesture?
Thank you for your time, much appreciated.

@serjooo currently, we already add some interaction to dismiss and pop. To use interactive presentation for push / present. We can use the components in IBAnimatable like the other normal UIKit components. The goal of IBAnimatable is to extend UIKit not rewrite or replace it. For example, PortalAnimator conforms to AnimatedTransitioning, they are the transition animators. And interactive animator like PanInteractiveAnimator, they cover most of the normal gestures. They conform to UIPercentDrivenInteractiveTransition. You can use them in the normal UIKit way. Please have a look at how to do interactive transition in UIKit https://www.raywenderlich.com/170144/custom-uiviewcontroller-transitions-getting-started . Bear in mind, the document is a little updated. Please have a look Apple's doc too https://developer.apple.com/documentation/uikit/uipercentdriveninteractivetransition and https://developer.apple.com/documentation/uikit/uiviewcontrolleranimatedtransitioning. You can refer to the code in IBAnimatable as the example to write interactive transition. Let me know if you have any questions, thanks.

How would I go about it yet keeping the AnimatedViewControllers or AnimatedNavigationControllers transition animation type and interactive dismiss gesture?

It seems all UINavigationController's transitions are overriden once a UIViewController sets its UIViewControllerAnimatedTransitioning and from what I understand it seems the only way to have a custom transition while using pushViewController is to override these values. (All UIViewControllers of your navigation controller will take on these transitions unless overridden again)
I was faced with this issue a couple weeks back and decided the best solution until I find a better one would be to use UIViewControllerTransitioningDelegate and present instead of pushViewController (which did cause minor design issues) to avoid overriding and resetting the UINavigationController's transitions back each time a custom transition was performed.
Please post any solutions you come up with here 😄
UINavigationControllerDelegate
class ViewController: UIViewController, UINavigationControllerDelegate {
  // This will override the viewcontroller's navigation controller
  func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationControllerOperation, from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning?
  // interactive transition
  func navigationController(_ navigationController: UINavigationController, interactionControllerFor animationController: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
}

A better example can be found here https://github.com/IBAnimatable/IBAnimatable/blob/master/Sources/Animators/Common/Navigator.swift#L46
Transition Delegate
  @IBAction func presentWithCustom(){
    let vc = CardsTransitionViewController()
    vc.transitioningDelegate = self
    present(vc, animated: true)
  }

  func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning?

  func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning?

@JakeLin Thanks for the informative feedback. I did notice the interactive dismiss, and pop played around with it, checked out the code. Then I noticed an Enum PresentationOperation with the cases of presentation, dismissal. Saw that presentation was never used in any of the other classes, only the dismissal, thus guessing the interactive presentation was never implemented.
I did attempt at implementing my own UIPercentDrivenInteractiveTransition but implementing the delegate myself with override all the implemented Transitions with IBAnimatable. Thus I thought maybe the right way would be through implementing it with IBAnimatable classes directly, so was wondering if this case was brought up before, because I checked the issues, didn't see any similar question being asked.
Moreover, as @gkye mentioned there are a few issues while using an AnimatableViewController and then presenting an AnimatableNavigationController or vice versa where some of the transitions would get overriden. I want to make a sample project of some of the issues I found and share it, maybe we can work on fixing them. I'll try to do this as soon as I get some time on my hands.

@gkye If I understand that correctly, it is not an issue of IBAnimatable, This behaviour (only one transition effort for all transition within the same UINavigationController) is designed by UIKit. I remember we discussed that before when we implement AnimatableNavigationController. We keep this behaviour as UIkit. I think if we want to have different behaviour / transition effort, we can use present like @gkye said. And the presented VC may have a Nav bar to make it look similar to the presenting VC.
@serjooo I didn't figure out a good way to support interactive transition for present and push in Interface Builder, that requires more customised steps. So we provide a bunch of animators (as I mentioned above) to be used in code. That's why by default, we provide convenient ways (configuring in IB) to support presentation, dismissal and pop. Feel free to post more thinking, code any evidence, when we have time, we can discuss more and fix them if there are any issues, thanks.

@JakeLin Oh alright, I follow now! Thank you for explaining! I will try to get that sample project up and running as soon as I can. Also will try to tackle the interactive present while I'm at it! Again much appreciated for your time and efforts!

@serjooo cool, feel free to re-open or create another issue if you more thing want to discuss.


Postman collection request urls always use http, regardless of base_url

When the postman collection is generated, the urls for each endpoint are correctly formed, apart from always using http, even if the base_url uses https.
As shown below.
(Using a base_url of https://some-application.com)
Generated documentation (correct):

Generated postman collection (incorrect)

Happening for me as well, currently on R3.14.0.
This essentially renders the postman feature useless. Everything is https these days..


Unable to set correct viewport size.

`while (true) {
    let fingerPrint = [
        ['Android', 'Chrome']
    ];

    const fp= await plugin.fetch(KEY, {
        tags: fingerPrint,
        // tags: ['Microsoft Windows', 'Chrome'],
    });

    // console.log(fp)
    await plugin.useFingerprint(fp)
    let browser;

    try {
        browser = await plugin.launch({
            headless: false,
            // timeout: 0, // disables the default timeout
            // slowMo: 100, // disables the slow motion
            // ignoreHTTPSErrors: true,
            // devtools: false,
            // protocolTimeout: 600000, // set the protocolTimeout to 5 minutes
        });
        return browser;

    } catch (error) {
        console.log(`Error With Fingerprints: ${error.message}`)
         // await browser.close() // not working, also give me error is: browser is undefined
        if (browser && browser.process() && !browser.process().killed) {
            browser.process().kill();
        }
        continue
    }
}`

OUTPUT-- Error With Fingerprints: Unable to set correct viewport size.
the major isssue is BROWSER KEEPS OPENED EVEN I HANDLED ERROR, i dont want to quit while loop after handle eror thats why im not used  process.exit(1) , i just want which browser instance givesme error,  just closed it and create new browser..

sir im not master in js, i just know basics about js and node js, please provide any solution

so you saved browser fingerprints in computer?

can you please guide my step by step?

no, no... don't write code, but i didn't get what you saying in these steps:

always started the browser with a custom profile folder.

iterated over all the OS processes to find all the browser processes

sent the proper signal to the browser process that I needed to close, which could be detected via cmd because of the custom profile folder.

can you do it for me, i'll ready to pay you

sir, one more question, can we use puppeteer-stealth, puppeteer-extra with puppeteer-with-fingerprints??

`while (true) {
    let fingerPrint = [
        ['Android', 'Chrome']
    ];

    const fp= await plugin.fetch(KEY, {
        tags: fingerPrint,
        // tags: ['Microsoft Windows', 'Chrome'],
    });

    // console.log(fp)
    await plugin.useFingerprint(fp)
    let browser;

    try {
        browser = await plugin.launch({
            headless: false,
            // timeout: 0, // disables the default timeout
            // slowMo: 100, // disables the slow motion
            // ignoreHTTPSErrors: true,
            // devtools: false,
            // protocolTimeout: 600000, // set the protocolTimeout to 5 minutes
        });
        return browser;

    } catch (error) {
        console.log(`Error With Fingerprints: ${error.message}`)
         // await browser.close() // not working, also give me error is: browser is undefined
        if (browser && browser.process() && !browser.process().killed) {
            browser.process().kill();
        }
        continue
    }
}`

OUTPUT-- Error With Fingerprints: Unable to set correct viewport size.
the major isssue is BROWSER KEEPS OPENED EVEN I HANDLED ERROR, i dont want to quit while loop after handle eror thats why im not used process.exit(1) , i just want which browser instance givesme error, just closed it and create new browser..

Change screen resolution of your display to 100%
Use parameters "max-height" "max-width" of fetch to filter out fingerprints with large screen resolution

Use parameters "max-height" "max-width" of fetch to filter out fingerprints with large screen resolution
how to do that?

In the Windows taskbar, go to the screen settings and check the "Scale and layout" field. I had the same problem, and this method solved.

Hello.
After the above recommendations with a change in Windows - "Scale and layout", the problem with viewprot was not solved. Conducted several tests:

tags: ['Android','Chrome'],
minBrowserVersion: 112,
MinWidth: 400,
minHeight: 600,
maxWidth: 900,
maxHeight: 1020

As a result, there is a problem with the resulting fingerprints, with the specified MinWidth: 400 I get a fingerprints with Width: 360px.

tags: ['Microsoft Windows', 'Chrome'],
minBrowserVersion: 110,
minWidth: 1920,
minHeight: 1080,
maxWidth: 1920,
maxHeight: 1080

As a result, there are no problems with viewprot, and I get only fingerprints with Width: 1920px.
Tell me, what other possible solutions to the problem with Viewport for fingerprints Android?

Confirm this issue. Hope fix will be implemented in recent update

This issue should be fixed in latest update.

@bablosoft Technically it is resolved due "Viewport size' error never happens. But proposed above solution still makes sense. It seems correct behavior catch exception and close browser if attempt to configure throws any error right after browser is constructed but not returned to external caller. otherwise external caller are not able to close it properly.

@DangerLifter we'll improve handling of this error separately in future updates.

I am one of the victims of this problem. May I know what is causing this issue?  I can sure this definitely related to fingerprint as the same fingerprint always comes to the same problem.
If this is a known issue, please let me know so that I can avoid it

@mannok right now it is fixed, are you using old version?

@bablosoft , can confirm I have updated to the latest version already.
  "dependencies": {
    "delay": "^6.0.0",
    "fingerprint-injector": "^2.1.37",
    "p-retry": "^5.1.2",
    "playwright": "^1.36.2",
    "puppeteer": "^20.9.0",
    "puppeteer-with-fingerprints": "^1.3.3",
    "systeminformation": "^5.18.11",
    "tslib": "~2.5"
  }

Sharing fingerprints is prohibited.
Latest version gives warning, not error, you can ignore it.

@bablosoft But the problem now is those problematic fingerprints cause my browser's score so low, also, the browser window is unusally small... (seems it is caused by my screen scale)
FYR: the larger one is the normal one

Please use PerfectCanvas. If you still experience any problems, please attach detailed description and create the new issue.

@Firegarden If this is the case, that would be a major issue. But I don't see anything wrong with this test. Here is example with changed fingerprint.

@Firegarden I don't see any issues.

Please don't write here, this is unrelated to original issue.
If you have any problem, please create new issue, attach source and describe in more details.