Add interactive timestamp to brief messages.

Two problems have plagued user experience for a long time. One,
there is no separation between two different messages, that is, one
does not know when one message ends and another one begins. Two,
there are no timestamps displayed for brief messages.
This commit aims to solve both with a sliding label which shows the
timestamp of the message if clicked on it. We do this buy
introducing two elements under message-brief, timestamp-container
and timestamp-label.
Browsers, by default, increase the size of the viewport to fit the
size of any element inside it. This causes the horizontal size of
the viewport to increase if we attempt to 'slide' an element out of
the viewport. The only way to not allow the browser to increase the
size is if there were an element which always inside the browser,
and another element (our actual timestamp) nested inside it which
moves around inside our outer element (which has the overflow
property set to hidden). Doing this causes the browser to think that
we're not moving the element out of the viewport, but that it's
simply overflowing from the outer element.
Has been tested on both platforms.

Had forgotten to upload a screenshot:

(all content is same, except that now all messages have the label, not only message-brief messages.)

Thanks @ishammahajan !
Browsers, by default, increase the size of the viewport to fit the
size of any element inside it. This causes the horizontal size of
the viewport to increase if we attempt to 'slide' an element out of
the viewport. The only way to not allow the browser to increase the
size is if there were an element which always inside the browser,
and another element (our actual timestamp) nested inside it which
moves around inside our outer element (which has the overflow
property set to hidden). Doing this causes the browser to think that
we're not moving the element out of the viewport, but that it's
simply overflowing from the outer element.

Ah, clever solution -- and thanks for the clear explanation!
I've just played with this branch some, using it to read through some threads.

On the high-level design, I'll comment in the chat thread.

One detail I notice: when the timestamp is hidden and I tap on the part of the message where the timestamp would go if it were in view, the tap always seems to hit the timestamp, showing it... even if there's something else there, like a link.

This is a pretty significant chunk of the width of the message, so I think it's likely there'd often be surprises where someone meant to follow a link, or show an image, etc., and instead they just get the timestamp toggled.

Oh also, for cross-reference: the issue this addresses is #1336 .

Thanks for the many swift updates!
I played with this version some, and I like it. I think there's still a risk it'll feel "busy" to people, but if so we can probably make the offscreen timestamps poke in a little less still.
So for the next step, I took a close look through the code. Comments below -- mainly a number of small things for code clarity, and a couple of nuances of behavior.

I notice the loading animation doesn't look right -- I think this is because .loading was lost in the CSS.

Can we call the class just timestamp instead of brief-timestamp? The "brief" part is no longer accurate; and it looks like the only place plain timestamp survives in this version is in the HTML for the loading animation (in messageLoadingHtml).

Feel free to rename the one in the loading case to loading-timestamp if you have a bunch of styles you don't want to apply to it; compare loading-subheader etc.

Ah, in fact: these changes are going to affect the loading animation, so let's be sure to test that case and make adjustments as necessary. Doesn't need to do anything new and fancy -- just make sure it continues to look right.

Here's a quick hack to test that locally:

diff --git src/webview/html/htmlBody.js src/webview/html/htmlBody.js
-

+

Then please post a pair of before/after screenshots.

Small style nit: messageTime is only used once and has a short definition, so let's put the definition right before that one place it's used.

Small style nit: timestampHtml comes before bodyHtml when used (both times), so let's put their definitions in the same order.

Nit: color: rgba(0,0,0,0.65); should have spaces after commas. Similarly another color: line.

Nit: this is a no-op:

 .topic-header {
   background: #ccc;
+}
+.topic-header {

There are two .brief-timestamp style rules, and the second one overrides some properties in the first. Should fold it in.

Let's write this in HSL: background: #4b5663
The webapp makes a practice of using HSL instead of RGB (there are a few exceptions, but I think those are where people just didn't know and it wasn't caught in review.) There are good reasons for this, because it makes it easier to understand what the color is, and also to make changes to it. See here and here for some good explanations.
We aren't consistent about this ourselves -- it's about half and half, ignoring colors that are just flat gray -- but I'd like to push toward HSL. Especially for interesting new colors like this one. :-)

In this code:

+  if (target.closest('.message')) {
+    const briefMessageElement = target.closest('.message');
+    if (briefMessageElement) {

the outer if is redundant, right?

Also we can drop "brief" in the name.

In this code:

      const timestampElement = briefMessageElement.getElementsByClassName('brief-timestamp');
      if (timestampElement) {
        timestampElement[0].classList.toggle('show');

the local is called "element", but it's not actually an element, right? It's a collection, as the [0] shows. Also does the if test do anything? I'd expect it to just always be true.
Instead, let's put the [0] in the definition of timestampElement, so it becomes an element.

Thanks for the quick review as well!

.loading was lost in the CSS

Oh, that must have happened because of the rebase onto master. Fixed though.

call the class just timestamp instead of brief-timestamp

That makes sense, thanks! The new loading screen looks like this.

messageTime is only used once and has a short definition

That expression was extracted into a variable because it was used twice, now that it isn't, I have removed the variable and put the expression straight into the one place it is used.

See here and here for some good explanations

Thanks for those links! I have refactored every color instance I add in this PR to hsla!

the outer if is redundant

True, fixed.

I'd expect it to just always be true.

It does come out to be always true (flow didn't give an error). That's strange. It could technically be null too, right (flow doesn't know that a message always contains a timestamp)?

[0] in the definition of timestampElement

Actually since the surrounding if is not needed, the function becomes a lot more cleaner.
const messageElement = target.closest('.message');
if (messageElement) {
  messageElement.getElementsByClassName('timestamp')[0].classList.toggle('show');
}

Have edited the commit message to reflect these changes.

Thanks for the updates! The revisions all look good. This is quite close to merge -- just a few comments on this version:

There are two .timestamp rules in the CSS. This confused me for a couple of minutes as I was looking at the rule lower in the file but not the one above it; for one thing, I noticed the old code had font-size: 0.9rem; and was wondering why that was lost. It wasn't, it just went into the other rule. :-)
So let's fold the lower rule into the upper one.
... Oh! I see. That lower rule is the overrides for dark mode. :stuck_out_tongue_closed_eyes:
I should do something to make that more obvious -- this isn't the first time I've been confused about a diff that touches that dark-mode CSS.
I had the same misunderstanding in yesterday's comment (except it was a .brief-timestamp rule.) Please do point out when something I say doesn't seem to make any sense -- sometimes in fact it doesn't make sense. :wink:

Why drop the white-space: nowrap;?

How did you choose the background color for the timestamp pills? Now that it's in HSL :smile:, I can see that it's a faintly greenish-blue gray. Why that particular color?
... Aha, now that I see it's only for dark mode, I also see that that hue (and others close to it) are used in the webapp for lots of things in dark mode. (Harder to tell in our CSS, because a lot of it's in RGB!) That's natural, then.

(Note to myself: the lack of return inside the last if of the click handler is a confusing mismatch, and also makes diffs like this one look a bit puzzling. I know it's caused by our linter settings; I'll go take care of it.)

Let's write this in HSL: background: #4b5663
The webapp makes a practice of using HSL instead of RGB (there are a few exceptions, but I think those are where people just didn't know and it wasn't caught in review.) There are good reasons for this, because it makes it easier to understand what the color is, and also to make changes to it. See here and here for some good explanations.
We aren't consistent about this ourselves -- it's about half and half, ignoring colors that are just flat gray -- but I'd like to push toward HSL. Especially for interesting new colors like this one. :-)

(BTW I just filed #3516, about doing this in general.)

Thanks for the swift review!
I think since this is the design we're going with I'm changing this PR to ready to review.

I noticed the old code had font-size: 0.9rem; and was wondering why that was lost.

Actually, the previous version had both timestamp and brief-timestamp, which both had a common rule for font-size: 0.9rem. Since brief-timestamp was not needed, I changed it to timestamp and folded the common rules in, hence the confusion. Sorry, I should have made the change more explicit in a comment 😛.

white-space: nowrap;

That is a mistake I made. Sorry, fixed!

How did you choose the background color for the timestamp pills? Now that it's in HSL 😄, I can see that it's a faintly greenish-blue gray. Why that particular color?

So I wanted to make the background for timestamps a little lighter (on light mode) and a little darker (on dark mode) than the headers of the respective modes, in order to make them not look out of place and less flashy.
I went to this website to get the light mode header color, subsequently see the lighter version of that color (#CCCCCC -> #E0E0E0) and inserted the latter into an RGB to HSL converter. Did the same for dark mode, but instead of selecting a lighter color, chose a darker one.

I just filed #3516, about doing this in general

I'll pick that up, I think.
NOTE: Another small change I made during this revision, box-shadow is now properly scaled and even lighter (now that we use HSL I was able to precisely find the correct color I imagined 😄)
box-shadow: -1px 1px 2px 0 hsla(0, 0%, 0%, 0.3), 0 2px 4px 0 hsla(0, 0%, 0%, 0.3);
became
box-shadow: -1px 1px 2px 0 hsla(0, 0%, 0%, 0.3), -2px 2px 4px 0 hsla(0, 0%, 0%, 0.3);

and

background: hsl(0, 0%, 88%);
to
background: hsl(0, 0%, 92%);

to

Please play around with these colors and shadows, and tune them better if required, thanks!

Rebased onto master!

Looks good -- merged! Thanks again @ishammahajan for all your work on this.


Add TLC

Added TLC dataset

I have reduced the size of the dummy file and added README sections as you suggested.

I have a little issue to run the test. It seems there is no failed case in my machine.

Thanks !
It looks like the PR includes changes to many other files than the ones of tlc, can you create another branch and another PR ?


UPSERTing from the Java API

I have a three-node OrientDB cluster set-up using the default configuration, and I need to UPSERT a somewhat large number of vertices (~1000) from the Java API periodically. However, I notice that
orientGraph.command(COMMAND).execute(params)

takes a very long time (about 3 minutes for those 1000 vertices). I managed to cut this to 18 seconds by adding a UNIQUE index to the class and making a lookup + conditional insert, but this is more error-prone and still slow. Is there any other way I can achieve the same effect as UPSERT with a decent performance from the Java API?

Curious to know if you got any solutions for this.
Thanks

@lazywizar the solution I ended up adopting was to replace OrientDB completely, as the distributed mode (which I was using) was everything but production-ready.


export createGameReducer

this is required in order to develop clients/server/utilities/tests outside of the core repo
Checklist

[x] Use a separate branch in your local repo (not master).
[x] Test coverage is 100% (or you have a story for why it's ok).

@nicolodavis done - this made this PR a little bigger...

Thanks Amit!

Coverage remained the same at 100.0% when pulling d228ded05367644f6448ea0b0467e5c25b8b5c6e on amitport:patch-2 into 495b5a050e98464b71d44ba0f74b6daad7df8b05 on google:master.


Terrain culling spike & OnWillRender

Explorer Alpha build versions:
Should be reproducable from the editor, rotate the camera and explore the world.
We can ask what RenderStep1 is.

It spends a lot of time computing the visibility of the trees, apparently, every now and then.
This data was captured using a build with deep profiling, being the player at Genesis plaza.

I don't seem to get any spikes (no deep profiling)


Clarification for 5:4 and 4:3 LCDs

I'm using a 5:4 LCD screen via MiSTer's HDMI out (HDMI to DVI) and noticed that Amiga vision's instructions for the mister.ini are typically for 16:9 / wide panels and do not mention the other more square LCD ratios (5:4 and 4:3).
I've found i needed to comment out a few lines to get a squarish picture / get it looking ok but sense that it's still not quite 100% right.
Is there a set of instructions of what best to put in mister.ini for those of us using 5:4 LCD panels and 4:3 LCD panels connected to the HDMI out socket?

Thanks for the reply @limi
That isn't quite what I meant and apologies if I was unclear in describing the problem above.
Looking https://amiga.vision/docs#setup-for-mister
It suggests to do the following...under the section:
Setup for MiSTer
`Paste the following recommended core settings to the bottom of your MiSTer.ini file in the root of your MiSTer file system – these settings are further explained in the Video Modes section. It’s especially important to explicity define resolutions for both PAL and NTSC, and not rely on the automatic fallback that MiSTer has available:
Amiga
+Amiga500
+Amiga500HD
+Amiga600HD]
video_mode_ntsc=8 ; These two use the recommended setting of 1080p60 and
video_mode_pal=9  ; 1080p50, adjust if you want a different resolution
vscale_mode=0
vsync_adjust=1 ; You can set this to 2 if your display can handle it
custom_aspect_ratio_1=40:27
bootscreen=0
These default settings assume that you are using it with a 16:9 format 1080p or 4K TV. If you are using a 16:10 format 1440p monitor, use these settings for the video modes instead:
video_mode_ntsc=1920,1440,60
video_mode_pal=1920,1440,50
Note that even if your 16:9 4K TV can handle and scale 1440p, we still recommend using 1080p output, since that will do proper integer scaling to 4K and make use of the per-game 5× Zoom and Dynamic Crop modes.`
Unfortunately if the MiSTer user is using a 5:4 or 4:3 LCD panel, it's unclear which of the above settings they should comment out.
Suggested resolution -  it probably just needs an extra paragraph underneath that saying something like....
If using a 5:4 or 4:3 aspect ratio LCD panel / screen, the following amigavision settings in MiSTer.ini should work better for you (taking note of the commented out lines).
`
[minimig]
video_mode_ntsc=8
video_mode_pal=9
;vsync_adjust=1 ; You can set this to 2 if your display can handle it
;custom_aspect_ratio_1=40:27
[Amiga
+Amiga500
+Amiga500HD
+Amiga600HD]
video_mode_ntsc=8
video_mode_pal=9
;vscale_mode=0
;vsync_adjust=1 ; You can set this to 2 if your display can handle it
;custom_aspect_ratio_1=40:27
bootscreen=0
`


DataGrid with disabled vertical scrolling doesn't show new items until scrolled

Describe the bug
If you have a data grid inside a stackpanel thats inside a scroll viewer and disable the scrolling on the datagrid when new items are added to the items collection they are not visible untill you scroll, then as you scroll back up all items are visible.
To Reproduce
Get the repo https://github.com/almightyju/avalonia-test
Click the add row button a few times and nothing shows as changed, scroll around and you will see items appear
Expected behavior
When new items are added and the datagrid isn't responsible for scrolling new items should be visible
Screenshots
Default state:

After hitting add a few times:

One notch of scroll down:

After scrolling up and down a bunch

Desktop (please complete the following information):

OS: Windows
Version 11.0.0-preview4

Additional context
I think this is probably a regression of #8771 and after doing some debugging I think it's to do with
https://github.com/AvaloniaUI/Avalonia/blob/0f2c24919d62e76929248c963ae2a8bf50f8e90f/src/Avalonia.Controls.DataGrid/Primitives/DataGridRowsPresenter.cs#L154
and then
https://github.com/AvaloniaUI/Avalonia/blob/0f2c24919d62e76929248c963ae2a8bf50f8e90f/src/Avalonia.Controls.DataGrid/Primitives/DataGridRowsPresenter.cs#L170
making the grid think it has less space than it does since the datagrid is assuming it is in charge of the scrolling, but I can't say for sure until I manage to get a local build of avalonia working.

Managed to get it working on a local build, this commit does indeed fix the issue but I'm not convinced it's the right approach:
https://github.com/almightyju/Avalonia/commit/7bbeacb4a3fcffe4d5c2532db0e7c863085370fa
Giving an infinite height basically bypasses virtualisation which probably isn't desirable but setting the vertical scroll bar to disabled does imply no virtualisation. In an ideal world we would only render items that are visible inside the parent scroll viewer but that seems like a lot of work to know where to start/end. Of note WPF has the EnableRowVirtualization property.
The other issue is that the scroll still doesn't function correctly when just in a StackPanel and not disabling the vertical scrolling because of the same calculation going wrong, e.g.
<StackPanel>
  <DataGrid Items="{Binding Items}">
    <DataGrid.Columns>
      <DataGridTextColumn Binding="{ReflectionBinding Text}" Header="Text"/>
    </DataGrid.Columns>
  </DataGrid>
</StackPanel>

@almightyju did you find a work around or good solution for this?

Seems still not fixed today.

Best sultion is to not add DataGrid into a StackPanel or give it a fixed Height. StackPanel has inifinte height, so calculations of the arrange are not good enough for DataGrid.


CLLocationManager extension: add requestWhenInUseAuthorization

I would propose to add a requestWhenInUseAuthorization function to CLLocationManager, since I would assume that this is also a common scenario and iOS scares the user all the when one is using the location "always".
I would quickly add it myself, but don't know how to best do it with regards to the open pull request also concerning AuthorizationCatcher.

The default promise function already does this:
https://github.com/mxcl/PromiseKit/blob/master/Swift Sources/CLLocationManager%2BPromise.swift#L22

So I saw where you were coming from and implemented your request and added more spice! Check it out.

Awesome solution!
Since you're already checking hasInfoPListKey("NSLocationAlwaysUsageDescription"), would this be a good place to return an error if the required one is not set?
If I recall correctly, iOS does not error when the developer has not set these keys, but just does not show the dialog.

Sure, that makes sense.


No Plugged Printer ,Yet Cups online

So issue is there's no printer plugged to the machine or not, Cups service is actively handling remote requests.
1 For Whom ?
2 From Where?
Why.
Possible Security issue in that. I'm getting all kinds of errors from cups bad ipp HTML etc.

The standard configuration has cupsd launched on demand, and should only be running if someone is talking to it. It needs to be this way to allow a client to add a printer, for example... :)


Add an AAD scenario: authorized client apps for APIs

... run the application and attempt to fetch data from the server, I get a "Needs Admin Approval" pop-up from the authorization attempt

add authorization for the client application within the Server API's settings in Azure AD

This will be for each of the ADD-based articles.
Thanks @tomreich for the tip.

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

ID: 92b9c5cb-0e48-25bc-2b7e-e7354bafbe2d
Version Independent ID: b1e8aedc-b46b-41f1-55c1-e293bc6c93db
Content: Secure an ASP.NET Core Blazor WebAssembly standalone app with Azure Active Directory
Content Source: aspnetcore/blazor/security/webassembly/standalone-with-azure-active-directory.md
Product: aspnet-core
Technology: aspnetcore-security
GitHub Login: @guardrex
Microsoft Alias: riande

@tomreich ... Can you send me a screenshot of your CLIENT app's Azure portal screen for API permissions? I think you missed a step that then required you to make that setting on the server API app's registration. I think one has to grant admin consent for the permission from the client-side configuration per the doc ... which should ... in theory ... not require the server API app to grant permission to the client app. Also, that's not even an available configuration for untrusted publisher domains, so devs using an untrusted pub domain would have to follow the doc's guidance.

Sorry, I missed this notification.  You're correct that my client app doesn't have Admin permission... I don't have authority to grant that permission; it's delegated.  I was looking for a way to request permission from the user, which the method mentioned in the original post above seems to allow.
To clarify, this is a Blazor app connecting to a custom API and using AAD.  I used the template in Visual Studio, customized using the instructions in the link you posted above.

Ok ... yeah ... that makes sense. I'm NOT a security guru 😄 ... I'm just a normal person 😆. I think now that I know how to scope the configuration that I can cover it in the topics. Let me try, and Javier can review the PR to see if I'm making any sense. I'll try to get to this within the next few days, and I'll ping u on the PR.

You'll get a ping on the PR, so you'll be able to remark on it there. Javier IS our security guru 👨🎓 for the Blazor bits, so he'll confirm/update the PR to make sure that the new text doesn't go off the rails. Keep an 👂 open for the PR ping. It might be tomorrow, but you never know around here ... ⛰⛏😅 ... anything with a super-priority will get worked first. For example, I'm expecting Blazor Hybrid coverage to arrive at any time, and I'll need to drop everything for an arbitrary amount of time to deal with Hybrid coverage when it lands.


Github Pages

New Feature
Please describe the desired new functionality:
Set Github Pages settings. Unclear whether this already exists or not.

This particular issue would be great to add for configuring and managing protected and public pages for repos.


Strange Code Block Rendering with "True Black" Contrast

Describe the bug
Code blocks do not render as they did prior to v1.0.0. Screenshot provided below. Under the conditions described, it renders an extra box around the code with no margins and with the same background color as code blocks under default contrast. Functionality does not seem to be affected.
To reproduce

Enable Minimal Theme and Minimal Theme Settings plugin
Toggle dark mode
Set background contrast to "True Black"

Expected behavior
Code blocks rendered without an extra box.
Screenshots

Debug info (required):
SYSTEM INFO:
Operating system: ios 15.5 (Apple iPhone)
Obsidian version: 1.4.0 (80)
API version: v1.0.0
Login status: not logged in
Live preview: on
Legacy editor: off
Base theme: dark
Community theme: Minimal
Snippets enabled: 0
Restricted mode: off
Plugins installed: 11
Plugins enabled: 1
1: Minimal Theme Settings v6.0.5

This is an issue with Obsidian not Minimal. Will be fixed in next version of Obsidian.


MINOR: Small LogValidator clean ups

Set shallowOffsetOfMaxTimestamp consistently as the last offset in the batch for v2 compressed and non-compressed data.
Rename RecordConversionStats to RecordValidationStats since one of its fields temporaryMemoryBytes does not depend on conversion.
Rename batchIndex in recordIndex in loops over the records in each batch inside LogValidator.
Remove redundant call to override log append time in UnifiedLog.

Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

@ex172000 @junrao Thanks for reviewing. Please take another look when you have time.

@junrao I triggered a few builds and didn't see much consistency in the test failures. I tried some of the tests locally and they passed. I will go ahead and merge to trunk.


multiple autocomplete and multiple autocomplete with checkbox

Hi.
It would be nice to have a multiple autocomplete and multiple autocomplete with checkbox  component within bootstrap :)
http://jqueryui.com/demos/autocomplete/#multiple
or
http://www.emposha.com/demo/fcbkcomplete_2/
What do you think about that?
Thanks for all!

It would be nice to have a autocomplete with ajax and multiple items in bootstrap.
mpunktm:Maybe this helps you, nice documentet and with examples - And made with bootstrap: http://textextjs.com/

This is another form of https://github.com/twitter/bootstrap/issues/962
I agree though, having a build in multiple autocomplete would be nice.

thank @simonfranz, @Merg1255 for the info ;)

closing as duplicate of: 2007


How to make react-native-router-flux Drawer transparent?

Version
Tell us which versions you are using:

react-native-router-flux v4.0.0-beta.31",
react-native v0.55.4

I need to make side menu transparent, but i dont't  lnow how, I've tried to add opacity to my MenuView component, but it makes visible white backround  of scene instead of phone screen
MyCode:
<Drawer
           key='drawer'
           drawer
           contentComponent={MenuView}
           hideNavBar
           drawerIcon={<Icon name='menu' size={30} />}
           drawerWidth={300}
           drawerPosition='right'
       >
           <Scene .... />
           <Scene ... />
      </Drawer>

Does anybody know how to solve it?

Do you need to make the menu transparent or the backdrop of the menu?

@dextermb the backdrop

The opacity solution - if I am not mistaken, is for the versions using react-navigation@2.
For versions before it - I am not aware how to that's could be done. I usually look into the react-navigation issues and StackOverflow to see if someone asked/answered it. Please reopen the issue with template information in case of a bug found.


put() with custom constraints.

When I remove getters/setters in favour of the new get()/put() utilities, it happens to me to find these kinds of methods:
void CKMeansBase::set_k(int32_t p_k)
{
	REQUIRE(p_k>0, "number of clusters should be > 0");
	this->k=p_k;
}

This setter can be removed easily, the only issue is caused by the REQUIRE. As far as I know, the put() mechanism does not allow to specify those kinds on preconditions on the input.
I was wondering if it could make sense to extend the get()/put() framework to allow also to specify these kinds of constraints when registering a parameter, like:
SG_ADD(&k, "k", "k, the number of clusters", REQUIRE(k>0, "number of clusters should be > 0"),  ParameterProperties::HYPER);

Yes, very good points.
As of now, we have moved these kind of checks into the train method, or similar. So that everything is checked before committing to computation. So when you remove setters with those checks, pls move the checks to appropriate places.
A better way to do this would be to add domain checks as some kind of property of the variable. @vigsterkr and me had discussed this many times, but without coming up with some kind of concept for it. One straight forward way would be to use the properties we have, like ParameterProperties::READONLY, which is checked in all the put calls. Similar there could be a POSITIVE property. However, this might scale badly in the sense that if we add more and more properties that involve checks, there is more and more overhead when calling put.

I think AnyParameter should have a list of requirements/constraints and once we declare the variable we also add the constraints in a builder-like syntax.

This has already been implemented


Support null and is_null Steel functions.

@cmovcc reported failures when attempting to compile C code extracted from Steel. In particular, references to Steel_Reference_null and Steel_Reference_is_null were undefined.
This PR adds support for these two functions, similarly to existing support for LowStar.Buffer.null and LowStar.Buffer.is_null.

Good point, thanks for the review. I added one test for null, and one for not_null.

All good for me. You can merge once it's green. Thanks so much!

@msprotz I had to tweak the tests Makefile to work around a known issue with Steel extraction, namely, FStar.NMST and similar files not extracting due to reification. Please let me know if you think of a better way to do this.

Thanks for the fix. It's unfortunate that anyone who wishes to extract Steel to C needs to be aware of this quirk.
One option would be to insert try-catch in FStar.Extraction.Kremlin.fs like we do for some other things that already do not extract (e.g. polymorphic assumes), and simply emit a warning saying that a given definition could not be extracted. That way, Steel extraction would work by default, rather than failing by default.


feat: add aurabal vault and strat to earn and harvest

Fixes #251

Codecov Report

Merging #252 (3e1ac75) into main (cb50566) will increase coverage by 0.08%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #252      +/-   ##
==========================================
+ Coverage   39.38%   39.47%   +0.08%
==========================================
  Files          19       19
  Lines        1508     1510       +2
==========================================
+ Hits          594      596       +2
  Misses        914      914

Impacted Files
Coverage Δ

config/constants.py
100.00% <100.00%> (ø)


[Suggestion] Init the random state before picking the initial video from the playlist w/ Shuffle

Currently, when picking a video from the playlist inside _AutoPlay() w/ Shuffle enabled - it uses a plain UnityEngine.Random.Range as-is. Which means that if something else in the world had a call to InitState before VVMW runs (e.g. UnityEngine.Random.InitState(Networking.LocalPlayer.displayName.GetHashCode()) and created a stable random seed - the vide player will aways pick the same video for that particular vrchat displayName.
While this isn't strictly a "bug", but it was pretty confusing to debug.
I ended up adding
UnityEngine.Random.InitState(DateTime.Now.Millisecond);

before the
PlayPlayList(defaultShuffle && length > 0 ? UnityEngine.Random.Range(0, length) : 0);

To ensure that the playlist actually shuffles every time and doesnt get thrown off by global seed mutations.
This shouldn't impact other scripts either, as any script that sets/relies on global seed should do that before they run their code as well.

Interesting, I've never think about it. Maybe I should optimise that in next build.

Hey @JLChnToZ
I took a look at the commit and noticed that you're doing (int) DateTime.Now.Ticks that can overflow and crash, hence why the official unity docs suggest using milliseconds instead, which are natively int (and wrap around when overflow), while Ticks is a long.
Thought I'd let you know since I initially did the exact same thing and proceed to crash the behaviour on start in editor :D

Oops

I can close it again now.


JPA criteria like expression fails with escape character

Description
The JPA criteria API fails when parsing a like expression with an escape character. The JPQL parser outputs "Only a character literal is allowed as escape character in like predicate" when creating the criteria builder.
Steps to reproduce
Adding the following test to jpa-criteria/testsuite/src/test/java/com/blazebit/persistence/criteria/WhereTest.java will reproduce the issue.
    @Test
    public void likeWithEscapeCharacter() {
        BlazeCriteriaQuery<Long> cq = BlazeCriteria.get(cbf, Long.class);
        BlazeCriteriaBuilder cb = cq.getCriteriaBuilder();
        Root<Document> root = cq.from(Document.class, "document");

        cq.select(root.get(Document_.id));
        cq.where(cb.like(root.get(Document_.name), "abc\\_%", '\\'));

        CriteriaBuilder<?> criteriaBuilder = cq.createCriteriaBuilder(em);
        assertEquals("SELECT document.id FROM Document document WHERE document.name LIKE :generated_param_0 ESCAPE :generated_param_1", criteriaBuilder.getQueryString());
        assertEquals("abc\\_%", criteriaBuilder.getParameterValue("generated_param_0"));
        assertEquals('\\', criteriaBuilder.getParameterValue("generated_param_1"));
    }

Environment

Version: 1.6.3-SNAPSHOT
JPA-Provider: N/A
DBMS: N/A
Application Server: N/A

Hi and thanks for the bug report. I'll look into it for the next release. You should be able to workaround this by using cb.literal() explicitly, like this:
    cq.where(cb.like(root.get(Document_.name), "abc\\_%", cb.literal('\\')));


Investigate more reliable release uploaders

See also: #29
We have a fork of the release action that does exponential back-off to deal with GitHub's buggy APIs: https://github.com/RiverBench/release-action
However, it sometimes just gets stuck uploading something indefinitely or fails completely without any warning message. I have no idea why and I don't really know how to debug this (and it seems that few people using this feature do, looking at various issues on GitHub).
We could try to further improve this action (by implementing timeouts, for example), OR implement our own custom uploader in the ci-worker. It would be probably also faster than this JS implementation.

I'm closing this, as I haven't seen the issue reoccuring in the last couple of dozen of releases. GitHub must have fixed the underlying issue.


Java 21 & Springboot upgrade

https://companieshouse.atlassian.net/jira/software/c/projects/JU/boards/555/backlog?selectedIssue=JU-1024&text=kafka&version=26126%2C26125

ReadMe still references Java 11 Also, do you want to add actuator so container can run healthcheck?

Will update readMe, and actuator is already in pom :)

Noticed this PR by chance. In case you are still wondering what's about the off indentation, you might want to know that there are spaces & tabs mixed.


Rust 1.12 --test-threads

rust-lang/rust#35414
The make test command can be switched out to use the new flag.

Good to know!


Fixed compatibility with python 3.5.x

@zuenko thanks for the patch it fixes most of the issues in the repo. I'm kind of wondering if imports should be done in a non relative way though.
that is:
from keras_text.token_model import TokenModelFactory
instead of
.token_model import TokenModelFactory


Update blacklist.json

please dont create a PR every minute, you could put multiple commits in 1 pr or even both changes in one commit.

ok


What to return in a promiseEach?

Hi there,
I'm trying to import the FontAwesome Duotone icons where I'm replacing the classes. I'm using your conversion script (link) but I've added the following then():
}).then(() => {

        // Replace duotone classes
        if (prefix === 'fad') {
            return collection.promiseEach(svg => {
                let string = svg.toString();
                string = string.replace('fa-primary', 'icon-primary').replace(/fa-secondary/g, 'icon-secondary');
                console.log(string);
                svg = new tools.SVG(string);
                return svg;
            });
        }

    }).then(() => {

However, I'm getting the following error:
TypeError: func.then is not a function
    at next (/srv/www/m/mediasoep.nl/vhosts/iconify/htdocs/node_modules/@iconify/tools/src/collection.js:352:22)
    at /srv/www/m/mediasoep.nl/vhosts/iconify/htdocs/node_modules/@iconify/tools/src/collection.js:377:13
    at new Promise (<anonymous>)
    at Collection.promiseEach (/srv/www/m/mediasoep.nl/vhosts/iconify/htdocs/node_modules/@iconify/tools/src/collection.js:326:16)

When I change the return line to return tools.SVGO(svg);, it works correctly. But I don't want to use any tool from the tools to fix this. What do I return instead?

You need to return Promise instance.
promiseEach runs a Promise instance for each icon, similar to Promise.all(), but with one big difference that promises are ran one after another which is much better for processing many icons with async functions.
However for your use its better to use forEach() instead of promiseEach() and modify existing instance instead of replacing it:
collection.forEach(svg => {
   svg.load(svg.toString().replace(/fa-primary/g, 'icon-primary').replace(/fa-secondary/g, 'icon-secondary'));
});

Thanks, that solved my problem! Continuing on Duotone icons, my custom api returns the SVG without the <defs><style>.fa-secondary{opacity:.4}</style></defs> and the first <path> doesn't have that class, but has the opacity attribute. How can I get the api to return that data? Check this icon for example: https://iconify.mediasoep.nl/fad:award.svg

What code did you use for optimisation?

I found the cause, it's because I optimize the svgs with SVGO. Removing that fixes my problem!


MinAge for NodeClaims

Description
What problem are you trying to solve?
We are having some discussion around how to control deprovisioning here: https://github.com/aws/karpenter-provider-aws/issues/1738. One mechanism for adding another layer of control is to allow users to set a minNodeLifetime or minAge on the NodeClaim spec which would indicate to Karpenter that it can't begin to disrupt the node until after it is past its node lifetime.
This has been mentioned in a few places across a few different issues (like #1014 and #752) but hasn't been formalized into its own separate issue. This effectively allows users to say that they wouldn't like Karpenter to begin disrupting the nodes until after a fixed amount of time. The benefit of this is that Karpenter will not quickly launch and deprovision nodes (even if there is some cost savings) since that churn on the application often means that the application never gets to run.
The use-cases for this has some overlap with #752, #795, and #735

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue or have submitted a pull request, please leave a comment

would minAge be specifed on the nodepool in the disruption controls? and be on the nodeclaim itself? This seems to suggest we would put it on the nodeclaim, but it would be rather cumbrous to manage.
I can see value in the per nodeclaim controls but also would like to manage this through the nodepool.

would minAge be specifed on the nodepool in the disruption controls? +1
For us karpenter scales just to fast, and even with budgets it is hard to control.
I want it to scale every few hours and not every few minutes.
This feature would solve it for me and would be a really nice one!

@thomaspeitz  based on your experience what do you think a good default value for minAge should be?

Is anyone already tackling this or can I attempt a design for this?

When we come to name the field, try to pick a name that helps people work out the behavior in different scenarios just from the field name:

I create a NodePool and I specify that I want nodes to last at least an hour. I run some pods and end up with three healthy nodes.
After 20 minutes, I delete one NodeClaim using kubectl. How long does the claimed node survive for?
After a further 30 minutes, I have three healthy nodes, one only half an hour old. I delete the NodePool. How long does the NodePool take to delete?

So what I did to tune the minAge (kind of)
Going from no budgets (old release)

In detail you can see how bad it is:

to
this config (which only scales down in the first 10 minutes of an hour)
          budgets:
          - nodes: "1"
            schedule: "0 * * * *"
            duration: 10m
          - nodes: "0"
            schedule: "10 * * * *"
            duration: 50m

This reduced the (wrong) scaling down a lot.

Blue line cpu allocatable / green line requested cores.
--scale-down-delay-after-add
This helps to reduce the scale down.
I would suggest to allow configuring a scale down delay after add. This would solve a lot of problems from my point of view. I could just block scale down for 15m. This would mean less uneeded interruption. In combination of minAge of a node e.g. 15m. This would ensure:

Nodes are rotated only if they were running for a bit (less costs of image pull on the node) -> Less traffic
Nodes are scaled down only if they are not needed for x amount of time.

The graphs is the production setup of a client of mine which has a lot of HPAs running.
In the end I won't to avoid that nodes get scaled down, just because some HPA scales down for a short amount of time.
The scaling is to fast and then creates unneeded pod rotations. Devs are unhappy as there pods are restarting all the time.

One thing that we should consider here with the design is the overlap with #735. For you @thomaspeitz, I'm suspecting that either this issue or that issue could help solve your problem. The question that I want to answer here is: What use-cases does minAge address that consolidateAfter doesn't. Really, consolidateAfter says, "wait for nodes to be in an under-utilized state for this long before spinning them down" while minAge says, "don't deprovision me for any disruption reason after you have initially spun me up". Both are valid, but I question the utility of blocking drift on a node after it has initially been launched, particularly if its configuration is no longer valid.
Does consolidateAfter just cover everything?

That being said additional granularity comes at the cost of the configuration being more complex for the end user. I would love to build a DisruptionDefaults/ClusterDefaults CRD so that the end user doesn't have to configure the same thing all throughout their nodepool crs

I'm personally less of a fan of cluster-wide defaults in a separate CRD; since, I think that any default that you want to set on an individual resource could just be managed by your IAC, Kustomize, Helm, or GitOps tooling. @Bryce-Soghigian Have you heard from users that managing the defaults across resources is cumbersome to do with this tooling?
We've tended to index towards taking away global configuration (AWS provider removed global tagging, in favor of NodeClass-based tagging) exactly for the reason of: if you have the granularity, then you just need a templating engine to manage that consistency across resources.

but I question the utility of blocking drift on a node after it has initially been launched, particularly if its configuration is no longer valid.

Someone just opened an issue requesting what I believe to be this type of functionality(If I am understanding their usecase correctly) see here
DisruptAfter or MinAge allow blocking all churn or disruption for a specified amount of time.  Some users value this SLO guarantee that you will get this node for 1 week and nothing in the system with automatically remove it.

Have you heard from users that managing the defaults across resources is cumbersome to do with this tooling?

You are right of course that you can solve the problem with IAC solutions. But I would like karpenter to manage the configuration of itself and not outsource that responsibility to another solution.
I have also heard the customer narrative when watching videos on karpenter describing as harder to configure and understand than cluster autoscaler. This begs the question, Why?  CAS has 100 Flags what makes it easier to understand?
Harder to understand makes sense since we are working with more dimensions via pod + node level controls, node replacements + disruptions etc. There are pros to making this bit more complex.
With CAS to configure it you go to a single place, the flags, and modify all changes to autoscaling behavior through this one interface. Karpenter has 3 CRDs for managing this control, plus the helm/deployment configuration values.
Adding a fourth global configuration CRD won't make the configuration process easier but I would like us to think about ways we can make karpenter simpler, and have observability so they can understand why it makes the decisions it does.

+1 for this feature

would love a link to the videos just to hear directly the reasoning around why people think that we are more confusing
Let me see if I can dig up some of those videos.

lifecycle frozen

/lifecycle frozen


formControl.setErrors lost when model changes

Question
When we set an error programmatically on a field and the model value is changed, the error is removed.
https://stackblitz.com/edit/angular-rdlufz?file=app%2Fapp.component.ts
As a quick fix, we do:
update model before
formControl.setErrors (the error can be seen programmatically)
setTimeout(formControl.setErrors())
or update model after
formly-form->onChange: error is removed, the error is not detected programmatically thereafter, which can have side-effects
on next tick setTimeout is run: the error is set again and is seen programmatically.
During the update of the model and setting the error with setTimeout again, a side-effect can happen, that the error is missing. Also there might be more than one error setting on the same field, the setTimeouts might not run in the wanted sequence, showing not the latest error.
Another possibility we have looked into was setting the error in templateOptions and using a custom validator, however the validation expression only uses the AbstractControl argument, we are missing access to the field.
Is there another solution which doesn't have the above described side-effects ?

That's an expected behavior.


Tweaking lastIOSEnter timing values and making sure to clear the lastIOSEnter fallback timeout

On older iOS devices (like an iPhone 6), the timing between a keydown for pressing enter and when the enter mutation occurs can sometimes be as high as 175ms. This can be even worse if custom enter handling is a bit expensive. With the current lastIOSEnter implementation, you occasionally can get a double enter bug where both the iOS enter fallback is executes a custom enter and then immediately after, the original native enter mutates the dom.
Using timeout values of around 200ms seems to handle this problem most of the time, even though that timeout timeline is a bit long. I think ideally we would go with a more deterministic approach on when to use a fallback but I can't think of a way to do that.

Another thing we could look into is if a keyup fires or if intermediate input events fire. The flow where this was very apparent was when input events of type insertReplacementText occurred between keydown and keyup. Maybe we could extend the timing vars if we see input events and maybe we could clear the lastIOSEnter when we see keyup.

I also want to add that this unfortunately could not be reproduced on the iOS simulator. We had to track down an actual iPhone 6 to repro the bug.

Another thing we could look into is if a keyup fires or if intermediate input events fire

The idea is that enter will usually mutate the DOM, and thus cause readDOMChange to be called. That'll then pick up the fact that enter was pressed and handle it as quickly as the machine can manage. Upping the timeout shouldn't degrade experience in typical cases, and should only be noticeable when the native behavior, for whichever reason, doesn't change the DOM. So I think this patch sounds reasonable.

Thank you! And what I meant by using input events and keyup events is that if these long timeouts become a problem, we could use other events as hints that we should either wait longer for the enter event to mutate the dom or we should stop waiting when a key up fires. However as you said, this should be fine and shouldn't really degrade the experience.


cargo-fetch: add option to fetch for a target

Teach cargo-fetch how to optionally fetch dependencies based on a target
platform by specifying the target triple via --target <TRIPLE>.
#5216

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

Thanks for this! A few thoughts:

Working with Context is pretty heavyweight and not always the greatest. Would it be possible to basically walk the dependency graph and avoid following edges that are conditional on the wrong platform?
Could a few tests be added for this as well?

Yes I realize that working with a Context isn't ideal.  I found that most of the logic to do the filtering by target/platform lived deep down in the cargo_rustc module so I wasn't quite sure of the best way to approach the problem aside from instantiating a Context.  Any pointers on a more ideal approach as I'm not very familiar with cargo's internals?  And yes I can definitely add some tests.

Sure yeah, so I think ideally this'd basically work with Resolve directly. With a Resolve you get a list of edges between crates, and you'll basically just walk the graph recursively downloading packages as you go. You wouldn't walk an edge, though, if it corresponds to a platform-specific dependency where the platform doesn't match.
It may need some refactoring to extract out the platform information from rustc (but that should probably happen anyway). Otherwise you'll need to match up an edge to a Dependency and that should mostly just be filtering the list of dependencies to matching ones and then checking if any dependency is included for the current platform.
Does that make sense?

As some background (since I was looking at similar things this week), the cfg data that you need to filter dependency edges lives in the TargetInfo that is currently constructed by the Context. I've just created #5355 to make it easier to build them without the Context itself. The matching itself is then done by Context::dep_platform_activated().

This is still a WIP since tests still need to be written, but here's another attempt at implementing this without using a Context object.  Let me know what you think.

That looks pretty nice! Three remarks (unofficial review):

The introduction of FetchOptions doesn't seem particularly useful if it'll only hold two parameters. I presume this is done by analogy to CompileOptions, but that contains much more stuff. In this case I'd probably pass conf and target straight into fetch().

I'd been hoping that you would write a slightly more generic function that mutates the Resolve to prune everything that's irrelevant to the current target. I think this would be useful in other places: notably, I have found that cargo build can also download too much, and I think that would be good to fix. Plus, it keeps the top-level code (in fetch()) more uniform: the loop over resolve can be used for both the target-specific path and the general path.

I generally prefer to use iteration over recursion if possible. It should be straightforward to use a Vec to keep track of dependencies you still have to inspect in addition to the set of packages you've already handled instead of using the function stack for that purpose.

I'd slightly prefer to not prune the Resolve graph just yet and instead continue to have sort of "views" as we implicitly do today, but I could go either way!

K here's another revision with the following changes:

I kept the logic specific to fetch for now per @alexcrichton's comment on keeping Resolve the source of truth
I added a test for fetching using the new "--target" option
Restructured the code to not use recursion
Kept the FetchOptions struct because it may be nice to have it for the future when more options are added though I don't have a strong position with this and would be fine to change it to pass in the target and config directly if you think that would be better.
Other minor fixes

This latest version has the following changes:

Simplify some of the logic to discover root packages
Merges the two code paths ("--target" and when its not supplied)
Eliminated the VecDeque
Inlined one of the helper functions
Added another test to check for all dependencies being downloaded when --target isn't supplied

@bors: r+
Thanks!

:pushpin: Commit 1956c5d has been approved by alexcrichton

:hourglass: Testing commit 1956c5d8ba703e8ef02903ff6ae0cac650d599bb with merge d998906598f3ba790b230ce74993a64b553ce699...

Thanks for doing this, @bmwill!


Pin Puppetlabs-apt module to 1.8.x, as incompatible with 2.x

Also incorporates strider's changes for rspec-puppet 2.x.
spec: updates for rspec-puppet 2.x and rspec 3.x
This patch aim to update our specs test in order to work with the rspec-puppet
release 2.0.0, in the mean time, we update rspec syntax order to be prepared
for rspec 3.x move.
In details:

Upgrade and pin rspec-puppet from 1.0.1 to 2.0.0
Convert 'should' keyword to 'is_expected.to' (prepare rspec 3.x)
Fix spec tests for rspec-puppet 2.0.0
Clean Gemfile (remove over-specificication of runtime deps of
puppetlabs_spec_helper)

Signed-off-by: Gael Chamoulaud<EMAIL_ADDRESS>

Cheers....


update(ci/kernel-tests): run kernel tests step by step

What type of PR is this?

Uncomment one (or more) /kind <> lines:

/kind bug

/kind cleanup

/kind design

/kind documentation

/kind failing-test

/kind feature

Any specific area of the project related to this PR?

Uncomment one (or more) /area <> lines:

/area API-version

/area build

/area CI

/area driver-kmod

/area driver-bpf

/area driver-modern-bpf

/area libscap-engine-bpf

/area libscap-engine-gvisor

/area libscap-engine-kmod

/area libscap-engine-modern-bpf

/area libscap-engine-nodriver

/area libscap-engine-noop

/area libscap-engine-source-plugin

/area libscap-engine-savefile

/area libscap-engine-udig

/area libscap

/area libpman

/area libsinsp

/area tests

/area proposals

Does this PR require a change in the driver versions?

/version driver-API-version-major

/version driver-API-version-minor

/version driver-API-version-patch

/version driver-SCHEMA-version-major

/version driver-SCHEMA-version-minor

/version driver-SCHEMA-version-patch

What this PR does / why we need it:
Instead of running all the playbooks through the main playbook, we run
each playbook on its own. The outcome is the same, but it's easier to
debug and check the CI logs.
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

NONE

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: alacuku
Once this PR has been reviewed and has the lgtm label, please assign gnosek for approval. For more information see the Kubernetes Code Review Process.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

CI tests: https://github.com/falcosecurity/libs/actions/runs/5654161636

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: alacuku, FedeDP
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [FedeDP]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

LGTM label has been added.  Git tree hash: 98d0da7544fe203a28e19261c39b4160e8521b71

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: alacuku, Andreagit97, FedeDP
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [Andreagit97,FedeDP]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Possible error in branchdeducing_twofinite

In your paper, the E6 coefficient denominator is 16E5, but in the python code it is 4E5. Similarly in the calculation of E7, the first 2 terms are different from the paper, with the code using b2c_obs2/2 - E0/3 and in the paper this is 3(bcos theta_obs)^2 / 12 - 2E0/12.
Am I missing something in the algebra? E4 in the code matches your paper.

Thank you for bringing this to my attention.
The implementation is correct, it has been thoroughly validated against multiple numerical models (one of which is included in alhazenptolemy.py). It appears the equations in the paper are wrong -- I suspect I made an algebraic modification to save a few FLOPs in the implementation and failed to propagate it through all the equations in the text. I will notify the journal.
In the meantime, I have increased the maximum iteration limit for the numerical function and added a call to it in the main execution for alhazenptolemy.py, running the routine from the command line will now print both the analytical and numerical result.

Thanks for taking a look and responding. The paper is also missing the negative sign on equations 23a and 23b.


bug: allowFailure typesafety

Is there an existing issue for this?

[X] I have searched the existing issues

Package Version
0.8.1
Current Behavior
I'm unsure if this has been resolved in subsequent versions of wagmi, but I have come across a few examples where the illusion of type safety is quite dangerous...
A simple example is to turn on allowFailure, the type remains the same. Most often it seems that when a call fails it introduces null into the list of results, but I've even come across undefined in some cases. Though the expected type is still for example BigNumber[]. This is quite dangerous.
Expected Behavior
Turning on allowFailure doesn't change the type, though it should be known at this point that the type has to change.
Steps To Reproduce
Turn on allowFailure
Link to Minimal Reproducible Example (CodeSandbox, StackBlitz, etc.)
No response
Anything else?
No response

Turning on allowFailure doesn't change the type, though it should be known at this point that the type has to change.

Good point. Seems like we should change the result to be a Type | null for each output in the array.

TypeScript Playground with expected result if anyone wants to pick this up:
import { useContractReads, erc20ABI } from 'wagmi'

const { data } = useContractReads({
  allowFailure: true,
  contracts: [
    {
      abi: erc20ABI,
      functionName: 'balanceOf',
      args: ['0x…'],
    },
    {
      abi: erc20ABI,
      functionName: 'totalSupply',
    },
  ],
})
// when `allowFailure: true` `data` should be:
// `const data: [bigint | null, bigint | null] | undefined`
// instead of:
data
// ^? const data: [bigint, bigint] | undefined

I have to find an example of undefined getting into the results too, this does happen but unsure why and is rarer than the expected case of null. We must guard against null and undefined when allowFailure is true to avoid unexpected behaviour.

Sure thing! If you do find it, can you create a separate issue? (Since it deals with the runtime behavior.)

I've seen undefined too before many many months ago and it when it happened to me the underlying thing happening was an Infura bug causing unexpected failures

@tmm can I take this up? :)

@ameya-deshmukh go for it! will assign you.

Hey @tmm I took the time to work on this, hope that's ok!

Awesome! Will take a look.

Fixed in v1.


[Feature Request] Allow drag and drop between groups

My requirement is that I need the drag and drop capability between groups.
Requirements:

Drag and drop items between two grids (groups).
Callback to will receive SourceInfo{list, index} and DestinationInfo{list, index}

Regards
Kayes

This is actually important. Currently it's not possible to drop the tile at certain places.

Yep, two grid-views!

Sorry, it's not in plan, because I think current implementation does not seem to be able to do this.


MINOR; Remove zinc workaround

Removes Zinc workaround because it is no longer required.

Thanks for the PR. What change means it's not required?

Thanks for the PR. What change means it's not required?

I am testing this in relation to https://github.com/apache/kafka/pull/12675#issuecomment-1279749434
Its meant to be a draft PR for now

This is unrelated, closing.


error: 10(B)(3)

The answer key has a mistake in chapter 10, B.3. The finite model is incorrect.

Looking this over, I think I was wrong to flag this as an error. It looks correct to me now.


Request: Fetching album artist

Hi @ClementBeal, I am currently creating a music player app in Flutter as a personal side project, and have been searching for alternatives of FFmpeg to extract a song's metadata since it's pretty slow. I've been getting weird errors when compiling my app with the other plugins such as metadata_god, however I encountered this library and it works great!
I have a request, which is not urgent of course, that it would be great if I could extract the album's artist as well. To my knowledge, this package supports extracting a song's title, artist, album, duration, etc, but not the album's artist. In FFmpeg I can extract it along with the other metadata, and I think it will be great if it can be done with this package as well.
Thanks in advance and have a great day!

Hi!
I'm on it!


auro-alert: Semantic token Aliases

Is your feature request related to a problem? Please describe.
I want to be able to customize the component by only changing design tokens names so that I can experiment with new designs or make customization that might be needed for just my implementation.
Describe the solution you'd like
All the tokens used should have a semantic name. i.e.  --ds-alert-padding-left vs the direct --ds-size-100.  Doing that allows the themer to easily change the padding of just the alert component instead of all references to ds-size-100
https://github.com/AlaskaAirlines/auro-alert/blob/3685829b7c2b2c679bab62845eaf03500d5eaf92/src/style.scss#L70
Describe alternatives you've considered
CSS parts can do some of this but we have to explicitly allow that and each element we want the implementer to access.  Using design tokens will automatically allow theming.
Additional context
As we dive into more theming use cases this type of system will give implementers a ton of flexibility and remove the need for urgent updates on our side.  It will also allow components to be themed for holidays or other special events.

This approach is being reconsidered as part of a larger size theme initiative.


generator only generate jbuilder template

when i try run 'rails g rambulance:install' only jbuilder template was generated. same goes to 'rails g rambulance:install -e slim'

@mkhairi what behaviour would you expect instead?

@yuki24 should it be also
generate erb file right? or i missed something new here?

@mkhairi it should generate erb templates. Could you post your Gemfile here?

@yuki24, i using gem 'slim-rails'. Maybe rambulance 0.3.0(published rubygems) generator is not support slim yet. When i run 'rails g rambulance:install' erb is not use by default and maybe generator detect default template is slim.
I test with master branch right now and everything is working well.  Waiting for next release. Thanks! :)

@mkhairi seems like I should cut a new version. Thanks!


Collide with world bounds

This Issue is about collideWorldBounds

A bug in the API

The object collided with the walls of the world has the same bounce as the interaction with other objects. I propose to add the regulatory bounce from the walls of the world
Like that:
/**
    * @property {Phaser.Point} bounceWorld - The elasticity of the Body when colliding with world. bounce.x/y = 1 means full rebound, bounce.x/y = 0.5 means 50% rebound velocity.
    */
    this.bounceWorld = new Phaser.Point();

    /**
    * Internal method.
    *
    * @method Phaser.Physics.Arcade.Body#checkWorldBounds
    * @protected
    */
    checkWorldBounds: function () {

        var pos = this.position;
        var bounds = this.game.physics.arcade.bounds;
        var check = this.game.physics.arcade.checkCollision;

        if (pos.x < bounds.x && check.left)
        {
            pos.x = bounds.x;
            this.velocity.x *= -this.bounceWorld.x;
            this.blocked.left = true;
        }
        else if (this.right > bounds.right && check.right)
        {
            pos.x = bounds.right - this.width;
            this.velocity.x *= -this.bounceWorld.x;
            this.blocked.right = true;
        }

        if (pos.y < bounds.y && check.up)
        {
            pos.y = bounds.y;
            this.velocity.y *= -this.bounceWorld.y;
            this.blocked.up = true;
        }
        else if (this.bottom > bounds.bottom && check.down)
        {
            pos.y = bounds.bottom - this.height;
            this.velocity.y *= -this.bounceWorld.y;
            this.blocked.down = true;
        }

    }

Thanks for submitting this issue. We have added this, and the update has been pushed to the dev branch.


pull request for e2e test at 01/28/2017 13:15:21

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Include setters and getters in help search

This change makes setters and getters match in property search in Editor Help (although doesn't select the matching property).
Closes #17796

Thanks!


chore: add links to appropriate parser method/object

Resolves Documentation of generator posibilities

you are right @jonaslagoni, point eleven grew and having it short like 8 or 9 and then link to dedicated subsection would be perfect.
@Tenischev 🙏

@Tenischev ready to merge?

I meditated on sentences for a time. let's stay on the current version.

@Tenischev you mediated it like a pro

Thanks a lot for this contribution,
Always proud to see dev improving docs ❤


Clicking the "All" button in the building selling menu always freezes the game.

Clicking the "All" button in the building selling menu always freezes the game.
Happens on new saves as well as on existing saves, both in Firefox and Edge.
Example Reproduction:

Start new Cookie Clicker game
Load Cookie Monster
Click Sell
Click All

JavaScript error in the console:
Uncaught TypeError: can't convert undefined to object CookieMonster.js:1:16483

Trying to load Cookie Monster while "All" is already selected in the building selling menu also causes the same error and keeps Cookie Monster from loading.

Thank you! :-)


chore: poetry-fy the project

Other than putting the dependencies into a pyproject.toml it uses the bidsificator namespace for everything rather than polluting the global scope with generic names like ui, forms, or core.
The poetry build step is still not working on my side.

Much obliged good sir


feat: Add Cloudflare and and Sentry logo

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

Describe the solution you'd like to see
Add cloudflare and sentry logo along with netlify.
Describe alternate solutions
NA
Additional information
No response

you can assign this issue to me


Segfault when using it multiple times

PID 10265 received SIGSEGV for address: 0x30
/home/alex/github/node-codedoc/node_modules/segfault-handler/build/Release/segfault-handler.node(+0x1b98)[0x7f22239edb98]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f2232a96390]
node(SSL_read+0x0)[0x7caf30]
node(_ZN4node7TLSWrap8ClearOutEv+0x85)[0x1158975]
node(_ZN4node7TLSWrap10OnReadImplElPK8uv_buf_t14uv_handle_typePv+0xd0)[0x11591a0]
node(_ZN4node10StreamWrap6OnReadEP11uv_stream_slPK8uv_buf_t+0x98)[0x111f7c8]
node[0x137ba68]
node[0x137c0d8]
node[0x1381e98]
node(uv_run+0x15a)[0x1371cba]
node(_ZN4node5StartEiPPc+0x570)[0x10dd9e0]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f22326dc830]
node(_start+0x29)[0x79ec39]
If i replace it with normal fs everything works fine.

Is your version of node up to date?

@addaleax I think I'm having the same problem.  I had installed the default nodejs package on Alpine Linux, which was the last LTS version (6.9.5-r0).  Switching to Alpine's non-LTS version (7.2.1-r1) stopped a file read from segfaulting.

Actually, now I'm getting "Bus error (core dumped)" 2 out of 4 times instead of the segfault.

@CodeLenny Is there any chance you could try with the latest versions as published by Node (https://nodejs.org/)? This looks like it might have the same cause as https://github.com/nodejs/node/issues/8074, which has likely been fixed by https://github.com/nodejs/node/pull/11947 (released in v7.9.0, v6.10.3 and v4.8.3).
I don’t know why this would interfere with anything graceful-fs does, though.

Doing some cleanup, since this ticket is inactive and nobody else has reported this issue I'm going to close this.  If you experience again with latest graceful-fs let us know.


PPPoE Virtual IP/IP Alias does not get set-up properly

On all my PPPoE connections that should have 6 addresses (in the case of the below connection it should have .49 .50 .51 .52 .53 and .54) only the negotiated IP address is set-up. It appears this hasn't been a big problem because my ISP shoves all traffic for all IPs down the PPPoE link, but it means I can't bind a daemon to one of the IP Aliases (as I am trying to do with HAProxy). It also causes errors in the system log. There may be other implications.
ifconfig shows:
pppoe0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1492
        inet6 fe80::xxx:xxxx:xxxx:xxxx%pppoe0 prefixlen 64 scopeid 0x8
        inet6 2a02:390:feed:xxxx:xxx:x:xxxx:xxxx prefixlen 64 autoconf
        inet xx.xx.xx.49 --> <IP_ADDRESS>  netmask 0xffffffff
        nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>

In addition, System > Log File shows lots of lines like:
opnsense: /usr/local/etc/rc.newwanip: The command '/sbin/ifconfig 'pppoe0' inet 'xx.xx.xx.50'/'29' alias' returned exit code '1', the output was 'ifconfig: ioctl (SIOCAIFADDR): Destination address required'
Entering a shell and running: /sbin/ifconfig pppoe0 inet xx.xx.xx.50/29 alias produces: ifconfig: ioctl (SIOCAIFADDR): Destination address required
However, running the command and specifying the gateway (other end of the pppoe link) adds the address to the pppoe0 interface properly:
/sbin/ifconfig pppoe0 inet xx.xx.xx.50/29 alias <IP_ADDRESS>
Producing:
pppoe0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1492
        inet6 fe80::xxx:xxxx:xxxx:xxxx%pppoe0 prefixlen 64 scopeid 0x8
        inet6 2a02:390:feed:xxxx:xxx:x:xxxx:xxxx prefixlen 64 autoconf
        inet xx.xx.xx.49 --> <IP_ADDRESS>  netmask 0xffffffff
        inet xx.xx.xx.50 --> <IP_ADDRESS>  netmask 0xfffffff8
        nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>

Running OPNsense 17.7, my PPPoE connection still does not have all the IP aliases added to it -- is this resolved another way (as I notice the log file no longer has all the 'Destination address required' log entries?


refactor: remove redundant HTTP body close Operations

Removed redundant HTTP body close operations from the function. Since every caller of this function handles the closing operation, there's no need for duplicate closures. While this wouldn't introduce any additional issues, adhering to a consistent closing operation standard is a better practice.

go test -gcflags=all=-l -count=1 -cover ./...<!-- How did you test this PR? -->
?       github.com/logto-io/go/gin-sample       [no test files]
ok      github.com/logto-io/go/client   0.587s  coverage: 84.1% of statements
ok      github.com/logto-io/go/core     1.051s  coverage: 84.7% of statements

Checklist

[ ] .changeset
[x] unit tests
[ ] integration tests
[ ] necessary TSDoc comments

Hi @xpzouying , thank you very much for your suggestions!

@xpzouying , your commits need to be signed before merging into the master. Please checkout signing commits for more information.

Hi @xpzouying , thanks for your work, but the signing problem still exists, try to merge your commits and create a new signed commit by rebasing.


Use different syntax for default values than for structure

The structure ({...}) syntax is used for different purposes. First, to give a register a structured value (over multiple lines):
    ro acceleration @ 0x182 {
        x: i16.16 m/s2
        y: i16.16 m/s2
        z: i16.16 m/s2
    }

Second, to provide a variety of (fixed) constant values that define acceptable ranges for a value, as for the delay field below:
    command launch @ 0x80 {
        launch_secret_code: u32
        delay: u32 ms { absolute_min = 1000, absolute_max = 3_600_000 }
    }

I would suggest we use a different syntax for the latter case, such as below:
    command launch @ 0x80 {
        launch_secret_code: u32
        delay: u32 ms with absolute_min = 1000, absolute_max = 3_600_000
    }

A related comment. In the case of a register R with a field F where the field F has an associated value D, we need two dereferences to refer to D:
    R.F.D

So, this is perhaps an argument for keeping the { } syntax for both fields and associated values.

let's keep it then


Ensure active option is always calculated using the current options

The current active option is stored in state but the options are derived and not stored in state so they can go out of sync.
This refactors the use of state and ensures the active option is always calculated using the latest options.
Resolves #28

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

15 of 15 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.001%) to 98.35%

Totals

Change from base Build<PHONE_NUMBER>:
0.001%

Covered Lines:
1306

Relevant Lines:
1327

💛  - Coveralls


"Node child_process module not supported in browsers" error after upgrade<EMAIL_ADDRESS>to @4.10.2

Hi,
I recently have this error after d3 upgrade when running tests. Everything is good in previous version.
Error: (SystemJS) Node child_process module not supported in browsers.
Evaluating<EMAIL_ADDRESS>Evaluating<EMAIL_ADDRESS>Evaluating<EMAIL_ADDRESS>Evaluating<EMAIL_ADDRESS>Evaluating<EMAIL_ADDRESS>Evaluating<EMAIL_ADDRESS>Evaluating<EMAIL_ADDRESS>Evaluating<EMAIL_ADDRESS>

Duplicate of #24.


Remove e2e reading

Proposed changes:

remove yaml support for end-to-end stories
remove markdown support for end-to-end stories
remove the creation of additional NLU training data from domain / stories

Status (please check what you already did):

[ ] added some tests for the functionality
[ ] updated the documentation
[ ] updated the changelog (please check changelog for instructions)
[x] reformat files using black (please check Readme for instructions)

@evgeniiaraz I'll wait to for tests to pass to make sure we didn't break anything


Integration Test - Release - 2018/05/25 15:04:58

Auto create for integration test. AnotherAuthorUpdatedArticleFlow

@PRMergerTest3 : Thanks for your contribution! The author, @ meganbradley, has been notified to review your proposed change.

@PRMergerTest3 : Thanks for your contribution! The author, @meganbradley, has been notified to review your proposed change.


Use extras in setup.py

Right now, setup.py includes tensorflow as a main dependency. The problem with specifying tensorflow as a main dependency is that if you're trying to use jax or pytorch with the environments alone its an unnecessary dependency that can be problematic to install (which is what I'm doing), and even if you want to use tensorflow you often want to custom install tensorflow-gpu or build it from source or something. This in turn means that in these reasonably common cases, you have to use --no-deps on installation and do everything manually, which is bad practice and impedes reproducibility. The standard way other libraries handle situations like this (gym, rlcard, etc) is to use the extras feature in setup.py files, such that only the dependencies files for the environments are installed by default, and extra arguments can be passed for other decencies (you could call them examples, tests, etc.)

Hello, thank your for you message and suggestion. Yes, we could make tensorflow an extras dependency, but it is likely required for SavedModel, and thus, to run the scenarios. You are right that we likely don't need it just for training on substrates.
We'll evaluate this and get back to you soon.
Thanks!

Sorry meant to ask if that workaround would work for your use case?
We'd prefer both substrates (training envs) and scenarios (test envs) to work on a simple install, but if you have a substrate-only use case perhaps we can have some optional minimal install without tensorflow?


Python: convert null descriptions to empty str in basic planner

Motivation and Context

Why is this change required? Currently, null descriptions block running completion of notebook step 5.
What problem does it solve? This fixes null description error.
What scenario does it contribute to? Unblocks notebook tutorial step 5
If it fixes an open issue, please link to the issue here. https://github.com/microsoft/semantic-kernel/issues/5309 https://github.com/microsoft/semantic-kernel/issues/5380

Description
Fixed https://github.com/microsoft/semantic-kernel/issues/5309 and https://github.com/microsoft/semantic-kernel/issues/5380 by converting null descriptions to empty strings.
Contribution Checklist

[x] The code builds clean without any errors or warnings
[x] The PR follows the SK Contribution Guidelines and the pre-submission formatting script raises no violations
[x] All unit tests pass, and I have added new tests where possible
[x] I didn't break anyone :smile:

Python 3.10 Test Coverage Report • FileStmtsMissCoverMissingsemantic_kernel/planners   basic_planner.py644825%19–21, 24, 135, 143–169, 181–204, 213–244TOTAL499893781%
Python 3.10 Unit Test Overview

Tests
Skipped
Failures
Errors
Time

1042
1 :zzz:
0 :x:
0 :fire:
17.227s :stopwatch:

Python 3.9 Test Coverage Report • FileStmtsMissCoverMissingsemantic_kernel/planners   basic_planner.py644825%19–21, 24, 135, 143–169, 181–204, 213–244TOTAL499293981%
Python 3.9 Unit Test Overview

Tests
Skipped
Failures
Errors
Time

1042
2 :zzz:
0 :x:
0 :fire:
20.855s :stopwatch:

Python 3.11 Test Coverage Report • FileStmtsMissCoverMissingsemantic_kernel/planners   basic_planner.py644825%19–21, 24, 135, 143–169, 181–204, 213–244TOTAL499893781%
Python 3.11 Unit Test Overview

Tests
Skipped
Failures
Errors
Time

1042
1 :zzz:
0 :x:
0 :fire:
18.036s :stopwatch:


Fix fast jit issues

Shall we use ROL, ROR, RCL and RCR to optimize the current ROTR and ROTL opcode?


ADFS SQL Info in WID documentation

Hey I'm working through upgrading my ADFS servers with SQL merge replication. The SQL specific upgrade instructions don't include this but the WID upgrade instructions do. Shouldn't this be called out with SQL instead?
If AlwaysOnAvailability groups or merge replication are configured in AD FS, remove all replication of any ADFS databases prior to upgrade and point all nodes to the Primary SQL database. After performing this, perform the farm upgrade as documented. After upgrade, add AlwaysOnAvailability groups or merge replication to the new databases.
Thanks,
Jeremy
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: e5a924c8-8933-cb05-d4d1-8ac3cf64d1a9
Version Independent ID: 15f1d47c-f8ec-7b76-7dbd-9bae4de99125
Content: Upgrading to AD FS in Windows Server 2016 and 2019
Content Source: WindowsServerDocs/identity/ad-fs/deployment/upgrading-to-ad-fs-in-windows-server.md
Product: windows-server
Technology: ad-fs
GitHub Login: @billmath
Microsoft Alias: billmath

Thanks for the feedback @jeremymoore433, I've now published the change to the SQL guidance.
Thanks,
Robin


Add visibility_level parameter to CreateGroupOptions

Fixes #59.

Thanks for the PR @dobegor! Did leave a small comment, but if you can update accordingly all should be good to merge...

@svanharmelen I would like to make it called Visibility as it's called in API and to distinguish variable name and type.

@dobegor sorry, but I don't think that is a good idea. The field is called visibility_level in the API, so the correct/expected Go field name should be VisibilityLevel (IMO). Next to that there are already other types in this package that have a VisibilityLevel field, so also for consistency I do not want to introduce Visibility as a new field name for the same thing.

@svanharmelen yes, you're right, I haven't seen these fields earlier.
If we set omitempty it will create Public groups instead of Private by default. So I left it to fill the default (0 as it's integer) value if not specified something different as a simple security concern to make everything Private by default.

@dobegor sorry to disagree with you again, but I don't think we should make these kind of decisions for users of this package.
This is an optional field so it should be optional in here too. Meaning that if not specified, the default behaviour of the API should be expected.
Now I do see an issue with this, as this would mean you cannot use the private level as the is 0. In other places this is fixed by making this a pointer field:
VisibilityLevel *VisibilityLevel `url:"visibility_level,omitempty" json:"visibility_level,omitempty"`

This would be the most clean solution which is the closed to how the API works. I will see if I can invest some time to implement/fix issue #29 as this would make this (using a pointer) a standard for all fields which fixes more of these use cases elsewhere in the package.

LGTM! Thanks again!

@svanharmelen wait

We can't take an address of i.e. &gitlab.PrivateVisibility as it's const.

@svanharmelen Please apply this as a hot fix.
Sorry for troubles, was testing it in a bit different way :)

No problem @dobegor! I'm doing this all from my phone, so I guess I didn't look good enough myself too... :wink:
I deleted the last commit hoping that nobody pulled in the few minutes it was in master, so we have some time to properly add this change the correct way. Which maybe comes down to actually fixing #29 right away.
I will check things tomorrow when I'm behind a desk again. Maybe the quick fix solution can be merged first, but give me a day to make sure we are doing the right thing (would not like to make another mistake caused by not being able to check things properly from my phone).
Will be in tough tomorrow...

@dobegor could you create a new PR with the same line, except for the omitempty parts?
VisibilityLevel VisibilityLevel `url:"visibility_level" json:"visibility_level"`

Of course I can add this myself as well, but it was your change right :wink:
I still don't really like that by this we change the default behaviour that you would expect from the API, but for now it seems like the most sensible way forward. At least until issue #29 is fully solved/implemented (which I don't have time for at this moment)...
Thanks!

@svanharmelen I am on business trip and away from my laptop for a day or two, so please, feel free to commit it yourself :)
Thanks for your work!

Will do... Thanks again and sorry for all the fuss...


How can I handle WinAppDriver element exceptions ?

I want to handle the exceptions that thrown when the elements can't be found by any locator (id , class , Name, ......)
How can I do that in C# ?

Try and catch block, You should have googled it before raining an issue here.

@anunay1
Yes , I know it is very easy , but what should I write in the catch block ? Can you give me an example
can I do something like that ?
WindowsElement element = session.FindElementByClassName(AlarmTabClassName);
Assert.IsNotNull(element);
and if I have question regarding WinAppDriver where should I ask ???!

@zahraazezo Could you explain your scenario in more detail with an example (what does it mean 'handle')?
You can create WindowsDriverExtension with custom implementation for each method.
Example, for FindElementByClassName:
public static class WindowsDriverExtension
{
	public static WindowsElement? FindElementByClassNameCustom(this WindowsDriver<WindowsElement> session, string className)
	{
		try
		{
			return session.FindElementByClassName(className);
		}
		catch (Exception e)
		{
			// Handle Exception here
		}
		return null;
	}
}

@Shakevg  I think that is what I want , really appreciated


Blank REST Mode

We grabbed this Docker Image (All-in-one) and are running it on Ubuntu 20.04. We're experiencing a weird issue when switching out of REST mode. When we switch, we get a blank screen, header, and sidebar. Looking at the logs, I couldn't find anything glaring about it.
Could you point us to what we might want to check? Or is this just expected behavior?

I got this to work by mounting local oscal-contents directory they reference in documentation adding "-v "$(pwd)"/oscal-content:/app/oscal-content" to docker run. You know it mounted directories correctly when catalogs, components and ssp shows the files on top left menu, it also loads the editor view, shows boundary diagrams and etc. Next issue with this is API keeps returning HTML instead of JSON. One doc API spec shows example call against METHOD /{model-name} and another example http://localhost:8080/oscal/v1/ssps/{{uuid}}; neither works. Making a GET http://localhost:8080/catalog, or profile, or anything at all results in 404 Not Found.


Add short-term analytical logging

Riju has been brought down temporarily a few times over the last week or two, which seems most likely to be due to people running pathological code. To understand and address the failure conditions, we need some visibility into what operations and usage patterns exactly are causing resource exhaustion. As such, we should add some analytical logging that will record what API operations are being called by which clients at which times, with a retention of perhaps a few days. This data will allow me to investigate the root cause of abnormal behavior that shows up in monitoring, e.g.:

Excerpt from logs for above incident
Jul 26 07:35:23 [de0e9f24842d4ccfb7156b1cf794d141] Creating session, language python
Jul 26 07:35:24 [dc8cceb4b653408f81ee85e2a5c0c22c] Tearing down session
Jul 26 07:35:25 [8bb60347d08b4575b4a2f94c139ec4e8] Creating session, language python
Jul 26 07:35:36 [f82cd1502790405cb26f145e6d1d3cc3] Tearing down session
Jul 26 07:35:38 [34cc278ac06e48288fc0f95804efacfb] Creating session, language csharp
Jul 26 07:35:51 [8d68dea8021543ee925deecdad929c01] Tearing down session
Jul 26 07:35:52 [f166086aca8b44e7a6d7b2fbcded9e18] Creating session, language javascript
Jul 26 07:36:07 [51a32612c26943eea3804fb88a433337] Tearing down session
Jul 26 07:36:08 [9dd5e2cc6d434729bf9078a048392a4c] Creating session, language ook
Jul 26 07:36:08 [4a6f5129ba664ffd8273c74f49356889] Tearing down session
Jul 26 07:36:09 [c8862dd558ac4ab1bdda64a703a6bf4f] Creating session, language mysql
Jul 26 07:36:50 [80a8ded92c024539a5969378e0874211] Tearing down session
Jul 26 07:36:51 [791fa137edc8416fa1eda1e83056abae] Creating session, language python
Jul 26 07:37:04 [de0e9f24842d4ccfb7156b1cf794d141] Tearing down session
Jul 26 07:37:05 [10e29d57ab264242b56810a7b9db4b99] Creating session, language python
Jul 26 07:37:07 [8bb60347d08b4575b4a2f94c139ec4e8] Tearing down session
Jul 26 07:37:08 [b4f03cd28c4842278488f06160d9609c] Creating session, language python
Jul 26 07:37:20 [34cc278ac06e48288fc0f95804efacfb] Tearing down session
Jul 26 07:37:22 [b3bb84d5b2de46e18104bab22b4c0716] Creating session, language csharp
Jul 26 07:37:34 [f166086aca8b44e7a6d7b2fbcded9e18] Tearing down session
Jul 26 07:37:35 [6631b5636f224f26ab6d34f3a8e30045] Creating session, language javascript
Jul 26 07:37:49 [9dd5e2cc6d434729bf9078a048392a4c] Tearing down session
Jul 26 07:37:50 [2f231a146e584a519475d8c00f081037] Creating session, language ook
Jul 26 07:37:59 [c8862dd558ac4ab1bdda64a703a6bf4f] Tearing down session
Jul 26 07:38:00 [1a4632b23c284dbd9ea857e271bd8e33] Creating session, language mysql
Jul 26 07:38:33 [791fa137edc8416fa1eda1e83056abae] Tearing down session
Jul 26 07:38:33 [5ab04d0d862946c495a0bfe953304764] Creating session, language python
Jul 26 07:38:47 [10e29d57ab264242b56810a7b9db4b99] Tearing down session
Jul 26 07:38:48 [9c2d3fac32014976b65a86192c0dce97] Creating session, language python
Jul 26 07:38:49 [b4f03cd28c4842278488f06160d9609c] Tearing down session
Jul 26 07:38:50 [dd0f11f9e33e49f4903227ec27e54c08] Creating session, language python
Jul 26 07:39:03 [b3bb84d5b2de46e18104bab22b4c0716] Tearing down session
Jul 26 07:39:08 [0121b193cda54f6db7ea9a61150d303f] Creating session, language csharp
Jul 26 07:39:17 [6631b5636f224f26ab6d34f3a8e30045] Tearing down session
Jul 26 07:39:18 [162e6bd7de954e4ab7e9cc8a3dcc1cb2] Creating session, language javascript
Jul 26 07:39:32 [2f231a146e584a519475d8c00f081037] Tearing down session
Jul 26 07:39:33 [349da532cd0b4375b9fd0da4d4c2d04b] Creating session, language ook
Jul 26 07:39:35 [7ee0f249ef684b27a4d4615b0de4ffcd] Creating session, language r
Jul 26 07:39:50 [1a4632b23c284dbd9ea857e271bd8e33] Tearing down session
Jul 26 07:39:51 [7ee0f249ef684b27a4d4615b0de4ffcd] Tearing down session
Jul 26 07:39:51 [c2123ae3a5e74a64ae6d4e9b1f26e758] Creating session, language mysql
Jul 26 07:40:06 [8c4b29613135466aac654127da0b429a] Creating session, language fishlang
Jul 26 07:40:08 [8c4b29613135466aac654127da0b429a] Tearing down session
Jul 26 07:40:15 [5ab04d0d862946c495a0bfe953304764] Tearing down session
Jul 26 07:40:16 [5e708cfa98e2468dbea2d419869a3f6d] Creating session, language python
Jul 26 07:40:19 [9864dc3c7fdd4f4388fb4b8d4252d33a] Creating session, language julia
Jul 26 07:40:22 [9864dc3c7fdd4f4388fb4b8d4252d33a] Tearing down session
Jul 26 07:47:06 [dd0f11f9e33e49f4903227ec27e54c08] Tearing down session
Jul 26 07:47:08 [9c2d3fac32014976b65a86192c0dce97] Tearing down session
Jul 26 07:47:08 [c2123ae3a5e74a64ae6d4e9b1f26e758] Tearing down session
Jul 26 07:47:08 [349da532cd0b4375b9fd0da4d4c2d04b] Tearing down session
Jul 26 07:47:08 [162e6bd7de954e4ab7e9cc8a3dcc1cb2] Tearing down session
Jul 26 07:47:08 [0121b193cda54f6db7ea9a61150d303f] Tearing down session
Jul 26 07:47:08 [5e708cfa98e2468dbea2d419869a3f6d] Tearing down session
Jul 26 07:47:08 [8cc2820b185d499ebb86e5e1f2e5fba4] Creating session, language cpp
Jul 26 07:47:09 [181fa1af7bde4df6915b2f3ad995180a] Creating session, language csharp
Jul 26 07:47:09 [e9f17bb84e06400f97c15378011883df] Creating session, language csharp
Jul 26 07:47:09 [4b765b928a1045d19df3d83981b7651e] Creating session, language javascript
Jul 26 07:47:09 [19ab53bb70954be9be950bdfcada2d28] Creating session, language ook
Jul 26 07:47:10 [d705dec67874457f9cb6a26f001ba0fa] Creating session, language cpp
Jul 26 07:47:10 [dcb4f85404a44a02b23e0c740f3edf48] Creating session, language csharp
Jul 26 07:47:11 [8c5fa29edcdc4c44b0a6319395ef9bcf] Creating session, language cpp
Jul 26 07:47:11 [51912a0733ee4249875436a1bdffb901] Creating session, language csharp
Jul 26 07:47:11 [c66a590ab6e843cf8c6de8211ee14ba6] Creating session, language python
Jul 26 07:47:12 [04f0b4054732481ab4b23f23820c4c83] Creating session, language cpp
Jul 26 07:47:12 [83b18df460004e1293e95a494376f022] Creating session, language python
Jul 26 07:47:12 [776c84ee03614ca98d5158b1c00f38a2] Creating session, language python
Jul 26 07:47:12 [48baea90c54641268b57c0e40ea62514] Creating session, language csharp
Jul 26 07:47:13 [66174e780315464cbabebe48fbaf4e10] Creating session, language python
Jul 26 07:47:13 [b2c630e9f6604dfc89c9cfb054ee1339] Creating session, language csharp
Jul 26 07:47:13 [59c67925508a407e80224a906be2fa00] Creating session, language cpp
Jul 26 07:47:14 [92da8e75fc2048acaf4a34ca2c69d309] Creating session, language python
Jul 26 07:47:14 [9ef2a0d30978493d8fab44a9f99e49fb] Creating session, language python
Jul 26 07:47:15 [4f72d5e223a5494d9b2142f6d8e10406] Creating session, language javascript
Jul 26 07:47:15 [a70b1c93ab384dde81c0bf91afe81030] Creating session, language ook
Jul 26 07:47:15 [2c21f7bd986640e08788b7682d09af60] Creating session, language cpp
Jul 26 07:47:16 [daeaf234ca3d48109ca70ad61fb4c337] Creating session, language python
Jul 26 07:47:16 [ea152132c537498097b13e999406e1a4] Creating session, language python
Jul 26 07:47:17 [eca1b783f63147a6a284d53fb6da1367] Creating session, language csharp
Jul 26 07:47:17 [5fc89cb43ff64742ab6c88745db31bba] Creating session, language javascript
Jul 26 07:47:17 [bfea8bedd1e9495d85945878c253b8e8] Creating session, language cpp
Jul 26 07:47:18 [41c8100cdd5b4d5aad1a93039d0820c5] Creating session, language ook
Jul 26 07:47:22 make: *** [Makefile:172: server] Killed
*** Not all processes have exited in time. Forcing them to exit.
Jul 26 07:47:58 node backend/server.js
Jul 26 07:47:59 Listening on http://<IP_ADDRESS>:6119
Jul 26 07:48:00 Loaded 224 language configuration(s) from disk
Jul 26 07:48:00 [88431ce0641d4c16800bdcf18581c65b] Creating session, language python
Jul 26 07:48:00 [025c3ddb95db4eacaba6cd1de3511fe2] Creating session, language python
Jul 26 07:48:01 [bef1da3bf5354f7f9d83fc1066204115] Creating session, language javascript
Jul 26 07:48:07 [53330fd07a1242ef821f69d3b3c70de4] Creating session, language cpp
Jul 26 07:48:07 [31f2baf9df11484d801d96000241eb5c] Creating session, language ook
Jul 26 07:48:13 [78ed11eb88b14dffb4b9ea293566a414] Creating session, language csharp
Jul 26 07:49:41 [88431ce0641d4c16800bdcf18581c65b] Tearing down session
Jul 26 07:49:41 [025c3ddb95db4eacaba6cd1de3511fe2] Tearing down session
Jul 26 07:49:42 [975b1a1378b349959fe0b64a35d54504] Creating session, language python
Jul 26 07:49:42 [ae0fef9c49724cb8bf4fef2a003adf71] Creating session, language python
Jul 26 07:49:43 [bef1da3bf5354f7f9d83fc1066204115] Tearing down session
Jul 26 07:49:44 [3b2e525de4054855ac09987139f4ac65] Creating session, language javascript
Jul 26 07:49:50 [31f2baf9df11484d801d96000241eb5c] Tearing down session
Jul 26 07:49:50 [53330fd07a1242ef821f69d3b3c70de4] Tearing down session
Jul 26 07:49:51 [967beec6131543c4b726b07a6a5e27ee] Creating session, language cpp
Jul 26 07:49:51 [3ef40ead1bea4c18bac9f25cb5898d9b] Creating session, language ook
Jul 26 07:49:54 [78ed11eb88b14dffb4b9ea293566a414] Tearing down session
Jul 26 07:49:56 [03a69d5ccadf40d994908445a836dfe9] Creating session, language csharp
Jul 26 07:50:27 [df63f2418d0240b084dbf0eddee301c6] Creating session, language python
Jul 26 07:50:34 [df63f2418d0240b084dbf0eddee301c6] Tearing down session
Jul 26 07:51:23 [975b1a1378b349959fe0b64a35d54504] Tearing down session
Jul 26 07:51:23 [ae0fef9c49724cb8bf4fef2a003adf71] Tearing down session
Jul 26 07:51:25 [3b2e525de4054855ac09987139f4ac65] Tearing down session
Jul 26 07:51:25 [798103f80de040858357d8acd6866e2d] Creating session, language python
Jul 26 07:51:25 [1b0ea04a199c43b09d942ec7aef48ef8] Creating session, language python
Jul 26 07:51:25 [c66cb8c79e61445ba6590b4e997edf77] Creating session, language javascript
Jul 26 07:51:30 [23443f71470f41d297f3bde43845ec1b] Creating session, language typescript
Jul 26 07:51:33 [3ef40ead1bea4c18bac9f25cb5898d9b] Tearing down session
Jul 26 07:51:33 [967beec6131543c4b726b07a6a5e27ee] Tearing down session
Jul 26 07:51:33 [68806dee4d2948bb8672a256d187d328] Creating session, language ook
Jul 26 07:51:35 [282b64380448491788d5111c53376653] Creating session, language cpp
Jul 26 07:51:37 [03a69d5ccadf40d994908445a836dfe9] Tearing down session
Jul 26 07:51:39 [b18ffe6e9638442eaa27ffe2d6995e85] Creating session, language csharp
Jul 26 07:51:40 [23443f71470f41d297f3bde43845ec1b] Tearing down session
Jul 26 07:51:44 [d06f88954fdb45de9b741d5104e11493] Creating session, language aheui
Jul 26 07:51:51 [d06f88954fdb45de9b741d5104e11493] Tearing down session
Jul 26 07:53:07 [798103f80de040858357d8acd6866e2d] Tearing down session
Jul 26 07:53:07 [1b0ea04a199c43b09d942ec7aef48ef8] Tearing down session
Jul 26 07:53:07 [c66cb8c79e61445ba6590b4e997edf77] Tearing down session
Jul 26 07:53:08 [85f343b0f2564947bdee0ffdde269539] Creating session, language python
Jul 26 07:53:08 [3f21dfb8390644348e4d531ce28431db] Creating session, language python
Jul 26 07:53:08 [c7d1cadc753243678a55d3a73a82a89d] Creating session, language javascript
Jul 26 07:53:15 [68806dee4d2948bb8672a256d187d328] Tearing down session
Jul 26 07:53:15 [3b5d1c3ff5cb4706ae7de8b1d2a1a29d] Creating session, language ook
Jul 26 07:53:16 [282b64380448491788d5111c53376653] Tearing down session
Jul 26 07:53:18 [316f72eecdd24ec582a1c6e3e195e4f0] Creating session, language cpp
Jul 26 07:53:20 [b18ffe6e9638442eaa27ffe2d6995e85] Tearing down session
Jul 26 07:53:22 [4878e4b80e7c49e7927b6c3bf27dbbd5] Creating session, language csharp
Jul 26 07:54:50 [85f343b0f2564947bdee0ffdde269539] Tearing down session
Jul 26 07:54:50 [c7d1cadc753243678a55d3a73a82a89d] Tearing down session
Jul 26 07:54:50 [3f21dfb8390644348e4d531ce28431db] Tearing down session
Jul 26 07:54:51 [422b4ad4c89b4d1daea65d473365dc26] Creating session, language python
Jul 26 07:54:51 [4b218f7860794f72b4048bfb0095048f] Creating session, language python
Jul 26 07:54:51 [391ca90fc62040df99511e29cf348596] Creating session, language javascript

Impact was about 3 minutes of downtime according to monitoring.


Fix set the replicationClusters param

There are should get the  ReplicationClusters  from the message body, otherwise always null.

Hi, thank you for the PR, but the build is failing. Can you also remove this property as it will be unused


Replace "callback" with "implementation" when talking about tests

This was suggested in #705. Let me know if I missed anything or if there's a better word.

Awesome!