fix: Encrypt s3 creds on project update

Description
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
Closes #(issue)
Type of Change
Please delete options that are not relevant (including this descriptive text).

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration.
Checklist: (Feel free to delete this section upon completion)

[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My code follows the style guidelines of this project (I have run yarn lint)
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes (I have run yarn test)
[x] My changes generate no new warnings
[ ] Any dependent changes have been merged and published in downstream modules

:tada: This PR is included in version 1.8.3 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Drawstring fails with NullPointerException

SilenceEngine.graphics.getGraphics2D().drawString("Sometext", Vector2.ZERO);
throws a NullPointerException for me. Not sure if I have to initialize anything before, but I cannot draw a String.

 I could set a default font, but loading a font takes some time which makes it look hanged for a moment in the start.

To update the status, this will not happen now, as there is a default font. The default one is 16 pt Arial.


split libclang

Currently most clang stuff is in a single huge output (~600 MB as of 4.x).  One common use case is just libclang (~64 MB), e.g. for various developer tools.  On NixOS that may often happen even without the person wanting to compile anything with clang...

Are there any updates on this issue, please?

I think this has been done for recent llvm releases.


docs(fix): correct the currency code (XUS) and the expected message after an addition of Fake Diem Coins

Correction of two aspects of the client:

[feat] The current changes: Coin1 becomes XUS
[docs] The expected message after the successful addition of Fake Diem Coins changed: Request submitted to faucet becomes Finished sending coins from faucet!

Motivation
The tutorial My First Transaction cannot be followed successfully because the documentation requires an update.
Have you read the Contributing Guidelines on pull requests?
Yes, I have read it

Crud, there's a merge conflict, can you rebase?

Crud, there's a merge conflict, can you rebase?

:lock: Merge Conflict

:lock: Merge Conflict

this PR has been open for nearly 2 months without any activity, closing


"Fix locks" Pack

There are 3 parts:

remove unnecessary locks and chainActive.Tip() references
add some locks to protect chainActive.Tip() and mapBlockIndex (why "some"? see next point)
introduce CDSNotificationInterface - validation interface to listen to tip updates and trigger updates in DS, payments and budgets. Should significantly reduce number of references to chainActive.Tip() i.e.we should have less cs_main in dash-darksend thread and potential deadlocks. This could require dash-darksend internal locks though (which still would be much better than inter-thread locking).

Needs some testing ;)

Solved issue with generating blocks on regtest.

Fixed miner_tests but only in part which is related to this commit i.e. forced UpdatedBlockTip to initialize pCurrentBlockIndex in MN payments. See 124178b for other miner_tests fixes.

rebased

Going to start testing this now, thanks!


dlog: Defer sprintf to the final logger.

This is intended to preserve CPU cycles that would otherwise be spent
formatting messages that will never be logged (e.g. formatting debug
messages when the log level is info)
Signed-off-by: Jose Cortes<EMAIL_ADDRESS>

This comes after i discovered that telepresence's root daemon can spend a lot of time formatting debug statements even when the log level is set to info. For large enough requests this has a considerable performance penalty


If HDF5 dataset has multiple anonymous dimensions of the same size, assume they are different dimensions

Fixes #1484
When reading a HDF5 file (i.e. not a netCDF-4/HDF5 file), the library has to make assumptions about dimensions.
Until now, each dataspace length got it's own phony dimension, unless it was the same length as a previously assigned anon dimension.
That meant a HDF5 file with a 2-D dataspace of 100x100 would look like this:
netcdf dset {
dimensions:
        phony_dim_0 = 100 ;
variables:
        int dset(phony_dim_0, phony_dim_0) ;
}

This is probably not what the data writer intended. The two dimensions of the dataset should be two different dimensions, even though they are (coincidentally) the same size.
Now, if an anon dimension of the same size is found, it is also checked to see if it was already used in this dataset. If so, we now assume that it is a new dimension.
So now a HDF5 file, with two datasets of size 100 x 100 will look like this to netCDF:
netcdf tst_interops_dims {
dimensions:
	phony_dim_0 = 100 ;
	phony_dim_1 = 100 ;
variables:
	int dset(phony_dim_0, phony_dim_1) ;
	int dset2(phony_dim_0, phony_dim_1) ;

Note: this PR also includes #1523

I have been  thinking about this from the POV of semantics.
In netcdf-c  when you use the same dimension name, it is intended to mean
that the dimensions are known to be semantically the same.
For anonymous dimensions, we have no such information.
So, I would think that this means every anonymous dimension
should map to a different phony dim. This means that the above example
shoul have four different phony dimensions.

PS,  whatever we do here needs to be also done in DAP2, DAP4, and
Zarr.

Well that is a valid idea, but the existing usage has already been built into a lot of programs, so I don't know that this can be changed.
The reality on the ground is that in most cases, the writer is using shared dimensions. That is, when you take some model output and put it in HDF5, you get N datasets with the same 3 and 4 dimensional shape. And they really are sharing dimensions. Of course there are examples to the contrary, but even these are not a problem in a read-only setting. (And read/write is expressly documented as dangerous, though it can work under careful circumstances.)
The case that generated this ticket is kind of a corner case.
If there is to be a different interpretation, it would have to be activated with a mode flag (after we expand the size of the mode flags). If you decide to do that for the daps and zarr, I'm happy to support it in the libhdf5 code.
(But I don't think that should hold up the current PR, which fixes a real bug a user is seeing.)

I would be happier if the naming of anon dimensions was
independent of the variable in which they occurred.
remember that to this point, size=> name, so any proposed change
will break something.

Any proposed change, with a mode flag, can be completely backward compatible. And if this is something you are encountering in your DAP or Zarr, then that could be the default for those dispatch layers; as long as plain old HDF5 files are assigned in the same way, then nothing will break.
But I don't get what you mean:

I would be happier if the naming of anon dimensions was
independent of the variable in which they occurred.

The dimensions are named phony_dim_N, where N starts at 0 and is incremented for each new anon dim, which means each different length, or (now) same length but assigned to the same var. So they are not very dependent on the variables.
The current system was whacked together by a madman, temporarily restrained. and probably verging on the brink of ever greater madness. So it could be better. ;-) I welcome clarification and elaboration of a better way to assign these anon dimensions, as long as we don't break existing codes.

Let me try to clarify:
Given we encounter an anonymous dimension associated with a variable,
provide a written set of rules that tell us what to do with that dimension.


Changes required for distributed tracing instrumentation

There are few changes required/remaining for distributed tracing instrumentation: #201

Activity name should not be "Trigger" instead we can use Function app name.
Need to add custom properties tag for created activity, so that we can have more metadata about activity.

@t-manyadav - Can you explain or share a link that explains what custom properties are?


Missing *h5 model

In the example  HouseDamageClassifier *emd file has link for  the model  "ModelFile":".\Damage_Classification_Model_V7.h5".
Unfortunately, this particular *h5 model  is missed in the pack of  files. So this example cant be executed

@AnastasiyaTi Thanks to point it out, the link to download is here: https://www.arcgis.com/home/item.html?id=8549fbf2be404e678934d224f9804298
I will add the link to the example page: https://github.com/Esri/raster-deep-learning/tree/master/examples/keras/object_classification

Issue fixed.


await channelProvider.mountWalletComponent(...) never returns

Scope: mounting the x-state wallet as per the instructions in the quick start - dapp section
Summary: Mounting the wallet component as per the instructions, even without the trailing slash as described in issue #2563 , never returns if called with await
Steps to reproduce the behavior:

Create a simple app following the instructions as per the quick start. **Make sure that the trailing slash is removed in the url for the x-state wallet. (see #2563)
Bundle/webpack/etc and serve a compiled simple app with a button to enable the wallet. Run on port 80 to avoid CORS issues.

Because the await statement never returns, my code never gets to the second line below to enable() the channel provider:
  await window.channelProvider.mountWalletComponent('https://xstate-wallet.statechannels.org')
  await window.channelProvider.enable()

Note that I can still enable the channel provider in the browser by using the console and running the command:
window.channelProvider.enable()

Hi @ditchfieldcaleb thanks for posting this issue!
Could you please try the updated xstate-wallet url as per #2560 , and let me know if you fare any better? I suspect the issue is that the iframe-channel-provider is "ahead" of the wallet you are pointing at, and there have been breaking changes.


Change default to example in Config doc

The config in: mixer/testdata/config/ is not the default config for Mixer. While that may be the long-term intention, it is not the case currently.
This PR updates the wording in the config documentation to reflect the status of the config in mixer/testdata/config/.

Jenkins job istio.github.io/presubmit passed


docs: update readme with an svg

Closes #
{{ Short description }}
Changelog
New

{{ New thing }}

Changed

{{ Changed thing }}

Removed

{{ Removed thing }}

Testing / reviewing
{{ Add descriptions, steps or a checklist for how reviewers can verify this PR works or not }}

I have read the DCO document and I hereby sign the DCO.


Support day 2 operations features for backing services

What problem are you facing?
Support for “day 2” operations that developers might want for backing services(rds, cache, etc) e.g backup(Available) and restore(not available), credentials rotation(not avilable) ..etc
https://github.com/crossplane/provider-azure/issues/178
https://github.com/crossplane/provider-gcp/issues/265
same for alibaba as well.
How could Crossplane help solve your problem?
Implementing CRDs and controllers for the relevant services on each cloud.

Hi @gowrisankar22 ! Could you give more details about what you mean by day 2 operations? It's unlikely that provider-aws will have features that AWS doesn't offer, so, I would like to understand which AWS APIs you mean and open targeted issues about those APIs.

@muvaf Day2 operations I meant in addition to just crud operations, additionally backup, restore, credential rotation, monitoring, logging ..etc are very much important for the effective software system.
Of course, cross-plane is completely API driven from hyper scalers, mostly all the hyperscalers are having day2 operation APIs in place, just we need to integrate this via crossplane.
This would be applicable for any services but I advocate for backing services. Below are the few things that should be available on all the infra, to do the abstraction in an efficient way.

Backing Service day2 operations
aws
azure
gcp
ali

backup
:white_check_mark:
:white_check_mark:
:white_check_mark:
:white_check_mark:

restore
:warning:
:warning:
:warning:
:warning:

upgrade
:white_check_mark:
:warning:
:warning:
:warning:

credential roation
:white_check_mark:
:warning:
:warning:
:warning:

Multiaz
:white_check_mark:
:warning:
:white_check_mark:
:warning:

Encryption
:white_check_mark:
:warning:
:white_check_mark:
:warning:

integration to kv store
:warning:
:warning:
:warning:
:warning:

think for all of this resources it is possible to create day2 providers to manage it

Backup and restore is implemented for the following MRs:

[x] DBInstance.rds.aws.crossplane.io
[x] DBCluster.rds.aws.crossplane.io
[x] RDSInstance.database.aws.crossplane.io
[x] DBCluster.docdb.aws.crossplane.io
[x] CacheCluster.cache.aws.crossplane.io
[x] ReplicationGroup.cache.aws.crossplane.io

I am closing this now since the requirements of this issue seem to be fulfilled. Feel free to reopen if that is not the case.


New version: ComoniconTestUtils v0.3.0

Registering package: ComoniconTestUtils
Repository: https://github.com/comonicon/Comonicon.jl
Created by: @Roger-luo
Version: v0.3.0
Commit: cb4b89fa237f638fe1c026f9e7e355b3b0ebce4f
Reviewed by: @Roger-luo
Reference: https://github.com/comonicon/Comonicon.jl/commit/cb4b89fa237f638fe1c026f9e7e355b3b0ebce4f#commitcomment-61209241
Description: All terminals are under my command.

[noblock]
I'll re-tag this after Comonicon's new version is registered


Split Admin Project to two project

for example:
admin: controllers/all views/pages/Global Resources/static resources etc....
admin.Core: all config/help class etc ...(also include the views/controllers,is't it?)
and then, admin.Core as a nuget pakg,we can update.
the custom/Extension code we can add admin project，dot't need update.
also,we can Merge the admin project with ID4 Server project (see #247 ),just one web application.

This is possible, but for me in the future. I want to achieve stable current version and after that I will allocate my free time for this task.
Thanks. 👍🏼


[New Issue] Madame Sauvage's Place's Icon is labeled as Sleepcrate

When using your scanner in Neon near Ebbside, you will notice that Madame Sauvage's Place's icon will show a martini glass, but is labeled as Sleepcrate. Clearly this is a copypaste error from Bethesda.
Details

Game Version
<IP_ADDRESS>
Language
English (EN)
Have you recreated this issue on a new game?
Yes, I can recreate this issue.
Reproduction Steps
Go to Ebbside.
Engage scanner.

I have found the offending form.
SFBGS008.esm:000078 CityMapMarkers_MadamSauavage

I'll forward this one to BGS directly. Really appreciate the precise details on exactly where the issue is.
A fix via the SFCP is possible, but in my judgement, this is too small of an issue to be worth the complexity. Would need to deal with translations, and the fact that it's in SFBGS008 (very annoying with currently available tools). Better to just have this one addressed officially.

Turns out this should be fixed in the next update, just wasn't mentioned in the patch notes.

Turns out this should be fixed in the next update, just wasn't mentioned in the patch notes.

Bethesda moment.


NorwegianSAFT table "VAT Code"

Hi.
In the NorwegianSAFT app there is some references to a table named "VAT Code".
ex: tableextension 10675 "SAF-T VAT Code" extends "VAT Code"
Where does that table comes from? It´s missing in my BC17 installation.

table 10602 "VAT Code" is the part of the NO base application.
There are many NO objects referencing to this table, e.g.
table 325 "VAT Posting Setup"
...
        field(10606; "VAT Code"; Code[10])
        {
            Caption = 'VAT Code';
            TableRelation = "VAT Code".Code;

table 10602 "VAT Code" is the part of the NO base application.
There are many NO objects referencing to this table, e.g.
table 325 "VAT Posting Setup"
...
        field(10606; "VAT Code"; Code[10])
        {
            Caption = 'VAT Code';
            TableRelation = "VAT Code".Code;


How can I make bootable linux autostart with my saved state?

Hello,
I'm MB. A very nice and polite guy.
Really like this project, I have been thinking about something like this for a long time.
How can I make bootable linux autostart with my saved state?
I would like to be able to customize the os, save the state and then make a website that goes into fullscreen when the user visits but with my custom os instead of the blank os.

Start with this: https://github.com/copy/v86/blob/master/examples/basic.html
And add initial_state: { url: "state.bin" },

I have tested that now. It works with the normal settings but not with mine which are:
GNU nano 6.3                          v86.html
<!doctype html>
Basic Emulator

Anything in the console?

Note: Memory size mismatch. we=33554432 state=268435456

Does it work if you fix the memory size mismatch?

How? By adjusting the memory_size in the HTML file? I have tried increasing to 32 x 4048 x 4048 but it still flickers white and disappears.
-------- Original Message --------
On May 23, 2022, 18:25, Fabian wrote:

Does it work if you fix the memory size mismatch?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

The value needs to be the same as what was specified when you created the state image.


Overload manager bypass flag for listeners

WIP + missing tests and release notes.  Opening for discussion.
Pulled the NullOverloadManager instantiation out of admin and moved it into server, so that it can be used across any listeners that want to bypass overload manager.  A health probe listener for example.
On a related note, while working on this I tried a "stop_accepting_requests" action in conjunction with "shrink_heap" and it seems once memory crosses the threshold, it never comes back down regardless of the shrink heap action, so it just keeps rejecting requests indefinitely.  I'm not really sure what the point of the overload manager with memory thresholds is if the memory never comes back down.  This seems true for both gperftools and tcmalloc.

Sorry @briansonnenberg , I think I lost track of this as it was marked as WIP. Moving it to ready for review so I remember to review it.

/wait-for any

any additional progress on this @briansonnenberg ?

@KBaichoo Yeah, looking at this it looks like there was a pretty large refactor that is causing a lot of conflicts with these changes.  Looking into it now.

In any case @briansonnenberg if you end up becoming too busy, life got in the way and want to hand this over.
I am happy to make a PR on top of your PR to help merge this.

From my perspective this PR seems like it can cover 95% of the usecase but for the remaining we need some thought and this is useful as it stands. So I wonder if we can just change the API surface:
message  OverloadManagerListenerConfig {
     bool bypass_overload_manager = 1;
}

OverloadManagerListenerConfig overload_manager_listener_config

And that way we can extend the config to capture all of those use cases in the future by having a dedicated api config.

I like this, and agree that it's good enough for most use cases as it currently is.  Feel free to add to this. I will get around to it eventually, but have different work prioritized currently.

Hey @briansonnenberg thanks for working on this.
I am also coming from the angle of https://github.com/projectcontour/contour which would also would love to use this feature because it follows a similar configuration pattern of exposing a subset of admin interface via a dedicated listener. And we would like to exempt this listener from overload manager to avoid k8s liveness/readiness/stats getting shedded when the system is overloaded.
@caoyukun0430

My initial idea also as people proposed in the issue #23843 (comment) is that bypassing can be allowed under certain criteria: e.g. combination of IP+port(for my issue 15021 health check port)

That makes overall sense to me.

With respect to port do you mean source port? Because if it is the port that Envoy listens to isn't that basically what we implement here? I assume  15021 is a dedicated port for health checks and you have a dedicated envoy listener listening on that port? Or am I missing something?
With regards to source IP that can be allowlisted instead of allowing all traffic that also makes sense but the question is that in order to have IP information we need to work on all incoming requests i.e. accept the request. So there is a cost associated to it that might push Envoy and that might defeat the purpose of overload manager. This depends on the implementation details.

From my perspective this PR seems like it can cover 95% of the usecase but for the remaining we need some thought and this is useful as it stands. So I wonder if we can just change the API surface:
message  OverloadManagerListenerConfig {
     bool bypass_overload_manager = 1;
}

OverloadManagerListenerConfig overload_manager_listener_config

And that way we can extend the config to capture all of those use cases in the future by having a dedicated api config.

Hi @davinci26 , thanks for the comments! It's nice to have you and @briansonnenberg  willing to discuss and pick up. Overall, I agree with your points, about IPs, yes, filtering over IP can add overhead and it might be not what we want under overload manager scenarios.
But about the options of port. I think I might have misunderstood before, so the bypass_overload_manager bool flag can be configured per listener, and it should fulfill the need to be enabled on the health check 15021 listener :)

if that covers your requirements @caoyukun0430 I am tempted to say YAGNI and then move with the simple API change as proposed here and then we can always deprecate and extend if the use case appears.
@jmarantz to your question

If OM is not working for you can't you just remove the OM config?

The problem that many folks have is when running in k8s you dont want to expose the admin listener to the world so contour (and I assume other providers) expose a different standard envoy listener lets call it admin-listener that exposes a subset of envoy admin routes like /ready /stats to other systems running in k8s.
With this change we allow envoy to be able to answer to health checks and metrics when the OM triggers because the admin-listener is exempt from OM. Or you don't want envoy when the OM trigger to not be able to answer health checks (those are in admin-listener) because that you mark your container as unhealthy and make the orchestrator (k8s) to restart it which defats the purpose of OM in many cases
Hope that explains a bit better

I started working on the PR this weekend, it is more of a side project even tho I would like to use it at work so updates are going to be a bit slower. I will try to make a PR tomorrow or friday. One small thing is that the code has been through some refactor to introduce overload_state which doesn't change much but it makes a bit of a difference

We are very much looking forward to this change, as we are rolling out a new CPU utilization monitor that sheds load using overload manager when our nodes are overloaded and we want to restrict this behavior to certain request. Adding this flag on the listener helps, but there may be use cases like "allow all traffic from the localhost even when overloaded" and this traffic may land on multiple listeners. So, it may be better to do this at filter chain level? That might be a big change now, so happy to start here, but something to keep in mind if this work is still WIP.


[INTEL MKL] DNNL1.x integration for tf_conv_ops.h and transpose.cc

DNNL1.x integration for tf_conv_ops.h and transpose.cc

@penpornk Gentle reminder for review.

@penpornk done the changes.

@penpornk Done.


[eas-cli] add support for autocompletion

Checklist

[ ] I've added an entry to CHANGELOG.md if necessary. You can comment this pull request with /changelog-entry [breaking-change|new-feature|bug-fix|chore] [message] and CHANGELOG.md will be updated automatically.

Why
Ads autocompletion support
How
eas autocomplete will print the command you need to execute to configure your shell
For local eas-cli development
if you have alias like alias eas_dev=$HOME/expo/eas-cli/bin/run for local devlopment
you can add completion to it by adding compdef $HOME/expo/eas-cli/bin/run='eas' in you zshrc after eas completion is set up
Test Plan
tested with eas if completion shows up

/changelog-entry new-feature Add shell completion for bash and zsh.

Will that include fig support like expo-cli?

Will that include fig support like expo-cli?

This is standard zsh/bash completion. It might work if fig integrates with shell completion, but I don't know if it does.

No, it needs it's own command config file, there's a whole script for it in expo-cli, and seeing this was still in draft, I asked in case you were considering to add it.

No, it needs it's own command config file, there's a whole script for it in expo-cli (https://github.com/expo/expo-cli/blob/main/packages/expo-cli/scripts/introspect.ts), and seeing this was still in draft, I asked in case you were considering to add it.

This is a draft because updating oclif packages caused 2-3 MB increase in size for eas-cli, we will need to resolve that before merging, I'm not saying we will never support fig, but it's quite a niche solution and bash/zsh completion works everywhere.


Add 'sampling' details to tooltips

Add additional line to the tooltips with the fields used to sample the data.

The 'sampling' label is available in the current version, but there is a little bug that it is not filled.
This will be fixed in the next release.


[BUG] wrong URL address for share function for some site like youtube

tested version: 93.0.4577.9
if the web site has changed the URL after page reload, the share function would share the wrong address

For YouTube: If you are using Kiwi's share function the URL is trimmed to "youtube.com". The address of the video is removed. This also happens in Google Chrome.
But instead using YouTube's share it does work.

This issue it's fixed in recent builds , actually it's fixed since implementations of new hub share


Wiremock 3.x has  CPU Throttling issue while running performance testing in docker containers

Proposal
After upgrading wiremock 2.x to 3.x having CPU Throttling issue while running performance testing(locust in our case) in Docker containers.
Attached the 2 version comparison details (JFR files omitted incase having sensitive data but details shared in wiremock slack community)
Issue Details.zip
In our use case we have 4 WireMock  container used as User Profile with 5ms delay
Each Container settings:
resources:
  requests:
    cpu: 250m
    memory: 1024Mi
  limits:
    cpu: 1000m
    memory: 1024Mi

Expected Behavior:
While running the performance test against 4 wiremock containers with 80K request per min with total 1mil request in 15 min, expecting that there will be no CPU throttling or Memory issue.
Actual Behavior:
When running the performance test against 4 wiremock  container with 80K request per min, CPUT throttling starts after 3-4 min and it jumps almost 10-15 times of the CPU limits and causing containers to restart many times and crashing them.
Reproduction steps
Issue can be reproduced by running wiremock in Docker containers with using locust performance testing with 20-80K request / per min ramp up in 10min.
References
This issue discussed in wiremock slack community and here is the thread Slack Thread

is this still open? we can see CPU Throttling also in the last release 3.4.2...

is this still open? we can see CPU Throttling also in the last release 3.4.2...

Yes, Still the issue persist even after recent release.
You can use 2.33.2 version till it fixes.

FYI, I still see this issue in 3.9.1... and my stubs are not compatible with 2.33.2 :(
When I start the 2.33.2 version I get the following exception
Exception in thread "main" com.github.tomakehurst.wiremock.standalone.MappingFileException: Error loading file /home/wiremock/./mappings/get_v5_my_stb.json:
Unrecognized field "urlPathTemplate" (class com.github.tomakehurst.wiremock.matching.RequestPattern), not marked as ignorable
        at com.github.tomakehurst.wiremock.standalone.JsonFileMappingsSource.loadMappingsInto(JsonFileMappingsSource.java:126)
        at com.github.tomakehurst.wiremock.core.WireMockApp.loadMappingsUsing(WireMockApp.java:221)
        at com.github.tomakehurst.wiremock.core.WireMockApp.loadDefaultMappings(WireMockApp.java:217)
        at com.github.tomakehurst.wiremock.core.WireMockApp.<init>(WireMockApp.java:112)
        at com.github.tomakehurst.wiremock.WireMockServer.<init>(WireMockServer.java:70)
        at com.github.tomakehurst.wiremock.standalone.WireMockServerRunner.run(WireMockServerRunner.java:62)
        at com.github.tomakehurst.wiremock.standalone.WireMockServerRunner.main(WireMockServerRunner.java:133)


MM-10541 Update announcement banner immediately without refresh

Summary
Just needed to update state again when one of the banner settings in the props changed.
The behavior is as follows:
If the banner is being enabled for the first time:

Right after enabling and saving the banner settings, the banner will be immediately shown to users with the settings as set

If the banner has not been dismissed by the user:

Changes to the enabled, text, text color, banner color or allow dismissal settings will be reflected immediately in all users' clients

If the banner has been dismissed by the user:

Changes to text or allow dismissal settings will cause the banner to show again
Changes to enabled, text color or banner color will not cause the banner to show again (enabled because if you're disabling it wouldn't show the banner either way)

Ticket Link
https://mattermost.atlassian.net/browse/MM-10541

Good call, I'll add some tests


Require prism as a parser to analyse newly released ruby versions

Context (don't want to spam it with rubocop specific stuff): https://github.com/whitequark/parser/issues/1046
The main parser maintainer will not backport new syntax changes to the parser gem anymore because:

prism exists
it's getting harder and harder to keep up with changes because CRuby itself is not using racc anymore for the old parser

I made a few PRs to import pending 3.4 changes and that was relativly straightforward, but only because ruby itself is not accepted new syntax for 3.4: https://bugs.ruby-lang.org/issues/20575. Still, there are some upstream changes still missing like it that made it in, and some other fringe cases which I don't believe anyone would actually notice or care about.
When 3.5 starts, there will probably more syntax changes, like the ones that were held back from 3.4.
Inevitably, RuboCop must do something in order to keep up. Is there someone here with the expertise to properly maintain the parser gem? I know it won't be me. I propose to simply only support the prism translation when analysing newer ruby versions, it will always be up-to-date and correct. The translation layer works quite well, there are barely any disabled tests and only a few prism-specific issues at the moment. Those can be worked out if needed.
@koic also had the same idea https://github.com/whitequark/parser/issues/1046#issuecomment-2505593801:

It might be possible to design a transition where older Ruby versions continue to use the Parser gem, while newer Ruby versions rely on Prism::Translation::Parser, minimizing the impact on users.

But I believe there is at least one issue:

rubocop  can't add prism as a dependency without bumping the major version.

Here's why I think so: https://github.com/rubocop/rubocop-ast/issues/282
When rubocop-ast added prism as its dependency, people complained because their environment lacks the necessary build tools to compile the native extension.
Maybe someone does step up to take care of parser but for now there's just a wish to keep it up-to-date. Let's talk about how to solve this now before it becomes a problem?

I think that's a reasonable plan overall, regardless of the short-term situation with parser. I think we will be able to push changes there ourselves if it comes to this. (or fully assume it's maintenance for a time)

rubocop can't add prism as a dependency without bumping the major version.

I don't fully agree with this, as we've added plenty of new runtime deps along the way. To me adding prism won't be a big deal, if we don't have the same issues we did last time around with rubocop-ast. Perhaps those are already fixed?

Here is a summary of my current thoughts. The Ruby syntax supported by the Parser gem and Prism differs as follows:

Parser gem: Supports syntax for Ruby 2.0 through Ruby 3.3 (or potentially Ruby 3.4 and beyond, if supported).
Prism::Translation::Parser: Supports syntax for Ruby 3.3 and later.

For example, the it syntax could potentially be supported by the Parser gem (either by myself or someone else). If Prism::Translation::Parser provides compatibility with the it syntax in the Parser gem, it would be considered supported.
It is unclear what syntax changes will come with Ruby 3.5, but for the time being, the Parser gem should remain the default parser. Many users have not yet migrated to Ruby 3.4 and are likely staying on older Ruby versions. This should be taken into account.
For this reason, the default should remain as the Parser gem for the time being. At this point, Prism should not be added as a dependency. Instead, it should be up to users to perform a bundle update.

I propose to simply only support the prism translation when analysing newer ruby versions, it will always be up-to-date and correct. The translation layer works quite well, there are barely any disabled tests and only a few prism-specific issues at the moment. Those can be worked out if needed.

I cannot agree with this proposal at the current stage. There are still unresolved incompatibilities with Prism::Translation::Parser as far as RuboCop is concerned. Additionally, there are reports of syntactic issues in Prism’s core.

Let's talk about how to solve this now before it becomes a problem?

While transitioning to Prism::Translation::Parser is likely to become a viable option in the future, making such a decision now is probably premature. We should observe how the situation evolves over time.
To determine this, time is needed.
As a side note, the change to the parser generator in ruby/ruby's parser.y involves moving from Bison to Lrama, not Racc. :-)

To me adding prism won't be a big deal, if we don't have the same issues we did last time around with rubocop-ast. Perhaps those are already fixed?

There's nothing wrong with prism, it's just that it requires build tools and rubocop right now has no dependencies on any c extensions. So for people that don't have any c extensions through other gems right now, and are lacking build tools, their install would fail. I remember https://github.com/ruby-i18n/i18n/issues/685 for something similar.
I can understand both sides, its just a dependency but can cause breakage. Platform-specific prebuild gems of prism would probably help with that (nokorigi comes to mind as one example of doing that right now) but I have no idea how that works or how much effort that would be for prism.
In the end, I'm not sure how much pushback for the dependency there really would be, but I at least know it will not be zero.

It is unclear what syntax changes will come with Ruby 3.5, but for the time being, the Parser gem should remain the default parser.

And it should 100% stay that way, at least for versions parser properly supports. I'm not saying this should happen right now, but depending on how it goes with the parser gem it might need to happen for 3.5. Who knows how much Ruby will evolve until then.
For Ruby 3.4, it doesn't matter so much because it mostly made some fringe syntax that was previously valid now invalid, probably mostly found out because there was so much fresh parser work.
it also just works, although it's now accepting some syntax that it shouldn't. But I think that is much better than in the opposite direction where new syntax doesn't work.

There are still unresolved incompatibilities with Prism::Translation::Parser as far as RuboCop is concerned

Yes, there are some. I will try to look into a few of those but I may be in over my head with that.

Additionally, there are reports of syntactic issues in Prism’s core.

prism will be the default parser for ruby, so any issues it has will line up perfectly with how it really behaves (unless the user opts into parse.y). Why do you think that would be an issue?

While transitioning to Prism::Translation::Parser is likely to become a viable option in the future, making such a decision now is probably premature. We should observe how the situation evolves over time.

Well, there are already some syntax changes that need to be ported. I'm just not familiar with parsers in general to attempt the bigger and more complex changes. The ones I already did barely touched the gramar.

As a side note, the change to the parser generator in CRuby's parser.y involves moving from Bison to Lrama, not Racc :-)

Oops, yes. parser uses racc.

If someone does continue to maintain parser, then it is less pressing of course and I'll probably be able to chip away at the smaller things myself. But I haven't seen someone say, yes, I'll continue the work. I'm under no circumstances implying you should do that @koic, I just don't want this to come "out of nowhere" next year for the next ruby version so I want to talk about it now already and see what's possible.


Get-Verb Verb parameter argument completer

Summary of the new feature / enhancement
The Get-Verb -Verb parameter should have argument completion.
Proposed technical implementation details (optional)
No response

This would be very nice to have
I'd like to see this not only for this parameter in this cmdlet but for others in the wider codebase too.

@PowerShell/wg-powershell-cmdlets feels this is a useful enhancement.


ListView and GridView with Grouping crash with AccessViolation on Drag

Describe the bug
When a ListView or GridView has Grouping enabled and AllowDrop=true, then when drag+drop something into the view area where scrolling should start, it crashes with AccessViolation.
The crash occurs exactly at the point where the list/grid would start scrolling up or down when dragging near the upper or lower area of the view. StackTrace shows it is probably trying to set the scroll velocity on something that is NULL. Dragging in the center works without crash, since no scrolling is required.
Steps to reproduce the bug
Please try attached sample. Drag e.g. some File from Windows Explorer into the middle of the view. No crash. Now move it near the bottom of the list. BANG. Watch it go down.
ListViewDragCrash.zip
Expected behavior
Drag+Drop is a super important scenario. Grouping is super important too. It should be possible to use both without issues.
AccesViolation is the worst type of error. It should never ever occur.
Screenshots
No response
NuGet package version
WinUI 3 - Windows App SDK 1.4.2: 1.4.231008000 (crash has occured since I started with WinUI on 1.2.x)
Windows version
Windows 11 (22H2): Build 22621
Additional context
StackTrace:

 	Microsoft.ui.xaml.dll!CInputServices::InitializeDirectManipulationViewportValues()	Unknown
 	Microsoft.ui.xaml.dll!CInputServices::SetConstantVelocities(class CUIElement *,class CUIElement *,float,float)	Unknown
 	Microsoft.ui.xaml.dll!CUIDMContainerHandler::SetConstantVelocities(class CUIElement *,float,float)	Unknown
 	Microsoft.ui.xaml.dll!CoreImports::ManipulationHandler_SetConstantVelocities(void *,class CUIElement *,float,float)	Unknown
 	Microsoft.ui.xaml.dll!DirectUI::ScrollViewer::SetConstantVelocities(float,float)	Unknown
 	Microsoft.ui.xaml.dll!DirectUI::ListViewBase::ScrollWithVelocity(struct DirectUI::ListViewBase::PanVelocity)	Unknown
 	Microsoft.ui.xaml.dll!DirectUI::ListViewBase::StartEdgeScrollTimerTick(struct IInspectable *,struct IInspectable *)	Unknown
 	Microsoft.ui.xaml.dll!DirectUI::ClassMemberEventHandler<class DirectUI::ListViewBase,struct ABI::Microsoft::UI::Xaml::Controls::IListViewBase,struct ABI::Windows::Foundation::IEventHandler<struct IInspectable *>,struct IInspectable,struct IInspectable>::Invoke(struct IInspectable *,struct IInspectable *)	Unknown
    Microsoft.ui.xaml.dll!DirectUI::CEventSourceBase<DirectUI::IUntypedEventSource,ABI::Windows::Foundation::IEventHandler<IInspectable *>,IInspectable,IInspectable>::Raise()	Unknown
    Microsoft.ui.xaml.dll!DirectUI::CEventSourceBase<DirectUI::IUntypedEventSource,ABI::Windows::Foundation::IEventHandler<IInspectable *>,IInspectable,IInspectable>::UntypedRaise()	Unknown
 	Microsoft.ui.xaml.dll!CCoreServices::CLR_FireEvent()	Unknown
 	Microsoft.ui.xaml.dll!CommonBrowserHost::CLR_FireEvent()	Unknown
 	Microsoft.ui.xaml.dll!CControlBase::ScriptCallback()	Unknown
 	Microsoft.ui.xaml.dll!CXcpDispatcher::OnScriptCallback()	Unknown
 	Microsoft.ui.xaml.dll!CXcpDispatcher::OnWindowMessage()	Unknown
 	Microsoft.ui.xaml.dll!CXcpDispatcher::WindowProc()	Unknown
 	Microsoft.ui.xaml.dll!CDeferredInvoke::DispatchQueuedMessage()	Unknown
 	Microsoft.ui.xaml.dll!Microsoft::WRL::Details::DelegateArgTraits<long (__cdecl ABI::Windows::Foundation::ITypedEventHandler_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Microsoft::UI::Dispatching::DispatcherQueueTimer *,ABI::Microsoft::UI::Dispatching::IDispatcherQueueTimer *>,IInspectable *>::*)(ABI::Microsoft::UI::Dispatching::IDispatcherQueueTimer *,IInspectable *)>::DelegateInvokeHelper<Microsoft::WRL::Implements<Microsoft::WRL::RuntimeClassFlags<2>,ABI::Windows::Foundation::ITypedEventHandler<ABI::Microsoft::UI::Dispatching::DispatcherQueueTimer *,IInspectable *>,Microsoft::WRL::FtmBase>,`CXcpDispatcher::Init'::`75'::<lambda_1> &,1,ABI::Microsoft::UI::Dispatching::IDispatcherQueueTimer *,IInspectable *>::Invoke()	Unknown

@lukasf drag and drop/reorder in grouped listview/gridview is not supported currently. I've marked this as a feature request. The fact that you are seeing a crash instead does not help.

Come on, this is not a feature request. This is a bug. This is base functionality that has worked in every other XAML UI framework.

I have looked into the implementation and I think I might have found the issue.
Please check this line:
https://github.com/microsoft/microsoft-ui-xaml/blob/685d2bfa86d6169aa1998a7eaa2c38bfcf9f74bc/dxaml/xcp/core/input/InputServices.cpp#L6524C17-L6524C43
            IFC(pDirectManipulationService->GetSecondaryClipContentTransform(
                pViewport,
                pContent,
                pContent->GetContentType(),
                translationX,
                translationY,
                uncompressedZoomFactor,
                zoomFactorX,
                zoomFactorY));

In all other places in this method, pDirectManipulationService is checked against null, before it is accessed. So obviously it can be null when the method is called. But in this line, the interface is used directly, without any check. And I get a AccessViolation from this exact method. I do not see any other unchecked calls in this method, so I am pretty confident that this is the exact place where the crash occurs.
I guess, instead of calling the method directly, it should be checked, and if null, the transform values must be calculated manually, like in the loop above:
            if (pDirectManipulationService)
            {
                IFC(pDirectManipulationService->GetSecondaryContentTransform(
                    pViewport,
                    pContent,
                    pContent->GetContentType(),
                    translationX,
                    translationY,
                    uncompressedZoomFactor,
                    zoomFactorX,
                    zoomFactorY));
            }
            else
            {
                // Use provided values for instance for edge scrolling scenarios.
                switch (pContent->GetContentType())
                {
                case XcpDMContentTypeTopLeftHeader:
                    translationX = 0.0f;
                    translationY = 0.0f;
                    break;
                case XcpDMContentTypeTopHeader:
                    translationX = initialTranslationX;
                    translationY = 0.0f;
                    break;
                case XcpDMContentTypeLeftHeader:
                    translationX = 0.0f;
                    translationY = initialTranslationY;
                    break;
                case XcpDMContentTypeCustom:
                case XcpDMContentTypeDescendant:
                    translationX = 0.0f;
                    translationY = 0.0f;
                    break;
                }
            }

Please look into this, it could be easy to solve.
Unfortunately, it is not possible for me to compile WinUI 3, there are no build instructions whatsoever, which is a shame. A lot of the WinUI bugs could probably be solved by the community, if only we had access to complete sources and build system.
We see that you are pretty much understaffed to do all this work. You should really work towards open sourcing WinUI3, even if not all of it is translated to C++/winrt yet. A lot of devs know plain C++ just as well.


TextFileParser skips final token if it's a single-character, and is EOL (EOF)

This is quite minor.
If the final line of my text file is:
40 BDFFD6 A A E

"E" is the end of line character.
https://github.com/ClassicUO/ClassicUO/blob/a4e7f1d01eb40dcf2c4aff8a45749a410b89bbb1/src/Utility/TextFileParser.cs#L272-L275
This dictates that it will be skipped. Asking for token[4] will give an index out of range exception.
Workaround: Include a new line at the end of the file so that \n is the EOL

Texting from mobile so im going to write a quick answer.
The GetEOL function check for \n and for the eof.
In both cases the code set the _eol variable to the current position “i”. This is wrong when hitting the eof because we skip the last char. Instead when hitting eof we need to put _eol = i +1.

Tried it and it seems good, thanks!
https://github.com/ClassicUO/ClassicUO/commit/b245b05fd5213d1b21ec6818875ea83ec4dc6726


how can i clone a new object in dart?

Dart does not have a simple way to clone objects. In general, if an object supports cloning, it should expose a clone method or copy constructor itself, so that it can do a proper cloning which preserves any underlying invariants, rather than a physical cloning which just copies the values of the fields.
If you have access to isolates, you can do deep cloning on some objects by sending them through a SendPort.
Futyre<T> clone<T>(T object) async {
  var port = ReceivePort();
  port.sendPort.send(object);
  return await port.first as T;
}

It's not a recommended way to do cloning, but it might work for some objects.


Request: Upgrade notes

I have been away from a project for a while, and today noticed that there is a 2.x release for Elf. Great! But I cannot find anywhere whether there are any backwards incompatible changes.
So my request is simply: could we start a changelog or upgrades notes or anything like that, to help users figure out whether they should be afraid of upgrading to a next major version, and perhaps also to mention new features in new versions?

https://github.com/ngneat/elf#change-logs

https://github.com/ngneat/elf#change-logs

Oh dear. I scrolled over that section multiple times, but I guess I did not read the section title. I thought they were just links to repositories. Maybe we can just add a single sentence under that title, for people who like me who tend to overlook titles sometimes?.. ☺

What would you write?

What would you write?

How about "## 🗒 Review the Change Logs" (see #367)?


Does DeepWalk support weighted edges?

I am looking for a framework that supports DeepWalk on weighted graph. But I cannot find it in the docs. Thanks.

Yes. All node embedding and knowledge graph embedding models support weighted edges.


Deploy Github Website

Use this: https://swimburger.net/blog/dotnet/how-to-deploy-aspnet-blazor-webassembly-to-github-pages
Example action:
https://github.com/anilsezar/Portfolio/actions/runs/5362619361

Might want to do this: https://github.com/anilsezar/Portfolio/issues/22


feat(#27): add select command to select between articles

[ ] I have considered whether this PR needs review, and requested a review if necessary.

Fixes issue #
Notes for reviewers
Reviewers can skip X, but should pay attention to Y.

Current dependencies on/for this PR:

main

PR #32   👈

This stack of pull requests is managed by Graphite.

Merge activity

Feb 5, 2:21 PM GMT+1: @MartinBernstorff merged this pull request with Graphite.


Standardize Output Dictionaries, Math (GSM8K, SVAMP, TabMWP) for Reflexion

🤔 Reasoning
Explain the purpose of this PR...
🚧 Changes
Describe the changes made...
✅ PR Checklist

[x] Using this PR template?
[ ] Linked issue?
[ ] Added feature?

[ ] Added/updated docs?
[ ] Added/updated tests?

Summary by CodeRabbit

New Features

Introduced new constants containing arithmetic problem examples and solutions.
Added new Reflexion Agent strategies for Math.

Improvements

Enhanced output generation to include external tool information, providing more detailed responses.

Refactor

Renamed internal attributes for consistency.
Updated type hints for better code clarity.

Tests

Adjusted tests to accommodate changes in method signatures and internal attributes.

/coderabbit pause

@coderabbit pause


Custom Invoice expiration (and displaing what is currnet)

I like to be able to specify expiration time of an invoice (sometimes I need week).
Displaying current expiration time will be nice for user to set expectations.
Thanks!

Related: Issue #235


[WIP] Add settings for split stopwatch

Attempting to add some options to the split stopwatch, although a bit stuck on the physical button at the moment.

Cool, let me know if you want a hand with the button stuff


Regression in bench_mouse_region_grid_scroll.html.drawFrameDuration.averagebench_mouse_region_grid_scroll.html.totalUiFrame.average

See https://flutter-flutter-perf.skia.org/e/?begin=1603169996&end=1603293374&keys=X5379bfde3fab4e31b2b265892433822d&num_commits=50&request_type=1&xbaroffset=22107.
Pretty clear signal at this engine roll. https://github.com/flutter/flutter/pull/68651
cc @yjbanov, too.

This started with https://github.com/flutter/engine/commit/0747f2f4b1167a6fdfca0d04a8e4f0b862e7f130
@ferhatb

Note: drawPath converting to svg with change in the roll. Since benchmark generates hundreds of paths (due to border), we need optimization to speed this particular code path. Moving to P2 after checking other benchmarks, localized regression. Will follow up with optimization PR to close.

I'm closing this since the PR has landed.

Graph back to normal: https://flutter-flutter-perf.skia.org/e/?begin=1602912587&end=1603669622&keys=X5379bfde3fab4e31b2b265892433822d&requestType=0&xbaroffset=22107


RANSAC aligner error

Basic information

My operating system and version: Windows 10
My MZmine version: 3.4.16

What happened

Please describe what happened and how it differs from what you expected to happen.

When I tried to test the RANSAC aligner I got the error message as shown in the screenshot. Mzmine then crashed. I have attached the screen shot of the parameters. Please note these are rough as the preview also did not seem to work...

Please include all parameter values for the MZmine modules you used.
Please upload screenshots of any errors and your log/mzmine.log file.
Please upload a standalone MZmine project file (or a batch + raw files) that demonstrates the problem you are reporting. You can use Google Drive, Dropbox, or a similar repository to upload the project.
Issues opened without an example project are unlikely to be processed

mzmine_0_0.log

Interestingly when I updated to 3.4.27 it seems to now be working...

And now it is back any ideas?

More information. It turns out that the feature list filter can not be used before the RANSAC aligner. Would be good to fix this?

Feature List rows filter or the feature filter?
Thanks for reporting the issue.

Feature list row filter. Specifically I was trying to filter only peaks in 10 or more samples.
From: Robin Schmid @.>
Reply to: mzmine/mzmine3 @.>
Date: Thursday 4. May 2023 at 17.42
To: mzmine/mzmine3 @.>
Cc: Alex Dickens @.>, Author @.***>
Subject: Re: [mzmine/mzmine3] RANSAC aligner error (Issue #1316)
Feature List rows filter or the feature filter?
Thanks for reporting the issue.
—
Reply to this email directly, view it on GitHubhttps://github.com/mzmine/mzmine3/issues/1316#issuecomment-1534907288, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ALLFFCED6QB5M3JO2ERL62DXEO56TANCNFSM6AAAAAAXGRIJ3A.
You are receiving this because you authored the thread.Message ID: @.***>

By the way with large datasets I am still getting memory errors. Any ideas why?
Sent from my Galaxy
-------- Original message --------
From: Robin Schmid @.>
Date: 04/05/2023 15:42 (GMT+00:00)
To: mzmine/mzmine3 @.>
Cc: Alex Dickens @.>, Author @.>
Subject: Re: [mzmine/mzmine3] RANSAC aligner error (Issue #1316)
Feature List rows filter or the feature filter?
Thanks for reporting the issue.
—
Reply to this email directly, view it on GitHubhttps://github.com/mzmine/mzmine3/issues/1316#issuecomment-1534907288, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ALLFFCED6QB5M3JO2ERL62DXEO56TANCNFSM6AAAAAAXGRIJ3A.
You are receiving this because you authored the thread.Message ID: @.***>

I would definitely try the Join aligner as it runs in parallel and is way faster and memory friendly.
Not sure why RANSAC fails here...
For large datasets its important to have enough RAM and fast local drive space for temp files.
In the end we still need to see that we have a reasonable number of features when starting to align. Let's say aligning thousands of samples with each 100k features will always be too much and maybe unreasonable.
Sometimes better to be stricter in the beginning and then use the multi-threaded gap filling to fill in gaps. So a feature needs to be detected in at least one sample.

Hi Robin
I upped the hard drive cache to 1.3 tb and have 256 Gb of RAM....
Join aligner okay but RANSAC was working better with QC hence why I wanted to use...
Was trying to reduce the features but the filter did not work hence the first comment. Related to this the filter plus join aligner also causes mzmine to crash...
Alex
Sent from my Galaxy
-------- Original message --------
From: Robin Schmid @.>
Date: 09/05/2023 15:59 (GMT+02:00)
To: mzmine/mzmine3 @.>
Cc: Alex Dickens @.>, Author @.>
Subject: Re: [mzmine/mzmine3] RANSAC aligner error (Issue #1316)
I would definitely try the Join aligner as it runs in parallel and is way faster and memory friendly.
Not sure why RANSAC fails here...
For large datasets its important to have enough RAM and fast local drive space for temp files.
In the end we still need to see that we have a reasonable number of features when starting to align. Let's say aligning thousands of samples with each 100k features will always be too much and maybe unreasonable.
Sometimes better to be stricter in the beginning and then use the multi-threaded gap filling to fill in gaps. So a feature needs to be detected in at least one sample.
—
Reply to this email directly, view it on GitHubhttps://github.com/mzmine/mzmine3/issues/1316#issuecomment-1540078595, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ALLFFCGXDNFC2BTX2MOGQJ3XFI5UBANCNFSM6AAAAAAXGRIJ3A.
You are receiving this because you authored the thread.Message ID: @.***>


Feature Request: Option to remove entire UI

Description of the new feature/enhancement
Add an option to fully hide the ui including the title bar and tab bars.
for peopel that know their keyboard shortcuts.
see screenshot

+1

This seems to me like it's /dupe #2238


TBOX-314 Add scheduled CI run

↪ Pull Request

This adds a scheduled weekly run of the Github CI actions (set to midnight Sunday currently).
✔ PR Todo

[X] Add documentation
[X] Add examples
[X] Ensure you are following the practices in the contributor guide and coding_standards

Use consistent and descriptive name conventions
Uses google-style docstrings
Uses versioned API/client methods only
Avoid global variables
Avoid giant try/catch
Don't use mutable default variables
Use a main() function in your scripts

[X] Added/updated testing for this change (ensure you are testing any changes/new code!)
[X] Update title to link to TBOX issue (i.e. start pull request title with TBOX-xx)
[ ] Approval from first code-reviewer
[ ] Approval from second code-reviewer (only required if a second reviewer has left comments)
[ ] Pass all checks

The changes themselves look good to me. But I'm asking more out of curiosity than anything else - do you know what will happen if the ci starts failing? As in, how we will be notified?

I believe only I will be notified by default (as the author of the commit containing the schedule). If someone else commits a change to the schedule, they would be notified.
I don't think there's any easy way to e.g. send notifications to all code owners when the CI fails. If that's wanted, we might be able to set up something like this, to send custom email notifications or Slack notifications:
https://stackoverflow.com/a/67265461/18111062

The changes themselves look good to me. But I'm asking more out of curiosity than anything else - do you know what will happen if the ci starts failing? As in, how we will be notified?

I believe only I will be notified by default (as the author of the commit containing the schedule). If someone else commits a change to the schedule, they would be notified. I don't think there's any easy way to e.g. send notifications to all code owners when the CI fails. If that's wanted, we might be able to set up something like this, to send custom email notifications or Slack notifications: https://stackoverflow.com/a/67265461/18111062

Could you look into that please? Given that we're trying to expand our CI, it would be a dicey situation if it was tied to individual people's accounts... Perhaps the best option would be to send notifications to either the slack channel (if that's an option) or to the codeowners identified here: https://github.com/Datatamer/tamr-toolbox/blob/develop/.github/CODEOWNERS

The changes themselves look good to me. But I'm asking more out of curiosity than anything else - do you know what will happen if the ci starts failing? As in, how we will be notified?

I believe only I will be notified by default (as the author of the commit containing the schedule). If someone else commits a change to the schedule, they would be notified. I don't think there's any easy way to e.g. send notifications to all code owners when the CI fails. If that's wanted, we might be able to set up something like this, to send custom email notifications or Slack notifications: https://stackoverflow.com/a/67265461/18111062

Could you look into that please? Given that we're trying to expand our CI, it would be a dicey situation if it was tied to individual people's accounts... Perhaps the best option would be to send notifications to either the slack channel (if that's an option) or to the codeowners identified here: https://github.com/Datatamer/tamr-toolbox/blob/develop/.github/CODEOWNERS

Makes sense. Could you give me admin rights to the repo, at least temporarily? I can't add secrets right now, which would be needed for any sort of notification.

I think you will have admin rights once I add you as a codeowner. I've put the PR up. Can merge once the tests run.

You are now a codeowner. Can you check if you have the privileges you need?

The change does not seem to have given me admin rights, unless it takes a while to propagate (no access to repo Settings yet):

I added a webhook in the tf here: https://github.com/Datatamer/tf-ops-github/pull/1008/files and added a notification job to the CI which should only run for the scheduled jobs.
I changed the schedule to Wednesday midnight for now. I think this will have to be merged to see whether it works since it won't trigger anything until the new job exists on the default branch. If it does not work as expected I will iterate with subsequent PRs.
Currently it will notify for success or for failure of the scheduled CI. That can be changed later if people want only failure notifications, but want to leave it for now so we can see if the notifications come through.


Add function to disable battery optimizations on Android

Needed for automatically controlling WireGuard (cf. https://github.com/tweaselORG/meta/issues/19).

One way to do that is using dumpsys deviceidle whitelist (via):

Disable background optimizations for an app (add it to the allowlist): adb shell dumpsys deviceidle whitelist "+<app ID>"
Enable background optimizations for an app (remove it from the allowlist): adb shell dumpsys deviceidle whitelist "-<app ID>"
Get status for an app (true means it is on the allowlist, i.e. battery optimizations are disabled; false means it is not on the allowlist, i.e. battery optimizations are enabled): adb shell dumpsys deviceidle whitelist "=<app ID>"

There are also the RUN_IN_BACKGROUND and RUN_ANY_IN_BACKGROUND permissions that can be set via appops (via).
The state of that can be read using adb shell cmd appops get <app ID> <permission ID>. And according to the source:

To simulate conditions where implicit broadcasts and background services are unavailable: adb shell cmd appops set <app ID> RUN_IN_BACKGROUND ignore
To re-enable implicit broadcasts and background services: adb shell cmd appops set <app ID> RUN_IN_BACKGROUND allow

I'm not quite sure what these do yet, and especially what the difference between RUN_IN_BACKGROUND and RUN_ANY_IN_BACKGROUND is.

Ah okay, "battery optimizations" is actually a tristate rather than a boolean.
On Android 9, this was split into two options. There was a "background restriction" option that could either be set to "restricted" or "app can use battery in background" (default), and a separate "background optimization" option that could be "not optimizing battery use" or "optimizing battery use" (default):

And if "background optimization" was set to "not optimizing battery use", the "background restriction" option was disabled.
On Android 13 (probably earlier than that, but that's what I tested with), these have been collapsed into a single "app battery usage" option that can be "unrestricted", "optimized", or "restricted":

So, let's see what these options correspond to.
On Android 13:

"Unrestricted":

dumpsys deviceidle whitelist: true
appops get RUN_IN_BACKGROUND: No operations. Default mode: allow
appops get RUN_ANY_IN_BACKGROUND: allow

"Optimized":

dumpsys deviceidle whitelist: false
appops get RUN_IN_BACKGROUND: No operations. Default mode: allow
appops get RUN_ANY_IN_BACKGROUND: allow

"Restricted":

dumpsys deviceidle whitelist: false
appops get RUN_IN_BACKGROUND: No operations. Default mode: allow
appops get RUN_ANY_IN_BACKGROUND: ignore

On Android 9:

"Unrestricted":

dumpsys deviceidle whitelist: true
appops get RUN_IN_BACKGROUND: No operations. Default mode: allow
appops get RUN_ANY_IN_BACKGROUND: allow

"Optimized":

dumpsys deviceidle whitelist: false
appops get RUN_IN_BACKGROUND: No operations. Default mode: allow
appops get RUN_ANY_IN_BACKGROUND: No operations. Default mode: allow

"Restricted":

dumpsys deviceidle whitelist: false
appops get RUN_IN_BACKGROUND: No operations. Default mode: allow
appops get RUN_ANY_IN_BACKGROUND: ignore

Where does that leave us? Luckily, despite the UI changes, it seems like the underlying mechanism hasn't changed and we won't need to do things differently for different Android versions.
RUN_IN_BACKGROUND doesn't seem to be used (anymore?). According to https://appops.rikka.app/guide/technical/run_in_background/, RUN_IN_BACKGROUND was introduced in Android 7, and RUN_ANY_IN_BACKGROUND was introduced in Android 9 (presumably replacing the former?).

https://github.com/tweaselORG/appstraction/issues/34#issuecomment-1455938039
Won't work with MIUI/hyperOS


Add podspec & x&y Axis border color options

I've added a simple podspec.

I had the problem that the axis borders use a Divider. This color could not be changed.
I added an option for y&x axis to handle that. I made it optional on purpose to minimize the risk of regressions.
Before:

After:

Hello, thanks for this.
In AxisBorders.swift, the yAxisBorderColour is assigned to X axis border when it is set to its top position. Further down in the same file is YAxisBorder doesn't have the colour option attached.
Thanks,
Will

I can add a commit to the branch if that's easier.

@willdale sorry for this!
Corrected in on the branch.

Thank you.


Newb question on docker state (im)permanence

Dear friends just a docker/fuseki newbie question.
I have this docker working very well with two bind mounts to host directory for the databases and configuration.
Yesterday via the Fuseki web interface I had deleted two datasets, the default DS and a MEMATEST and kept only one single MEMA dataset for my application. All good.
Today I needed to stop the docker and restart it and much to my surprise the two datasets I had deleted are back in the interface.
Can you please help me understand why is this happening?
Just to be sure if I add data from TTLs via the s-post program, and then need to stop and restart, will I lose data?
Thanks for clearing up my confusion.

The default dataset "ds" configured in the assembler.ttl file cannot really be deleted via the Fuseki web interface. You can technically do that, but after docker container restart the "ds" dataset appears once again in the interface. Thus, I think you cannot delete any dataset that is configured in the assembler.ttl via the interface – you need to edit assembler.ttl for that (and delete database/index files manually on the filesystem).
Regarding the other dataset "MEMATEST" – how was this created? If via the Fuseki web interface, it should stay deleted once it has been deleted via the interface.

Just to be sure if I add data from TTLs via the s-post program, and then need to stop and restart, will I lose data?

If the data is persisted on the host file system – as it should be as you are using a bind mount for the databases – you shouldn't lose data if you stop/restart the docker container (you can even do docker rm and create a new container to access the data loaded with the previous container).

Thank you very much. I appreciate your help!


chore(docs): general docs and types cleanup

This PR aims to:

Create consistency with typings
Add documentation to missing properties/methods
Exclude private methods that can't be actually private from docs
Fix bad descriptions on methods

Given the feedback, I'm going to close this and only go back and type things that will show up in the docs.


VS 2022 Community does not have Blazor Web App has an option to use for a new project

URL
https://dotnet.microsoft.com/en-us/learn/aspnet/blazor-tutorial/install
Operating system
windows
More information about your system
No response
Description
I have installed everyting in the workflow "ASP.Net development and for Web"
dotnet --info
No response

There was a problem with C++ runtime and an error appeared during install.
I have uninstalled what I had previsouly, installed manually both x86 and x64 runtimes and ran the VS Community setup again and it's ok now.


Storing null characters

The sqlite back-end at least does not support storing a string that contains a null character. To allow that we would have to test for such characters and then store the value as a blob instead of as text, I believe.
I found out the hard way, implementing a new sqlite back-end (more on that later) that does not error when a parameter contains a null character - only to learn that this results in the text after the null character to be lost.
For the time being I just strip the null character from user values and that's good enough for me, but I am reporting this because its worth knowing that due to this issue Emacsql does not actually support all readable values.

Yup, you're right. It looks like the NUL character is not supported in
SQLite strings at all. They're only supported in blobs. The SQLite docs
say this:

The result of expressions involving strings with embedded NULs is
undefined.

Fortunately this doesn't matter to EmacSQL. It's just a matter of
escaping the NUL character and letting the lisp reader deal with it.
Fixed in 3b70e8f.


Option to trigger pod update instead of pod install?

In React Native 0.61, we're seeing issues with running pod install vs pod update, but the step doesn't appear to have a flag to switch between the two. We're going to move towards the more generic script step in the meantime, but it would be great if we could toggle between the two.
The distinction is noted here https://guides.cocoapods.org/using/pod-install-vs-update.html.

Thank, @rickmanelius!
Your request has been passed to the Tooling Team who will take a look at it! :)

Excellent! We had this come up again this morning, so it would be useful.

Any updates on this?

Hi @rickmanelius and @gabrieldonadel ,
sorry for my late response!
We released a new version (2.2.0) that addresses this issue, via the new CocoaPods command, see the release note and the related PR for more info.


Clarify and extend behavior around names in the FontMetadata object

I noticed a few shortcomings here; they can all be addressed by applications by parsing the SFNT directly, but it'd certainly be helpful to have some improvements made:

What happens if a font has no name of a given type in the current language? Do you get en? What happens in cases involving multi-label IETF language tags?
As mentioned in the "Issue 9" mentioned in the spec draft, it may be useful to retrieve a specific language; however, it may also be useful to retrieve a full list of names of a given type for the font, particularly for matching purposes.
What happens if a font has multiple names with the same type and language, but different vendors? This is remarkably common, the names can differ, and some applications may need the names from a specific vendor. This should be clarified for both query({select}) and the metadata objects (even if it just ends up being implementation-defined).

I don't think all of these are enhancement requests. E.g., the first and last bullet point need to be defined, no?

Yeah, there's a reasonable argument to be made that those are spec defects that should be corrected.

Updated the label, and suggestions for all of these concerns would be welcome.

For the first bullet, the text was updated to read "...if multiple localizations are available, the user language version must be used if provided, or the first localization otherwise"
For the last bullet, it sounds like you know more about fonts in the wild than I do. Can you lend your expertise here, in terms of what would be most practical for implementers given how OSes expose fonts, and for developers consuming the data?

For the last bullet, platform behavior seems to vary a lot. On Windows, the PostScript name isn't even always used for matching (it seems to depend on the font type; if the font isn't either Type 1, Type 42, CID Type 1, or CFF, it instead matches based on the full name). FreeType prefers Windows-formatted PostScript names over Mac-formatted ones; macOS supports both but appears to ignore a Windows name if a corresponding Mac name is available. I think Windows only supports Windows names but I'm not 100% certain.
As a developer, the best thing the API could do for me would be to let me query fonts by passing a font-request object (name + possibly weight/slant + possibly string being rendered) to the OS that is searched for via whatever fast mechanism the system provides. Currently you mention linear searches, but OSs generally provide a faster lookup mechanism that doesn't require retrieving and iterating the full list (e.g. WinGDI uses a hash-table lookup). Note that on some platforms, the relevant API only returns a single font rather than a list (Android, WinGDI), thus the potential need to specify a weight/slant. Specifying a sample string being rendered can be critical if I'm performing fallback due to a missing glyph; the OS generally knows a suitable fallback font for every supported Unicode character range, and usually doesn't expose that mapping directly. If I want to do a slow-but-consistent linear search, I can implement that myself.


NodeNotFound - Inconsistent Behavior

Description
Observed Behavior:
I am attempting to test out how we can update our NodePool instance types. I did a direct update to the instance type in the node pool, to observe how our existing pods would behave.
But there is some very inconsistent behavior with how NodeClaims are able to register nodes into the cluster.
I currently have 5 nodeclaims. 4 where able to correctly identify the instance to register, but there's 1 producing the NodeNotFound error. All are from the same NodePool.
I have verified the instance is in AWS, however even with debug logging enabled, karpenter produces very little logs and none seem to provide any detail on why a random NodeClaim within the same NodePool can't register its instance.
There are no limits being set on the NodePool.
I've also noticed if I delete the NodeClaim that's stuck with NodeNotFound and I simply delete it, the newly created NodeClaim will suddenly be able to detect the node. However this isn't always the case.
Expected Behavior:
I expect all nodes within a single NodePool to be able to be properly registered.
Reproduction Steps (Please include YAML):
NodePool:
apiVersion: karpenter.sh/v1beta1
kind: NodePool
metadata:
  annotations:
  name: m6a-xlarge-private
spec:
  disruption:
    consolidateAfter: 60s
    consolidationPolicy: WhenEmpty
    expireAfter: Never
  template:
    spec:
      nodeClassRef:
        apiVersion: karpenter.k8s.aws/v1beta1
        kind: EC2NodeClass
        name: default-v1-24-private
      requirements:
        - key: node.kubernetes.io/instance-type
          operator: In
          values:
            - m6a.2xlarge
        - key: karpenter.k8s.aws/instance-family
          operator: In
          values:
            - m6a
        - key: karpenter.k8s.aws/instance-size
          operator: In
          values:
            - 2xlarge
        - key: karpenter.k8s.aws/instance-cpu
          operator: In
          values:
            - '8'
        - key: karpenter.k8s.aws/instance-memory
          operator: In
          values:
            - '32768'
        - key: topology.kubernetes.io/zone
          operator: In
          values:
            - us-east-2a
            - us-east-2b
            - us-east-2c
        - key: kubernetes.io/arch
          operator: In
          values:
            - amd64
            - arm74
        - key: kubernetes.io/os
          operator: In
          values:
            - linux
        - key: karpenter.sh/capacity-type
          operator: In
          values:
            - on-demand
  weight: 10

NodeClass:
apiVersion: karpenter.k8s.aws/v1beta1
kind: EC2NodeClass
metadata:
  name: default-v1-24-private
spec:
  amiFamily: AL2
  amiSelectorTerms:
    - name: amazon-eks-node-1.24-v20230825
      owner: amazon
  blockDeviceMappings:
    - deviceName: /dev/xvda
      ebs:
        encrypted: true
        volumeSize: 20Gi
        volumeType: gp3
  detailedMonitoring: true
  metadataOptions:
    httpEndpoint: enabled
    httpProtocolIPv6: disabled
    httpPutResponseHopLimit: 2
    httpTokens: required
  role: KarpenterNodeRole
  securityGroupSelectorTerms:
    - tags:
        karpenter.sh/discovery: xyz
    - id: xyz
  subnetSelectorTerms:
    - tags:
        karpenter.sh/discovery: xyz
    - tags:
         xyz: xyz
  tags:
    Name: karpenter-default-v1-24-private
    cluster: xyz
status:
  amis:
    - id: ami-0cbe90a726405b3f8
      name: xyz
      requirements:
        - key: kubernetes.io/arch
          operator: In
          values:
            - amd64
  instanceProfile: xyz
  securityGroups:
    - id: xyz
      name: xyz
  subnets:
    - id: xyz
      zone: us-east-2a
    - id: xyz
      zone: us-east-2c
    - id:xyz
      zone: us-east-2b

Versions:

Chart Version: v0.32.0
Kubernetes Version (kubectl version): 1.24

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

Thanks @ellistarn for the quick response!
This AMI is the default eks 1.24 AMI. I haven't gone into the node level to troubleshoot, however I updated Karpenter to 0.32.1 and it seems to have completely fixed the issue hah.
NodeClaims are able to quickly register nodes into the cluster without having to delete the stuck NodeClaim.

Will close the issue as updating to 0.32.1 seems to have solved the issue, although still not sure what the root case was.


Interim for merge

Merging in Elenya's work that added degradation modeling to the electrolyzer and creating an option to perform a parametric sweep on solar and battery sizes.
Jared - can you make sure that the changes to hopp_tools_steel.grid are ok?
Sanjana - can you make sure that none of the changes will break your optimization routine?

We would ideally have some tests in place for the system to make sure the two system codes provide the same results. Have you checked that you get the same outputs for the same outputs across both branches?


Hide participants for rooms from people who aren't in the underlying policy

Fixed Issues

$ https://github.com/Expensify/Expensify/issues/272651
Tests/QA
Need https://github.com/Expensify/Auth/pull/7690 to test
Need two users, userA and userB

Create a workspace with userA.
Create a policy room with "public" visibility on the workspace Save the URL to this report.
Send the URL to userB.
Sign into the account of a userB.
Navigate to your chat with userA and open the report URL that was sent.
Click/tap on the report header to open the report details page. Verify that the "Members" option does not show up.

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.ook stories, I tested and verified all stories for that component are still working as expected.

Screenshots/Videos

Web

Mobile Web - Chrome

Mobile Web - Safari

Desktop

iOS

Android

@rushatgabhane @arosiclair One of you needs to copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button]

Reviewer Checklist

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

Mobile Web - Chrome

Mobile Web - Safari

Desktop

iOS

Android

🎯 @rushatgabhane, thanks for reviewing and testing this PR! 🎉
An E/App issue has been created to issue payment here: https://github.com/Expensify/App/issues/17064.

LGTM!

Expensify/Auth/pull/7690 was just merged, once it's deployed we can merge this one

There should be an Auth deploy today, then we can get this merged!

🚀 Deployed to staging by https://github.com/jasperhuangg in version: 1.2.98-2 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/francoisl in version: 1.2.98-2 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


new asset system crashes bundle command on Windows

when using the new asset system style for images on Windows, e.g.
<Image source={require('./my-icon.png')} />

creating the bundle crashes :
gradlew assemble
uncaught error Error: spawn mkdir ENOENT
at exports._errnoException (util.js:874:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)
at onErrorNT (internal/child_process.js:344:16)
at doNTCallback2 (node.js:441:9)
at process._tickCallback (node.js:355:17)
this is caused by following code in saveBundleAndMap.js:
function copy(src, dest, callback) {
  const destDir = path.dirname(dest);
  execFile('mkdir', ['-p', destDir], err => {
    if (err) {
      return callback(err);
    }
    fs.createReadStream(src)
      .pipe(fs.createWriteStream(dest))
      .on('finish', callback);
  });
}

this calls mkdir on OS level, but mkdir behaves different in Windows.
this can be fixed using https://www.npmjs.com/package/mkdirp
const mkdirp = require('mkdirp')

function copy(src, dest, callback) {
  const destDir = path.dirname(dest);

  mkdirp(destDir, err => {
    if (err) {
      return callback(err);
    }
    fs.createReadStream(src)
      .pipe(fs.createWriteStream(dest))
      .on('finish', callback);
  });
}

@facebook-github-bot bugfix

@facebook-github-bot bugfix

@facebook-github-bot bugfix

Hi there! This issue is being closed because it has been inactive for a while.
But don't worry, it will live on with ProductPains! Check out its new home: https://productpains.com/post/react-native/new-asset-system-crashes-bundle-command-on-windows
ProductPains helps the community prioritize the most important issues thanks to its voting feature.
It is easy to use - just login with GitHub. GitHub issues have voting too, nevertheless
Product Pains has been very useful in highlighting the top bugs and feature requests:
https://productpains.com/product/react-native?tab=top
Also, if this issue is a bug, please consider sending a pull request with a fix.
We're a small team and rely on the community for bug fixes of issues that don't affect fb apps.


Proposal: Simplify parameter handling for transform operations :  use rest parameters

The polymorphism of some our functions leads to useless complexity, and too many ways to do the same thing:
for example translate() can currently be done: in all these ways
1- translate([10, 2, 0], shape)
2- translate([10, 2, 0], shapeA, shapeB)
3- translate([10, 2, 0], [shapeA, shapeB])

Which  additional checks internally to determine what shapes are passed in
I propose the following:

drop support for array support in that shape BUT
support it via rest parameters
This means the useage with arrays  (from example above) becomes :

translate([10, 2, 0], ...[shapeA, shapeB])

This means:

simplified parameter handling internally , since rest parameters means we always get an array, which means potential speedups (less additional checks)
no more need to access the 'arguments' object which is discouraged
a more coherent API: rest parameters just 'unpacks' the array to be the same as (2)
rest parameters are widely supported

@kaosat-dev the proposal is good because the API aligns with web standards as well as interoperability standards. I favor anything that moves that way.
However, I once again make a case that this is the "SCAD" compatibility API library. The proposal is will not maintain this compatibility layer.
I'm wondering if another API layer should be created which combines all the functionality found in CSG API and SCAD API. The CSG API needs to be broken away from the CORE library, and the SCAD API contains some non-SCAD functionality already.

@z3dev I agree mostly :)

I still believe that we should only have ONE API ,l also agreed on the CSG changes (still ongoing)
this proposal is just one of the many things I noticed while cleaning up the code (needed before the overall reorganization of CSG into core & API since API would be a mix between the CSG API and this one )
there never was a 'compatibility layer' to Openscad, just an API trying to mimick it : and to be honest I think It is time for us to 'grow up' and not just copy it blindly, we can have a functional API that is familiar to but not 100% like Openscad
this specific proposal im not 100% sure of, but it is one of the many ways to have a more thought out API that is specific to our language (js ;)

V2 modeling uses rest parameters, followed by a function call to flatten arrays. So, this functionality has been implemented.
of course, this will not be implemented in the SCAD compatibility layer.


Add RStudio daily build cask

The RStudio daily build is the fresher, more dangerous version of rstudio-preview

@fanquake cask request applies to issues only. To requests, not actual contributions. This is a cask enhancement.

I removed the comment per request.

Thank you. Could you please squash your commits?

Done!

Thank you for the contribution.


Recommendations on storing large payloads

We are building an orchestration where the client will create/update multiple linked documents. The payload will consist of document metadata and the content as well. Safe to assume the total size to go upto 100mb.
So my question is: what problems can we expect if we are storing this payload in azure sql? Is it a good idea? Or would it be better to store them in storage with references in sql?
One problem, I'm concerned of is the network traffic of reading that large a payload everytime the orchestration resumes.

If the payload will make its way into the orchestration history, then the biggest problem you'll run into is memory usage because each orchestration will need to pull that document into its memory (perhaps multiple times), which often takes up more memory than the actual size of the document content on disk. Database disk and network I/O will also be issues for the reasons you mentioned. If you decide to go this route, you'll want to be sure to carefully throttle your concurrency to avoid problems with resource exhaustion.
All that said, its best practice is to pass around references to data in your orchestration and have activities use those references to access the data directly from external storage.

Thanks @cgillum . We are going ahead with storing payload in storage and passing reference. Also when and why would a payload get into the orchestration history?

Payloads get stored in history when they are used as activity inputs or outputs, or as external event payloads. This is so that the values can be replayed to reconstruct the previous state of an orchestration.

Thanks, closing this now.