Path order specified in Groovy

WIP for issue #91

Issue Link: Sorting path configurations on the basis of path depth.

[x] Sort pathConfigurations by path depth

@sagarsane @jbornemann @jdigger @viveksachdeva
Please have a look at this one.

Hello @jbornemann
I've made some changes in sortPathConfigs method as you suggested with some minor modifications, and in the added Specs as well.
Please have a look at it.

@Shashi-Bhushan @jbornemann although the changes made here I don't think will break anything ... I don't think these will actually solve the issue.
Although we are sorting the pathConfigurations based on the path depth ... Since Grabbit content sync utilizes concurrent processing (currently 10 paths are kicked off in independent threads), even if we start the Jobs for the paths in the sorted order, how the threads are handled by JVM is ofcourse non-deterministic ... so there could still be cases where path /a/b/c/d is processed before /a/b ...
It might be worth looking at the DefaultClientService.initiateGrab() method ...

@sagarsane I think you are right. I'm sorry @Shashi-Bhushan for not recognizing this sooner. This is not going to be the full picture.
I've thought about this a bit, and I think I have a way we could solve this; However, I haven't entirely convinced myself that we should solve this problem based on how complex it may be. In case we don't solve this problem, I will also put my thoughts within the ticket for another time.
Here is how I think we can solve this problem:
1.) We need to create a ranking for paths. Here are some example paths for demonstration:
/foo                        - 1
/foo/bar                 - 2
/foo/bar/zoo          - 3
/foo/car/do            - 1
Start each path out with a ranking of 1, then for each path in sorted order based on path depth, increment the path's ranking by it's parent's ranking if it is found within the visited set; otherwise keep a ranking of 1.
This makes sure paths that can be processed independently are within the same rank group.
After that, we need to make sure Spring Batch will feed the jobs from our job queue, into the thread pool in order, based on ranking. To do this, we would need a Spring ThreadPoolTaskExecutor instance with a ThreadPoolExecutor that is built with a BlockingPriorityQueue implemented with a Comparator that compares our jobs based on path ranking. Long winded, I know..
Still even then, this would only make sure that jobs are feed into the pool in priority order, but it wouldn't prevent certain sized thread pools from picking up and starting work on higher ranked jobs before lower ranked jobs complete. To solve this, we would probably need some sort of system within our validator task that pools the job queue to see if lower ranked jobs are still in flight, and if so, put the thread to sleep for some period.
All this to say, I think getting to a smart system for handling path dependencies would require some work. The complexity required to do so, may or may not be worth the value added.

Closing the PR, as the proposed solution is complex to implement when compared to the output result. had a discussion with @jbornemann regarding this, quoting him

Any solution will be too complicated compared to the value it would give us. At the very minimum, what we have now (checking to see if path already has an existing parent before running the path's job - and raising a configuration error) I think is acceptable


Fix missing keychain params passed to installed?

Checklist

[x] I've run bundle exec rspec from the root directory to see all new and existing tests pass
[x] I've followed the fastlane code style and run bundle exec rubocop -a to ensure the code style is valid
[x] I've read the Contribution Guidelines
[x] I've updated the documentation if necessary.

Motivation and Context
#10321 added an regression on match as it was not passing the params for the keychain.
Description
The installed? method was updated and we need to parse the params as shown in PR #10321

Would like to create a follow PR with unit tests, but we need a hotfix 👍

Actually, I'm gonna go with a rollback due to https://github.com/fastlane/fastlane/issues/10358 instead, and let's have a separate PR to add this feature again. Sorry about that.


tab-title

Windows Terminal version
1.14.1451.0
Windows build number
10.0.19044.0
Other Software
No response
Steps to reproduce

When enabled, any command executed with PowerShell will replace the tab-title
Expected Behavior
No response
Actual Behavior
Only want PowerShell to use the Modify tab-title command to make changes

Sorry for the delay, we've got quite the backlog to get through.
I just tested this locally and I can't repro this.
Did you make sure to save the settings, and open a new PowerShell tab after changing that setting/? I'm not sure if that setting will hot-reload...


Invalid left-hand side expression in prefix operation

Getting an error attempting to load:

Invalid left-hand side expression in prefix operation

Repro
https://codesandbox.io/s/h3-js-error-3murp
import React from 'react';
import ReactDOM from 'react-dom';
import h3 from "h3-js";

function App() {
  return
Hello world

}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

Can you repro this outside of CodeSandbox? It's not an issue I've seen elsewhere, and I suspect it's a build issue in CodeSandbox rather than something specific to h3-js.

Appears to be a CodeSandbox issue. I can't repro locally after downloading the CodeSandbox and running locally.
Created upstream issue: https://github.com/codesandbox/codesandbox-client/issues/4476

I think this likely specific to CodeSandbox, closing unless there's a repro I can address.


can't get access to length of k,v and q?

I want to directly modify the dot_product_attention, and multihead_attention function but not to use those module to make a bigger module.
However, due to the input structure with quite complicated batch-making procedure, I can't figure out how to get the shape of those k,v and q
There are two problems that i am dealing with:

q.get_shape() or q.get_shape().as_list() or q.shape  yields [None, 8, None, 64] which corresponds to [batch_size, heads, length, depth], that I can't use the length=None to reshape q
tf.shape(q) yields a tensor indicating a shape of q which i can use to reshape q, however, i can't tf.unstack reshaped_q

From tensorboard I find out that i can get the length of q,k and v (length matched to each bucketed batch), but I don't know how.

You can do s = tf.shape(q) and then batch_size, head, length, depth =  s[0], s[1], s[2], s[3]. Later, in rehape, just use these tensors-scalars, reshape works with tensors.
Does that solve your problem? I'll close for now, but please reopen if you still have the problem!

@lukaszkaiser
I mentioned the issue with related to tf.shape and tensor.get_shape() above.

if i use q.get_shape() , it returns [None, 8, None, 64], the length of which is None(may because of bucketing function) so that i can't reshape with these values
e.g.

q_shape = q.get_shape()
# [batch * heads, length, depth]
reshaped_q = tf.reshape(q_set, [-1, q_shape[2], q_shape[3]) # here is the error

# length_q list of tensors with shape [batch*heads, depth_q]
 q_list = tf.unstack(reshaped_q, axis = 1) # here is the error

I can reshape q with tf.shape(q). however, I can't unstack the reshaped tensor.
e.g.

q_shape = tf.shape(q)
# [batch * heads, length, depth]
reshaped_q = tf.reshape(q_set, [-1, q_shape[2], q_shape[3])

# length_q list of tensors with shape [batch*heads, depth_q]
 q_list = tf.unstack(reshaped_q, axis = 1) # here is the error

and I think these two problem make users can not implement their own components which is not modulating high-level module which tensor2tensor provides but low-level combination of those value like k,q and v.

As for (1), it returns the static shape (known before the graph runs). Since length isn't static, it cannot know it, it's just None and you cannot use it to reshape, that's expected (still, you should use q.get_shape().as_list() if you want to access elements).
The same applied to your problem in (2). You can only unstack if you statically know that dimension. But the length changes from batch to batch, it's by design. So you cannot statically unstack it, that's simply impossible. You could try to do it in some ways like in pytorch, but then the whole computation would be so slow that it would be basically useless. So indeed: there are problems with handling variable-shape tensors, but doing this is a key point that adds speed to our models!

I fully understand that those kind of variable length bucketing is a core mechanism for efficient computation. Then What I want to ask is: Is there any method that I can use to get exact size of those lengths and make new operation with those values. As I think, The transformer code now cannon't be extended to further modification of 'attention' , I mean the code is only for dot-product attention and it has so many restriction that it can't be modified to other new attention mechanism.

We have multiple versions of attention already and the code can be easily modified to add new ones. You just have to learn to operate with variable-sized tensors in TensorFlow. You get the exact length by calling tf.shape(q)[2] and you can use it in many ops - just not in tf.unstack. To learn about general variable-size operations in TensorFlow take a look at the functional ops: https://www.tensorflow.org/api_guides/python/functional_ops

I may try to use other functions to substitute my original implementation. Thanks for suggestion.

Then can you give me a suggestion if I want to implement bahdanau attention instead of dot-product attention? @lukaszkaiser


Font Re-Sizing issue

After the update my font size isn't being re-sized to the smaller option with the check box selected in the Runelite Settings menu.
Cheers

Duplicate of #1716


Can't launch multiple instances of week planner

Describe the bug
Launching week planner in a second tab or a separate window when one instance is already active causes the first instance to close.
To Reproduce
Steps to reproduce the behavior:

Open a new tab
Open week planner (either via command palette or the button on top of the timeline side bar view)
Open another tab
Launch week planner on this tab (either via command palette or the button on top of the timeline side bar view)

Expected behavior
A second instance of Week Planner should launch, and they should (relatively) quickly reflect changes made between these instances
Actual behavior
First instance of week planner closes
Additional context
It's useful to compare schedules between weeks, and the week planner is a highly useful view. I'm not sure if this is a bug or intentional or if Obsidian's framework doesn't fundamentally allow such a change, but if it's possible then having a toggle to enable it at the very least would be very appreciated

This is now available.


FFM-7755: reorders sections of tutorial

Requested by Bhargav

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

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


Shortcut to wt

I used to be able to make shortcuts to open wt.
This was useful as you could give these shortcuts arguments (like launching a certain profile, wt -p ..), and put them wherever, like in the Startup directory of Windows. One use case: open a wt instance running a Jupyter Notebook server on boot.
Now all I can do is open this generic looking 'App' without icon, and I cannot make shortcuts to it:

wt version 1.12.10982.0, win build 10.0.19043.0

There doesn't seem to be an option to create a shortcut (eg desktop shortcut):

("Share" is just for copying a link to wt in Microsoft Store).
this "Packaged application" thing is a regrettable move away from file-based computing and end-user customizability

Editorialization aside, you can always just make a plain old shortcut to wt.exe manually:

That's a shortcut on my desktop that runs wt with a whole pile of subcommands to open a bunch of profiles. And sure enough, PT Run can find it:

awesome, thanks for the prompt replies and solution!

And yeah my apologies, I'll try to stick to facts and no opinions :p

Trying to find wt.exe, found something interesting:

The background explorer window is the actual location and version of wt (what I find if I search Start for wt.exe).
The foreground explorer window is what I get if I click "open containing folder" on Windows Terminal in PowerTools Run.

..but interestingly, just clicking that entry in PT Run does open the correct/newest version (1.12).
So yeah might indeed be a PT Run issue.
Also possibly related to https://github.com/microsoft/terminal/issues/12344#issuecomment-1029293183 indeed.

Unfortunately manually creating a shortcut also leads to a bug, when you pin the shortcut to taskbar, and open it, for some reason Windows associates it as a separate entry on the taskbar
(Left is the created shortcut to wt.exe, Right is what opens when you click it)

I would really like to be able to create shortcuts with custom starting directories, in order to fix this: https://github.com/microsoft/terminal/issues/13195


Event handling support

PR #38 does the event handling properly (on dispatching) + removes the need for specifying the repository name (get's it from the container where the repository is located in). Please consider merging it

closed by #38. Thanks @deviouspk


xds testing: set fault injection env var, so the test can be turned on

This reverts #25676
Note that this doesn't turn on the tests. The tests needs to be turned on in the kokoro shell scripts.

cc @donnadionne


profile ECS system updates and optimize game systems

The systems were reworked to be less active; they are now also conditional, so we only run calculations for entities that need them.


feat & test: support rich text

Last PR

support rich text string
add rich text test case
add saxTrim option for keep blank in string or not

Added

I fixed https://github.com/DaSpawn/xlsx-stream-reader/pull/28
I moved the code finding '<si>'

var isSharedStringItem = !!nodeData.find((n) => n && n.name === 'si') // <si> tag

I think it works well.

@DaSpawn I had forgotten about this issue. I fixed the test case conflict.
Can you check this again and merge if it is OK?

please let me know if need to update npm/version for this

If you update npm version, it will be very helpful for me. Thanks!

updated earlier today


⚠ Bofrost.at has degraded performance

In 7a2c7af, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1988 ms

Resolved: Bofrost.at performance has improved in 3b0be88 after 36 minutes.


Add support for environment variable values

I reference environment variables as parameter values

As a user, I can reference environment variables to set a parameter value in .bicepparam file.
// propsed syntax
param stringParam = readEnvironmentVariable('string_param')
//Covert to match param type
param boolParam = bool(readEnvironmentVariable('bool_param'))
// Nullable string return to differentiate between empty string value and no variable found.
// Set default value
param intparam = readEnvironmentVariable('int_param')!= null ? readEnvironmentVariable('int_param') :2
// reading senstive values - params need to have the @secure() decorator in .bicep file
param sensitiveParam = readEnvironmentVariable('admin_password')

I had few questions on this.

Trying to differentiate in my mind between build and deploy time processing of these functions/values.

I assume deploy time for it to be secure?

Is it supported as default value in .bicep file, then also in .biceparam?

Will it have similar capability on Module input e.g. below similar to getSecret?

module Demo 'demo. Bicep' = {
  name: 'dpDemo'
  params: {
    vmAdminPassword: readEnvironmentVariable('admin_password')
    sshPublic: KV.getSecret('sshPublic')
  }
}]

Will it be supported with json params format?

Is it deploy time processing and the value is not compiled into the json file only the function?

something similar to reference

"vmAdminPassword": {
  "reference": {
    "keyVault": {
      "id": "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('HubRGName')), 'Microsoft.KeyVault/vaults', variables('HubKVName'))]"
    },
    "secretName": "localadmin"
  }
},

With the azure developer CLI, we allow users to put env var references in main.parameters.json like this:
https://github.com/Azure/azure-dev/blob/3b28fc8f84717d732f646a3e3b9521204f122112/templates/todo/projects/nodejs-mongo/.repo/bicep/infra/main.parameters.json#L6
azd reads the file and expands the env vars in memory.  We'll want to make sure that we can support the same with .bicepparam

@jongio - does the described functionality above allow you to remove the logic in azd for detecting env variables? I would think this functionality replaces what you had custom built.

Some questions:

Could you confirm that this functionality will only be available in the .bicepparam files?
What will the user experience be if readEnvironmentVariable('MY_PARAM') is called and MY_PARAM hasn't been set? Will this be an error or return null? Env vars can be quite tricky to debug if they've not been wired up correctly in a CI system, so it's worth being clear on how this'll work.
Will env vars be marked as "secret", or is there a way to specifically read in secret env vars?
It's going to be fairly common that the env vars won't be set in the editor (VScode), but will be set at build time. How do we account for this experience?

Hi @anthony-c-martin,

This functionality will only be available in the .bicepparam files.
readEnvironmentVariable('MY_PARAM') will return null if the environment variable not found.
The param will be marked using the @secure decorator in the main.bicep file and that will ensure that param value not getting exposed in the deployment details. The users can choose to encrypt the string value before it is stored as environment variable but readEnvironmentVariable helper will not do any decryption logic. It is up the user how to process the value in Bicep param. We can also offer documentation guidance/best practices as well.
Depends on how users are building/deploying the bicep code. If they are using the bicep cli, they will need to set the values of the environment variables in the terminal. If they are using the VS code extension cmds, they can set the environment variables using the settings.json.

@jongio with this proposal, Bicep will be able to read the environment variable directly in the .bicepparam files. there will be no need to have a custom logic to use environment variables in .bicepparam files. But this feature will not be supported in the json files. if you choose to continue using json files for parameters in the azd bicep templates, you will need to keep your custom logic for the environment variables reading.

Will resulting json files be infact called myparams.params.json or will  you go with myparams.bicepparams.json if they are built at all? Or is expectation this will only be of use in a deployment action

I would guess the best practice will be to let us transpile in memory to reduce the risk of secret exposure? I imagine we could emit a warning if any env variables will be emitted that are being used for a @secure() decorator.

@jongio - does the described functionality above allow you to remove the logic in azd for detecting env variables? I would think this functionality replaces what you had custom built.

Will need to keep for .json files, but can skip for bicepparam files

Hi @HadwaAbdelhalem, I suggest that we simplify readEnvironmentVariable('string_param') to getEnv('VARIABLE_NAME')

// propsed syntax
param stringParam = readEnvironmentVariable('string_param')

There have been requests for allowing dynamic values, used for the path in loadtextcontent() and loadjsoncontent(), maybe `loadyamlcontent()? This is not supported within templates/Modules.
I was wondering if it might be possible to allow these capabilities, in a similar way that loadEnvVar() will work?
By having the ability to load the json objects in the param file with a new capability, does it help to solve the feature request above?
I load a set of 3 json files, that I merge into a single global object that I pass around on every deployment. I currently do this in powershell, then pass it in via dynamic parameters at deployment time on new-azresourcegroupdeployment. I would prefer to move this capability to this Bicep Native Method. Also at this time dynamic (deploy time) params are not supported with Bicepparam, perhaps, with this solution, I may not need them anymore?
If I have 5 resource groups, then I have 5 parameter files. If they are the same application, they all share the same global json, because it's environmental data that I don't want to duplicate in each template, however it's required in each deployment.
If I have a different application, with it's own 5 parameter files, it uses it's own set of global data (different files).
I am looking to solve the problem of how to link this data to each deployment. It seems like this could be imported/linked in a similar way to Env vars?

Update on my comment above.
I just saw that loadX() is already in scope 🟩🥳

https://github.com/Azure/bicep/issues/7301

Load Functions
- I can use the three load functions loadFileAsBase64(), loadTextContent(), and loadJsonContent() to bring in values from other files
- I can get the same dot operator completion experience as in Bicep files

Looks like that is not live yet, however that is great news, I missed this previously
Now I am just wondering if it does make sense to use a similar name:

loadEnvironmentVar('prefix')
loadEnvVar('prefix')

to align with others

loadJsonContent('global.json')
loadBicepContent('global.bicepdata')
loadFileAsBase64('config.sh')

// Nullable string return to differentiate between empty string value and no variable found.
// Set default value
param intparam = readEnvironmentVariable('int_param')!= null ? readEnvironmentVariable('int_param') :2

How does that work when int_param environment variable is set to empty string? Also type conversion is missing and therefore verbosity of the example is reduced from the real-world usage.
cc: @HadwaAbdelhalem

Alternative approach: function reading environment variable handles type conversion and default values.
loadEnvVarAsArray(<name of the environment variable>[, <default value>]) // return type array
loadEnvVarAsBool(<name of the environment variable>[, <default value>]) // return type Bool
loadEnvVarAsInt(<name of the environment variable>[, <default value>]) // return type Int
loadEnvVarAsObject(<name of the environment variable>[, <default value>]) // return type Object
loadEnvVarAsString(<name of the environment variable>[, <default value>]) // return type String

Default value would be used if referenced environment variable does not exist.
Should return types and default values be/support nullable types?

Support for user-defined types?

comments?

Updated examples with null-coalescing?

Looks like that is not live yet, however that is great news, I missed this previously

@brwilkinson those functions are supported as of the 0.16.1 release

Thanks @anthony-c-martin yes working as expected 🟩 I forgot to update the thread here... moved the conversation to:

https://github.com/Azure/bicep/issues/9567#issuecomment-1533849741


SD-Forge Error

After installing and restarting, once I click compute, it gives me below error. I have waited 3 minutes and tried removing and adding it again, still getting the same error. I tried manually downloading the models but I do not know where is the location of the checkpoints file.
Traceback (most recent call last):
File "D:\ai-webuis\stable-forge\system\python\lib\site-packages\gradio\routes.py", line 488, in run_predict
output = await app.get_blocks().process_api(
File "D:\ai-webuis\stable-forge\system\python\lib\site-packages\gradio\blocks.py", line 1431, in process_api
result = await self.call_function(
File "D:\ai-webuis\stable-forge\system\python\lib\site-packages\gradio\blocks.py", line 1103, in call_function
prediction = await anyio.to_thread.run_sync(
File "D:\ai-webuis\stable-forge\system\python\lib\site-packages\anyio\to_thread.py", line 33, in run_sync
return await get_asynclib().run_sync_in_worker_thread(
File "D:\ai-webuis\stable-forge\system\python\lib\site-packages\anyio_backends_asyncio.py", line 877, in run_sync_in_worker_thread
return await future
File "D:\ai-webuis\stable-forge\system\python\lib\site-packages\anyio_backends_asyncio.py", line 807, in run
result = context.run(func, *args)
File "D:\ai-webuis\stable-forge\system\python\lib\site-packages\gradio\utils.py", line 707, in wrapper
response = f(*args, **kwargs)
File "D:\ai-webuis\stable-forge\webui\extensions\sd-webui-udav2\scripts\upgraded_depth_anything_v2.py", line 255, in on_submit_single
colourized_filenames, grey_depth_filename = process_image(image, colour_map_method, encoder, selection)
File "D:\ai-webuis\stable-forge\webui\extensions\sd-webui-udav2\scripts\upgraded_depth_anything_v2.py", line 95, in process_image
model = load_model(encoder)
File "D:\ai-webuis\stable-forge\webui\extensions\sd-webui-udav2\scripts\upgraded_depth_anything_v2.py", line 44, in load_model
checkpoint_path = modelloader.load_file_from_url(checkpoint_url, model_dir=checkpoints_dir, file_name=checkpoint_filename, hash_prefix=sha256)
TypeError: load_file_from_url() got an unexpected keyword argument 'hash_prefix'

Based on this error snippet - I think the reason for the error is you are using (File "D:\ai-webuis\stable-forge\webui\extensions\ sd-webui-udav2 \scripts\upgraded_depth_anything_v2.py) extension meant for a1111. When using forge you need to install the sd-forge-udav2 extension, which can be found in this release package here specifically for forge. I also made some minor updates to the code just now & tested it, no hash_prefix error, so you should be good to go. Just follow the instructions for installing the forge extension version from the link to the release page above, & thanks for alerting me to this error!

Thanks! works perfectly now


No route was found matching the URL and request method

@claudiosmweb while I was testing for this example got error. Is there anything I was missing:
// PUT example
WooCommerce.put('orders', { // Working if orders/id. IMO this should be updated in example
  order: {
    status: 'completed'
  }
}, function(err, data, res) {
  console.log(res);
});

This return No route was found matching the URL and request method
{"errors":[{"code":"woocommerce_api_no_route","message":"No route was found matching the URL and request method"}]}

Yep, missing two things:

Read the documentation: http://woothemes.github.io/woocommerce-rest-api-docs/#update-an-order
The order ID, what order are you trying update? :p


Stale resource when removing properties from CR

Bug Report
I have a CRD with a nested struct that looks like this:
...
kind: Grafana
spec:
  config:
    log:
      mode: "console"
      level: "warn"
    dashboards:
      versions_to_keep: 2
...

Updating nested properties, e.g. versions_to_keep and applying the resource works as expected. When removing the property only it also works as expected. But when i remove a whole section (e.g. the dashboards section along with all the keys in it) i receive a stale resource on the next reconciliation that still has the property set to it's value of 2.
The struct mapping this section looks like this:
type GrafanaConfigDashboards struct {
	VersionsToKeep int `json:"versions_to_keep,omitempty" ini:"versions_to_keep,omitempty"`
}

What did you do?
I removed a property and all it's subproperties from a CR and applied the resource using kubectl apply
What did you expect to see?
I expected the values in the Golang struct to be reset to their default values (0 in that case since it's an integer type).
What did you see instead? Under which circumstances?
I received a stale resource still with the old value set.
 Go

Hi @pb82,
Following a few questions.

If the CR was not applied before and you apply the CR without the whole dashboard section is it working as expected?
When you do the operation of applying the CR with a value in the subsection, then you reply the CR without the whole dashboard section which you did not check this new state be applied with success did you saw any issue in the logs provided by the operator? If yes, could you provide them?


Updating of Experience Platform API Postman Collections (and friends)

This PR updates, with re-organziation, the Experience Platform (AEP) API Postman Collections to reflect the latest AEP Swagger Specs.
Description

Generated new AEP API Postman Collections, and moved to /apis/experience-platform
Removed old AEP API Postman Collections from /postman
Created a new "Adobe I/O Access Token Generation" Postman Collection

Contains a sub-folder for Local Signing (using 3rd party JSR Assign Crypto library)
Contains a sub-folder for Remote Signing (using adobeioruntime.net)

Added README.MDs for new folders explaining their role and/or where prior content was moved to.
All new Postman collections are compatible with Adobe I/O Consoles > Export Details to Postman feature.

Note that this PR does NOT change any Tutorial Postman Collections.
Motivation and Context
The motivation is the Postman Collections in this repository are outdated and their variables are not normalized, making it hard to use them.
How Has This Been Tested?

The AEP API Postman collection requests have been trued up against the AEP API Docs Swagger Specs.
This has been tested by loading the Adobe I/O Console generated Postman Environment, and smoke-testing a random selection fo Postman requests across the collections.

Checklist:

[X] I have signed the Adobe Open Source CLA.
[X] My code follows the code style of this project.
[X] My change requires a change to the documentation.
[X] I have updated the documentation accordingly.
[X] I have read the CONTRIBUTING document.
[X] I have added tests to cover my changes.
[X] All new and existing tests passed.

looks good!


OSX dlopen() failed to load a library: cairo / cairo-2

If someone having a problem with generating a PDF document on OSX:
dashboard --> orders --> packing slips returning this:
OSError at /dashboard/orders/21/packing-slips/ dlopen() failed to load a library: cairo / cairo-2
he can fix it by:
brew install python3 cairo pango gdk-pixbuf libffi
Can you add this information to the documentation?

Yes, this should definitely become part of the documentation.

roboto-fontface-fonts is also needed and not included for some distributions (e.g. Centos)


Deletions are not tracked

There is a bug in the USN library. When a folder is deleted, it causes the file paths inside the folder to not display correctly.
I have a file on my Z drive at Z:\demo\2\bed.jpg. When I delete the folder Z:\demo\2, the files inside this folder are also deleted. Below is my test code.
extern crate ntfs;

use ntfs::journal::{Journal, JournalOptions};
use ntfs::volume::Volume;

fn main() -> std::io::Result<()> {
    let volume = match Volume::new("\\\\?\\Z:") {
        Ok(v) => v,
        Err(e) => {
            println!("error: {:?}", e);
            return Ok(());
        }
    };

    let mut journal = Journal::new(volume, JournalOptions::default())?;

    loop {
        let records = journal.read()?;
        for record in records {
            println!("change: {:?}", record);
        }
        std::thread::sleep(std::time::Duration::from_secs(3));
    }
}

The run result is:
change: UsnRecord { usn: 36176, timestamp:<PHONE_NUMBER>5.7853214s, file_id:<PHONE_NUMBER>081198, parent_id:<PHONE_NUMBER>081197, reason:<PHONE_NUMBER>, path: "bed.jpg" }
change: UsnRecord { usn: 36256, timestamp:<PHONE_NUMBER>5.7853214s, file_id:<PHONE_NUMBER>081197, parent_id:<PHONE_NUMBER>32012, reason:<PHONE_NUMBER>, path: "\?\Z:\demo\2" }
It is evident that the file path for bed.jpg inside the folder is not correctly printed as z:\demo\2\bed.jpg. Can you fix this bug? Thank you.

Hey thanks for the bug report.
I think that by the time the journal tries to compute the path, it has already been deleted and so it fails.
To fix that the journal would need to track deletions too in the history, like it already does for moves:
 if record.reason
                & (Ioctl::USN_REASON_RENAME_OLD_NAME
                    | Ioctl::USN_REASON_HARD_LINK_CHANGE
                    | Ioctl::USN_REASON_REPARSE_POINT_CHANGE
                    | Ioctl::USN_REASON_FILE_DELETE) // <-- Add
                != 0
            {

And then add some logic to get_usn_record_path/get_file_path.
Sounds reasonable, I'll take a stab at it when I have some time.

Hey thanks for the bug report.
I think that by the time the journal tries to compute the path, it has already been deleted and so it fails. To fix that the journal would need to track deletions too in the history, like it already does for moves:
if record.reason
    & (Ioctl::USN_REASON_RENAME_OLD_NAME
        | Ioctl::USN_REASON_HARD_LINK_CHANGE
        | Ioctl::USN_REASON_REPARSE_POINT_CHANGE
        | Ioctl::USN_REASON_FILE_DELETE) // <-- Add
    != 0
{

And then add some logic to get_usn_record_path/get_file_path. Sounds reasonable, I'll take a stab at it when I have some time.

@kikijiki  Thank you for your reply. I tried adding the line of code "| Ioctl::USN_REASON_FILE_DELETE" as you suggested to see if it could fix the problem, but unfortunately, adding just this line does not solve the issue. It seems that modifying the get_usn_record_path/get_file_path functions might be necessary to fix this problem. I have a limited understanding of the Windows underlying USN and my attempt to fix it myself failed. If you have the time, I would greatly appreciate your help in resolving this. Thank you very much.

Yeah just adding that won't be enough unfortunately.
I'll post an update when I have something working.

I took some time to think about it but I don't think this is easily fixable, my original suggestion was wrong.
By the time the journal is processed, both the directory and the files inside will be already gone, and it's too late to compute the path (or save it in the history). You would need to manually recompute the parent's path using file_id/path map that you maintain, or maybe using cached MFT records.
If it's a specific folder you are monitoring, it would be easier to use a file watcher.
In any case, it doesn't seem like something you can implement in the journal directly unfortunately.
Unless there is some solution I overlooked, I'll have to close this.

I took some time to think about it but I don't think this is easily fixable, my original suggestion was wrong.
By the time the journal is processed, both the directory and the files inside will be already gone, and it's too late to compute the path (or save it in the history). You would need to manually recompute the parent's path using file_id/path map that you maintain, or maybe using cached MFT records. If it's a specific folder you are monitoring, it would be easier to use a file watcher.
In any case, it doesn't seem like something you can implement in the journal directly unfortunately. Unless there is some solution I overlooked, I'll have to close this.

@kikijiki Based on my understanding, it is feasible, as I have tested USN libraries written in other languages, and they can display the complete path even when a file is deleted. When I tested other libraries, they were able to input the USN ID of files that had already been deleted and successfully query their information.
My guess is that there might be an issue with the parameters passed to the Windows API, which refuses to query a USN ID for a deleted file, resulting in an incomplete path. I'm not familiar with these low-level Windows APIs; otherwise, I could have fixed it myself and submitted a merge request for the code.

In theory the file should not be immediately deleted, the MFT record should still exist and be flagged as not in use 🤔
Knowing the file id it should be possible to access that record with the name still cached, then you would need to keep processing all the parents to compute the whole path though.

I'll reopen this since it's a valid request, as you said there should be some way of doing it.
Still not sure how to implement it though.
The MFT class has a function to read a record directly from the fs but it could be very slow.

I'll reopen this since it's a valid request, as you said there should be some way of doing it. Still not sure how to implement it though. The MFT class has a function to read a record directly from the fs but it could be very slow.

@kikijiki  I know how they do it, and I have an example in Go language here. But please note that they are using USN_RECORD_V2, while you are using USN_RECORD_V3. My limited understanding of Windows low-level APIs is the reason why I don't know what additional parameters need to be passed for V3 compared to V2 to enable it to read already deleted USN IDs. This is why I am unable to modify your library based on this code.
In the entire process, you don't need to read the MFT; you just need to focus on the USN, because the example I provided only reads the USN and never read the MFT. My sample code can read a deleted USN ID, then find its parent node, and then read the USN information of the parent node again, all the way up to the root directory. This is the core principle. The current issue is how to pass certain parameters in V3 to enable it to read deleted USN IDs. Hope this help.
Please check the example code below.
https://github.com/y4v8/filewatcher/blob/1a16ffa8c63a176b65c3202eb1daefc75ac0a037/watcher.go#L147

Thanks for the reference.
It's using the record only to retrieve the file_id, that information is in V3 too (V2 and V3 are almost identical).
The main difference seems to be that instead of getting the full path from the API (which does not work for deleted files), it requests only the name and then it computes the path by itself.
It is reading the MFT with GetFileNameByID though, similarly to what MFT::get_record_fs() does, but through the Windows API. I guess that still works because the name is stored directly in the record (which persists after the file is "deleted"), while the API to get the full path I am using now fails in that case.
Anyway we can do something similar then. I'm not sure if it should be done that way by default or only when the existing method fails. I'll try to do some profiling.

Thanks for the reference.
It's using the record only to retrieve the file_id, that information is in V3 too (V2 and V3 are almost identical). The main difference seems to be that instead of getting the full path from the API (which does not work for deleted files), it requests only the name and then it computes the path by itself.
It is reading the MFT with GetFileNameByID though, similarly to what MFT::get_record_fs() does, but through the Windows API. I guess that still works because the name is stored directly in the record (which persists after the file is "deleted"), while the API to get the full path I am using now fails in that case.
Anyway we can do something similar then. I'm not sure if it should be done that way by default or only when the existing method fails. I'll try to do some profiling.

@kikijiki Yes, that's right, this code calculates the full path by obtaining the file names at each level.
Indeed, you can consider adopting this approach to retrieve the full path of deleted files when the existing method fails.
You might not need to worry too much about efficiency issues, as there won't be a large number of deletions at the same time in the Windows system. Even if this method is fully adopted, no problems have arisen during testing on my machine.

The path computation is required for all events, not only deletions.
This new method could be used for all events, only for deletions, or only when the current one fails.

It could be more robust in general though.
Even if it's not a deletion event, it could be that at the time of reading the journal the file got deleted in the meantime, and that would make the path fail.
So it's not just for deletions, the question is if we should do the path computation loop always or just when GetFileInformationByHandleEx fails.

Actually after reading the code a bit, it's not doing a loop there.
It only handles 2 cases, either GetFilenamebyID works on the file, or it does GetFilenameByID on the parent and appends the current record name.
I thought GetFilenameByID was a Windows API thing, but not:
func GetFileNameByID(hVolume syscall.Handle, fileID uint64) (string, error) {
	fd := FILE_ID_DESCRIPTOR{}
	fd.DwSize = uint32(unsafe.Sizeof(fd))
	fd.FileId = fileID

	h, err := OpenFileById(hVolume,
		&fd,
		0,
		syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE,
		nil,
		syscall.FILE_FLAG_BACKUP_SEMANTICS)
	if err != nil {
		return "", errors.Wrap(err)
	}
	defer syscall.CloseHandle(h)

	fileNameInfo := FILE_NAME_INFO{}
	sizeFileNameInfo := uint32(unsafe.Sizeof(fileNameInfo))
	err = GetFileInformationByHandleEx(h, FILE_NAME_INFO_BY_HANDLE, unsafe.Pointer(&fileNameInfo), sizeFileNameInfo)
	if err == syscall.ERROR_MORE_DATA {

		sizeFileNameInfo = (4 + fileNameInfo.FileNameLength) / 2
		buf := make([]uint16, sizeFileNameInfo)
		err = GetFileInformationByHandleEx(h, FILE_NAME_INFO_BY_HANDLE, unsafe.Pointer(&buf[0]), sizeFileNameInfo*2)

		if err == nil {
			return syscall.UTF16ToString(buf[2 : 2+fileNameInfo.FileNameLength/2]), nil
		}
	}
	if err != nil {
		return "", errors.Wrap(err)
	}

	return syscall.UTF16ToString(fileNameInfo.FileName[0 : fileNameInfo.FileNameLength/2]), nil
}

It uses GetFileInformationByHandleEx, which I am already using...

This could be the reason it's working there, I'm not using this flag

Also I am using FILE_GENERIC_READ, but passing 0 might be better too.

Also I'm not handling the ERROR_MORE_DATA case.

I tried adding all three changes but still have the same issue as before 🤔

I made a draft PR in the meantime.

I tried adding all three changes but still have the same issue as before 🤔

@kikijiki Unfortunately, you are still encountering the same problem. Perhaps the usage of V3 and V2 is different? I don't quite understand the specific differences in usage, although we know V3 is better. But maybe we should consider switching to V2?

I made a draft PR in the meantime.

@kikijiki Yes, I agree with his opinion. If V3 can't solve this issue, perhaps we can switch to using V2, and then directly convert the Go code into Rust. Thanks.

In #4 I added support for V2. Every test runs both for V2 and V3.
Unfortunately in my local tests both are failing for deletions.
test journal::test::file_create_v2 ... ok
test journal::test::file_create_v3 ... ok
test journal::test::file_move_v2 ... ok
test journal::test::file_move_v3 ... ok
test journal::test::file_delete_v2 ...  WARN ntfs_reader::journal: Could not get path: usn-journal-test-delete.txt
The file deletion was not detected
FAILED
test journal::test::file_delete_v3 ...  WARN ntfs_reader::journal: Could not get path: usn-journal-test-delete.txt
The file deletion was not detected
FAILED

In #4 I added support for V2. Every test runs both for V2 and V3.
Unfortunately in my local tests both are failing for deletions.
test journal::test::file_create_v2 ... ok
test journal::test::file_create_v3 ... ok
test journal::test::file_move_v2 ... ok
test journal::test::file_move_v3 ... ok
test journal::test::file_delete_v2 ...  WARN ntfs_reader::journal: Could not get path: usn-journal-test-delete.txt
The file deletion was not detected
FAILED
test journal::test::file_delete_v3 ...  WARN ntfs_reader::journal: Could not get path: usn-journal-test-delete.txt
The file deletion was not detected
FAILED

I don't know why switching to V2 still doesn't work. Could it be because of the RUST language? The same code runs fine in GO language.
There's a phenomenon I'd like to share with you, which might be helpful. In the test code at the top of this post, if you remove the following line, it causes a dead loop, but then it can display the complete path normally. However, the cost of doing this is 100% CPU usage on one core.
std::thread::sleep(std::time::Duration::from_secs(3));

One last difference I see is that the go library uses overlapped IO to do asynchronous operations.
I can try using it too to see if it helps.

I tried adding it in the same PR but still failing 🤔
I must be missing something.

I'm gonna try to peek at other implementations as well!
https://github.com/PoorBillionaire/USN-Journal-Parser/blob/master/usnparser/usn.py

I think this might be related to the timing of the deletions.
As an experiment I tried pulling https://github.com/y4v8/filewatcher and adding this bit in main.go:
	for event := range events {
		if event.Reason&win.USN_REASON_FILE_DELETE != 0 {
			if strings.Contains(event.Name, "dummy") {
				log.Println(event.Name, reasonNames(event.Reason))
			}
		}
	}

While this was "watching" I run cargo test on this library. In the test I create a file c:\dummy\dummy_file.txt and then delete the parent directory c:\dummy. The result is that the go library manages to obtain the path correctly only 2 out of 10 times:
2024/03/31 09:24:53 c:\\dummy FILE_DELETE
2024/03/31 09:24:56 c:\\dummy FILE_DELETE
2024/03/31 09:24:57 c:\\dummy FILE_DELETE
2024/03/31 09:24:58 c:\\dummy FILE_DELETE
2024/03/31 09:24:59 c:\\dummy FILE_DELETE
2024/03/31 09:25:00 c:\dummy\dummy_file.txt FILE_DELETE
2024/03/31 09:25:00 c:\\dummy FILE_DELETE
2024/03/31 09:25:03 c:\\dummy FILE_DELETE
2024/03/31 09:25:06 c:\dummy\dummy_file.txt FILE_DELETE
2024/03/31 09:25:07 c:\\dummy FILE_DELETE
2024/03/31 09:25:08 c:\\dummy FILE_DELETE
2024/03/31 09:25:09 c:\\dummy FILE_DELETE

But if I delete the directory from Go instead it always works well. So I think it might be a combination of two things:

Go uses a separate thread that continuously runs in the background, and is able to process events in the middle of the RemoveAll (the directory is the last thing that gets deleted, so it still exists for the deleted files).
Rust's std::fs::remove_dir_all() is faster than Go's os.RemoveAll() so the chances of getting the parent directory path before it gets deleted are lower.

So the solution would be to have this watcher run on a separate thread in an infinite loop continuously reading the journal.
It should start before the directly is deleted, so that it can process the file deletion before the parent deletion happens.
And it would need to be lucky enough with the timing I guess.
This is not really fixed but it's not something that this library is supposed to implement. The journal reading function is available but how it is invoked (sync or async, continuous or chunked, etc.) is left to the user's specific use case.

So the solution would be to have this watcher run on a separate thread in an infinite loop continuously reading the journal. It should start before the directly is deleted, so that it can process the file deletion before the parent deletion happens. And it would need to be lucky enough with the timing I guess.
This is not really fixed but it's not something that this library is supposed to implement. The journal reading function is available but how it is invoked (sync or async, continuous or chunked, etc.) is left to the user's specific use case.

While running the watcher in a separate thread with an infinite loop might seem like a workaround, but it could consume 100% of a CPU core, which isn't an efficient solution.
Actually, there is another solution that will definitely solve this issue, though it will increase memory usage. We could create a map where the key is the USN ID, and it includes the filename and parent USN ID. When a file needs to be deleted, we can retrieve the complete path from the map through a step-by-step query, print the full path of the file to be deleted, and then remove the corresponding node from the map.

@peter-parker-git That would work only for files that get created after the watcher starts monitoring the journal. Even if you set the option to process the journal from the start, the journal has finite size so it will contain only file creations of the past few hours/days.
To make it work properly you would need to initialize the map by first scanning the MFT and then keeping it up to date with journal events. More realistically, you could initialize it only with the files of some folder you are interested in, instead of the whole volume (so just a file walk instead of loading the MFT).

@peter-parker-git That would work only for files that get created after the watcher starts monitoring the journal. Even if you set the option to process the journal from the start, the journal has finite size so it will contain only file creations of the past few hours/days.
To make it work properly you would need to initialize the map by first scanning the MFT and then keeping it up to date with journal events. More realistically, you could initialize it only with the files of some folder you are interested in, instead of the whole volume (so just a file walk instead of loading the MFT).

@kikijiki Hello, you might have misunderstood. The specific approach is that when the program starts, it scans the entire hard drive for the USN IDs of all files and records the file USN ID, names and parent node USN ID, then stores them in a map as I just described.
Next, it starts listening for USN changes, checking every 500 milliseconds for the latest changes. For example, if a folder is deleted and many files within it are also deleted, the path may not be correctly retrieved due to the folder's deletion.
However, this is not a problem as our in-memory map acts like a complete backup, allowing us to find the full path using the parent USN ID and display it. Since the files are deleted, our task is to remove the corresponding USN IDs from the map. This method ensures that a complete path can be outputted. I have a 2TB hard drive, and using this method only takes up a few dozen megabytes of memory (I conducted tests using Go based on the Go example link I shared with you earlier).

That's what I said basically, I think you are confusing the file reference number with the USN though.

Owner

Thank you for clarifying. I thought that the USN log queried in the following way (in Go language) could contain all the USN changes on a disk. If this method can only scan recent changes, such as from the past few days, then indeed, scanning the entire MFT is necessary.
err = syscall.DeviceIoControl(volumeHandle, IOCTL_FSCTL_QUERY_USN_JOURNAL, nil, 0, (*byte)(unsafe.Pointer(&queryUSNData)), uint32(unsafe.Sizeof(queryUSNData)), &bytesReturned, nil) 	if err != nil { 		log.Fatalf("Failed to query USN journal: %v", err) 	}
Can you tell me how to correlate a file’s USN record with its MFT record? The only method I can think of is relying on the file path. From my understanding, an MFT record does not contain the USN information of the file, and similarly, when a file is modified, the USN record does not contain a reference to the MFT. Only by using the complete path can the two be linked. Then, when a file is deleted, I would know which MFT record needs to be removed from memory. Is there another way?

Both the MFT record and USN record should contain the file id/number, if you use V3 you might have to convert the 128bit reference to 64.


Splash screen new UI modification

Accptence criteria:
https://www.figma.com/design/cvV48t0f7O2znT6QBxK0Zj/Tonomy-ID?node-id=9609-7563&t=AopMQV3GCkl1ZaL2-4

[ ] Update the splash screen text and graphics according to latest design

use app storage with a flag if they have seen the instructions

https://github.com/Tonomy-Foundation/Tonomy-ID/blob/development/src/utils/StorageManager/entities/appSettings.ts


Collect not working anymore

Hi,
i noticed a new Bug in the newest Vrsion 1.0.26. The Collect Button does not work anymore. When i click it, nothing happens. I looked at the Log and after a failed Login it says:
2022-08-10<EMAIL_ADDRESS>Started Collect
2022-08-10<EMAIL_ADDRESS>GW2 process exited because Crashed
2022-08-10<EMAIL_ADDRESS>Mutex not found
2022-08-10<EMAIL_ADDRESS>error killing Mutex, ignoring
in another Log File it says:
2022-08-10<EMAIL_ADDRESS>Mutex not found
2022-08-10<EMAIL_ADDRESS>error killing Mutex, ignoring|guildwars2.tools.alternator.Gw2MutexException<EMAIL_ADDRESS>Mutex not found
at guildwars2.tools.alternator.MVVM.model.Client.KillMutex(Int32 delayBefore, Int32 delayAfter)

Thanks, I am working on the mutex issue right now

Investigation:
When launching multiple gw2 instances then there is a high chance one of them will soft lock and report as "Not Responding"
This causes the stuck delay to fire and the process to be killed
The affects both the login and collect tasks
Using Force Serial can help with stability

At the Moment Alternator is working fine again. I always use Serial Mode, to be shure nothing is crashing or freezing and it works fine so far.


Implement status indicator for USB serial

Final part of https://github.com/btelman96/runmyrobot_android/issues/24


[Docs - codesandbox] - Suspense Example is broken

Describe the bug
The Suspense Example Codesandbox in the  suspense page  of the documentation is not working:
ModuleNotFoundError
Could not find module in path: 'react/jsx-runtime' relative to '/src/components/Spinner.js'

Your minimal, reproducible example
Codesandbox
Steps to reproduce

Go to https://codesandbox.io/s/github/tannerlinsley/react-query/tree/master/examples/suspense?file=/package.json.
See broken sandbox.

Expected behavior
Code should run.
How often does this bug happen?
No response
Screenshots or Videos
No response
Platform
Codesandbox
react-query version
3.5.0
TypeScript version
No response
Additional context
No response

Similar issues with vercel swr.

Hey @TkDodo, the sandbox is still broken fyi.

I have fixed the examples for v4, but the docs still pick up the version from master. I've just updated all dependencies, hope that makes it work.
For now, what you can do is:

open the sandbox
fork it
update react from experimental to v18
sadly, the api for startTransition has changed, so you need to switch the order of the return values.

Anyways, I've just done that, so here is a working sandbox. Sorry for the troubles:
https://codesandbox.io/s/white-pine-xncu70?file=/src/index.js

Thank you, Dominik!


Brush Chart target multiple charts

Summary
Bumping https://github.com/apexcharts/apexcharts.js/issues/1979 as its closed.
Allow brush chart to target multiple charts.
API Changes
brush: {
target: ["chart1", "chart2"]
}

bump

Getting lag issue when i targeting the many charts.


Output Log errors

Hello, this is kind of an FYI.
I encountered quite some errors after installing the "Godot XR Tools for Godot 4" from AssetLib (v.s 4.2.beta4). Then after reopening the project the Output is cleared. Maybe there is a way to avoid it?
Would be nice or a better launching experience I guess :).
Godot Engine v4.2.beta4.official (c) 2007-present Juan Linietsky, Ariel Manzur & Godot Contributors.
--- Debug adapter server started ---
--- GDScript language server started on port 6005 ---
  scene/resources/importer_mesh.cpp:518 - Ignoring face with non-finite normal in LOD generation.
  res://addons/godot-xr-tools/player/player_body.gd:435 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/player/player_body.gd" with error "Parse error". (User)
  res://addons/godot-xr-tools/player/player_body.gd:435 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/functions/movement_provider.gd:-1 - Compile Error:
  res://addons/godot-xr-tools/player/player_body.gd:435 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/examples/fall_damage.gd:-1 - Compile Error:
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/examples/fall_damage.gd" with error "Compilation failed". (User)
  res://addons/godot-xr-tools/player/player_body.gd:435 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/functions/function_teleport.gd:-1 - Compile Error:
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/functions/function_teleport.gd" with error "Compilation failed". (User)
  res://addons/godot-xr-tools/player/player_body.gd:435 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/functions/movement_climb.gd:-1 - Compile Error:
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/functions/movement_climb.gd" with error "Compilation failed". (User)
  res://addons/godot-xr-tools/player/player_body.gd:435 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/functions/movement_crouch.gd:-1 - Compile Error:
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/functions/movement_crouch.gd" with error "Compilation failed". (User)
  res://addons/godot-xr-tools/functions/movement_direct.gd:44 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/functions/movement_direct.gd" with error "Parse error". (User)
  res://addons/godot-xr-tools/player/player_body.gd:435 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/functions/movement_flight.gd:-1 - Compile Error:
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/functions/movement_flight.gd" with error "Compilation failed". (User)
  res://addons/godot-xr-tools/player/player_body.gd:435 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/functions/movement_footstep.gd:-1 - Compile Error:
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/functions/movement_footstep.gd" with error "Compilation failed". (User)
  res://addons/godot-xr-tools/player/player_body.gd:435 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/functions/movement_glide.gd:-1 - Compile Error:
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/functions/movement_glide.gd" with error "Compilation failed". (User)
  res://addons/godot-xr-tools/player/player_body.gd:435 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/functions/movement_grapple.gd:-1 - Compile Error:
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/functions/movement_grapple.gd" with error "Compilation failed". (User)
  res://addons/godot-xr-tools/player/player_body.gd:435 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/functions/movement_jump.gd:-1 - Compile Error:
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/functions/movement_jump.gd" with error "Compilation failed". (User)
  res://addons/godot-xr-tools/player/player_body.gd:435 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/functions/movement_physical_jump.gd:-1 - Compile Error:
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/functions/movement_physical_jump.gd" with error "Compilation failed". (User)
  res://addons/godot-xr-tools/functions/movement_direct.gd:44 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/player/player_body.gd:435 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/functions/movement_sprint.gd:-1 - Compile Error:
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/functions/movement_sprint.gd" with error "Compilation failed". (User)
  res://addons/godot-xr-tools/functions/movement_turn.gd:111 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/functions/movement_turn.gd" with error "Parse error". (User)
  res://addons/godot-xr-tools/player/player_body.gd:435 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/functions/movement_wall_walk.gd:-1 - Compile Error:
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/functions/movement_wall_walk.gd" with error "Compilation failed". (User)
  res://addons/godot-xr-tools/player/player_body.gd:435 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/functions/movement_wind.gd:-1 - Compile Error:
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/functions/movement_wind.gd" with error "Compilation failed". (User)
  res://addons/godot-xr-tools/player/player_body.gd:435 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/objects/teleport_area.gd:-1 - Compile Error:
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/objects/teleport_area.gd" with error "Compilation failed". (User)
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:13 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:14 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:15 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:18 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:21 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:29 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:36 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:38 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:42 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:43 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:45 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:50 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:55 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:56 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:60 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:64 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  res://addons/godot-xr-tools/user_settings/user_settings_ui.gd:67 - Parse Error: Identifier "XRToolsUserSettings" not declared in the current scope.
  modules/gdscript/gdscript.cpp:2703 - Failed to load script "res://addons/godot-xr-tools/user_settings/user_settings_ui.gd" with error "Parse error". (User)
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/african_hands.material: In external resource #0, invalid UID: uid://ijfutijrsylw - using text path instead: res://addons/godot-xr-tools/hands/textures/african_baseColor.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/african_hands.material: In external resource #1, invalid UID: uid://c64s2fj3d1m8s - using text path instead: res://addons/godot-xr-tools/hands/textures/hands_occlusionRoughnessMetallic.png
res://addons/godot-xr-tools/hands/textures/african_baseColor.png: Texture detected as used in 3D. Enabling mipmap generation and setting the texture compression mode to VRAM Compressed (S3TC/ETC/BPTC).
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/african_hands_realistic.material: In external resource #0, invalid UID: uid://cnmcg22m0soxy - using text path instead: res://addons/godot-xr-tools/hands/textures/african_realistic_baseColor.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/african_hands_realistic.material: In external resource #1, invalid UID: uid://c64s2fj3d1m8s - using text path instead: res://addons/godot-xr-tools/hands/textures/hands_occlusionRoughnessMetallic.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/african_hands_realistic.material: In external resource #2, invalid UID: uid://dohtj55yf3eti - using text path instead: res://addons/godot-xr-tools/hands/textures/hands_normal.png
res://addons/godot-xr-tools/hands/textures/african_realistic_baseColor.png: Texture detected as used in 3D. Enabling mipmap generation and setting the texture compression mode to VRAM Compressed (S3TC/ETC/BPTC).
res://addons/godot-xr-tools/hands/textures/hands_normal.png: Texture detected as used as a normal map in 3D. Enabling red-green texture compression to reduce memory usage (blue channel is discarded).
res://addons/godot-xr-tools/hands/textures/hands_normal.png: Texture detected as used as a roughness map in 3D. Enabling roughness limiter based on the detected associated normal map at res://addons/godot-xr-tools/hands/textures/hands_normal.png.
res://addons/godot-xr-tools/hands/textures/hands_normal.png: Texture detected as used in 3D. Enabling mipmap generation and setting the texture compression mode to VRAM Compressed (S3TC/ETC/BPTC).
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/caucasian_hand.material: In external resource #0, invalid UID: uid://dh7rys3who35c - using text path instead: res://addons/godot-xr-tools/hands/textures/caucasian_baseColor.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/caucasian_hand.material: In external resource #1, invalid UID: uid://c64s2fj3d1m8s - using text path instead: res://addons/godot-xr-tools/hands/textures/hands_occlusionRoughnessMetallic.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/caucasian_hands_realistic.material: In external resource #0, invalid UID: uid://buo1o13fo7okd - using text path instead: res://addons/godot-xr-tools/hands/textures/caucasian_realistic_baseColor.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/caucasian_hands_realistic.material: In external resource #1, invalid UID: uid://c64s2fj3d1m8s - using text path instead: res://addons/godot-xr-tools/hands/textures/hands_occlusionRoughnessMetallic.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/caucasian_hands_realistic.material: In external resource #2, invalid UID: uid://dohtj55yf3eti - using text path instead: res://addons/godot-xr-tools/hands/textures/hands_normal.png
res://addons/godot-xr-tools/hands/textures/caucasian_realistic_baseColor.png: Texture detected as used in 3D. Enabling mipmap generation and setting the texture compression mode to VRAM Compressed (S3TC/ETC/BPTC).
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/cleaning_glove.material: In external resource #0, invalid UID: uid://c5cnjs0vgmwpb - using text path instead: res://addons/godot-xr-tools/hands/textures/cleaning_glove_baseColor.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/cleaning_glove.material: In external resource #1, invalid UID: uid://bpr3hcb5m0pkc - using text path instead: res://addons/godot-xr-tools/hands/textures/glove_occlusionRoughnessMetallic.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/cleaning_glove.material: In external resource #2, invalid UID: uid://dnlns2kfjkwhh - using text path instead: res://addons/godot-xr-tools/hands/textures/glove_normal.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/glove_african_dark_camo.material: In external resource #0, invalid UID: uid://bf5sf1lr5enkj - using text path instead: res://addons/godot-xr-tools/hands/textures/glove_african_dark_camo.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/glove_african_dark_camo.material: In external resource #1, invalid UID: uid://dq1hgb151kqbm - using text path instead: res://addons/godot-xr-tools/hands/textures/glove_fingerless_occlusionRoughnessMetallic.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/glove_african_dark_camo.material: In external resource #2, invalid UID: uid://g1q2fw3his2p - using text path instead: res://addons/godot-xr-tools/hands/textures/glove_fingerless_normal.png
res://addons/godot-xr-tools/hands/textures/glove_african_dark_camo.png: Texture detected as used in 3D. Enabling mipmap generation and setting the texture compression mode to VRAM Compressed (S3TC/ETC/BPTC).
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/glove_caucasian_dark_camo.material: In external resource #0, invalid UID: uid://bv8f10trc82to - using text path instead: res://addons/godot-xr-tools/hands/textures/glove_caucasian_dark_camo.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/glove_caucasian_dark_camo.material: In external resource #1, invalid UID: uid://dq1hgb151kqbm - using text path instead: res://addons/godot-xr-tools/hands/textures/glove_fingerless_occlusionRoughnessMetallic.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/glove_caucasian_dark_camo.material: In external resource #2, invalid UID: uid://g1q2fw3his2p - using text path instead: res://addons/godot-xr-tools/hands/textures/glove_fingerless_normal.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/glove_caucasian_green_camo.material: In external resource #0, invalid UID: uid://c46jhbxjlf4t1 - using text path instead: res://addons/godot-xr-tools/hands/textures/glove_caucasian_green_camo.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/glove_caucasian_green_camo.material: In external resource #1, invalid UID: uid://dq1hgb151kqbm - using text path instead: res://addons/godot-xr-tools/hands/textures/glove_fingerless_occlusionRoughnessMetallic.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/glove_caucasian_green_camo.material: In external resource #2, invalid UID: uid://g1q2fw3his2p - using text path instead: res://addons/godot-xr-tools/hands/textures/glove_fingerless_normal.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/labglove.material: In external resource #0, invalid UID: uid://bv21ei62pffeb - using text path instead: res://addons/godot-xr-tools/hands/textures/labglove_baseColor.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/labglove.material: In external resource #1, invalid UID: uid://bpr3hcb5m0pkc - using text path instead: res://addons/godot-xr-tools/hands/textures/glove_occlusionRoughnessMetallic.png
  core/io/resource_format_binary.cpp:1054 - res://addons/godot-xr-tools/hands/materials/labglove.material: In external resource #2, invalid UID: uid://dnlns2kfjkwhh - using text path instead: res://addons/godot-xr-tools/hands/textures/glove_normal.png

Thank you for your attention and your work on this plugin.

@ikonnow it's annoying as heck that Godot does not enable plugins by default, I've died on that hill a few times already but it's the cause of the biggest issue, the unknown XRToolsUserSettings which is an object that gets configured when the plugin is enabled.
Just go to project settings, go to the plugin tab, and enable XR tools.
The UID and conversion warnings we plan to address soon, we've left this open because changes in Godot kept pulling the rug out from underneath us. This should now all have stabilised so part of the next release of XR Tools will be cleaning up all the missing/incorrect UIDs and updating the plugin.

Thank you very much for your answer and for taking note, I can absolutely understand that. Of course, this is a detail that at the end of the day falls into the user experience category. However, I am convinced that it initially puts many people off. Which is not a particularly good start, especially for users who are familiar with engines like Unity and Unreal.
Thanks for your great work, we've been using Godot in my studio for almost a year now and I'm convinced that after overcoming a few small hurdles you can achieve wonderful results in XR!

Godot 4.2 is doing much better at script resolving on first start, but I think it still has one or two issues like this. The team has been working hard at improving this part of the engine. The progress was actually mentioned in a GodotCon 2023 talk - https://www.youtube.com/watch?v=WNR4Tne5DRE

Godot 4.2 is doing much better at script resolving on first start, but I think it still has one or two issues like this. The team has been working hard at improving this part of the engine. The progress was actually mentioned in a GodotCon 2023 talk - https://www.youtube.com/watch?v=WNR4Tne5DRE

Thanks for the Link. I didn't have the chance to go over the the GodotCon content yet but I will!. I was working with every single updated 4.2 beta and I will test the second RC in the context of these messages again. Since I'm about to release an application with my team and most of the time Godot felt just a little rough but stable, I'm not sure if this bug is worth existing longer. I guess that's the context of your hint as well.
Also I'd like to mention the XR template version of "foobar404" was helping a lot. And if love to see the current official version! Thanks for the great work, I'm looking forward to the official release


image filled is now nullable

in null safety projects, it is better for the Decoration image, image  field to be nullable
please change if needed

Hey @hasanm08, I don't understand why the image property of DecorationImage should be nullable. To me, it seems really unreasonable.
Maybe you have a use case where it is nice, but for the most use cases it's a really good thing that image is required (e.g. see 56 failing tests).
So, I really don't think this gets merged.

Hi @devj3ns due to servers dynamic data, the nullable image will make the code cleaner and more null-safety

I had this issue and tried to fix it
because when I saw this field
I don have any sense about being null-safety
Note that we have refresh capability in the web platform that may null our data so plus caching we should make our widgets complete null-safe too
about many broken tests Please check my PR, maybe something missed
I hope this PR helps the usability and stability of flutter multi-platform projects
have a good day :)

Hi @hasanm08 unfortunately I cannot debug your PR for you, and this is not a change we would want to make to this widget. For these reasons I am going to close this PR, thank you for contributing!


Prevent an animation from starting repeatedly

Currently the engine does not prevent that an animation is started repeatedly. This ensures that the animation cannot be played correctly, if the user starts the animation from for example the update function. The user could make a statement for each animation to prevent this, but this is not user friendly.
if (this.entity.anim.baseLayer.activeState != 'Walk') {
    this.entity.anim.baseLayer.play('Walk');
}

Personally, I'm not keen on adding new API or changing default behaviour for this as you would have to handle both use cases. People who do want to restart the animation and people who don't. For the latter, having an if statement is expected in programming if you don't want something to call code under certain conditions.

I agree with @yaustar 's comment. Closing the issue.


Region filtering for health notifications

Proposed changes

It is possible for AWS to generate notifications that are unwanted / uncared about as they involve a region not currently in use. Thus we would like a way to filter these out from use.
Issues for these changes

Types of changes

[ ] Bugfix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Refactor (changes to code, which do not change application behavior)

Checklist

[x] I have filled out this PR template
[x] I have read the CONTRIBUTING doc
[x] I have added automated tests that prove my fix is effective or that my feature works
[x] I have added necessary documentation (README.md, CHANGELOG.md, etc. - if appropriate)

Dependencies and Blockers

Relevant Links

Further comments

nicely done!


CIF method "searchAndOpenRecords" limits

Hi!
What the limit of items that can be retrieved at once by this API method?
Let's say I have about 10000 knowledge base articles in my instance.
Then how many items will be in the response for the following query?
Microsoft.CIFramework.searchAndOpenRecords('knowledgearticle', '?$select=knowledgearticleid', true)

What's the max number of items in 1 response, and is there any sort of paging? Say, retrieve 1-500 items at first request, 501-1000 at second, then 1001-1500 and so on?

@Tgjmjgj Please provide the URL address of the documentation page that mentions the ""searchAndOpenRecords"" API so that we can assigned your issue to the correct internal contact.

Here it is
https://docs.microsoft.com/en-us/dynamics365/customer-service/channel-integration-framework/reference/microsoft-ciframework/searchandopenrecords

@Tgjmjgj Great, I passed on your issue to the right person on the product team.

Hello,
Thanks for your question.
At one go, you can fetch 5000 records (if more than 5000 records exist).  Results can be narrowed down by passing $filter and $top clauses in the CIF API params.
Also, no pagination functionality is available at the moment.
Thanks and regards,
Jaya

Closing this issue as it is resolved.


Standup meeting - Milestone 2 review

The layout looks great, keep up the good work!

The layouts are looking really good,you code is also very clean. keep up the good work sir

ou have a clean code and the layout is awesome. Keep up the good work


Basket. Confirm page. Wrong container boundaries

Description
When user click on info button inside confirm page - appears scroll inside operation details view, that should appear on top of view and should not resize it.

Example
https://github.com/novasamatech/nova-spektr/assets/40560660/a9493d81-40c6-4425-b493-150b095168a0

Steps to Reproduce

Add a few transfer operations into the Basket
Sign all this operations
Click on Info button on confirm page

Expected Behavior
Info window opens on top of confirm page
Actual Behavior
Resize confirm page, add scroll
Environment
https://github.com/novasamatech/nova-spektr/commit/0945304b07f45f1847ae67b4774db302874a3971

Headless UI 2 support portals for popover, it can help to resolve this issue, but it requires more effort to adopt all places where we use old headless ui, or use both libraries together


Added request types to package.json.

Added the request types to the package.json.

Coverage remained the same at 100.0% when pulling c49c9c2b18be5ed370f1ff72c24da5fe0af91924 on prolink007:master into 4d79074e0bcc2cefa2168218b0a28ec28afeff90 on njl07:master.

@prolink007 thanks for the report but we need to do more and delete typings inside devDependencies.
I'm publishing new version with all librairies update


feat(devops): add IPFS default values

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


releng/make-binary.sh: use containerized image builds

Using podman to containerize the production of release assets avoids potential leakage of personal information. To support this, the containerized build script has been modified to separate the repo path at /zbm from a "build" directory (previously /zbm/contrib/docker was hard coded, now it's just the default choice). The releng script creates a temporary directory to serve as the "build" path, populates configs, and runs the build container with the current repo at /zbm and the temporary directory at /build. The outputs are copied as before, with the EFI executable standing alone and the kernel/initramfs components stored in a gzipped tarball.
If the releng script does not find the expected builder image (zbm-builder by default, but this can be passed as a second argument to the script), it will invoke podman build to create the image.

Okay, some new changes:

releng/make-binary.sh now uses the current date for a tag instead of the default :latest, so it will generally ensure that the build environment is up to date.
contrib/docker/Dockerfile now ignores linux and linux-headers in favor of linux5.10 and linux5.10-headers so we build images from an LTS kernel.
Because we're now tagging builder images by date, we might want to publish them at some point, and we want the asset production to be (somewhat) reproducible. The Dockerfile now supports --build-arg=ZBM_COMMIT_HASH=<some-value> and, if this argument is set, the image will contain a file /etc/zbm-commit-hash that holds the text <some-value>. When a container is run from this image, zbm-build.sh will look to this file to determine a commit to checkout iff it clones the ZFSBootMenu repo (i.e., iff a new container is instantiated and /zbm is not bind-mounted from the host). The script will also respect a ZBM_COMMIT_HASH environment variable set when the container is run, which supersedes anything in /etc/zbm-commit-hash. If the file does not exist and no environment variable has been set, the default master checkout will prevail.
make-binary.sh now sets ZBM_COMMIT_HASH to the hash of HEAD and also modifies the ZBM dracut configuration to install /etc/zbm-commit-hash in the the EFI and component outputs, if it exists. This isn't foolproof; for example, if you run make-binary.sh to create a builder image and some assets, then add some commits and re-run make-binary.sh on the same day, it won't recreate the builder and /etc/zbm-commit-hash will still point to the old HEAD.


Request: Release a new version

Include the following:

Material Dialogs version: <IP_ADDRESS>
Device OS version: 8.0.0
Device Manufacturer: Google
Device Name: Pixel XL

Support Library Update
Given all latest pull requests are merged, there are no updates for the library since Mid-Aug. Can you please upload the latest code to the maven.

You can temporarily just use compile 'com.github.afollestad.material-dialogs:core:539e9e7' with the jitpack repository.

https://github.com/afollestad/material-dialogs/releases/tag/<IP_ADDRESS>


Accessibility: Use ImageObject caption property as ALT text for remote embeds

Describe the Feature
When embedding an image from a remote site (such as the featured image from a WordPress post), the image may be presented as an ImageObject. The ImageObject schema does not include a specific property for ALT text. If ALT text exists for the image on the remote site, the ImageObject may present the ALT text in the caption property.
If no source for ALT text is found, the value of the caption property should be used as the ALT text for the embedded image.
Example featured image section from a WordPress post:

Post schema section as text:
	<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://inl.org/1998/11/day-1-sf-to-santa-cruz/","url":"https://inl.org/1998/11/day-1-sf-to-santa-cruz/","name":"Day 1: SF to Santa Cruz - Tom's stuff","isPartOf":{"@id":"https://inl.org/#website"},"primaryImageOfPage":{"@id":"https://inl.org/1998/11/day-1-sf-to-santa-cruz/#primaryimage"},"image":{"@id":"https://inl.org/1998/11/day-1-sf-to-santa-cruz/#primaryimage"},"thumbnailUrl":"https://inl.org/wp-content/uploads/sites/3/2024/11/27908_05.sfw-3.jpg","datePublished":"1998-11-01T19:31:00+00:00","dateModified":"2024-11-18T17:44:35+00:00","author":{"@id":"https://inl.org/#/schema/person/2147ceda83fd3e40fa2c2cde2e467d79"},"breadcrumb":{"@id":"https://inl.org/1998/11/day-1-sf-to-santa-cruz/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://inl.org/1998/11/day-1-sf-to-santa-cruz/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://inl.org/1998/11/day-1-sf-to-santa-cruz/#primaryimage","url":"https://inl.org/wp-content/uploads/sites/3/2024/11/27908_05.sfw-3.jpg","contentUrl":"https://inl.org/wp-content/uploads/sites/3/2024/11/27908_05.sfw-3.jpg","width":1200,"height":841,"caption":"A harvested field in the foreground gives way to an ocean under a cloudy sky. In the distance, a lighthouse can be seen on the end of a point."},{"@type":"BreadcrumbList","@id":"https://inl.org/1998/11/day-1-sf-to-santa-cruz/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://inl.org/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https://inl.org/blog/"},{"@type":"ListItem","position":3,"name":"Day 1: SF to Santa Cruz"}]},{"@type":"WebSite","@id":"https://inl.org/#website","url":"https://inl.org/","name":"Tom's stuff","description":"Tom Holub's web stuff","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://inl.org/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https://inl.org/#/schema/person/2147ceda83fd3e40fa2c2cde2e467d79","name":"tom","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://inl.org/#/schema/person/image/","url":"https://secure.gravatar.com/avatar/2148aecfd4521da5be7788966f8e2ad3?s=96&d=mm&r=g","contentUrl":"https://secure.gravatar.com/avatar/2148aecfd4521da5be7788966f8e2ad3?s=96&d=mm&r=g","caption":"tom"},"url":"https://inl.org/author/tom/"}]}</script>
Attachments
No response
Describe Alternatives
No response
Additional Context
No response

I looked further into the WordPress embed API and will re-submit this request with more accurate specifics.


WIP: add codecoverage reporting

Description
I am adding code coverage to reporting to moveit_ci: https://github.com/ros-planning/moveit_ci/pull/91
Do not submit this until the pull request in moveit_ci is merged and I update this to not point at my fork.

We won't use coverage reporting for rviz - we just don't have many unit tests.


Delete API confirmation box is not consistent with other message boxes

Button has a boundary.
Need an image like below?

We have ConfirmDialog component [1] in both store and publisher to keep the consistence of message boxes. Since delete API confirmation box not use the ConfirmDialog component will cause this inconsistency.
[1] https://github.com/wso2/carbon-apimgt/blob/master/features/apimgt/org.wso2.carbon.apimgt.publisher.feature/src/main/resources/publisher-new/source/src/app/components/Shared/ConfirmDialog.jsx

Seems like this is fixed in 3.0.0 beta


Added tests to TestForLoop

Codecov Report

Merging #216 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #216   +/-   ##
=======================================
  Coverage   80.78%   80.78%
=======================================
  Files          44       44
  Lines        3029     3029
=======================================
  Hits         2447     2447
  Misses        435      435
  Partials      147      147

Continue to review full report at Codecov.

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

Thanks


Accessing .env variables in the extension

What would be the proper way to do this? my share extension is not recognizing .env variables when not in production mode. any help would be great here, thanks!

good question @chris-sark, will have a look this week

Hey @MaxAst, any update on this?

Not yet unfortunately, I know that Expo inlines EXPO_PUBLIC_ env vars via metro, but haven't had time to reverse engineer it. In the meantime, have you tried sth like this?
// app.config.js
export default {
  expo: {
    // ... other expo config
    extra: {
      apiKey: process.env.API_KEY,
      authDomain: process.env.AUTH_DOMAIN,
      projectId: process.env.PROJECT_ID,
      // Add other env variables you need
    },
  },
};

// Usage in your app
import Constants from 'expo-constants';

// Access environment variables
const apiKey = Constants.expoConfig.extra.apiKey;
const authDomain = Constants.expoConfig.extra.authDomain;

Not ideal but I guess still better than hardcoding

I have, and it works - however it prevents me from storing secrets in .env as they are loaded into the app's code

That shouldn't be the case. In general, Expo only inlines env vars prefixed with EXPO_PUBLIC or what you put in the extra field in the app config


before no addHooks is not documented

before no addHooks is not documented

I rearranged the text to try to clarify this in a different way. No need to duplicate the explanation of the hooks object since it's the same for both hooks and addHooks API. Thanks for pointing this out.

nice!


Fix for the 'installPath' config option and typo in README

Hi @og01, thanks for this cool library. I'm about to use it in one of my projects!
There were 2 things that were not as expected:

The installPath config parameter was not working, the code was looking for an installed key.
The README references data combined with dbpath.

Many thanks


Cannot convert undefined or null to object

What version of OpenAPI is supported? Running npx @manifoldco/swagger-to-ts test.yaml --output schema.d.ts on
openapi: 3.0.0
info:
  version: "0.2"
  title: test
paths:
  /test:
    get:
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Response"
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/platform/schemas/Nope"
components:
  schemas:
    Response:
      type: object
      properties:
        type: array
        items:
          type: string
  platform:
    schemas:
      Nope:
        type: object
        required:
          - type
        properties:
          type:
            type: string

results in Cannot convert undefined or null to object.

This library only supports Swagger 2.0. See https://github.com/manifoldco/swagger-to-ts#node-options

Aha, I was looking for any docs on that but couldn't find it. Didn't look too closely I guess. Thanks.


Added metadata arg

Part of PR https://github.com/bugout-dev/locust/pull/34

PR re-created:
https://github.com/bugout-dev/locust-action/pull/7/files


Is it possible to enable useNativeDriver?

I see in the source code that useNativeDriver is explicitly is disabled. Is it possible to turn this on or expose as an option? I would like to have smooth 60 FPS animations, but it seems like this option affects this so that they are not fully smooth.
Thoughts?

I am happy to let you know that we are actively looking into this.


Recipe for image to surface

Fixes #30 #43
This PR adds an interactive tutorial on how to extract surfaces from intensity images (e.g., droplets or similar). It's based on the data taken from the original stress repository.
@carlos-gomez00 - would you mind giving this tutorial a shot? No code involved at all. If you arrive at the surface at the end of the tutorial, that'd be awesome!

Codecov Report

Merging #44 (9794e11) into main (f641299) will increase coverage by 2.55%.
The diff coverage is 92.30%.

@@            Coverage Diff             @@
##             main      #44      +/-   ##
==========================================
+ Coverage   67.58%   70.13%   +2.55%
==========================================
  Files          11       11
  Lines         364      365       +1
==========================================
+ Hits          246      256      +10
+ Misses        118      109       -9

Impacted Files
Coverage Δ

src/napari_stress/_tests/test_surface.py
92.30% <87.50%> (-7.70%)
:arrow_down:

src/napari_stress/__init__.py
100.00% <100.00%> (ø)

src/napari_stress/_surface.py
63.63% <100.00%> (+12.61%)
:arrow_up:

src/napari_stress/_utils/frame_by_frame.py
86.48% <0.00%> (+1.80%)
:arrow_up:

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more


doc: Add missing full stop

[ ] All tests pass
[x] I have run npm run doc

Description

References

Thanks @bennyn :+1:


Make double buffering more obvious

If not defined, only one buffer is created and ever used. On the other hand,
highest index in PxMATRIX_buffer is used to differentiate buffers.
Drawing is always done on inactive (selected) buffer. Display always shows active buffer. Those are swapped on explicit call by the user with swapBuffers. By default everything works as it did, swapBuffers have no effect and drawing as well as showing is done from the same buffer.
Change simplifies notation and operations on the buffers itself. It might be useful to exchange define name for something more "official" like PxMATRIX_USE_DOUBLE_BUFFER.

Closing this one, as #103 done the same.


Quality reduction and exif stripping choices proposals

Hello mister Hiroaki Matoba,
I was using your code to minimize image sizes and prevent confidentiality leaks while using your efficient code.
I would like to propose you to integrate my extensions of code if it is looks interesting to you and your projects.
Thanks again for your code. It helped me to improve in javascript and in javascript testing ;-)
Have a good day
Best regards
Tony Blanchard

Thanks a lot! It looks so nice!


iframe Error 503 in DSpace Creative Commons step

Hello,
Today we have noticed that the submission workflow in our DSpace repositories are not working in "Choose your license" step, where the user can choose a Creative Commons license. We use an  to show the Creative Commons form, but suddenly this form returns a 503 error

Looking at the console it appear the iframe is coming from  https://creativecommons.org/choose/?partner=dspace&stylesheet=http%3A%2F%2Fuobrep.openrepository.com%2Fuobrep%2Fsubmit%2Fcreative-commons.css&exit_url=http%3A%2F%2Fuobrep.openrepository.com%2Fuobrep%2Fsubmit%2Fcc-license.jsp%3Flicense_url%3D[license_url]
Can you take a look at this?
Many thanks
@robmyers @little-wow

Thank you for reporting this.
The service that handles the iframe was (briefly) down. I have restarted it.
The form should now be working.

On

#606

#606


Add flannel vars to enable vagrant and amazon environments

Rebased #92

In order to support environments where the first interface is not necessarily the outbound interface, add a flannel_interface to be specified per host (or globally) what interface should be used for flannel operations. If unset, the original behavior will work.
In order to support environments where the public IP is not "known" to the host, but is the only way the node can be accessed, add a flannel_public_ip variable that defines the IP used to talk to the node in question. This is useful for the Amazon case where nodes may not be aware of their public IP, but need to advertise how to get to them.

Thanks for the comment update.  I didn't know where you guys wanted it.  They are really inventory-level variables, but documenting them is good.


Feature/title author filter

Refactors the Solr query so date filtering works
Adds search by title or author only

Codecov Report

Merging #73 into develop will increase coverage by 0.04%.
The diff coverage is 98%.

@@             Coverage Diff             @@
##           develop      #73      +/-   ##
===========================================
+ Coverage    98.58%   98.62%   +0.04%
===========================================
  Files           44       44
  Lines         2115     2107       -8
===========================================
- Hits          2085     2078       -7
+ Misses          30       29       -1

Impacted Files
Coverage Δ

ppa/archive/tests/test_forms.py
100% <100%> (ø)
:arrow_up:

ppa/archive/tests/test_views.py
100% <100%> (ø)
:arrow_up:

ppa/archive/forms.py
100% <100%> (ø)
:arrow_up:

ppa/archive/views.py
98% <96.15%> (+0.53%)
:arrow_up:

ppa/urls.py
100% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


onActivityResult not gets called after selecting image from gallery

onActivityResult not gets called after selecting image from gallery
cameraModule.getCameraIntent(mainActivity), in doc its incorrect

please provide some solution for 1st.

@amankumarjain for question 1

what OS version you use?
Is it an emulator or a real device?
What camera app you use?

I was troubling on the same issue. I'm calling ImagePicker from Fragment. So, changing
this
ImagePicker.create(activity) //getactivity for java
to
ImagePicker.create(this@MyFragment)
solved issue.