to fix lack of motionblur with rigidbodies and objects moved by const…

…raints all transformations are bruteforce comparisons of matrices for all subframes. Also changed deformation motionblur to be a two step process for meshes with a primary screening and a secondary brute force approach. The screening can be improved in could_be_deforming and if the brute force approach get's too slow it could possibly be multithreaded.
If debugging is enabled some timing is output to help find what takes time.

Ok this is a big checkin.  Let me think about it a bit.  Thanks though!  Wish there was some other way you didn't have to brute force check the vertices....

Did you have any thoughts on my comments?

Hello Brian!
I'm sorry for not being available for followup - I'm currently living in a cottage without electricity and without running water (vacation wise). I was originally trying to discuss implementation in the thread for the issue of deformations with different vertex counts, but got no answers. This patch solves that issue of course, and puts them as non deforming (always).
I understand the hesitancy for brute force comparisons. I originally had another solution which checked for animation within the current frame on the objects modifiers, or the target object of the modifier if that's applicable to the object. That system could however never account for changes from scripting (for example animations nodes addon).
In my own tests however the brute force testing has been the fast part, even with heavily subdivided meshes, and the time loss is more where the frame is changed for motion steps and in storing the deformation meshes.  Do you have an example scene you'd accept for benchmarking?
At length I think it could be an object level setting 'deformation motion blur control' which could be set to 'Force deforming', 'Force not deforming', 'Brute force', 'Two step' or 'Screening'.
I'm currently away and not able to work on this, but expect to be back online more frequently mid August.
Best wishes,
Torbjörn

Yes, testing edge and face counts as well would be a cheap addition to get quick outs on changing objects.

Just making a quick visit at civilisation.
It does not brute force vertices on all objects, only on the ones it's guessing could be deforming, but you probably already noticed that. Consider a mesh cache, is there a faster way to see if there are changes between two frames? If so I missed it. You can see if it's started/ended or not based on current frame, but not if it is really changing between those two frames. I guess one question is the probability of it really not being deformed and the possible overhead a false positive deforming export (which is really not) would have on the render. Renderman is certainly much faster with deformation motion blur than cycles. I guess the part where brute force checking could really become a problem is big simulations.
How would you prefer it to be implemented? The other option I see is to try to find if there is any animation that could give deformations and sending them, accepting false positives (though fewer than currently) and having 'auto', 'force deforming' and 'force not deforming'. Designing that auto part would be a trade between misses both ways and would need very active maintenance for new modifers. Having a brute force option is not important to me personally as long as there is an object override (which is keyable).

Of course, the first vertex really changing would make it consider it deforming, so what would make it slow would be very very large meshes which could be deforming, but are not.

I'm starting to think this might be better just with a "force motion blur" option (or using the already there motion blur option).  But also if you can attach a scene that this would be used for maybe I can get a better sense?

In the issue for lack of transformation motion blur on objects moved by other things than animation (you could bake them of course, though I personally do not think it should be a requirement) you have an example of a scene that would benefit of that part in the issue.
The advantage for brute force checking deformations for objects that are considered to possibly be deforming is to remove false positives (objects with deformers that are not changing will not be exported as deforming (meaning less deforming objects for the renderer)).
The current system exports way too many things as deforming when they are really not. That gives an overhead too. Consider a simulation that begins at frame 50 - exporting a static object as deforming for the first 50 frames. That special case could be solved of course by always checking start and end frames of simulations. Several modifiers that could be deforming could be used 'just' for modeling (for example 'simple deform', but could as such be lattice deformers, or shape keys used for sculpting layers. This could be solved of course by checking for type of modifier, and dividing them into those that are deforming always, those that are simulations and have start and end settings, those that are only deforming if there are animation data on that data path (and within time frame) and those that are depending on a target (for example armature deform, but many more) [these can be divided into those that depend of the absolute animation on the target and those that depend of the relative deform of the target], also a special case is the wave deformer (changing if time is changing). A mesh cache is likely to be deforming, but might not be within two specific frames (I see no other way than brute force here, but the question might be which overhead get's bigger). But there will be a lot of special cases to check for. I wrote this quick test because I was curious about it's performance. The advantage with a brute force test is that it's easy to multithread (at least comparing one object per thread) since the comparison is reading data but not writing anything but it's return value.
From the scenes I tested on the part that took time was the frame change and caching deformations.  The brute force comparison was fast. An advantage is the posibility of abstraction, you could codevise rely on is_deformer_modified and then check if it is changed or not instead of trying to find all special cases (and always losing when a new deformer is added, for example the laplacian smooth and deform are quite new, but adding a new modifier in blender requires a new build so I guess you could argue that you could always follow the active development.
 Sorry about that, but it does not matter if you are not interested.)
Of course I could manufacture a scene where this solution is much better than the current one, that's easy. Anyone with a really big mesh in a complicated scene with many lights and volumes where the mesh is currently set as deforming but it's not (for example a statue posed with an armature without animation). I cannot imagine that the renderer could be so optimized that it's not cheaper to see if it's changed or not (very little longer export, expecting a bigger gain in rendering time). (Finding cases where it's slower is as easy - any where all possibly deforming objects are deforming [only adds overhead - especially if only the last checked vertex is changed].) The only case I can think of where it could be faster than a (correct) solution really testing all posibilities manually in python code would be the corner case where there is animation and the keyframes are identical (so really, no animation in the end). That is of course not worth guarding for. The advantage is the possibility of code simplicity and maintainability, the drawback that [compared to a perfect system, not the current one] a brute force system might tag more objects for manual comparison in a first step also using more memory to cache a possible deformation that will turn out is not needed and of course take more time for it's comparisons.
I'll drop this then and go back to trying to find all the manual paths I can for deformation (knowing that I can do nothing about mesh caches and objects deformed by scripts in event listeners [though those would be missed by a two phase approach as well]).

Ok I think I get where you're going with this, and agree that the logic is sound.  It would be interesting to test with something like the Gooseberry benchmark scene, lots of deforms going on there.  But generally.  I agree, yes the frame change is the big one.  That's why we do it at a scene level.

The code needs a lot of cleanup before adding it to regular master could be an option (quite a few quick and dirty solutions currently). But I think it should be good enough for you to test at least.

Ok.  That render time could indicate either A: duplicate geometry or B: Motion blocks where there wasn't one before, or C: Bounding boxes that are different.
Probably B?

Leave it open for a few days.  I'm manually merged it in my local branch
and still want this for reference for testing.
On Thu, Dec 29, 2016 at 7:43 PM, MWY3510<EMAIL_ADDRESS>wrote:

@MWY3510 commented on this pull request.
In export.py https://github.com/bsavery/PRMan-for-Blender/pull/314:

               instance.motion_data.clear()

               #debug("debug", "Object [%s] is not transforming." % instance.name)

   # endif

   elapsed = time.perf_counter() - start

   debug("warning", "...checking transformations took [%f]"%elapsed)

   # cache whether a mesh is deforming or not

   debug("warning", "Checking for deformation")

   IsMeshDeforming.clear()

   start = time.perf_counter()

   if(data_names is not None):

       for data_block_name in data_names:

           data_block = data_blocks[data_block_name]

           last_mesh = None

           if(not data_block.do_export):

               debug("debug", "Deformations for mesh [%s] is not checked as file was not dirty and no need to make a new export."% data_block.name)

           elif(data_block.deforming and not is_deforming_fluid(data_block.data)):

Was this ever completed? If so is this pull request safe to close?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/bsavery/PRMan-for-Blender/pull/314, or mute the
thread
https://github.com/notifications/unsubscribe-auth/ABzffJAqF_yQ0GN1Q2lT3W86HE6R4X4Qks5rNH3dgaJpZM4JTTrW
.

--
<EMAIL_ADDRESS>508-274-8700

Thanks btw!  Really helpful.
On Thu, Dec 29, 2016 at 7:56 PM, Brian Savery<EMAIL_ADDRESS>wrote:

Leave it open for a few days.  I'm manually merged it in my local branch
and still want this for reference for testing.
On Thu, Dec 29, 2016 at 7:43 PM, MWY3510<EMAIL_ADDRESS>wrote:

@MWY3510 commented on this pull request.
In export.py https://github.com/bsavery/PRMan-for-Blender/pull/314:

               instance.motion_data.clear()

               #debug("debug", "Object [%s] is not transforming." % instance.name)

   # endif

   elapsed = time.perf_counter() - start

   debug("warning", "...checking transformations took [%f]"%elapsed)

   # cache whether a mesh is deforming or not

   debug("warning", "Checking for deformation")

   IsMeshDeforming.clear()

   start = time.perf_counter()

   if(data_names is not None):

       for data_block_name in data_names:

           data_block = data_blocks[data_block_name]

           last_mesh = None

           if(not data_block.do_export):

               debug("debug", "Deformations for mesh [%s] is not checked as file was not dirty and no need to make a new export."% data_block.name)

           elif(data_block.deforming and not is_deforming_fluid(data_block.data)):

Was this ever completed? If so is this pull request safe to close?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/bsavery/PRMan-for-Blender/pull/314, or mute the
thread
https://github.com/notifications/unsubscribe-auth/ABzffJAqF_yQ0GN1Q2lT3W86HE6R4X4Qks5rNH3dgaJpZM4JTTrW
.

--
<EMAIL_ADDRESS>508-274-8700 <(508)%20274-8700>

--
<EMAIL_ADDRESS>508-274-8700

Can do. I hope you had a good Christmas.


Birthday Balloons

Expected Behavior
great birthday celebration
Actual Behavior
deflated balloons ruining the party
Steps to Reproduce the Problem

visit https://www.openjscad.xyz/#
load 'Birthday Balloons' example
Age 7
77, 777 is okay

Specifications

Version:
Platform:
Environment: (browser, local server, node.js etc)

This issue has been present from the initial V2 release; April 2021

OH PAIN!!!!
It turns out that the linear extrude for '7' is failing, and producing artifacts (extra polygons).

Internally, the call to intersetGeom3Sub() is producing those artifacts. So, the BSP algorithms are having issues with constructing trees for the polygons.
I've reviewed the code again, comparing V1 to V2. The V2 code is sound but there was one special change made for performance in Node.js
        let index = 0 // default
        index = Math.floor(polygontreenodes.length / 2) // BIG PERFORMANCE BOOST

But that one change is causing issues within the BSP logic. Switching to the default (0) corrects all issues.
This is NOT good news.

@z3dev could you re-run those perf tests for these 2 different index start points? Maybe there is a slight chance that the fix with stop condition affects performance difference between the two.

@hrgdavor thanks for the suggestion.
i think there's some issues with the Node.toClip() function, and will try to get a small test case.
This issue may be affecting other functions that use the boolean functions as well, such as extrusions, project, etc.

Now that I think of it, changing start index might not be a fix, but just moving the issue to a different edge case. This is just a suspicion. I agree with trying to postpone changing the index, as it affects maaaany test cases.

This is definitely an edge case. This is only happening for...

character '7' (probably due to the angle of the sides)
round corners with segments: 32

So, yeah. Another deep dive is required.

A little more information... inside intersectGeom3Sub(), the BSP trees are called to clip polygons from each of the trees. This is the call that produces the artifact polygon.
  a.clipTo(b)
I'm going pretty deep into the trees now, and understanding things further. Something is definitely hitting an edge case, which leaves the artifact polygon in the tree.

I am thinking of ways to help with visualising stuff like this. I have an idea how to anble pausing the code in debugger but also being able to view stuff currently debugged.
I have been using watch expression to dump polygon data into console, but I think I can make it possible to also visualize points by calling jscadDebug(....code to produce geometry from local data ...)

Another update... I went way way down the boolean road, but could not find any kind of bug or condition that produced that artifact.
So... I tried V1 booleans on the same set of polygons. WA LA! THE SAME BUG!!! 🐛
So, the technique being used by slice.toPolygons() is not going to work. An alternative approach is required.
FYI, this bug affects everything in the extrude family.

[bug_V1.js.txt](https://github.com/jscad/OpenJSCAD.org/files/7270969/bug_V1.js.txt
bug_V2.js.txt
)

Interesting. It is good that you have pinpointed the culprit.

I was trying to find more and simple examples that reproduce this problem. I have found these so far:

The letter N requires only 13 segments.
Code to reproduce this is here.
I will now try to find even smaller examples.

Internally, the call to intersetGeom3Sub() is producing those artifacts. So, the BSP algorithms are having issues with constructing trees for the polygons.

AFAICT, these functions are being called to create caps at start and end. The calling hierarchy is:
extrudeLinear -> extrudeSlices -> for start and end caps: slice.toPolygons()
One workaround could be to expose capStart and capEnd options in extrudeLinear's options, just like in other extrude functions. Then the user has the option to create the caps themselves, which is easy for trivial cases.
Another workaround could be to use simplified logic in extrudeLinear  when twistAngle == 0. In this special case, constructing the walls might be much more straight forward.
@z3dev Please let me know if that makes sense, and whether you can take this up. If you wish, I can attempt a PR too, but it might take a lot of time, since I am not that familiar with the code.

@t1u1 can you try changing the ‘segments’ parameter value?
in previous tests, I found some solutions if the segments was adjusted.

@z3dev Changing the segments works randomly. If segments == 128 works for model dimension of 200mm, it fails for 201mm, and so on.
IMO, this is a serious bug (that is, it prevents JSCAD from being used for any serious application). For example, the models I am building will be useful for calibrating optical elements used by hobby astronomers, such as mirrors or lenses. The precision required is not high, but rogue polygons are definitely not acceptable.

@t1u1 is your main problem with using letters and numbers ? I can look into the problemnext week, or maybe I catch some time this week, but that does not mean I can guarantee a fix.
As a workaround you could use a ttf font, we have a working example  mentioned here: https://github.com/jscad/OpenJSCAD.org/issues/72

is your main problem with using letters and numbers ?

No, no. Letters and numbers are just a test case.
My model looks like this:

@t1u1 could you share that script ? and params when problems happen ?

could you share that script ? and params when problems happen ?

It's not a script. It's a webapp. I could have still tried to share it, but it seems useless because its geometry is much more complex than the simple examples reported here.
Did you try the script shared in my previous comment: https://gist.github.com/t1u1/81cf1c9e4d4cce1d0eaf8b1ec6ebff5d
I have spent days trying to create simpler examples, but it's not easy. The  bug is frequent but brittle; it needs just the right conditions to show up. And we don't have any idea about what those conditions are.

@t1u1 some operations are more brittle than others. seing the script might allow me to propose workarounds.
It is possible some issues are caused by booleans. and is also possible there are more than one issue at hand.

@hrgdavor This particular issue is happening in intersectGeom3Sub(), just as @z3dev has described. I have stepped through the code, and verified that the problem exists there by looking at its output and the output of previous steps. I think @z3dev 's analysis is spot on.

What I noticed here in example from @z3dev is that either 2d part of the process is creating a case that breaks extrude. either the 2d starting model is faulty or extrude has a bug ...
after such faults are introduced, stuff down the line will break too.

What I noticed here in example from @z3dev is that either 2d part of the process is creating a case that breaks extrude. either the 2d starting model is faulty or extrude has a bug ...

The location of the bug is already pinpointed. I suggest reading @z3dev's comments again.  The problem is in the part that creates the polygons for the end caps. These polygons are created by intersecting the polygons of the wall with a large polygon that covers the slice. The bug exists in the logic that computes this intersection.

@t1u1 I can likely fix issues with those texts by making a custom extrude function easier than fixing the existing one. Would this be helpful to you ?

@t1u1 I can likely fix issues with those texts by making a custom extrude function easier than fixing the existing one. Would this be helpful to you ?

Thanks, but I am not sure I understand. Will the custom function only work with texts? There is no text in my models, only geometry created from booleans as shown in the picture.

idea is that it should work with all proper 2d shapes.... if the 2d shape does not look broken, it should work.. ... I tested the number 7 and it looked ok in 2D, but got messed up by extrude. I just have a feeling it would be easier for me to create a new extrude than fix the current one. at least for this simple case with only extruding 2d shape straight up.

It’s the TOP and BOTTOM caps that have issues. Not extruding the walls.

@z3dev hm, ok, I could look into that then

FYI, I have been playing with 2D boolean libraries to remedy these issues, as the 3D booleans pretty much fail when working with complex planar polygons. It looks promising but even the 2D libraries have issues. I’ll post updates going forward, and maybe some code if there are some improvements.

It seems like a special case of extrudeLinear when twist = 0 would be really easy to make work correctly without these artifacts. Would likely be much faster too. However that just hides the problem. Fixing intersectGeom3Sub is the real solution. I am also looking into it.

if the issue is only with caps, then the twist is not the problem. The caps are just rotated, so a new code that makes caps properly would work just fine with or without the twist.

It seems like intersectGeom3Sub is really just being used here to split non-convex polygons into convex polygons for the caps. It might be better to just implement a triangulation algorithm? For example, Earcut

The bug happens BEFORE the extrusion!! The geometry is not closed! This causes the extrusion to "leak" through the gap.
I found this when I tried to compute the outline of the geometry. The topological sort in toOutlines proved it. The "7" example has a discontinuity between 17.980817485911114,20.804759900888893 and 17.980817485911114,20.804896567511115. Right where the artifact appears.
When you run the following script, it gives error:
geom2.toOutlines(text2d("7", 2, 32))

Error: the given geometry is not closed. verify proper construction

script
const jscad = require('@jscad/modeling')

const { union } = jscad.booleans
const { extrudeLinear } = jscad.extrusions
const { hullChain } = jscad.hulls
const { circle } = jscad.primitives
const { vectorText } = jscad.text
const { translate } = jscad.transforms
const { geom2 } = jscad.geometries

// Build text by creating the font strokes (2D)
const text2d = (input, characterLineWidth, segments) => {
  const lineRadius = characterLineWidth / 2
  const lineCorner = circle({ radius: lineRadius, segments: segments })
  const lineSegmentPointArrays = vectorText({ x: 0, y: 0, input }) // line segments for each character
  const lineSegments = []
  lineSegmentPointArrays.forEach((segmentPoints) => { // process the line segment
    const corners = segmentPoints.map((point) => translate(point, lineCorner))
    const hull = hullChain(corners)
    lineSegments.push(hull)
  })
  return union(lineSegments)
}

const main = () => {
  const height = 2
  const obj2d = text2d("7", 2, 32)
  const obj3d = extrudeLinear({ height }, obj2d)
  geom2.toOutlines(obj2d)
  return obj3d
}

module.exports = { main }

Error: the given geometry is not closed. verify proper construction

Indeed, I saw this error too. But I thought toOutlines() is also buggy, or I am not using correctly!
What you say makes a lot of sense now :+1:

I made a script to mend the gaps in a polygon to make it closed. It looks for vertices with mismatched in/out edges, and then merges the closest vertex that fills the gap. It fixed all the examples from this thread, if called before extrudeLinear. @t1u1 this might help your designs?
/**
 * Mend gaps in a 2D geometry to make it a closed polygon
 */
const repairGeom2 = (geometry) => {
  const vertexMap = {} // string key to vertex map
  const edgeCount = {} // count of (in - out) edges
  for (let edge of geometry.sides) {
    const inKey = edge[0].toString()
    const outKey = edge[1].toString()
    vertexMap[inKey] = edge[0]
    vertexMap[outKey] = edge[1]
    edgeCount[inKey] = (edgeCount[inKey] || 0) + 1 // in
    edgeCount[outKey] = (edgeCount[outKey] || 0) - 1 // out
  }
  // find vertices which are missing in or out edges
  const missingIn = Object.keys(edgeCount).filter((e) => edgeCount[e] < 0)
  const missingOut = Object.keys(edgeCount).filter((e) => edgeCount[e] > 0)
  // pairwise distance of bad vertices
  missingIn.forEach((key1) => {
    const v1 = vertexMap[key1]
    // find the closest vertex that is missing an out edge
    let bestDistance = Infinity
    let bestReplacement = undefined
    missingOut.forEach((key2) => {
      const v2 = vertexMap[key2]
      const distance = Math.hypot(v1[0] - v2[0], v1[1] - v2[1])
      if (distance < bestDistance) {
        bestDistance = distance
        bestReplacement = v2
      }
    })
    console.log(`Repair gap ${v1} → ${bestReplacement} dist ${bestDistance}`)
    // merge broken vertices
    geometry.sides.forEach((edge, i) => {
      if (edge[0].toString() === key1) edge[0] = bestReplacement
      if (edge[1].toString() === key1) edge[1] = bestReplacement
    })
  })
  return geometry
}

@platypii Thanks! The examples indeed work fine now. However, my design still fails in the same way as earlier. This is progress because it is clearly a different type of failure. (As further confirmation, the toOutlines() call works fine on my design, with or without the repairGeom2() call).
I will try further to isolate the problem now, and raise a different issue.

Holdon! One case from the examples here is still showing a problem!
See this script: https://gist.github.com/t1u1/a8300974af1f7c8f213cdc7541cb348d
The text("4", 2, 1, 26) object still has this glitch, even after calling repairGeom2()

Nice investigation @platypii
There are similar ‘closing’ issues with projections, as projecting a point to a plane is never floating point correct. Snapping points to an ESP seems to help but doesn’t solve the issues completely.
Just feedback…

I found a few other glitches (just trying to help find more test cases).
Test script is here: https://gist.github.com/t1u1/6d5a1c6f6494f61394ca7735a53aad78
With repairGeom2() :

Funnily, some of these work better without repairGeom2():

@platypii Perhaps there is a small bug in repairGeom2(), which when fixed will make all the tests pass. I couldn't understand its logic so can't offer any suggestions.
Thanks for looking!

I have discussed this with  @platypii , and the repairGeom2() was working properly, but creation of caps using booleans intersectGeom3Sub created more edge cases.
So he made code that handles more cases better by using repairGeom2() and earcut algorithom taken from threejs(which they took from somewhere else). We discussed this on discord, he is still working on this, but he could have a good solution soon.
We would like this not to happen in boolean ops, but having a workaround in the meantime is also good.

OK. Two days of deep dive into the BSP trees and here's what I found.
Basically, the Node.clipTo() function has some issues. If you have ever looked into the code, you find some funny looking loops that use a 'stack' to control processing through the trees. If you think about this, basically the order of the calls are determined by the stack, which is created in a pretty strange fashion.
Why is that important? So, the trees basically 'clip' polygons by planes, and if the polygon is split then new polygons are added to the tree (in front of the plane and/or in back of the plane). There's a lot of planes (nodes), and each plane clips ALL polygons (old or new). The order of clipping is important, and controls the creation of new polygons.
THE BUG is basically caused by the unnecessary splitting of new polygons, i.e. split, split, split...
Just to prove my point, you can change the order by changing the selection of bestpoly (index) in Node.addPolygonTreeNodes(). Try the random version, and you'll see strange artifacts at different angles, etc. There's no perfect index for all designs, even 0 will fail sometimes.
I think the best solution would be to rewrite the Node.clipTo() to traverse the tree (in order), and see if that solves the issues.
Let me know if any other insights have been made.
P.S. I confirmed that the logic of splitPolygonByPlane() is rock solid. That's not the issue here.

@t1u1 can you try out my earcut branch?
https://github.com/platypii/OpenJSCAD.org/tree/earcut
It uses a combination of the repair function, and a new earcut triangulation algorithm for the caps. It's worked on all the examples I've tried.
This does not fix floating point issues in the BSP tree code, it just avoids using the BSP tree for extrusion. The nice thing about the earcut triangulation algorithm is that it only uses existing vertices, it does not create new ones, so it should be less susceptible to floating point errors.

@platypii Woohoo! I confirmed that your branch works fine with all the examples in this issue so far. A few questions:

Why is R and B appearing dark in your screenshot? On my system only R appears dark, B doesn't. Is something wrong with the normals?
I would love to test your branch in my webapp. Is there an easy way to do this by publishing it to npm? (I tried a local way of doing it, but it still picks up the published version. I am not an expert in npm)

it could be that those are inverted, or simply lighting issue in the current render code.

The nice thing about the earcut triangulation algorithm is that it only uses existing vertices, it does not create new ones, so it should be less susceptible to floating point errors.

That’s a huge improvement. As I’ve been improving the internals, the key is reuse of the vertex (points) as any calculation just adds floating point errors.
Thanks a lot @platypii

The lighting on R and B is something I'm still investigating. I wouldn't be surprised if related to #985.
The reason for the change in "B" you saw, is that I took a screenshot first and then subsequently made a small fix to the plane calculation. Specifically this change to poly3.invert fixed the  "B". I'm not yet sure why.

After some investigation, determined that a bug in slice.calculatePlane returns [0,0,0,0] when it hits a self-edge. I fixed this in two places: 1) repairSlice function now removes self-edges, and 2) slice.calculatePlane will skip a self-edge if it encounters one.
The updates are on my earcut branch

@platypii Cool! Confirming that the latest earcut branch works fine on all the examples posted here, including the correct brightness on "R". However, noting a few new failures:

@t1u1 you are good at finding counter examples :-)
I just updated my earcut branch again to fix your example. I had to write a function to generate a polygon hierarchy, associating holes with their outer polygons. It seems like this is really close to working!

@platypii :) Wow, freak coincidence. I was just about to post simpler counter examples. Will try with your updates now!

@platypii I think you have hit gold. The happy birthday examples + the other examples I had in queue are working fine on your latest branch! Thanks! :heart:
Could you publish a test or snapshot version to npm? I can then test it with my webapp.

I'm not really sure how to publish it as a snapshot. I don't have access to the jscad account or anything. Maybe could generate a bundle file?
I plan to make a pull request after some cleanup.

Ok, sounds good. Will wait for the powers-that-be to make a release!
For regression testing, etc, here's a script that replicates all the examples so far:
https://gist.github.com/t1u1/6c6a4664b08ff6d4a9e9c6f3a87e7d31
(Note that some of the glitches were only evident in intermediate commits, but not in the current master, nor in the final earcut branch)

I had to write a function to generate a polygon hierarchy, associating holes with their outer polygons. It seems like this is really close to working!

that is interesting, and now that you mentioned it makes perfect sense that it is needed.
Having tools that fixes stuff like this is excellent and should be part of the API.
From the performance perspective, extrude and other steps should not always run all possible fixing utilities.
If we want to be nice to new devs, fixing could be by default turned on, but we need for advanced users to be able to say: "I have proper polygons, no need to run fixes, and be faster".

I plan to make a pull request after some cleanup.

Just a gentle reminder. Thanks for all the other PRs too!

I have not forgotten. I'm doing some additional testing and tweaks to the Earcut implementation. The other PRs I made are small bugfixes -- for comparison, the earcut branch has over 1000 lines of new code, so I want to be careful. But it will be worth the wait! Some stats I posted on discord:

With the latest optimization pass, my earcut branch is now significantly faster than master, and also more correct. It produces airtight geometry in less time!
Extruding a 50k circle on master: 18s
Extruding a 50k circle on earcut: 0.5s


Update IoT Agent for UltraLight to 1.21.0

Proposed changes
This PR updates IoT Agent for UltraLight to 1.21.0.
Types of changes
What types of changes does your code introduce to the project: Put an x in the boxes that apply

[ ] Bugfix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Update only documentation, not any source code.

Checklist
Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of
them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before
merging your code.

[X] I have read the CONTRIBUTING doc
[ ] I have signed the CLA
[X] I have updated the change log (CHANGELOG.md)
[X] I send this pull request to the v0.16.0-next branch.
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have added necessary documentation (if appropriate)
[ ] Any dependent changes have been merged and published in downstream modules

Further comments
N/A

Codecov Report

Merging #192 (e21dbd9) into v0.16.0-next (e290e0d) will not change coverage.
The diff coverage is 100.00%.

@@              Coverage Diff               @@
##           v0.16.0-next      #192   +/-   ##
==============================================
  Coverage        100.00%   100.00%
==============================================
  Files                 2         2
  Lines              1746      1746
==============================================
  Hits               1746      1746

Impacted Files
Coverage Δ

config.sh
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


echarts option nameRotate not working

One-line summary [问题简述]
I am trying to rotate the labels on the xAxis so they are all visible.
Looking at the documentation i see there is an option to use the command  nameRotate but it doesn't seem to work..?
tried to apply the syntax to the online demo and not working either....
Version & Environment [版本及环境]

ECharts version [ECharts 版本]: 3.6.2
Browser version [浏览器类型和版本]: edge, chrome
OS Version [操作系统类型和版本]: windows 10

Expected behaviour [期望结果]
labels in the bottom of chart (xAxis) rotating to vertical
ECharts option [ECharts配置项]

			  var echartBar = echarts.init(document.getElementById('mainb'), theme);

			  echartBar.setOption({
				title: {
				 //text: 'Graph title',
				 //subtext: 'Graph Sub-text'
				},
				tooltip: {
				  trigger: 'axis',
				  formatter: "{a}
{b} : {c}%"

				},
				legend: {
				 // data: ['sales', 'purchases']
				},
				toolbox: {
				  show: false
				},
				calculable: true,
				xAxis: {
				  nameRotate: 90, //Rotation of labels - not working!!!!
				  type: 'category',
				  data: ['Client 1', 'Client2', 'Client3', 'Client4', 'Client5', 'Client6', 'Client7', 'Client8', 'Client9?', 'Client10', 'Client11', 'Client12'] //Clients go here
				},
				yAxis: [{
				  type: 'value'
				}],
				series: [{
				  name: 'Overall Progress',
				  type: 'bar',
				  data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
				  markPoint: {
					data: [{
					  type: 'max',
					  name: 'MAxim',
					  					  formatter: "{a}
{b} : {c}%"

					}, {
					  type: 'min',
					  name: '???'
					}]
				  },
				  markLine: {
					data: [{
					  type: 'average',
					  name: 'Average'
					}]
				  }

option = {

}

Other comments [其他信息]

xAxis.nameRotate  is just used to set the xAxis name's rotate(usually display at the left or right of the axis) . You can set the xAxis.axisLabel.interval or xAxis.axisLabel.rotate to show all the axisLabel.

Thank you for clarifying. Clearly I was looking in the wrong place. Working now. Great package! Keep up the good work. :)

Does someone know how to get another not rotated line under the rotated line like this

@elipongr, define the "rotate" option inside axisLabel:
    graph_options = {
        youroptions: youroptions...,
        xAxis: [{
            youraxisoptions: youraxisoptions...,
            axisLabel: {
              rotate: 45, // <<<<<<<<<<<<<< this option!
            }
        }],
    };


Switch to remark (formerly mdast)

I found out that remark have a plugin called remark-react to render markdown into react component.

This will help us with internal link issue.

For code hightlight,  there is a long debate here.  remark's author made something called remark-lowlight to handle this.

Is lowlight a remark plugin? It doesn't look like one.

Sorry. Lowlight isn't a remark plugin.
@wooorm could you give us some info. Can we use lowlight with remark,  remark-react

Lowlight is not a remark plug-in. wooorm/lowlight transforms source code into a syntax tree, which can then be transformed to a virtual DOM for React.
You can use conorhastings/react-syntax-highlighter. It’s a react component, using wooorm/lowlight.
mapbox/remark-react doesn’t have support for custom React components yet, so there’s no way to use wooorm/lowlight in mapbox/remark-react. See the issue you yourself linked on what’s happening there.
As you can see, it’s pretty stale. I’m not working on it, neither is @-tmcw. If you want this done you should either do it yourself or convince someone else to work on it :)

@-wooorm thank you very much for your information. We'll see what we can do

remark-react released 2.0.0 with React 0.14 support
https://github.com/mapbox/remark-react

@MoOx can you take a look here ?
Using remark will help us remove the catch-links utility. But we had to pull remark, remark-react (and others plugin) to client side. Am I correct ?
Or we just replace markdown-it with remark for a better AST ?


Add Universidad de los Hemisferios

@darksapiensman First stage of verification passed, official domain is uhemisferios.edu.ec as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

@darksapiensman Thank you for your patience while waiting for a review and processing your request. Pull request merged.


Fixed default namespace + serialization issue

Getting the unit test up and running with Norwegian localization for numbers

Thanks!


feat: add Transaction Builder class and add contract check to Account

Depends on #792.
// uses near units to parse unit string.
bob.createTransaction("alice.near").transfer("10 N").signAndSend();

@MaximusHaximus addressed feedback from #792

Not stale


Readme/contribution guide lines?

Hey @drewclem! Any chance we could get a readme or a guide on how to get started contributing to this project?

Sure!


Fix typo and add some scientific and Finnish magic

I'm not a big fan of mixing English and Finnish abbreviations into a single String class, maybe we should have namespaces?
Strings.Abbreviations.EN.Strings
Strings.Abbreviations.FI.Strings
...


validation_strategies field not recognized by Nakadi while creating event type (latest version)

I get:
ClientHandlerImpl-95 [] WARN ForkJoinPool-2-worker-5: http-stats(400) - {"type":"http://httpstatus.es/400","title":"Bad Request","status":400,"detail":"Unrecognized field \"validation_strategies\" (class de.zalando.aruha.nakadi.domain.EventType), not marked as ignorable (8 known properties: \"schema\", \"default_statistic\", \"partition_strategy\", \"name\", \"owning_application\", \"category\", \"enrichment_strategies\", \"partition_key_fields\"])\n at [Source: java.io.PushbackInputStream@46864fb8; line: 1, column: 100] (through reference chain: de.zalando.aruha.nakadi.domain.EventType[\"validation_strategies\"])"} - problem: The request contains bad syntax or cannot be fulfilled.
while calling .createEventType(eventTypeCreaton) to the latest development version of Nakadi.

#41


Make the controls on the play-round page scale with the screen size

So that, if the students are on an iPad, we can make use of the increased screen real-estate. :slightly_smiling_face: In particular, we're scaling up the interact button, so that it's easy to click, and the pollen counter, so that it's easy to read.
We've also discussed doing away with the interact button in favor of some sort of gestural control; we may end up prototyping that in the future. For the moment, though, we're going to keep maintaining the interact button, just in case we end up preferring it to the gesture controls.
(Edit: note that this PR changes the interact button so that the name of the flower is no longer displayed. If we go with this change, we should probably figure out where to put that text—see issue #153)

Some notes from the meeting about things to change:

Moving the FAB to the right-hand corner
Plane-landing icon and bee-and-flower-icon → arrow-up icon
Simplify the scaling code a bit (media queries?)

Okay, all fixed! :)

I think this will need more refinement in the future but I'll approve what we have now.

Yes, agreed—there's a lot of work left to do here!


Share project with group

The gitlab API lists an option to "Share project with group" which I cannot find in the ruby API. I am happy to admit I may have missed this, but if this is not currently implented I would like to make a request for this feature.

I don't believe this exists.  Contribution is welcome, please see CONTRIBUTING.md if interested.


dplyr cheatsheet suggestion for summarizing NA not working

Under the "Summary Functions" heading and the "Counts" subheading, it lists:
sum(!is.na()) - # of non-NA's
However, using the following:
summarise(mtcars, notna = sum(!is.na()))
Produces this error:
#> Error in summarise_impl(.data, dots) :
#> Evaluation error: 0 arguments passed to 'is.na' which requires 1.

You need to call sum(!is.na()) on a variable. Try this:
library(tidyverse)
summarise(mtcars, notna = sum(!is.na(mpg)))

Hmm, I guess there is confusion because n() works without specifying the column.


Is running an app from ZIP package supported on linux?

I've tried it and it appears to deploy fine but just doesn't run the app.

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

ID: a7838171-5cab-d164-cc88-2973c0d0e56e
Version Independent ID: d888bc9c-c031-f67c-d5a0-25cc265f14e3
Content: Run your app from a ZIP package - Azure App Service
Content Source: articles/app-service/deploy-run-package.md
Service: app-service
GitHub Login: @cephalin
Microsoft Alias: cephalin

@Bolleman  Thanks for the feedback! We are currently investigating and will update you shortly.

I tried repeating the process with a hello world node app and can confirm that the app works as expected.  So the issue has something to do with the zip packaging of my actual node node app, not app service per se, so I'm closing this issue for now.
Sorry for any inconvenience.  Cheers


Update XFAIL for swift-distributed-actors

rdar://127206143 is now resolved, but rdar://128941797 is causing the project to still fail. https://github.com/apple/swift/pull/73976 will resolve this for main though.

https://github.com/apple/swift/pull/73976
@swift-ci please test

https://github.com/apple/swift/pull/73976
@swift-ci please test

@swift-ci please test


Add additional_fields to all @jobs

Summary of Changes
This PR addresses the request in https://github.com/Quantum-Accelerators/quacc/issues/2399 to have an additional_fields keyword argument for all @jobs in quacc. Will not merge without input from @tomdemeyere.
Requirements

[X] My PR is focused on a single feature addition or bugfix.
[X] My PR has relevant, comprehensive unit tests.
[X] My PR is on a custom branch (i.e. is not named main).

Note: If you are an external contributor, you will see a comment from @buildbot-princeton. This is solely for the maintainers.

Thanks @Andrew-S-Rosen this will be very useful for us, and I think overall that is a positive change for QuAcc, how do you feel about it?
Looking at the code I have nothing more to say!

Thanks for your comment. I am fine with the change. There is potentially some way in the future to take advantage of the @job decorator such that it will automatically permit the use of additional fields in every Job without having to explicitly define it in every single recipe. But that's for another day and is purely cosmetic.


Use Waker::will_wake()

I was wondering if there is any interest in adding this optimization, basically avoiding cloning the Waker if it isn't necessary.
Happy to make a PR.

Looking through the history of the original AtomicWaker implementation, it looks like it originally had a test like this, but it was removed later on.
I'm not familiar with futures' internals, but from a brief glance you could probably just add the check here.


feat: add event & status for ApisixRoute v2

Please answer these questions before submitting a pull request

Why submit this pull request?
[ ] Bugfix
[x] New feature provided
[ ] Improve performance
[ ] Backport patches

kubectl get ar -n test httpbin-route -o yaml

kubectl describe ar -n test httpbin-route

@gxthrj The e2e CI failed.

@gxthrj The e2e CI failed.

It is strange, scale endpoint getting error.

related to : #394 #395


Klassic Skeleton - Reflect about Design

This time, let's keep it simple, shall we?

"Unblocked damage that does at least 35% (quantity, updated when needed) MaxHP damage is cut by half. Once used, recharges after 5 turns. "
"Every 5 turns, gain 1 Buffer."
"Unblocked damage that does at least 1/2 MaxHP damage is cut by 75%. Once used, recharges after 10 turns."
"Unblocked damage that does at least 1/4 MaxHP damage is cut by 75%. Once used, recharges after 10 turns."

"Every 5 turns, gain 1 Buffer." Ok, this is simpler, let's go with it.


Any instructions for visualization on cam image?

hello, @tianweiy, thanks for your work.
I just want to realize visualization on camera image, so i try to modified tools/demo.py, but i got in trouble.
Firstly, I downloaded the driving sequence clip you provided in README.MD.
And in the info below:
https://github.com/tianweiy/CenterPoint/blob/1ecebf980f75cfe7f53cc52032b184192891c9b9/tools/demo.py#L83
I found the keys ref_from_car, car_from_global and cam_intrinsic. For cam_intrinsic, I think it's the camera intrinsic matrix. But what's the meaning of the other two keys?
How can I transform the lidar_3d_boxes to image_2d_boxes?

The other two are lidar and car pose matrix. I can add an example to visualize boxes on images in a few days.

it is a little specific than I thought so maybe you should refer to the exact dataset you are working on and then check their documentations. For nuScenes, I remembered there are related functions to plot boxes on cameras. For Waymo, there is a projection module https://github.com/waymo-research/waymo-open-dataset/tree/master/third_party/camera but I haven't used yet. Sorry that I am too busy to add any code any time soon. This should do the 3d visualization if you only want to do some checking https://github.com/tianweiy/CenterPoint/blob/master/tools/visual.py

@tianweiy hello, thank you very much.
I am trying to do this work.  I think I can do it. Thanks for the information you told me before.
Hope you have some great work in the future.


SignalR Example: add method to ChatHub broadcast

I followed this example today and was getting this error:

I realized that this example omits the method name Send, and it is passing timestamp as the method name instead (when that should be the first argument)
Here is the function deceleration, it requires method name:
    /// <summary>
    /// Invokes a method on the connection(s) represented by the <see cref="T:Microsoft.AspNetCore.SignalR.IClientProxy" /> instance.
    /// Does not wait for a response from the receiver.
    /// </summary>
    /// <param name="clientProxy">The <see cref="T:Microsoft.AspNetCore.SignalR.IClientProxy" /></param>
    /// <param name="method">name of the method to invoke</param>
    /// <param name="arg1">The first argument</param>
    /// <param name="arg2">The second argument</param>
    /// <returns>A task that represents when the data has been sent to the client.</returns>
    public static Task SendAsync(this IClientProxy clientProxy, string method, object arg1, object arg2)

After I added the method name Send, the example started working

@scottaddie made the change to nameof(Send) and tested it out locally, works

@anurse @scottaddie how about this:
Method invoked on client is called ReceiveMessge
Method called on server is called SendMessage
I've made this change

Thank you very much @caleblloyd, your PR has been merged!


openvr: 2.2.3 -> 2.5.1

Description of changes
https://github.com/ValveSoftware/openvr/releases/tag/v2.5.1
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 299570 run on x86_64-linux 1

7 packages built:

bottles
bottles-unwrapped
gamescope
gamescope-wsi
monado
opencomposite-helper
openvr

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-ready-for-review/3032/3907

Result of nixpkgs-review pr 299570 run on x86_64-linux 1

8 packages built:

bottles
bottles-unwrapped
gamescope
gamescope-wsi
monado
opencomposite-helper
openvr
wlx-overlay-s


fix(vmseries): disallow IP forwarding through the mgmt interface

Description
Prevent the first network interface (the management intrface) from
receiving packets with a non-matching destination IP address.
Motivation and Context
This is per recommendation of the official Reference Architecture. Also,
there are currently no known use cases which would require that.
How Has This Been Tested?
By apply and destroy -parallelism 1 of examples per their READMEs.
Types of changes

Bug fix (non-breaking change which fixes an issue)

While this change is technically a breaking one for anyone who uses the first interface for packet
forwarding (for example as a next hop in Azure route table), it's hard to come up with any real
environment or use-case that would be using this today in the field.
Checklist

[x] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes if appropriate.
[x] All new and existing tests passed.

This has broken a deployment for a customer. Any breaking changes should bump the minor rev. and trigger a release note.


Add support cpp parser

Whoops.
A commit from a neighboring branch got here.
I think this PR will be in draft before the PR #116  is merged.

Codecov Report
Attention: Patch coverage is 75.90361% with 20 lines in your changes missing coverage. Please review.

Project coverage is 86.28%. Comparing base (45b6455) to head (9dd1b5a).

Files with missing lines
Patch %
Lines

src/scoping/langs/c.rs
72.97%
10 Missing :warning:

src/scoping/langs/cpp.rs
77.27%
10 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #134      +/-   ##
==========================================
- Coverage   86.68%   86.28%   -0.40%
==========================================
  Files          31       33       +2
  Lines        1937     2020      +83
==========================================
+ Hits         1679     1743      +64
- Misses        258      277      +19

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

#116 merged 🎉 Thanks again for your contribution! Feel free to rebase this.

Thank you very much! The revised example for the README looks good, at least like something you might not find in IDEs.
Let me know when you're ready to move the PR out of draft.

Just a heads-up, work in this PR will conflict with #144 . Currently I prefer merging #144 before this C++ PR. If that will end up happening, I'll fix the conflicts for you, so no worries. (but feel free to fix it yourself if you like... #144 will make implementing languages easier anyway)

I think it is better to merge this PR after #144. After that I will fix the conflicts myself. And so maybe I'll come up with a more useful example :).

Hi @Mephistophiles !
#144 was split off into #151 , which is now merged into main and contains the language refactors. So feel free to refactor your PR onto main now.
And for the example you now have, I like it!


iOS 11 issue with LMAppController

The allInstalledApplications method does not work anymore on the latest beta of iOS 11, is it a removal of private API by Apple ? Any idea on how to fix this ?

Thanks for pointing this out to me. At the moment, no idea and, not surprisingly, https://github.com/nst/iOS-Runtime-Headers doesn't have the iOS 11 headers yet.
I'll look into it as soon as I can; probably won't get to it until this weekend.

Any news :) ??

Not much I'm afraid.
Based on poking around with the Runtime Browser (https://github.com/nst/RuntimeBrowser.git) it looks like the call is still part of iOS 11. And the app runs fine using iOS 11 in the simulator. But as you've noticed, on an actual device, the call returns 0 apps.
I also tried replacing allInstalledApplications with allApplications. But that doesn't make any difference.
I'm going to have to do some more digging around.

I'm going to leave this open---since it's not solved.
But after spending some time looking into this, I am stumped. So it's likely that this project is dead. I'll put a note to that effect in the README.
If anybody has any thoughts about a fix, I'd very much appreciate them.

Does anyone have an update on getting LSApplicationProxy to work in iOS 11?

Now that the GM for iOS 11 is out, I'll try and make some time to go through the headers and see if there are any methods that look promising as a work-around. But my guess is that there won't be.

This API was left for so long because Apple used it to determine which plugins (extensions) should be displayed when presenting a share sheet. Try investigating how that works in iOS 11.

Anyone tried the MCM API such as MCManagedAppManager?

Hey, launching apps by bundle ID still work. However you must remember the bundle id which is not helpful.

Do you mean using an openUrl call on the URL scheme? Or what method of opening an app by bundle ID do you mean?

[LMAppController sharedInstance] openAppWithBundleIdentifier: com.apple.AppStore
Nope, this method is the same private api. I reported a bug to apple to do with this because an attacker could use this method to open app apps endlessly causing your phone to heat up etc...
The code above does work because its basically how an app is launched normally from the home screen. If you want the icon etc or list of ALL apps, you need the com.apple.springboard entitlement.
Otherwise you need each bundle id to launch it with.

What is the best way to add this entitlement ? Creating a . entitlements file in the project ?
Thanks in advance.

No. It is not as simple as that. You can add that entitlement and it will work on Jailbroken devices only. For stock iOS the entitlement needs to be signed by Apple. Apple won't give you the entitlement
because with the entitlement you gain full root access to the springboard. For this to work on iOS 11, you would need to find a new private api which Apple hasn't closed off.

Hi, I'm trying to figure out how did _LSApplicationWorkspace changed in iOS 11 by looking at it's containing binary. after downloading the image for iOS11, I looked for the binary in it's containing framework
/Volumes/Tigris15A432.D10D101OS/System/Library/Frameworks/MobileCoreServices.framework  but couldn't find any mach-o file in this folder ... any idea where can I get it from ?

we had foud new method called " MobileContainerManager" can get a result is installed(or installing) with no install with bundle id ,
'''
void* lib = dlopen("/System/Library/PrivateFrameworks/MobileContainerManager.framework/MobileContainerManager",RTLD_NOW);
if (iOS11) {
    Class MBAppManager = NSClassFromString(@"MCMAppDataContainer");
    NSError  * error ;
    id contentApp = [MBAppManager performSelector:@selector(containerWithIdentifier:error:) withObject:bunldID withObject:error];
    if (contentApp) {
        contentApp = nil;
        //installed or installing
    }else{
       // no installed
   }

}
'''
but can not get the version current installed on device
my English is poor ,sorry

Guys, any ideas about iOS 12 ?

It seems like the MBAppManager solution sealed with entitlements in iOS 12... perhaps someone found a different solution ?

@iradization any thoughts about it?

@alychkouski Guys, Did you find the relevant method?

Is there a solution for iOS12?


CI: run tests also with GraalPy 24.0

The tests do not pass with GraalPy but pytest is weird on this platform making debugging the problem not really pleasant and I don't really know if it is worth it. At a quick look, it seems that we generate wheel tags that are not compatible with the ones generated by packaging. It also looks like that GraalPy, at least in the version installed on the GitHub Action runners, patches packaging. Unless someone asks for it, I'm not really motivated to untangle this.

Agreed. I know of GraalPy, but haven't encountered it in real-world situations yet.

Yeah. This actually started with me checking that we run the tests on PyPy 3.10 after I saw mesonbuild/meson#12979 and noticing that GitHub Actions offer GraalPy too. For the records, we run the tests with PyPy 3.10.


statedb: Use proper context for graveyard rate limiting

As the rate limiting was not aborted when DB was being stopped this caused unnecessary waits in tests. Add a context that's canceled when DB is stopped and use that in the rate limiter.
Note that we're on purpose not using jobs here to allow statedb to be used for example for the module health reporting and using jobs would cause dependency cycles since jobs depends on health reporting (though for that we do also need to pull out pkg/statedb/cell.go, but don't want to make it more complicated).

/test


IPsec status on GUI not correct

Even if there are connected IPsec tunnels, the status on the GUI (e.g. dashboard widget or Status --> IPsec) always shows the tunnels as inactive.
How to verify: ipsec status lists established SAs, but dashboard widget shows 0 active tunnels and IPsec status lists tunnel in status "x N".
OPNsense 15.7.18_1-i386

Can you try 15.7.20, the IPsec status backend was completely rewritten in 15.7.19.

On 15.7.20 the IPsec status looks good, at least in my case.

I'll have a look at 15.7.20. Thanks.

Looks much better on 15.7.20.


minimal changes to adapt to new fleetdb default oauth posture

This is a small set of changes to allow FleetDB's current main to start successfully in the sandbox.

I never saw us use that OIDC flag before. I didnt know it existed. Cool.

It didn't until I made it. 😉


Ability to set expiration date when creating a token

Ability to set an expiration date of a token would be a great feature, giving a bit of flexibility with tokens' expiration date

Done.


Is there a way to increase the default request size?

I am hitting an issue querying for larger amounts of data e.g. the result size of<PHONE_NUMBER> is larger than the allowed limit of<PHONE_NUMBER>
Is there a way to specify a max results size? And if so how can I configure this?

Hey, there is no limit imposed by this library.


Update nextjs config in SSR docs

Codesandbox with this config if anyone wants to verify: https://codesandbox.io/s/rsp-3-16-4-with-next-js-iey61w
✅ Pull Request Checklist:

[ ] Included link to corresponding React Spectrum GitHub Issue.
[ ] Added/updated unit tests and storybook for this change (for new code or code which already has tests).
[ ] Filled out test instructions.
[ ] Updated documentation (if it already exists for this component).
[ ] Looked at the Accessibility Practices for this feature - Aria Practices

📝 Test Instructions:

🧢 Your Project:

Closing in favor of #3140


Wrong expression generated

Whenever I start the app, there is an already-generated cron expression in this form:
0/1 * 1/1 * ?
So if I try to set "every 1 minute" and just it, it doesn't work. 1/1 remains and there is no way to change it.

I have the same issue, is there any news?


upgrade jackson & snakeyaml

Issue #, if available:
Description of changes:
CheckList:

[ ] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #537 (a2cb303) into 1.3 (8b39773) will decrease coverage by 0.13%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##                1.3     #537      +/-   ##
============================================
- Coverage     75.18%   75.05%   -0.14%
+ Complexity     1994     1992       -2
============================================
  Files           253      253
  Lines         11475    11475
  Branches       1816     1816
============================================
- Hits           8627     8612      -15
- Misses         1832     1842      +10
- Partials       1016     1021       +5

Impacted Files
Coverage Δ

...nt/indexstatemanagement/model/destination/Chime.kt
40.90% <0.00%> (-13.64%)
:arrow_down:

...anagement/indexstatemanagement/model/Transition.kt
63.38% <0.00%> (-4.23%)
:arrow_down:

.../rollup/action/start/TransportStartRollupAction.kt
66.27% <0.00%> (-3.49%)
:arrow_down:

...arch/indexmanagement/rollup/RollupSearchService.kt
59.25% <0.00%> (-1.86%)
:arrow_down:

...earch/indexmanagement/transform/model/Transform.kt
84.34% <0.00%> (-1.31%)
:arrow_down:

...nt/rollup/action/stop/TransportStopRollupAction.kt
70.93% <0.00%> (-1.17%)
:arrow_down:

...earch/indexmanagement/transform/TransformRunner.kt
86.42% <0.00%> (-0.72%)
:arrow_down:

...nt/indexstatemanagement/ManagedIndexCoordinator.kt
65.97% <0.00%> (-0.60%)
:arrow_down:

.../action/explain/TransportExplainTransformAction.kt
69.31% <0.00%> (+2.27%)
:arrow_up:

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


#715: Support setting the local IP address to connect from

This adds a local_address: Option<IpAddr> parameter to the synchronous, and tokio connect functions.
(As far as I can see there is no current way to support this in async-std, because the library doesn't provide any way to do an async connect for an existing socket)

Any chance I can get a review on this @paolobarbolini  ?


[Windows]Cannot save the Composite Application Project

Description:
It cannot Finish saving Composite Application Project. It hangs at below point.

Steps to Recreate

Create a DataService Project.
Right Click on the created DataService Project and select, new -> other -> Composite Application Project
Try to Finish by selecting the relevant project.

tested Scenarios

The above described scenario

Creating a new Composite Application Project from File -> New -> Other and selecting the Data service Project.
Result: Hanging in the middle of the process

Creating a new Composite Application Project from File -> New -> Other and without selecting the Data service Project. Ends with below error.

Fixed in - https://github.com/wso2/developer-studio/pull/207


Finish documentation for interop client

TODO(prattmic)

We should also update the docs/ for information on the interop client.

I can do this

Can u please confirm us the documentation for mission planner as well interop client documents

@akashcas That is covered by #83
tl;dr, run clientproxy.py with the appropriate arguments as a normal Python program and run auvsi_mp.py inside the Mission Planner scripting interface.
https://github.com/auvsi-suas/interop/tree/master/client/missionplanner

@akashcas The rules are very clear. It is the judge's responsibility to provide a test server which implements the interoperability API as defined by the rules. The rules specify it is the responsibility of the team, not the judges, to integrate with this API. The mission planner integration, and both documentations are not covered by our responsibilities as defined in the rules, so you should place no expectation we will finish such or help you debug such.
That being said, when possible we try to make it easier for teams and to save them time by providing tooling. You may find, however, certain requests and debugging help will be de-prioritized.

Is this complete?

We'll call it done for now, though it could really use more detail.


Large groups with timestamp data are not read correctly

Version:
Runtime Version: .Net Framework v, .Net Core v etc.
OS: Windows
Expected behavior
I generate a parquet file with a commercial system for data acquisition.
This file has about 1.7 million rows and contains a time column represented by 64bit int format. The group size inside this file is 400773, what I think is source of the problem.
The time column contains continuous timestamp with 1ms resolution.
Actual behavior
ParquetRowGroupReader reads only the first 131072 = 2^17 timestamps correct while the remaining values of this group are set to a constant value which is equal to the first value of the coresponding group.
This behaviour affects only this time column, which is also the first one in the table, other columns with numeric data are correct.
I checked the data also with spark, here the time values are correct.
Steps to reproduce the behavior
TestDataSet.zip

Code snippet reproducing the behavior

//here

The column group contains a dictionary page followed by four pages of data. The first data page has an encoding of PLAIN_DICTIONARY, which means that it references the data in the dictionary. The other data pages have encodings of PLAIN, which means that they do not.
But the constructor of DataColumn seems to make the assumption that if there's a dictionary, then all of the data pages reference the dictionary. That is not true in this case. The data from "definedData" needs to be merged somehow with the data from "dictionary". The best way to do this is probably to change DataColumnReader.ReadColumn so that in the PLAIN encoding case the indexes array is initialized with -1 to mean "use the plain data instead of the dictionary data".
Another oddity I noticed is that the dictionary is allocated enough space to hold the entire row group's worth of data even though it really only seems to need to hold the dictionary data itself. This means using Num_values from the dictionary page header instead of NumValues from the column metadata in order to initialize the array size.

I've submitted a pull request to fix this bug.

closing as fixed by @CurtHagenlocher


Integrating webdriverio-server

This change adds new make targets and a new command line utility for
working with a remote webdriverio-server to do e2e testing.
The new make targets are remote-e2e-test which is dependent on a build-mock
and do-remote-e2e-test which will bypass the build-mock if you know you didn't
change anything but the spec files.
This release also delivers alternative ways to refernce beaker when requiring it.
For example, in the Gruntfile.js you can now do:
var beaker = require('beaker');

module.exports = function (grunt) {
    beaker.pour(grunt);
};

In a karma-jasmine spec, you can now do:
var beaker = require('beaker').jasmine;
var wait = beaker.wait;
var waitForPromise = beaker.waitForPromise;

In an e2e spec, you can now do:
var webdriverio = require('webdriverio');
var webdrivercss = require('webdrivercss');
var beaker = require('beaker').e2e;
var testConfig = require('./test-config.json');
var url = beaker.getUrl(testConfig);

describe('e2d testing using ' + url, function () {
    var client;
    beforeEach(function () {
        client = beaker.init(webdriver, webdrivercss, testConfig);
    });
});

@ameadows look like the build failed

@sandersky @psbanka Travis is happy now.

Self-merging, will address any issues in a follow-up PR

closes #41


Updated: intellij 192.6262.58

Newer version of intellij (192.7142.36) is now available in master. f50a661e90fa3ed371ac480f3236464e381ed1cc


Add maxDate & minDate

Q
A

Bug fix?
[ ]

New feature?
[X]

New sample?
[ ]

Related issues?
fixes https://github.com/SharePoint/sp-dev-fx-controls-react/issues/497

What's in this Pull Request?
To set DatePicker with date boundary (minDate, maxDate).

@AJIXuMuK  - could you please review the PR

Hi @PrasadKasireddy - I've made additional changes and merged the PR.
Thanks for the contribution!

Hi @PrasadKasireddy - I've made additional changes and merged the PR.
Thanks for the contribution!

@AJIXuMuK  Thanks


issue created in parcel-examples to include this repo or at least link to it

Hey, thanks again for creating this nice example. I created an issue on the parcel-examples repo so that it can be linked to or incorporated into that repo: https://github.com/parcel-bundler/examples/issues/3
(Note: I'm not a dev on parcel, just a fan of angular and any build system that competes with webpack)

Yeah i'll upload it to examples once i figure out how to get the final version of angular to work with parcel, probably just gonna wait on the advanced typescript plugin to get a bit further in development

awesome, it looks like that repo is for actual code samples that use parcel so you would just need to open up a PR whenever you're ready on that repo.
again, awesome work on this, can't wait to use it as a base for my own projects 💯


fix: set proper framework dependencies for built-in pods

Summary:
Platforms like visionOS require explicit framework dependencies to be set in pods to build properly. For some reason linking on visionOS is more strict than on iOS but this might change in some future OS versions so it's good to have pods having exact dependencies.
I've discussed that earlier with @Saadnajmi and @cipolleschi. Let me know if you are okay with this change.
Changelog:
[IOS] [FIXED] - set proper framework dependencies for built-in pods
Test Plan:
CI Green

Thanks for the change! I think it is always good to be explicit!


Point to a link do download dev version

It's probably more useful than the direct github link

Indeed =)


USHIFT-1117: migrate reboot  tests to RF

this PR migrate the reboot test to the RF framework.
this test should:

create some  pod with a volume PV.
reboot the node
making sure the pod is still functional .

/test all

/test all

This looks good.
I'm putting it on hold until we refactor the "standard" suite tests because the current scenario is too long and this test adds 5.5 more minutes.
/lgmt
/hold

@ggiguash , can we merge this ?

@ggiguash , do we also need to override ci/prow/e2e-openshift-conformance-reduced ?

/override ci/prow/e2e-openshift-conformance-reduced-arm

/override ci/prow/microshift-rpm-upgrade

/override ci/prow/microshift-e2e-arm

/unhold
/override ci/prow/microshift-rpm-upgrade


Corrected Typos

Description of Change

Checklist

[ ] Added description of change
[ ] Added file name matches File name guidelines
[ ] Added tests and example, test must pass
[ ] Added documentation so that the program is self-explanatory and educational - Doxygen guidelines
[ ] Relevant documentation/comments is changed or added
[ ] PR title follows semantic commit guidelines
[ ] Search previous suggestions before making a new one, as yours may be a duplicate.
[ ] I acknowledge that all my contributions will be made under the project's license.

Notes:

Committed to the master by mistake. Sorry for the inconvenience.


Refine LA Service Blueprint

Design or Research
Refine the LA Service Blueprint to incorporate feedback in advance of sharing it with the state.
Completion Criteria

[ ] Feedback has been incorporated into the LA Service Blueprint and it has been shared with LA.

Tasks

[ ] Something.

Closing in favor of #713


Add WIN+V to the "Shortcut Guide"

📝 Provide a description of the new feature
Simply add the letter "V" to the shortcuts, it is the "Clipboard History" if enabled (side-note, maybe a quick way of enabling it)

What is the expected behavior of the proposed feature?  What is the scenario this would be used?
When Pressing and holding the Windows key, if the Shortcut guide is enabled, have it also show the letter V "Clipboard History"
If you'd like to see this feature implemented, add a 👍 reaction to this post.

@dskyehodges
the issue to track the shortcuts is https://github.com/microsoft/PowerToys/issues/179


Register offenses for variables against regexes in Performance/StringInclude

See https://github.com/rails/rails/pull/46910.
The second pattern of StringInclude#redundant_regex?((send (regexp (str $#literal?) (regopt)) {:match :match?} $str)) is pretty useless, because it only detects cases like 'str'.match?(/str/), so literal regex is matched against literal string. But does anyone write such code?
That pattern was implemented that way, because, to avoid cases when the receiver is a symbol and symbol does not implement #include?. But, it already marks as offense and autocorrects can_be_a_symbol.match?(/abc/)! So I think this PR changes are fair.

Yeah, This change looks fair! Thanks!


Nested get feature

Modified StoreContext::get() method in order to archive this.
Syntax: In testing steps "Foo's Bar's attr" or "Foo.Bar.attr" with give you access to either Foo()-Bar()->attr or Foo[Bar]->attr or Foo[Bar][attr].

There is no limit for the chain. You can nest as many times as you like and the is globally accessible.
Also added another helper testing method to assign elements to object/arrays

Paging @smijo149 to review the back-end work in this pull request!
Paging @juanmrad to review the testing work in this pull request!

@rashidsaf I couldn't figure out the relation between this PR and the issue attached to it. Please verify if the issue attached to it is correct. And if it is correct then I would like to discuss it with you.

@rashidsaf I couldn't figure out the relation between this PR and the issue attached to it. Please verify if the issue attached to it is correct. And if it is correct then I would like to discuss it with you.

The issue and PR is not directly related but Donald suggested to create this PR. The idea is  to create more generic functionality that I also used for the testing of this Bug issue

This looks good. Now that we are happy with the implementation, can you please also open a PR to implement this in FlexibleMink 2.0.


Update SOUND_MODE_MAPPING for Marantz NR-1602

These values were observed viewing the entity state in Home Assistant for my Marantz NR-1602 receiver. I would like to add these values to complete the sound mode mapping.
One example of a value being added. Currently, all three new values map to the sound mode DOLBY DIGITAL even though I don't see any mappings to that sound mode for those values.

All other mapping seem to work.

Thank you @edwardsre
I just converted your sound modes to upper case. That's how it is done for all sound modes.


Address DISTRIBUTION metric value type when creating time series

This is being punted since we don't want to document something we haven't tested, but I need to test it and add it.

Can assign to me, cc @rimey

Hello,
One of the challenges of maintaining a large open source project is that sometimes, you can bite off more than you can chew. As the lead maintainer of google-cloud-python, I can definitely say that I have let the issues here pile up.
As part of trying to get things under control (as well as to empower us to provide better customer service in the future), I am declaring a "bankruptcy" of sorts on many of the old issues, especially those likely to have been addressed or made obsolete by more recent updates.
My goal is to close stale issues whose relevance or solution is no longer immediately evident, and which appear to be of lower importance. I believe in good faith that this is one of those issues, but I am scanning quickly and may occasionally be wrong. If this is an issue of high importance, please comment here and we will reconsider. If this is an issue whose solution is trivial, please consider providing a pull request.
Thank you!


🐛 BUG: static assets are deleted before deploying new worker succeeds

Which Cloudflare product(s) does this pertain to?
Wrangler
What version of Wrangler are you using?
2.13.0
What operating system are you using?
Linux
Describe the Bug
I occasionally get the error about our workers taking too long to start up. When this happens, running the exact same command to re-deploy almost always works. I would like to figure out what to do to avoid this but have not yet discovered what makes it randomly fail. We are not doing anything explicitly in our workers to make it take long other than importing lots of other modules.
During our deploy, Wrangler is also uploading static assets. After uploading the new assets, Wrangler deletes the old ones. This wouldn't be a problem if the worker didn't take too long to start. In the cases where that happens, our users have reported seeing errors about not being able to find the old assets in KV. After I re-deploy and the new worker is running, they are able to press refresh which loads the new assets, but I would prefer if our users were never exposed to this problem.
I think this situation could be improved by deleting the old assets after validating the new worker can start.
The current sequence appears to be this:

upload new assets
delete old assets
upload new worker
validate it started quickly enough

What I would like it be:

upload new assets
upload new worker
validate it started quickly enough
delete old assets

Is this possible? Thanks.

We're going to be re-addressing assets as part of the Workers/Pages convergence. Closing this for now


Update wording on library deps

OkHttp has one library dependency on Okio, a small library for high-performance I/O.

api deps.okio
api deps.kotlinStdlib
Should we have a statement on the policy for upgrading kotlin?

Still might be worth talking about this as a single library dependency, but then also mentioning that it's written in Kotlin and incurs the Kotlin stdlib dependency as a result of that.

related PR https://github.com/square/okhttp/pull/5273