Add a GitHub Action to lint Python

Travis CI testing was never turned on at https://travis-ci.com/Ganapati/RsaCtfTool so let's drop Travis and go with builtin GitHub Actions instead.  https://github.com/Ganapati/RsaCtfTool/actions

https://flake8.pycqa.org/en/latest/user/error-codes.html
On the flake8 test selection, this PR does not focus on "style violations" (the majority of flake8 error codes that psf/black can autocorrect).  Instead these tests are focus on runtime safety and correctness:

E9 tests are about Python syntax errors usually raised because flake8 can not build an Abstract Syntax Tree (AST).  Often these issues are a sign of unused code or code that has not been ported to Python 3.  These would be compile-time errors in a compiled language but in a dynamic language like Python they result in the script halting/crashing on the user.
F63 tests are usually about the confusion between identity and equality in Python.  Use ==/!= to compare str, bytes, and int literals is the classic case.  These are areas where a == b is True but a is b is False (or vice versa).  Python >= 3.8 will raise SyntaxWarnings on these instances.
F7 tests logic errors and syntax errors in type hints
F82 tests are almost always undefined names which are usually a sign of a typo, missing imports, or code that has not been ported to Python 3.  These also would be compile-time errors in a compiled language but in Python a NameError is raised which will halt/crash the script on the user.


a local storable html version is required

espcially for documents.

the documentation can be built by cloning the main angular repository and generating the docs yourself. You can also download the generated docs folders from https://code.angularjs.org/[VERSION]/docs and run them on a server


Delete node fails

Describe the bug
When deleting a node from tyle client, the node is still there.
To Reproduce
Delete a node in Tyle client. No error messages, but it will not delete.
Expected behavior
Should be deleted
Desktop (please complete the following information):

OS: Windows 10 64bit
Browser: Chrome

Additional context
Server crashes with error:
The instance of entity type 'TerminalLibDm' cannot be tracked because another instance with the key value '{Id:<PHONE_NUMBER>AA3B42F8E2061D148CF093}' is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached.

Fixed a EF tracking but for node, transport and interface when altering the dm model 'deleted' property.


Helm chart for awx

Hi,
Are there any plans to create a helm chart for this image?
Thx

Thx for you answer. There is currently a PR for an AWX chart to helm/incubator at  https://github.com/helm/charts/pull/6106, but I believe is for the "standard" AWX deployment

I'm closing all issues on this repository as it has been deprecated; please see: https://github.com/geerlingguy/awx-container/issues/49


Add elevation props

I wanted to set a shadow on Android but the only way to do it is with the elevation API.
I add it as a prop on the main drawer view.

@rt2zz If possible, could you please tag and release a version containing this change on npm?

done v2.2.4


Alt + enter in breadcrumbs should open file on right side

Similar to #54743, but with keyboard.
It would be amazing if alt+enter when using the keyboard also opened on the right side.
Currently I have to alt+click with the mouse to open on right side.
<3 VSCODE

@kasperpihl You mean in the picker, right? Iff so, try cmd+enter

Thanks for the super fast response!!! 🏎
I tried the cmd+enter, but it seems that it opens current file on right side, not the one I selected.
If I'm in view.js and I open breadcrumbs, then move to view.css with keyboard and press cmd+enter, it opens up view.js on the right side, not view.css.
Guess this is a bug?

Hm, that is interesting... Any chance you have a custom configuration for cmd+enter?

D'oh, yeah actually a bug. I can reproduce now.

Ok, pushed a fix for next insiders

EPIC!!! 🎉 🕺 Thanks Johannes


Server variable input support

User Story Description
As an API user,
I want to input my server URL,
so I can try the API against the URL of my choice.

Currently an API user cannot input a value for a (non enum) server variable. Basically only the default or enum values are used.
Acceptance Criteria

[ ] User can input the server URL and use it with the Try It functionality.

Sprint Ready Checklist

[ ] Acceptance criteria defined
[ ] Team understands acceptance criteria
[ ] Team has defined solution / steps to satisfy acceptance criteria
[ ] Acceptance criteria is verifiable / testable
[ ] External / 3rd Party dependencies identified

PR: #2160

Already fixed.


chore(nodebuilder/tests): Clean up integration tests in p2p_test

Cleans up swamp tests in p2p_test.go.
Based on #2162

@walldiss, @distractedm1nd, as this PR is based on https://github.com/celestiaorg/celestia-node/pull/2162
let's review it first, unless I miss something @renaynay


Added metatag to force IE to use latest rendering method

IE (even IE11) seems to be rendering the site using IE7 mode. This is causing the site not to load anything. So we have to force it to use whatever latest version it has.

 Compatibility | IE Browser not loading TFRS Dev Test Prod


Allow example selection in playground

Codecov Report

Merging #485 into master will decrease coverage by 0.00%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #485      +/-   ##
==========================================
- Coverage   93.54%   93.53%   -0.01%
==========================================
  Files         209      209
  Lines        7170     7159      -11
==========================================
- Hits         6707     6696      -11
  Misses        463      463

Flag
Coverage Δ

#dotnet
93.53% <ø> (-0.01%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

src/Bicep.Cli.UnitTests/PathHelperTests.cs
100.00% <0.00%> (ø)

wow! that's so great

Yeah this is a great idea.

is the updated playground supposed to be live at https://bicepdemo.z22.web.core.windows.net/ ?


Improving the APIs that take &Path

I tried to do this task myself but the macros are overly complicated.
Could you please make the APIs that take &Path, to look something like this?:
From:
pub fn rerun(n: &Path)

into
pub fn rerun<S: AsRef<OsStr> + ?Sized>(n: &S)

This helps transform these APIs from:
use std::path::Path;
rerun(Path::new("Cargo.toml"));

into just(note, no need for use std::path::Path):
rerun("Cargo.toml");

Working on overhauling the macros to hopefully make more sense and support this :)

This is in 0.4.0. But I think the macros may have gotten worse, not better 😳
Thanks for the suggestion!


Docker Compose Task fails with "HNS failed with error : The parameter is incorrect."

I'm trying to execute a docker-compose.yml which deploys Azure Docker Container Instances needed for Apache Airflow using Docker Compose task and ended up with below error,
Creating network "network_name_default" with the default driver
HNS failed with error : The parameter is incorrect.
##[error]Creating network "msbizopsde-airflow_default" with the default driver
##[error]HNS failed with error : The parameter is incorrect.
Task:
steps:

task: DockerCompose@0
displayName: 'Run services'
inputs:
azureSubscription: abc
azureContainerRegistry: '{"loginServer":"pqr", "id" : "/subscriptions/xxx/resourceGroups/yyy/providers/Microsoft.ContainerRegistry/registries/zzz"}'
dockerComposeFile: '.../docker-compose.yml'
projectName: 'airflowpoc'
action: 'Run services'

@rohit-batra could you take a look at this issue?

@veemvve Is this still an issue ? Can you please share logs with system.debug set to true ? Also can you please share the docker-compose yml file.
Also the whole Pipeline yml file would help as well.

Closing stale issue.


Fixes the leaky key in the telemetry URL

Var scriptIdRegex is not hoisted up and when the call to scrubURL function is invoked it sees scriptIdRegex being undefined and doesn't scrub the URL.
It is ok to declare it as a local variable as all the browsers cache the regex parse tree.
I will port to v0.

Couple of more changes:
Removed version from the customDimensions as it is never populated
Adding cookie present information to customDimensions. This will be easier to monitor if the usage is first time or not.


Fixed named config overwrite for ingredients #281

Adds config_update of subrunning Scaffolds to fixed when running ConfigScope. Fixes #281

Coverage increased (+0.02%) to 83.501% when pulling d61c18ef7e6fad5684f809591e9bd07b526465f6 on pimdh:master into 7fa1f28c998fdc121784b92b15b97d31296cc9a2 on IDSIA:master.

Thanks!


tag latest releases in the staging repo

What type of PR is this?

/kind feature
What this PR does / why we need it:
The latest tag in the staging repository gives an easy way to test the
latest and greatest image of the admission-webhook-server.
This is primarily intended for maintainers of this repository and for
implementers of this API who might want to target their CI systems
against this tag.
Which issue(s) this PR fixes:

None
Does this PR introduce a user-facing change?:

NONE

For clarity, this only tags latest for staging repository.
The production images that users of concrete implementation will rely on should be from the production repository.
Production images will be available in a different repository and the process to promote builds to production is documented here: https://github.com/kubernetes/k8s.io/blob/main/k8s.gcr.io/README.md#image-promoter

Doesn't this replace the release? Do we need both build targets?

Doesn't this replace the release? Do we need both build targets?

If you mean the Makefile target, then yes. This patch renames the target so we won't have release target anymore.

/cc @robscott

This looks ok but can you put in the commit comment why we are renaming release to release-staging (not obvious)

This looks ok but can you put in the commit comment why we are renaming release to release-staging (not obvious)

@bowei Updated the commit message.

/retest


internationalised the label using $.i18n

Fixes #3069

@chetan-v My apologies for jumping in the middle. I'll let you and @wetneb work out whatever else needs to be done before this gets merged.

@tfmorris it's totally fine (and actually helpful!)

@tfmorris apologies for what? your review is helpful for making my code more understandable to others.

Hi, @wetneb @tfmorris
Can anyone tell me what else to add.

Sorry for the delay in merging this!
It looks great to me now, except for a small detail: core-import-formats does not feel appropriate for an extension such as pc-axis since by definition the importer defined there is not part of the "core" package.

Sorry for the delay in merging this!

That's fine

It looks great to me now, except for a small detail: core-import-formats does not feel appropriate for an extension such as pc-axis since by definition the importer defined there is not part of the "core" package.

Yes,
So I do something other extensions do

That sounds like a great idea!


chore(docs): steps to disable commit formatting [tdx-3165]

Small addition to disable commit formatting.

 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.


First pass at bitmap mask support

This is functional but shouldn't be merged as-is.  I'm sending a PR because it's been sitting around in a "good enough for now" state for a while and I want to make it available if anyone wants to work on it (or use it as-is), rather than having it be lost on my drive.
This implements bitmap masks, which applies a layer's mask to the bitmap when it's converted to an image.  It doesn't provide any interface to read or manipulate the mask directly, but it's enough to handle the common case where you just want to get the flattened layer pixels.  Note that the mask enabled flag is ignored; masks are always applied.
This only looks at ChannelID.USER_LAYER_MASK.  I don't know what REAL_USER_LAYER_MASK is, so I left it unhandled.
This is missing:

extract_composite_image support.  The data flow here is different from extract_layer_image, and I haven't looked at what to do here.
There are no tests.

I'm looking to contribute to this PR- I need to be able to export a layer's mask data as a PIL object. Any hints to get my started in the right direction would be appreciated. Also, advice as to how the best way to contribute here? Pull request to the fork? Grant me write access to the fork? New PR?


Add CI GitHub Actions workflow

⚠ This repo is Continuously Deployed: make sure you follow the guidance ⚠

Closed in favour of #177


fix api docs

What problem does this PR solve?
Fix api document: /health and /diagnose don't  need /api/{version} prefix.
However the new api.html is a little ugly, but I didn't find an easy way to make it beautiful.
What is changed and how it works?
Check List
Tests

Manual test

 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.

Cool! If you want to do more beautiful, you can pick a theme in this list.

And there is a image that supports custom theme.

em, how about moving them to /api too?

em, how about moving them to /api too?
I thought that's a better solution, but maybe somebody is using them.
Perhaps we can "copy" them to /api? And hide the old ones in document?

@Luffbee Good idea. We can remove obsolete APIs some day in the future.

/rebuild

LGTM, but we need to update the title.

title updated


Curious where the endpoint docs game from?

This is fantastic https://github.com/seemethere/nba_py/wiki/stats.nba.com-Endpoint-Documentation
I'm developing an equivalent node package https://github.com/nickb1080/nba and I'm curious how you found the acceptable parameters for each endpoint. Given the highly dynamic nature of both Python and JavaScript, it would be a cool idea to put these endpoint docs in a simple machine-readable format (JSON?) and generate the API client and some documentation from it programmatically. This would really lower the barrier to developing NBA API clients in other languages, as well as decrease the ongoing cost of providing documentation. I may take a stab at that sometime soon, do you have any interest in taking a similar approach for this package? Thanks for the hard work!

Something like this script, for example, could parse the markdown file into JSON https://gist.github.com/nickb1080/605c487ae72781ed17a6


Users can select a large region at once to annotate

Selection/Drawing Tool:

[x] A selection/drawing tool is available on the map, allowing users to draw a rectangle or polygon.
[x] Users can choose the type of hexagons to add/remove (presence or absence) using the existing toggle button.
[x] The app automatically decides whether to add or remove hexagons.

Adding Hexagons:

[x] The selected area on the map is filled with hexagons of the selected type (presence or absence).
[x] The drawn figure is removed, leaving only the hexagons.
[x] If there are existing hexagons of a different type in the selected area, they are removed and replaced with the new type.

Removing Hexagons:

[x] All hexagons of the selected type within the drawn figure are removed.
[x] The drawn figure is removed from the map.

Automatic Add/Remove Hexagons:

[x] The app automatically decides whether to add or remove hexagons based on the selected area.
[x] This should work intuitively without requiring additional buttons in the interface.

Questions to answer while reviewing:

Do we want an option for select or deselect?
Do we want to be able to keep or remove the rectangle tool? (Do we need both the rectangle and polygon drawer?)

Sergei's PR: The revenge of the polygons.
Love to see the polygon's comeback!
Working smoothly! I would remove rectangle all together, or keep the rectangle but add the select/de-select buttons.

Questions to answer while reviewing:

I think deselect needs to have a button or something on the website. if the button is bad, we can change the interface later, but there were many times it deselected when I want to select instead.
I think rectangle good

I have an alternative suggestion!
It seems to me that it is more convenient to delete with a rectangle, but it is more precise to add with polygons.
So we can leave the rectangle ONLY for deletion and polygons ONLY for addition...

I figured out how to change pop-up messages to make it easier for users to understand how the tools work

I like the idea for using rectangle to erase stuff but would it be confusing for users? maybe we can color the rectangle really bright red to distinguish from absence


Styling

What I did in this PR:

I added the missing components without functionality.
Complete the design now it matches zeplin's design.

Thank you so much for the approval 😄 @christianbiring1


Java: Update workflow to zip bundle files and use build-matrix.json

Issue
Completes: https://github.com/valkey-io/valkey-glide/issues/2000
Description
This is the first step of automating publishing to Maven.
Using the EC2 instance has been removed as it is irrelevant for this task.
Artifacts can be found in https://github.com/valkey-io/valkey-glide/actions/runs/10377721685

nit: you can deactivate all testing CI on your branch while you experimenting


SC.Canvas appears to add a  element inside a  causing an issue with Tailwind CSS

This is my code for a Canvas.svelte component
<script lang="ts">
	import * as SC from 'svelte-cubed';
	import * as THREE from 'three';
	import ReusableGltf from '$lib/components/atoms/ReusableGLTF.svelte';
	import { updateModelStatus } from '$lib/stores/stores';
	export let modelURL;

	function handleStatusChange(evt) {
		updateModelStatus(evt.detail);
	}
</script>

<SC.Canvas antialias shadows background={new THREE.Color('papayawhip')}>
	<SC.PerspectiveCamera position={[0.5, 0, 10]} />

	<SC.OrbitControls enableZoom={false} />

	<SC.DirectionalLight
		color={new THREE.Color(0xffffff)}
		position={[10, 10, 10]}
		intensity={1}
		shadow={false}
	/>
	<SC.AmbientLight color={new THREE.Color(0xffffff)} intensity={0.75} />
	<ReusableGltf {modelURL} on:statusChange={handleStatusChange} />
</SC.Canvas>

DevTools shows the following elements in the DOM tree:

Is the SC.Canvas automatically embedded in this <div class="container">?
When using tailwind, this causes the div to have the same dimensions as the next-lowest media query breakpoint. It would make it necessary to override the Tailwind container class, in order to properly resize the canvas.

yes it is.
or copy the source into local project and adjust to suit.

I'm having a similar issue as well. Would it be possible to change the library to use a name like sc-container? I think this would fix the issue and make the library more compatible with other libraries that use a container class. I would be happy to take up this issue if needed.


Internal Server Error: We were unable to reach PuppetDB

Just got everything installed and configured.  PuppetDB working in other areas (foreman).  The site loads, but only some of the tabs work, and only some of the time.    Sometimes I have to click on them 10-15 times and then they will load with data, if I click on the same tab again, I get the same error:
Internal Server Error
This error usually occurs because:

We were unable to reach PuppetDB;
The query to be executed was malformed resulting in an incorrectly encoded request.
Please have a look at the log output for further information.

I have enabled debugging, but I don't get any errors that I can see.  I have verified the host/port settings, they are the same that foreman uses to query, and that works.
https://gist.github.com/tek0011/480f535b7735a3c729903048377e2ff4
Without any errors or anything showing strange in the logs, I am not really sure where to go from here.

I changed the IP in settings.py to be the actual IP.  localhost, <IP_ADDRESS> and <IP_ADDRESS> did not work.
Seems to be working now.


Day/night toogle fix

📝 Proposed Change
Experiment on using useLayoutEffect instead of useEffect
💡 Why is this important
White screen for 0,00000006 sec on the first load (local storage travel is not that fast)
👍 Additional Context
🤓

page 162


Handle other Warden strategy errors in API response

If an app has other Devise modules enabled, like :lockable, we need to handle those in the OAuths controller as well.
Since the default Warden middleware responds with HTML, but we need to deliver JSON, we need to catch the :warden error and respond accordingly.

Nice work! Thank you!


GH-35352: [Java] Fix issues with "semi complex" types.

Rationale for this change
"semi complex" types like TimeStamp*TZ, Duration, and FixedSizeBinary
were missing implementations in UnionListWriter, UnionVector,
UnionReader and other associated classes.
This patch adds these missing methods so that these types can now be
written to things like ListVectors, whereas before it would throw an
exception because the methods were just not implemented.
For example, without this patch, one of the new tests added would fail:
    TestListVector.testWriterGetTimestampMilliTZField:913 ? IllegalArgument You tried to write a TimeStampMilliTZ type when you are using a ValueWriter of type UnionListWriter.

There are also fixes for get and set methods for holders for the respective
*Vectors classes for these types:

The get methods did not set fields like TimeStampMilliTZHolder.timezone,
DurationHolder.unit, FixedSizeBinaryHolder.byteWidth.

The set methods did not all validate that those fields matched what
the vector's ArrowType was set to. For example TimeStampMilliTZHolder.timezone should
match ArrowType.Timestamp.timezone on the vector and should throw if it doesn't.
Otherwise users would never get a signal that there is anything wrong with their code writing
these holders with mismatching values.

This patch additionally marks some of the existing interfaces for writing these
"semi complex" types as deprecated, because they do not actually provide enough
context to properly write these parameterized ArrowTypes. Instead, users should
use the write methods that take *Holders that do provide enough context for the
writers to properly write these types. Also note that the equivalent write
methods for Decimal have already also been marked as deprecated, for the same
reasoning.
What changes are included in this PR?

Various template changes. See this gist for a diff of the generated files: https://gist.github.com/henrymai/03b0f5a4165cd9822aa797c89bbd74e9

Note that the diff for the ComplexWriter.java generated ones is not included since that change is easy to see from just the template.

Additional tests to verify that this is fixed.

Are these changes tested?
Yes, added unit tests and they pass.
Are there any user-facing changes?
Yes, users will now be able to write to types like TimeStamp*TZ, Duration, and FixedSizeBinary on ListVector, MapVector, StructVector due to added implementations for these types on UnionListVector, UnionWriter.
This also marks the non-holder write interfaces for these types as @Deprecated.
The interfaces themselves have not been removed, so this part is not a breaking change.
Also as mentioned above, this follows in the footsteps of what Decimal* has already done, where they marked the non holder write interfaces as @Deprecated.
Additionally another user visible change is that when reading these types into a holder all of the fields are now populated. For example TimeStamp*TZHolder.timezone is now populated when it was not before.

This PR includes breaking changes to public APIs.
We now throw an exception when some of the holder fields that correspond to the Vector's ArrowType parameters do not match.
This is a breaking change because previously this would silently accept the writes but was actually incorrect, since the element written does not correspond to the right ArrowType variant due to mismatching parameters (like ArrowType.Timestamp.unit, ArrowType.Duration.unit, and ArrowType.FixedSizeBinary.byteWidth).

Closes: #35352

Sorry, it looks like I published this too soon. I forgot to run the rest of the suite of tests (my script was scoped down to just the TestListVector test.

@lidavidm
Sorry for the delay, this PR should be ready for review now.
It turned out to be a much larger change after I discovered how much of the implementation for these types were missing (prior to my patch).
In order to help reviewers more easily review this change, I've uploaded a set of diffs for the generated files that result from the modified templates here: https://gist.github.com/henrymai/03b0f5a4165cd9822aa797c89bbd74e9

Thanks!
@davisusanibar or @lwhite1 are one of you able to give this a first pass review?

@lidavidm
Hey just wondering if anyone is reviewing this change?

Sorry - I didn't mean to let it sit this long. It looks like my colleagues are already occupied so I'll add this to my queue for the coming week.

@lidavidm
Hey just wondering if anyone is reviewing this change?

Hi @henrymai let me review your PR on these 02 days.

Thanks for the fixes, and thank you for providing the diffs for the templated code. Working with these templates is not fun...
Is it possible to add some assertThrows tests for the new exceptions?

Thanks for the fast review. I'm a little swamped this week from being oncall, but I will try to get these comments addressed and extra tests added soon.

@lidavidm
Just updated the pull request with the changes requested.

This failure: https://github.com/apache/arrow/actions/runs/4944690020/jobs/8847763584
Also looks like its unrelated to my change since its failing while trying to build LLVM from source?

Thanks!


virtio-win-gt-x64.msi missing from latest virtio-container-disk

The setup shown in https://kubevirt.io/user-guide/user_workloads/startup_scripts/ where you can run
# install Qemu Tools (Drivers)
Start-Process msiexec -Wait -ArgumentList '/i e:\virtio-win-gt-x64.msi /qn /passive /norestart'

isn't working anymore as virtio-win-gt-x64.msi seems to be missing from the latest virtio-container-disk.
Can you confirm this is the case, and if so, suggest any workaround?

This is strange, since I manually opened the container disk image (from linux) and the files are there:
# ls /mnt/iso1/
amd64	 fwcfg	      NetKVM	 qemupciserial	smbus  viogpudo  vioscsi    virtio-win-gt-x64.msi	virtio-win_license.txt
Balloon  guest-agent  pvpanic	 qxl		sriov  vioinput  vioserial  virtio-win-gt-x86.msi
data	 i386	      qemufwcfg  qxldod		viofs  viorng	 viostor    virtio-win-guest-tools.exe

However windows isn't showing them:

Any idea of what could be wrong here?

Ok so it seems there's a difference between quay.io/kubevirt/virtio-container-disk (which pulls :latest) and a specific tagged release (eg :v1.3.1); latest does not have those files, while the tagged version has them.
If this is the way it's supposed to be, I suggest mentioning this fact and fixing the documentation, as using latest and trying to install virtio-win-gt-x64.msi won't work since the file isn't present; if not, then fix the release/build process so that latest too includes those files.

/assign
Thank you @waldner for reporting this! I'll look into it.

@dhiller the latest tag for quay.io/kubevirt/virtio-container-disk points to a revision from 3 years ago, it seems like we just never update it.
Is that something that could be addressed in the scripts that update the container image?
In the meantime, should I manually update latest to point to the actual latest (20240925_2f0bd1d4a)?
Thanks!

@jean-edouard hmmm, I figure this is a leftover of our move away from docker to quay. IIRC docker always automatically updated the latest tag, while quay doesn't do this, since using latest is considered an anti pattern.
I believe we might add some logic into the release script to update the latest tag - however since I see that there's images tagged with the released versions (i.e. go to https://quay.io/repository/kubevirt/virtio-container-disk?tab=tags, then enter v1.3.1 in the search field), I would suggest using the proper tagged version.
WDYT?

@jean-edouard on another note - should it really be like this that we are just always moving some latest tag, and how do we decide what version latest tag points towards? I.e. there's the nightly build which also would qualify as latest, no?

In general, I would suggest we delete the latest tag and update the documentation.

In general, I would suggest we delete the latest tag and update the documentation.

The thing is that the docs are not version-specific, and I see a lot of latest occurrences. Does this issue exist in every quay repository? If so, I think we need up-to-date latest tags, at least until we fix all the docs.
How feasible would it be to update latest on all repos every time we release the latest branch?

I'd also like to point out another documentation error (let me know if you want me to open a separate issue for this), in the virtual hardware page, in the machine type paragraph (https://kubevirt.io/user-guide/compute/virtual_hardware/#machine-type) there's wording suggesting that custom machine types can be used, which is partially true but the shown example (pc-q35-2.10) is wrong as kubevirt seems to support only custom pc-q35-rhelxxxxx machine types. Here's what I get with /usr/libexec/qemu-kvm -machine help:
Supported machines are:
pc                   RHEL 7.6.0 PC (i440FX + PIIX, 1996) (alias of pc-i440fx-rhel7.6.0)
pc-i440fx-rhel7.6.0  RHEL 7.6.0 PC (i440FX + PIIX, 1996) (default) (deprecated)
q35                  RHEL-9.4.0 PC (Q35 + ICH9, 2009) (alias of pc-q35-rhel9.4.0)
pc-q35-rhel9.4.0     RHEL-9.4.0 PC (Q35 + ICH9, 2009)
pc-q35-rhel9.2.0     RHEL-9.2.0 PC (Q35 + ICH9, 2009)
pc-q35-rhel9.0.0     RHEL-9.0.0 PC (Q35 + ICH9, 2009)
pc-q35-rhel8.6.0     RHEL-8.6.0 PC (Q35 + ICH9, 2009) (deprecated)
pc-q35-rhel8.5.0     RHEL-8.5.0 PC (Q35 + ICH9, 2009) (deprecated)
pc-q35-rhel8.4.0     RHEL-8.4.0 PC (Q35 + ICH9, 2009) (deprecated)
pc-q35-rhel8.3.0     RHEL-8.3.0 PC (Q35 + ICH9, 2009) (deprecated)
pc-q35-rhel8.2.0     RHEL-8.2.0 PC (Q35 + ICH9, 2009) (deprecated)
pc-q35-rhel8.1.0     RHEL-8.1.0 PC (Q35 + ICH9, 2009) (deprecated)
pc-q35-rhel8.0.0     RHEL-8.0.0 PC (Q35 + ICH9, 2009) (deprecated)
pc-q35-rhel7.6.0     RHEL-7.6.0 PC (Q35 + ICH9, 2009) (deprecated)
none                 empty machine


Add sidecar command, like exiftool (See #691)

Like exiftool command for #691, an osxphotos sidecar command could be added to generate sidecars after an export has been conducted.
osxphotos sidecar /path/to/dest --sidecar xmp --sidecar json --keyword-template xxx ...
generates sidecars and then updates export db.

Not needed because doing --update --sidecar xmp will already work as desired.


Health check for UI angular apps

The document says how to implement the health checks for backend API's.
Front end apps are deployed to app service too. How to perform a health check/probe on front end apps.
How do we return status as "Healthy" , "Unhealthy" for front end app service.

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

ID: 20c42a13-f6cb-1e60-0438-f7f32b86a336
Version Independent ID: 79e7dd15-24aa-2e6d-cee7-7714e1940c11
Content: Monitor the health of App Service instances - Azure App Service
Content Source: articles/app-service/monitor-instances-health-check.md
Service: app-service
GitHub Login: @msangapu-msft
Microsoft Alias: msangapu

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

Apologies for the late reply @SGeorge007. Health check probing is against the app service, not a particular type running on the platform. When you enable health check, you can set the URL to anything you want, as long as it's a valid URL for your application that will return a 200. For your angular app, this can be as simple as returning index.html but it's best to return a template that doesn't possess a lot of markup like
up and running
.


better crypto exception handling

Logs decryption errors with stack traces only in debug mode.

What will the messages look like on startup if we have an encrypted property requiring unlimited strength crypto and we don't have that enabled in the JVM? Right now in 5.3 we get something like this:
2018-12-08 11:12:39,386 ERROR [org.apereo.cas.CipherExecutor] - <Could not decrypt value [{cipher}asdfasdfasdfasdfasdfasdfasdfasdf=]>
org.jasypt.exceptions.EncryptionOperationNotPossibleException: Encryption raised an exception. A possible cause is you are using strong encryption algorithms and you have not installed the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files in this Java Virtual Machine

Shouldn't there be something generic in the DecryptionException to give people hints as to why their decryption failed? What is the harm of passing along the original exception message? Is it that current message includes the encrypted value?

The issue is on the decryption side. Because of where an SSO system sits, those with access to the logs may not already have access to the keys in the config. Providing the full decryption exception is a padding Oracle in that somewhat unlikely case. The original exception is rethrown if the logger is set to trace.


[Bug]: Armor bar itself is glitched out

Is there an existing issue for this?

[x] I have searched the existing issues

Are you using the latest version currently available?

[X] I am using the latest version currently available

Description
Apparently, whenever you put a piece of armor on, the armor bar's rendering just doesn't properly load. The textures are all warped, and it's hard to know how many armor points you have. It's strangely placed above the hunger bar too.
Screenshot is offered below.
I assume it's maybe a mod incompatibility, since I have a couple other inventory GUI altering mods.
Version
3.0.x for Minecraft Forge 1.19
Version
No response
To Reproduce

Open a world in survival (with mods showcased in screenshots)
Armor bar seems to appear, but it is above the hunger bar instead, and it's completely distorted.

Expexted Behavior
Armor bar should have appeared as chestplate looking things, with numbers on the side (similar to the health points), and no distortion with clear distinction of how many armor points you have. It also needs to be above the health bar.
Additional Context
I am playing on a relatively large modpack, with over 225 mods.
Screenshots
Picture of armor bar

Mods page 1

Mods page 2

Relevant Log / Crash-Report Output
Log Report
https://gist.github.com/vainlaind4in/53343095f3af8625266295662bfe1165

This is an incompatibility for sure, and on forge 1.18 and 1.19 , ap++ doesn't do anything hacky that would be able to break... So i'm 95% sure it's purely some other mod's fault.
But i can't for the life of me figure out which mod's fault it is in such a big pack.

I have added the log into the issue, hopefully it might help with what is happening.

Can't see any exceptions related to ap++ (as is expected with rendering issues - they are weird behavior and not loggable errors)
The only thing that would help narrow down the problem would be to either somehow dump the hud component registry (which i doubt is possible) or try to reproduce this with a subset of the pack (the mods most likely to cause this) - the latter of which i can't do as i don't have the pack you're playing (and i sadly don't have the time to do this, currently, too)

Forgot to add this, but apparently, the numbers for the armor bar show up on the very top of the screen, where it is aligned with the health bar, as well as the toughness icons also appear where the armor points should've been.

that, in combination with the armor bar - or what's left of it - being rendered on the right side actually makes me think that some mod tries to prevent the armor bar from rendering but fails to properly set up it's own render state when trying to render it's own bar...
so probably nothing i can fix on my end, sadly

closing due to inactivity


insta-load: a bit smaller with binary literal

@franciscod  Thank you for your contribution. Indeed, it's a bit smaller now. I did a small adjustments in https://github.com/igrek51/wat/pull/8.


Does lung segmentation help?

Intuitively I feel that instead of feeding raw image, cutting out lungs and rescaling them to the maximum resolution would yield better results.
Any thoughts?
Perhaps feeding in right and left lungs individually would also be a good idea?
https://dl.dropboxusercontent.com/u/8557832/lungs.png

I think this is a smart idea, we want lots of detail, but large images will be slow to train so it makes sense to crop out as much as possible. It might be a bit tricky accurately segmenting the lungs though, only the china dataset seems to have labels with the outlines of lungs. Any ideas?
Feeding each lung in seperately I'm not sure about, party because this might make it harder to detect asymmetries and partly because the heart is only on the persons left, so each lung might require different features. I'm not sure whether this is important, perhaps it would be good to contact someone with domain knowledge?

only the china dataset seems to have labels with the outlines of lungs

Can you share the dataset with outlines?
I have got only NLM Montgomery dataset with lung outlines, 138 images in 4K resolution.
Using unet + opencv to cut out the lungs, couple days away from getting it done.

Sorry my bad, it's only the NLM Montgomery set that has outlines. Do you have a plan for segmenting/cropping the x-rays in the large dataset, which aren't labelled with outlines?

Yes, trained unet on the NLM dataset and it cuts lungs from arbitrary images.

Now can center lungs and resize to max resolution. Yet to test how much this improves the results.

I observe substantial improvement with segmented images.

Nice one!

Yep - intuitively I think cropping the images like this will help with this classification task.
To make the diagnoses included in the datasets you only need the images of the lungs.
The amount of 'non-lung' image can be variable - because the radiographer (like a photographer who takes the x-rays) wants to capture the image of the whole lungs, but often this needs coordination with a patient who is unwell and can't take a good breath or stay still or even understand.
The broader clinical task of using chest radiographs in diagnosis uses the cropped elements - looking for things like rib fractures, ruptured bowel, changes in the bone or evidence of weight loss in patients with cancer to name a few. These other findings are less frequent than the diagnostic elements labelled in the included datasets.


Support getting workplace users

Adds method getWorkplaceUserProfile

This method looks almost exactly the same as getUserProfile, can't we reuse the same method by adding an options param so we can check for the workplace version?

Could do -- I kept it separate as the result (i.e. the user profile model) also differs in both cases.


QP code path: solver-supported Constraint classes aren't being checked

The QpSolver base class (from which OSQP and others inherit) supports Zero cone and NonPos cone constraints. If we define a problem explicitly with a NonNeg constraint and then request OSQP as a solver, then I would expect the QP canonicalization code path to either (1) convert it to NonPos or (2) raise an error saying that OSQP doesn't support NonNeg constraints.
Neither of these things is happening right now; here is a minimal breaking example.
import cvxpy as cp
import numpy as np
from cvxpy.tests.base_test import BaseTest

class MyTest(BaseTest):

    def test_nonneg(self):
        n = 3
        x = cp.Variable(n)
        c = np.arange(n)
        prob = cp.Problem(cp.Minimize(cp.sum(x)), [cp.NonNeg(x - c)])

        # Solve through cone program path.
        prob.solve(solver=cp.ECOS)
        self.assertItemsAlmostEqual(x.value, c)

        # Solve through QP path.
        prob.solve(solver=cp.OSQP)  # OSQP says the problem is unbounded!
        self.assertItemsAlmostEqual(x.value, c)

Small note: I discovered this while modifying CVXPY to reduce dependency on the NonPos class in favor of NonNeg. There is a test_nonpos function in test_constraints.py that's almost identical to the function I wrote above. I expected that test to fail because OSQP isn't declared as supporting NonNeg, but it actually failed because OSQP claimed it was handed an unbounded problem.

Could someone familiar with QP canonicalization look into this? Ping @akshayka, @SteveDiamond, and @bstellato.

I think the solution is to do something like this commit:
https://github.com/cvxpy/cvxpy/pull/2155/commits/6fb2f915d6828503f50e9d57106a9b717476b0a6
More specifically, we'd need to create and use a new nonneg2nonpos function, rather than use the existing nonpos2nonneg function as I did in that commit.

Good catch! I agree with your proposed fix.

resolved by #2155


[ 2° ] - Release/v1.4.0 refactor backend configuration: Refactor and configure backend helm chart

Why we create this PR?
This PR contains the following changes:

Configured the backend component directly from the helm values (Mentioned in the issue comment:<PHONE_NUMBER>
Refactored helm values and templates/configmap-backend. Only specific application settings are visible to the user and the core configuration (not relevant to a user) is hidden
Fixed trailing spaces

What we want to achieve with this PR?
To prepare for a reference implementation
What is new?
Updated

Updated ingress settings and backend configuration in the helm chart
Refactored helm values to show only user relevant settings

IP checked are executed and nothing was found


Resampling in training

Hello, thank you for making your code publicly available! Great work.
This is not a question, but I was confused about the implemented processing. That confusion is already resolved, but let me share what happened to me.
I know that README says, "this implementation assumes a sample rate of 16 kHz". On the other hand, the original sampling rate of VoiceBank-DEMAND is 48 kHz as you know. So, we need to resample audio signals for applying CDiffuSE to this dataset.
Indeed, your scripts resample audio signals in preprocessing and inference.
For preprocessing:
https://github.com/neillu23/CDiffuSE/blob/e4b069f1cb40f5406cff0b9295426026c3ea6ecc/src/cdiffuse/preprocess.py#L37
For inference:
https://github.com/neillu23/CDiffuSE/blob/e4b069f1cb40f5406cff0b9295426026c3ea6ecc/src/cdiffuse/inference.py#L185
But, audio signals are not resampled in training:
https://github.com/neillu23/CDiffuSE/blob/e4b069f1cb40f5406cff0b9295426026c3ea6ecc/src/cdiffuse/dataset.py#L56-L57
To reproduce your experimental results, I read the README of this repository and used this script as it is. Then, audio signals of 48kHz are loaded in dataset.py and given to the diffusion model as they are during training. When I checked an audio signal that is saved here
https://github.com/neillu23/CDiffuSE/blob/e4b069f1cb40f5406cff0b9295426026c3ea6ecc/src/cdiffuse/learner.py#L172
, I confirmed that it seems like the signal is played slowly. This is because an audio signal of 48 kHz is saved as a 16kHz signal.
It might be better either to resample audio signals also in dataset.py or to explicitly note that users need to resample audio signals by themselves in advance. That is clearer, at least to me.
Sorry for the long post. Best regards.

Hi @yahshibu , thank you so much for clearing this up!!
I had been working with the 16kHz version for a while and I didn't notice that the original data in the link VoiceBank-DEMAND was 48kHz. This caused a lot of problems when users tried to reproduce it. I will add the resampling process to dataset.py as you suggested. Thanks again for your help!!!


Add border color

Hi,
Is it possible to add a border to each chip?
I tried overwriting the layout of toogle_on and toggle_off, adding a stroke but when I run the application this border is not visible.
I appreciate any suggestions or help
Thank you

@gersard Can you please tell me the method of importing the whole library manually in your project without using gradle .. Because if I want to add some changing into the library and then add it in my project

@thatsmoodi
Hi, I import the library through gradle
Then I overwritten some xml files (I create xml files with the same name they have inside the library) and there edit some aspects, except the border.
If you have more doubts let me know and if I can add a border, also haha
regards

@gersard Thanks for guiding me. Btw there is another library available for Tagview which allows border color and much more customisation

Any news on this issue ? Even I'm looking for solution to get borders on tagview.


download official mc client when there's an official release

This comment indicates that official releases will be ready later this month. When the release is ready, mc should be downloaded on docker build instead of checked into this repo
Relates to https://github.com/deis/minio/issues/30 and https://github.com/deis/slugbuilder/issues/13.

obsoleted by #128, closing


Fix daemon start/stop logic in hack/make/* scripts

From the Bash manual's set -e description:
(https://www.gnu.org/software/bash/manual/bashref.html#index-set)

Exit immediately if a pipeline (see Pipelines), which may consist of a
single simple command (see Simple Commands), a list (see Lists), or a
compound command (see Compound Commands) returns a non-zero status.
The shell does not exit if the command that fails is part of the
command list immediately following a while or until keyword, part of
the test in an if statement, part of any command executed in a && or
|| list except the command following the final && or ||, any command
in a pipeline but the last, or if the command’s return status is being
inverted with !. If a compound command other than a subshell returns a
non-zero status because a command failed while -e was being ignored,
the shell does not exit.

Additionally, further down:

If a compound command or shell function executes in a context where -e
is being ignored, none of the commands executed within the compound
command or function body will be affected by the -e setting, even if
-e is set and a command returns a failure status. If a compound
command or shell function sets -e while executing in a context where
-e is ignored, that setting will not have any effect until the
compound command or the command containing the function call
completes.

Thus, the only way to have our .integration-daemon-stop script actually run appropriately to clean up our daemon on test/script failure is to use trap ... EXIT, which we traditionally avoid because it does not have any stacking capabilities, but in this case is a reasonable compromise because it's going to be the only script using it (for now, at least; we can evaluate more complex solutions in the future if they actually become necessary).
The alternatives were much less reasonable.  One is to have the entire complex chains in any script wanting to use .integration-daemon-start / .integration-daemon-stop be chained together with && in an if block, which is untenable.  The other I could think of was taking the body of these scripts out into separate scripts, essentially meaning we'd need two files for each of these, which further complicates the maintenance.
Add to that the fact that our trap ... EXIT is scoped to the enclosing subshell (( ... )) and we're in even more reasonable territory with this pattern.

Also, the majority of this diff is actually whitespace changes, so https://github.com/docker/docker/pull/12500/files?w=1 is a much better link for reviewing the actual diff (which takes it down to a manageable and even awesome 5 changed files  with 3 additions and 32 deletions.).

LGTM

ping @icecrime or @crosbymichael

Rebased and updated with the changes from #12376 :+1:

LGTM


As a user, I want to be notified about actions on my comments

I really miss features from Disqus where I can see:

someone replied to my comment
someone upvoted my comments (upvotes summary, not every click on sign "+")

Hmm, remark doesn't have any ways to sent you notifications as far as I can see.

@Guria the only notification you can get now are RSS based, i.e. pull, for site updates and post updates. You can feed them into IFTTT and make tweets, telegram, slack messages or anything else you like.
@misterioss probably I can add "user RSS" to report replies, but votes summary is more complicated, and I don't think anyone actually doing it. I don't recall any notification on votes from disqus, reddit or hackernews.
also, see https://github.com/umputun/remark/issues/15

@umputun I have a few questions, it relates what we talked at #125

For example a user posts a comment.  And user wants to be notified, that is ok. But if another one replies to comment A (not to initial comment) what should happen? Should remark notify user or not? This is reply to user's reply
I think remark should notify user from replies to all his comments, not for last N. I mean it will better :) what do you think?

For example a user posts a comment.  And user wants to be notified, that is ok. But if another one replies to comment A (not to initial comment) what should happen? Should remark notify user or not? This is reply to user's reply

We can simplify this thing logically and technically if we consider direct replies only. In this case, we could match by parent-id (pid) which should be relatively straightforward.

I think remark should notify user from replies to all his comments, not for last N. I mean it will better :) what do you think?

RSS will be limited anyway. If the user got 1000 replies during his rss-update window we won't be able to serve such RSS with 1000 items. I don't think this will be any real issue if we set max. items for such rss to 100  and hopefully client-side (rss reader, ifttt, etc..) will pull it every 5 minutes.

@umputun First one is ok, I got it.

I think remark should notify user from replies to all his comments, not for last N. I mean it will better :) what do you think?

I mean about search implementation details. I can get last K user's comments from users bucket and then find replies for them from posts bucket. Then sort and limit up to maxRssItems. But if a last reply was added to K+1 user's comment this query doesn't search it. And a user won't be notified.
So to find last replies for all user's comment K limit should be increase to length of all user's comments. And I think it is not good, because this search will full scan all posts bucket.
So if this point makes sense I can offer to implement replies bucket to store replies to a user. Like a users bucket where userID will be a (sub)bucket with ts -> replyID to this user

Ok, I see what you mean. K+1 will be missed in the case you have described, agree.
Technically speaking, implementing replies bucket (probably it should be replies_to) with userID as a first level key holding bucket as a value, and inside of this bucket something unique (comment time?) as a key and comment meta as a value, can work. The question I have - what will be a good key and what should be the struct for value? Probably you can make this value similar to the PostInfo with Locator, User, ParentID, and Timestamp to make this new bucket flexible enough for any reply-related extraction.
From the other hand, adding such replies_to "index" and extending engine interface for this particular use case feels a little bit too much work/change for such enhancement. I think the better way is to keep engine and buckets untouched and figure a way to retrieve replies by leveraging the exiting interface. If you change the logic described in #125 and start with K last comment for the site instead of user comments, it can be done just on the service level without touching the engine.  In addition, you can break the loop the moment you got N results (max. number of RSS items) or reached time-stamp outside of allowed duration (like 30 mins or so).

That's great! I had thoughts about Last bucket, but I was confused because I was thinking about this implementation as a "static" endpoint, that must return last replies always and not depending on time. I mean the case when first pull retrieves last N replies and after amount of time when newer comments/replies adds (not for that user) and window with height K moves upper so the second pull can retrieve less replies. And it should mean for rss reader that newer replies were not added (not that replies were deleted), yes?

with #145 merged we have GET /api/v1/rss/reply?site=site-id&user=user-id in place. Now we need a third RSS option in "Subscribe to this ..." on UI side.

@Guria @igoradamenko - I'm not sure if we need another link or dropdown list or something else.

@umputun  I'm not sure that it makes sense. But if a reply is editted cache won't be flushed.
So the next pull from reader (to get replies to this user) may retrive old version of reply.

@akosourov update invalidates several caching scopes - locator.URL, "last" and user.ID
In order to register reply cache with proper scopes, I have added "last" to its cache's scope keys and this should do it. s.Cache.Get(cache.Key(cache.URLKey(r), siteID, "last")

@umputun, @akosourov maybe Chrome Push Notifications could be helpful in this scenario? (https://developers.google.com/web/fundamentals/codelabs/push-notifications/).

@umputun I'll take care of it


Why this vs deepcake/echo?

This framework was designed and implemented by deepcake, and is now maintained by player-03.

This sentence makes me think that https://github.com/deepcake/echo is no longer maintained. Is this really true? Can we add more context? What is the story behind this repo? Why did you create this separate repo? Would be curious to know :)
EDIT: maybe we can add a note to deepcake/echo pointing here if it's really true that it is now maintained here.

Oh whoops, sorry for the late response. I didn't get a notification for this.
In 2021, deepcake stated "Unfortunately, I no longer have any motivation or time to spend on this framework. And I would rather leave it as it is, with backward compatibility." In short, deepcake's version will no longer be updated, but I and onehundredfeet are still maintaining our respective forks.
As for getting deepcake to endorse this fork? They would first have to decide between my and onehundredfeet's repos, and reviewing two repos requires time and motivation. But who knows, they might approve a PR linking to both options. Guess that's worth a shot.

Thanks for the background, it's good to know!
I was using the original version, but could consider trying one of the forks.
Do you have any insight on your vs onehundredfeet's version?
If you don't get to it I can try to add your links to the deepcake repo. Cheers

Do you have any insight on your vs onehundredfeet's version?

Working on it now, for the pull request.
tl;dr is that mine focuses on ease of use and issues that I've run into while developing single-player games. hmecs seems to be more focused on performance at scale.

I submitted a pull request (deepcake/echo#8). Does it look good?

Sure, left a comment there. Thanks for following up!

Closing now that the pull request was accepted.


cleaning up account schema

Getting rid of username in account db schema. Email address treated as username.

I've sorted this out in the authentication branch.


Option for sending CHIPERASE and NVMPROG keys at the same time

Hi there,
First off - thanks for writing and publishing this. It has been a great help to me in writing my own UPDI-talking code.
I would like to draw your attention to a curious quirk of the way the chips work, that can sometimes be hard to get out of. I discussed it on
https://www.avrfreaks.net/forum/attiny814-not-accepting-nvmprog-key#comment-2706166
but in summary: if you write a bad fuse value to SYSCFG0 it requires you to load both CHIPERASE and NVMPROG keys at the same time before you issue the system reset request, in order to get out of it.
I have a added an option to do that to my own code, you may wish to add similar to yours.

thanks for the reminder :)
PR in the making...


A11y_Azure Tools Storage Explorer_Disk_Delete Disk_Screen reader: Voice over is not announcing the Name "Microsoft Azure Storage explorer" of the dialog.

Preflight Checklist

[X] I have installed the latest version of Storage Explorer.
[X] I have checked existing resources, including the troubleshooting guide and the release notes.
[X] I have searched for similar issues.

Storage Explorer Version
1.32.1(96)
Regression From
NO
Architecture
x64
Storage Explorer Build Number
20231114.10
Platform
macOS
OS Version
MAC Version 13.6.1
Bug Description
GitHub Tags:
#A11yMAS;#A11yTCS;#MAC;#DesktopApp;#A11ySev2;#BM_AzureToolsStorageExplorer_MAC_Dec2023;#Azure Tools Storage Explorer;#FTP;#Voiceover;#MAS1.3.1;#Info and Relationship;#Element:Dialog;
Environment Details:
Application: Microsoft Azure Storage Explore
version: 1.32.1 (96)
Screen Reader: Voice Over
Steps to Reproduce

Launch Storage Explorer
Tab Navigate to "Open Connect dialog" pane and Sign into Azure.
Tab Navigate to "Manage Accounts" pane and Select the subscriptions you will use. Once selected, click on "Apply" button.
Tab Navigate to "Disks" of the selected subscription.
Tab Navigate to "A11ytest" and click on it.
Tab Navigate to Delete Disk button and click on it.
"Delete Disk" Popup gets opened.
Turn on Voice Over and Observe that Voice over is not announcing the Name "Microsoft Azure Storage explorer" of the dialog.

Actual Experience
When User press enter on Delete button a dialog open Voice over is not announcing the Name "Microsoft Azure Storage explorer" of the dialog.
Expected Experience
Voice over should be announcing the Name "Microsoft Azure Storage explorer" of the dialog.
Additional Context
User Impact:
Screen reader users will face difficulty if Voice over is not announcing the Name "Microsoft Azure Storage explorer" of the dialog.
Attachment:

@keerthiduvvuri I am not able to reproduce this on Sonoma 14.2.1. VoiceOver announces the title of the dialog as expected. What happens if you switch on VoiceOver before the dialog opens?

@craxal as soon as user hit enter on delete button this Microsoft azure storage explorer dialog open and voice over announces as warning one more item, one more item dialog yes button, anywhere it was not announcing the dialog name.

@MRayermannMSFT @JasonYeMSFT @richardMSFT Can any of you reproduce this? My Mac is on 14.2.1, so my VoiceOver version may behave differently.

Here is my finding when I try to reproduce this issue:
When dialog window shows up, the dialog title is initially set to "Storage Explorer". VoiceOver starts reading it but will be quickly interrupted and starts reading the "warning one more item, one more item dialog yes button" message.

This issue is not isolated to React dialogs. It occurs in Knockout dialogs as well. This isn't trivial, as it require making changes to the element with the "dialog" role. The role needs to be configurable, and labels need to be provided.

@keerthiduvvuri We have merged a fix for this issue in regard to messages boxes. Please verify and close.

##Closed;


Issue with foundation emails 2.3.0

How can we reproduce this bug?
I cloned the master repo, checked to develop branch, and ran npm install. After which I tried npm start.  I ran into the following error.

The reason I'm trying to do this so that I can recreate an old email in 2.3.0. Am I doing something wrong?

Upon a closer look at this it seems this is caused by the following code in the docs:


feat!: made EvaluationContext fields unexported with a constructor and setters to enforce thread safety

Signed-off-by: Skye Gill<EMAIL_ADDRESS>

Codecov Report

Merging #91 (1f3b60a) into main (9fbed88) will decrease coverage by 0.05%.
The diff coverage is 74.46%.

@@            Coverage Diff             @@
##             main      #91      +/-   ##
==========================================
- Coverage   69.24%   69.19%   -0.06%
==========================================
  Files           7        8       +1
  Lines         569      607      +38
==========================================
+ Hits          394      420      +26
- Misses        158      170      +12
  Partials       17       17

Impacted Files
Coverage Δ

pkg/openfeature/evaluation_context.go
67.74% <67.74%> (ø)

pkg/openfeature/client.go
69.41% <87.50%> (+0.03%)
:arrow_up:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

This looks good.
I think the only thing I'm missing here is the lock on global providers and hooks, as well as client hooks. We probably want to read-lock all of these during evaluation, and write lock them during mutation.

Great points. I've tackled this in another PR: https://github.com/open-feature/go-sdk/pull/93


Run Queen algorithm to determine value

Update the nodes to use the queen algorithm with initalResponse to determine actual response.

This needs tests for:

sets of faulty nodes still comes to consensus
sets of too many faulty nodes does not come to consensus


Conform OrderedDictionary to Collection by wrapping integer indices in a non-Hashable index type

This is likely a bad idea. I'm pitching it here on the off-chance that it might lead to a better solution.
Currently OrderedDictionary  is unable to conform to Collection because it's unable to implement subscript(position:), which is because it conflicts with subscript(key:) when the dictionary's keys are of its index type (Int).
Meanwhile, Dictionary avoids this and conforms to Collection by using an index type that almost certainly won't be used for keys.
What if we do something similar for OrderedDictionary , while still using Int for actual indixing? One possible solution in my opinion is wrapping Int in a new Index type for only Collection requirements (#58):
extension OrderedDictionary: Collection {

  public struct Index: Comparable {
    public static func < (lhs: Self, rhs: Self) -> Bool {
      lhs.value < rhs.value
    }

    public init(value: Int) {
      self.value = value
    }

    public let value: Int
  }

  public var startIndex: Index {
    Index(value: _keys.startIndex)
  }

  public var endIndex: Index {
    Index(value: _keys.endIndex)
  }

  public func index(after i: Index) -> Index {
    Index(value: _keys.index(after: i.value))
  }

  public subscript(position: Index) -> (key: Key, value: Value) {
    get { (_keys[position.value], _values[position.value]) }
  }

}

Because Index in the above snippet does not conform to Hashable, it's guaranteed that it cannot be used as Key.
The disadvantage, though, is that with something like this, there will be 2 index types visible to the user:
let orderedDictionary: OrderedDictionary = [1: "a", 2: "b"]
print(orderedDictionary.index(forKey: 1)) // prints "0"
print(orderedDictionary.startIndex)       // prints "Index(value: 0)"

Although it's straightforward to convert between Int and Index, it can be a surprise and source of confusion to new users.

This is not unreasonable, and in fact this is how OrderedDictionary was initially implemented. After using it for a while though, I had to agree with @kylemacomber that sticking to integer indices was the better design overall -- it feels more consistent and more convenient.
Having to type dictionary.elements[i] felt far less of a chore than dictionary[Index(offset: i)] (or even worse, dictionary[dictionary.index(dictionary.startIndex, offsetBy: i)]).


[go] goimport that check and replace specific import

Now I use goimport instead of gofmt when formatting code because it checks import and do the sorting. However I have some new use cases:

replace specific import because they were added by IDE when there are imports with similar name. Especially when your dependency depends on its own fork of your other dependency, e.g. assert.
group import into multiple groups, e.g. protobuf, third party dependency, packages inside the project
enforce import alias, e.g. protobuf packages should be named to xxxpb

Should put it under gommon fmt or gommon gofmt

I should be part of #75

Found one linter from m3db https://github.com/m3db/build-tools/tree/master/linters/importorder

Also there is one checking if specific import is allowed https://github.com/fatih/faillint

Source of goimports https://github.com/golang/tools/blob/master/cmd/goimports/goimports.go

https://pkg.go.dev/golang.org/x/tools/go/ast/astutil?tab=doc#AddImport astutil contains add and remove imports, looks pretty good ... not sure if we can do something similar to goimports using that

https://github.com/cockroachdb/crlfmt/blob/master/main.go#L238 found one from cockroachdb, crlfmt

https://github.com/OpenPeeDeeP/depguard found from golint ci


Godot Android plugin re-architecture

Third scheduled Android refactor (after https://github.com/godotengine/godot/pull/76821 and https://github.com/godotengine/godot/pull/78958) for the upcoming Godot 4.2 release.
TLDR;
This refactor focuses on cleaning up and restoring full functionality for Godot Android plugins, which have effectively been (partially) broken since the Godot 4.0 release.
Godot 4.x Android plugins (v2)
Versioning
In Godot 3.x, the following metadata was required in the plugin's AndroidManifest to declare it:
<meta-data
    android:name="org.godotengine.plugin.v1.[PluginName]"
    android:value="[plugin.init.ClassFullName]" />

For Godot 4.2 and higher, the metadata remains mostly the same, but the version is bumped to v2:
<meta-data
    android:name="org.godotengine.plugin.v2.[PluginName]"
    android:value="[plugin.init.ClassFullName]" />

At runtime, the engine only loads plugins with the org.godotengine.plugin.v2 prefix. The GodotPlugin base class has been modified in a non-backward compatible manner, so Godot 3.x Android plugins (with the org.godotengine.plugin.v1 prefix) are no longer supported in Godot 4.2 and higher.
Packaging
The plugin's packaging was re-done in https://github.com/godotengine/godot/pull/78958, deprecating the use of the .gdap format used in Godot 3.x in order to better align with Godot other plugin types. The documentation will be updated in a follow-up PR to describe the new packaging format.
GDExtension integration
In Godot 3.x, Godot Android plugins provided the ability to integrate GDNative functionality.
Similarly, this PR adds the ability for v2 Godot Android plugins to integrate with GDExtension functionality starting with Godot 4.2.
In addition, this PR fixes the issue that prevented the Godot Android editor from loading and using GDExtension plugins
Samples

Godot Android samples project: https://github.com/m4gr3d/Godot-Android-Samples/blob/master/plugins/README.md

PR adding the GDExtension sample: https://github.com/m4gr3d/Godot-Android-Samples/pull/2

Remaining TODOs

[ ] Create github template projects to facilitate the creation of a v2 Godot Android plugin
[ ] Update the Godot Android plugin documentation

Will wait on the documentation to be completed, to test both the documentation and plugin architecture itself
Will migrate godot-android modules to 4.2 after that

Thanks!
Looking through the PR and the sample, it looks like including a GDExtension as part of an Android plugin works like this:

The .gdextension file has:

[exportable]
android=false

... so that the .so file doesn't get include in the export like it normally would with a GDExtension.
2. The Android plugin adds an EditorExportPlugin which tells Godot to include the .aar file (which I think contains the .so via the Gradle build?) into the export
3. The GodotPlugin (in Java/Kotlin) implements the getPluginGDExtensionModulesPaths() method which will return a list containing the path to the .gdextension file, which will eventually get loaded via OS_Android::load_platform_gdextensions()
Do I have this right?
If so, this seems a little convoluted. Is there a reason we couldn't skip step nr 2, by having an [android] section or something in the .gdextension file, to tell the GDExtensionExportPlugin to include the .aar files in the export rather than the .so's, so each plugin doesn't need to implement an EditorExportPlugin? Something like:
[android]
debug=bin/MyExtension.debug.aar
release=bin/MyExtension.release.aar

I'm also a little unclear on why OS_Android::load_platform_gdextensions() needs to load the GDExtensions rather than the normal loading mechanism? It seems run right after the normal mechanism, and actually I'm not sure why the normal mechanism doesn't pick up the .gdextension files. Are the .gdextension files embedded in the .aar file too?
Sorry for all the dumb questions - I think I'm missing a bunch of context around how Android plugins work :-)

Thanks!
Looking through the PR and the sample, it looks like including a GDExtension as part of an Android plugin works like this:

The .gdextension file has:

[exportable]
android=false

... so that the .so file doesn't get include in the export like it normally would with a GDExtension.

The Android plugin adds an EditorExportPlugin which tells Godot to include the .aar file (which I think contains the .so via the Gradle build?) into the export

That's correct, the plugin's aar binary contains the .so file so we need to let GDExtensionExportPlugin know not to export the .so file a second time.

The GodotPlugin (in Java/Kotlin) implements the getPluginGDExtensionModulesPaths() method which will return a list containing the path to the .gdextension file, which will eventually get loaded via OS_Android::load_platform_gdextensions()

Do I have this right?
If so, this seems a little convoluted. Is there a reason we couldn't skip step nr 2, by having an [android] section or something in the .gdextension file, to tell the GDExtensionExportPlugin to include the .aar files in the export rather than the .so's, so each plugin doesn't need to implement an EditorExportPlugin? Something like:
[android]
debug=bin/MyExtension.debug.aar
release=bin/MyExtension.release.aar

Following https://github.com/godotengine/godot/pull/78958, all Android plugins are now EditorExportPlugin plugins as it allows to standardize around a common plugin format, and the capabilities provided by the (expanded) EditorExportPlugin api resolves numerous issues the previous 3.x Android format had.
From that perspective, this PR adds a new capability (gdextension) to 4.x Android plugins, so the approach then is to base off the EditorExportPlugin configuration, and update the gdextension config to match where needed.

I'm also a little unclear on why OS_Android::load_platform_gdextensions() needs to load the GDExtensions rather than the normal loading mechanism? It seems run right after the normal mechanism, and actually I'm not sure why the normal mechanism doesn't pick up the .gdextension files. Are the .gdextension files embedded in the .aar file too?

The proposed architecture covers two primary use-cases:

Using Godot Android plugins within the Godot Editor
Using Godot Android plugins within an Android app / game: on Android, both the Godot engine and the Godot Android plugins can be made available as AAR libraries that Android apps and games can integrate in their codebase.

When using a Godot Android plugin and exporting from the Godot Editor, the normal mechanism does pick up and load the GDExtensions and OS_Android::load_platform_gdextensions() becomes a no-op.
However the normal mechanism is set up by the Godot Editor export logic and it's not available when using different tools / IDEs.
So in the scenario where the Godot app / game is not built from the Godot Editor, the Godot engine relies on GodotPlugin::getPluginGDExtensionModulesPaths() and OS_Android::load_platform_gdextensions() to find the path to the gdextension config file at runtime and load it for use.

Are the .gdextension files embedded in the .aar file too?

Yes, when the AAR binary for a Godot Android plugin is generated, it contains the .gdextension config file to cover the use-case described above.

 They help me figure out what I need to cover in the (in-progress) documentation!

Ok, thanks for the detailed explanation! This is definitely making a little more sense to me. :-)

The proposed architecture covers two primary use-cases:

Using Godot Android plugins within the Godot Editor
Using Godot Android plugins within an Android app / game: on Android, both the Godot engine and the Godot Android plugins can be made available as AAR libraries that Android apps and games can integrate in their codebase.

In the case of Android plugins that don't need to do anything special in the editor, would they still need to provide an EditorExportPlugin just to make sure the .aar files are included in export? For example, I'm imagining an ARCore plugin - it would provide some Java/Kotlin code and a GDExtension, but only needs to run in game. It'd be nice to avoid extra boilerplate, if possible.
Or, if the EditorExportPlugin is always required, could we use that to prevent exporting the .so file rather than adding the [exportable] section to the .gdextension file? I'm not sure I can think of another case where a GDExtension does have a library for the given platform, but we don't want to export it for that platform.
I think part of what feels weird here is that we're doing half of the export customization work in a custom EditorExportPlugin and the other half in the .gdextension file (via the GDExtensionExportPlugin). Is it possible to consolidate this in one place or the other? It'd be nice for the inclusion of the .aar files and exclusion of the .so files to be handled in the same place somehow.
In any case, I think I need to spend a little more time poking at the samples to improve my understanding of all this.

In the case of Android plugins that don't need to do anything special in the editor, would they still need to provide an EditorExportPlugin just to make sure the .aar files are included in export? For example, I'm imagining an ARCore plugin - it would provide some Java/Kotlin code and a GDExtension, but only needs to run in game. It'd be nice to avoid extra boilerplate, if possible.

ARCore plugin is actually a good example for the functionality added by the EditorExportPlugin. When using an ARCore (or OpenXR) plugin, there's a need to modify the generated manifest to include metadata required by the plugin. The EditorExportPlugin provides apis so the plugin can insert the needed metadata at export time.
Here's an example from the OpenXR plugin: https://github.com/GodotVR/godot_openxr_loaders/blob/master/demo/addons/godotopenxr/export/meta/godot_openxr_meta_editor_export_plugin.gd#L88-L147
When nothing special is required besides providing access to the AAR binary, then export logic is fairly simple: https://github.com/m4gr3d/Godot-Android-Samples/blob/master/plugins/hello_world/src/main/assets/addons/hello_world_plugin/.export/hello_world_editor_export_plugin.gd

Or, if the EditorExportPlugin is always required, could we use that to prevent exporting the .so file rather than adding the [exportable] section to the .gdextension file? I'm not sure I can think of another case where a GDExtension does have a library for the given platform, but we don't want to export it for that platform.
I think part of what feels weird here is that we're doing half of the export customization work in a custom EditorExportPlugin and the other half in the .gdextension file (via the GDExtensionExportPlugin). Is it possible to consolidate this in one place or the other? It'd be nice for the inclusion of the .aar files and exclusion of the .so files to be handled in the same place somehow.

That was the first approach I looked into; the issue is that the GDExtensionExportPlugin is the one responsible for including the gdextension .so files during export, and there's no mechanism for another plugin to change its behavior (IMO, that's a good thing because you wouldn't want plugins to interfere with each other causing hard to trace issues).
As such the only mean I found to change its behavior is via the .gdextension config files.
The other alternative I considered was to have two .gdextension config files, one for the editor (if the plugin has editor functionality) that declares no support for Android, and one in the plugin AAR binary which declares support for Android and is loaded at runtime.. The issue with that approach is that you're increasing the burden on the developer by requiring them to track and keep in sync multiple config files..

As such the only mean I found to change its behavior is via the .gdextension config files.

What if we change it in a more Android-specific way? Like I mentioned above, I'm not sure I can think of any other use case for the [exportable] section in the .gdextension.
What if we added a different section like in my first comment, ex:
[android-plugin]
debug=bin/MyExtension.debug.aar
release=bin/MyExtension.release.aar

And then modify GDExtensionExportPlugin so that if we're exporting for Android, and it finds a matching entry in this section, it'll include the .aar file and exclude the .so file?
That has the advantage of (1) putting both these complementary export customizations in the same place, and (2) not having the super generic [exportable] section that's really actually just for this single Android plugin use case.

As a follow-up from the GDExtension discussion, I've updated the configuration for Android plugins' gdextension:

Removed the exportable section as it was deemed confusing
Added a android_aar_plugin = [ true | false ] key to the configuration section

The presence of that field (with a true value) signals to the GDExtensionExportPlugin that the .so files for Android should not be exported as they are provided by the plugin AAR binary file.

Alright I tried the PR on top of my ARCore PR changes. There are several errors that I get but it could be that I just haven't implemented the binding side in the extension correctly:

Error Message
* What went wrong:
Execution failed for task ':ARCore:externalNativeBuildDebug'.
> Build command failed.
  Error while executing process C:\Users\Patrick\AppData\Local\Android\Sdk\cmake\<IP_ADDRESS>88404\bin\ninja.exe with arguments {-C C:\Users\Patrick\Documents\Coding\XR\godot_arcore\plugin\.cxx\cmake\debug\arm64-v8a godot_arcore}
  ninja: Entering directory `C:\Users\Patrick\Documents\Coding\XR\godot_arcore\plugin\.cxx\cmake\debug\arm64-v8a'
  [1/2] Building CXX object CMakeFiles/godot_arcore.dir/src/main/cpp/register_types.cpp.o
  [2/2] Linking CXX shared library ..\..\..\..\build\intermediates\cmake\debug\obj\arm64-v8a\libgodot_arcore.so
  FAILED: ../../../../build/intermediates/cmake/debug/obj/arm64-v8a/libgodot_arcore.so
  cmd.exe /C "cd . && C:\Users\Patrick\AppData\Local\Android\Sdk\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=aarch64-none-linux-android24 --gcc-toolchain=C:/Users/Patrick/AppData/Local/Android/Sdk/ndk/23.2.8568313/toolchains/llvm/prebuilt/windows-x86_64 --sysroot=C:/Users/Patrick/AppData/Local/Android/Sdk/ndk/23.2.8568313/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security  -std=c++17 -Wall -fno-limit-debug-info  -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments   -Wl -shared -Wl,-soname,libgodot_arcore.so -o ..\..\..\..\build\intermediates\cmake\debug\obj\arm64-v8a\libgodot_arcore.so CMakeFiles/godot_arcore.dir/src/main/cpp/arcore_interface.cpp.o CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_jni.cpp.o CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o CMakeFiles/godot_arcore.dir/src/main/cpp/register_types.cpp.o  -landroid -llog -lGLESv2 ../../../../build/arcore-native/jni/arm64-v8a/libarcore_sdk_c.so libgodot-cpp.a -latomic -lm && cd ."
  ld: error: undefined symbol: ARCorePluginWrapper::_get_surface
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::ARCorePluginWrapper())
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::ARCorePluginWrapper())
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::initialize_wrapper(_JNIEnv*, _jobject*, _jobject*, _jobject*))
  >>> referenced 5 more times

  ld: error: undefined symbol: ARCorePluginWrapper::_is_activity_resumed
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::ARCorePluginWrapper())
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::ARCorePluginWrapper())
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::initialize_wrapper(_JNIEnv*, _jobject*, _jobject*, _jobject*))
  >>> referenced 5 more times

  ld: error: undefined symbol: ARCorePluginWrapper::_get_display_rotation
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::ARCorePluginWrapper())
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::ARCorePluginWrapper())
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::initialize_wrapper(_JNIEnv*, _jobject*, _jobject*, _jobject*))
  >>> referenced 5 more times

  ld: error: undefined symbol: ARCorePluginWrapper::godot_class
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::initialize_wrapper(_JNIEnv*, _jobject*, _jobject*, _jobject*))
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::initialize_wrapper(_JNIEnv*, _jobject*, _jobject*, _jobject*))
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::uninitialize_wrapper(_JNIEnv*))
  >>> referenced 1 more times

  ld: error: undefined symbol: ARCorePluginWrapper::activity_class
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::initialize_wrapper(_JNIEnv*, _jobject*, _jobject*, _jobject*))
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::initialize_wrapper(_JNIEnv*, _jobject*, _jobject*, _jobject*))
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::uninitialize_wrapper(_JNIEnv*))
  >>> referenced 1 more times

  ld: error: undefined symbol: ARCorePluginWrapper::godot_instance
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::initialize_wrapper(_JNIEnv*, _jobject*, _jobject*, _jobject*))
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::initialize_wrapper(_JNIEnv*, _jobject*, _jobject*, _jobject*))
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::uninitialize_wrapper(_JNIEnv*))
  >>> referenced 7 more times

  ld: error: undefined symbol: ARCorePluginWrapper::activity
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::initialize_wrapper(_JNIEnv*, _jobject*, _jobject*, _jobject*))
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::initialize_wrapper(_JNIEnv*, _jobject*, _jobject*, _jobject*))
  >>> referenced by arcore_plugin_wrapper.cpp:0 (../../../../src/main/cpp/jni\arcore_plugin_wrapper.cpp:0)
  >>>               CMakeFiles/godot_arcore.dir/src/main/cpp/jni/arcore_plugin_wrapper.cpp.o:(ARCorePluginWrapper::uninitialize_wrapper(_JNIEnv*))
  >>> referenced 3 more times
  clang++: error: linker command failed with exit code 1 (use -v to see invocation)
  ninja: build stopped: subcommand failed.

It would be nice if the examples in godot-cpp could be enhanced

The example in godot-cpp was removed in favor of automated tests with the plan to eventually create a repo with several examples. This is something that could be added there! Although, there's already https://github.com/m4gr3d/Godot-Android-Samples with the one GDExtension example

Thanks!

Will wait on the documentation to be completed, to test both the documentation and plugin architecture itself Will migrate godot-android modules to 4.2 after that

@tokengamedev Early draft for the documentation update available in https://github.com/godotengine/godot-docs/pull/7884


fix README filename in setup.py

@tykling good catch! Wanna add the content type as well so it is rendered correctly on pypi? https://dustingram.com/articles/2018/03/16/markdown-descriptions-on-pypi


Updating the zap stanza for mactex.rb and mactex-no-ghostscript.rb

Ping @vitorgalvao for thoughts on this.
Installing mactex.rb or mactex-no-ghostscript.rb installs a number of GUI applications, namely TeXShop, BibDesk, LaTeXiT, TeX Live Utility and Excalibur, and the user also has the option to manually install cocoAspell from /Applications/TeX/cocoAspell/cocoAspell.pkg.
There are individual Casks for each of these, and I have recently updated all of their zap stanzas in https://github.com/caskroom/homebrew-cask/pull/40447, https://github.com/caskroom/homebrew-cask/pull/40443, https://github.com/caskroom/homebrew-cask/pull/40444, https://github.com/caskroom/homebrew-cask/pull/40451, https://github.com/caskroom/homebrew-cask/pull/40445 and https://github.com/caskroom/homebrew-cask/pull/40446.
Now, this also means that the zap stanza's for mactex.rb and mactex-no-ghostscript.rb need to be updated. At the moment, they look like this:
zap delete: [
                '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/texshop.sfl*',
                '~/Library/Caches/com.apple.helpd/SDMHelpData/Other/English/HelpSDMIndexFile/TeXShop Help*',
                '~/Library/Caches/com.apple.helpd/SDMHelpData/Other/English/HelpSDMIndexFile/edu.ucsd.cs.mmccrack.bibdesk.help',
                '~/Library/Caches/edu.ucsd.cs.mmccrack.bibdesk',
                '~/Library/Caches/fr.chachatelier.pierre.LaTeXiT',
                '~/Library/Caches/TeXShop',
                '~/Library/Saved Application State/edu.bucknell.Excalibur.savedState',
                '~/Library/texlive/2017',
                '~/Library/TeXShop',
              ],
      trash:  [
                '/usr/local/texlive/texmf-local',
                '~/Library/Application Support/BibDesk',
                '~/Library/Application Support/TeXShop',
                '~/Library/Application Support/TeX Live Utility',
                '~/Library/Preferences/edu.ucsd.cs.mmccrack.bibdesk.plist',
                '~/Library/Preferences/Excalibur Preferences',
                '~/Library/Preferences/fr.chachatelier.pierre.LaTeXiT.plist',
                '~/Library/Preferences/TeXShop.plist',
              ],
      rmdir:  [
                '/usr/local/texlive',
                '~/Library/texlive',
              ]

I think it may be better to place the zap stanza's in mactex.rb and mactex-no-ghostscript.rb with:
zap delete: '~/Library/texlive/2017',
    trash:  '/usr/local/texlive/texmf-local',
    rmdir:  [
              '/usr/local/texlive',
              '~/Library/texlive',
            ]

and add a caveat explaining that to zap all of the corresponding GUI applications, one should run:
brew cask zap --force texshop
brew cask zap --force bibdesk
brew cask zap --force latexit
brew cask zap --force tex-live-utility
brew cask zap --force excalibur

and if the user manually installed cocoAspell then the user could also run
brew cask zap --force cocoaspell

That way, in the future one could just update the zap stanza's of each individual GUI application's Cask and not have to also update the zap stanza in mactex.rb and mactex-no-ghostscript.rb, which are very big downloads.
Also, zap'ing MacTex and all the associated GUI applications before installing a newer version of MacTex is very handy, because when a new version is released every year there is no simple way to remove everything the previous version installed and gain back the valuable disk space (~ 6 GB), since new versions install in parallel with any previous versions (as opposed to overwriting/uninstalling).
Thoughts?
Otherwise, I can just update the zap's in mactex.rb and mactex-no-ghostscript.rb.

However, there is a slight issue with this idea - TeXShop, BibDesk, LaTeXiT and TeX Live Utility are installed in /Applications/TeX and Excalibur is installed in /Applications/TeX/Excalibur-4.0.7 via MacTex, whereas the individual Casks just install to /Applications, so maybe this is not such a good idea...

Maybe just update the zap stanza for mactex.rb and mactex-no-ghistscript.rb like so, which everything separated to make future updates easier:
zap delete: [
              '~/Library/texlive/2017',
              # TexShop:
              '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/texshop.sfl*',
              '~/Library/Caches/com.apple.helpd/SDMHelpData/Other/English/HelpSDMIndexFile/TeXShop Help*',
              '~/Library/Caches/TeXShop',
              '~/Library/TeXShop',
              # BibDesk:
              '~/Library/Caches/com.apple.helpd/SDMHelpData/Other/English/HelpSDMIndexFile/edu.ucsd.cs.mmccrack.bibdesk.help*',
              '~/Library/Caches/edu.ucsd.cs.mmccrack.bibdesk',
              '~/Library/Cookies/edu.ucsd.cs.mmccrack.bibdesk.binarycookies',
              # LaTeXiT:
              '~/Library/Caches/fr.chachatelier.pierre.LaTeXiT',
              '~/Library/Cookies/fr.chachatelier.pierre.LaTeXiT.binarycookies',
              # TeX Live Utility:
              '~/Library/Caches/com.apple.helpd/SDMHelpData/Other/English/HelpSDMIndexFile/TeX Live Utility Help*',
              # Excalibur:
              '~/Library/Saved Application State/edu.bucknell.Excalibur.savedState',
            ],
    trash:  [
              '/usr/local/texlive/texmf-local',
              # TexShop:
              '~/Library/Application Support/TeXShop',
              '~/Library/Preferences/TeXShop.plist',
              # BibDesk:
              '~/Library/Application Support/BibDesk',
              '~/Library/Preferences/edu.ucsd.cs.mmccrack.bibdesk.plist',
              # LaTeXiT:
              '~/Library/Preferences/fr.chachatelier.pierre.LaTeXiT.plist',
              # TeX Live Utility:
              '~/Library/Application Support/TeX Live Utility',
              # Excalibur:
              '~/Library/Preferences/Excalibur Preferences',
            ],
    rmdir:  [
              '/usr/local/texlive',
              '~/Library/texlive',
            ]

On the other hand, the uninstall delete: stanza would take care of the .app's since '/Applications/TeX' is removed:
uninstall pkgutil: [
                     'org.tug.mactex.ghostscript9.21',
                     'org.tug.mactex.gui2017',
                     'org.tug.mactex.texlive2017',
                   ],
          delete:  [
                     '/usr/local/texlive/2017',
                     '/Applications/TeX',
                     '/Library/PreferencePanes/TeXDistPrefPane.prefPane',
                     '/etc/paths.d/TeX',
                     '/etc/manpaths.d/TeX',
                   ]

Well researched!
I’m partial to https://github.com/caskroom/homebrew-cask/issues/40452#issuecomment-342711893 (comments), but if you have a preference, I’m fine with it. You clearly know these more intrinsically, so I trust your judgement.

https://github.com/caskroom/homebrew-cask/pull/40544 and https://github.com/caskroom/homebrew-cask/pull/40545.

Both PR's pass audit and style, so it might be best if a @caskroom/maintainers can merge them directly so as to not bog down Travis.


mender-workarounds: don't overwrite /etc/os-release symlink

The fix looks good, but could you update the commit message with a signoff as mentioned in our contribution guidelines?

The fix looks good, but could you update the commit message with a signoff as mentioned in our contribution guidelines?

Done.


add banner variant to Overlay

This PR adds a banner variant for Overlay. The goal is to create an Overlay option that looks close to the one in this design spec: https://www.figma.com/file/LLBMwcB37R4fQrn7kgZKUi/061820_PrivateApps_MI%2BKAC?node-id=34%3A0
This introduces new variants in block.js for this Overlay banner, specifically. I commented above the relevant banners to hopefully make this clearer.
How to Test

Go to overlay.js
Add variant={'banner'} to the Overlay, Title, and Info components
Add variant={'alignright'} to the Actions component
When you open an overlay, it should look like the overlay in the attached screenshot:

5. Test in dark mode!

Will the dropshadow, buttons and 'X' be updated to match the design in Figma in this PR?

Will the dropshadow, buttons and 'X' be updated to match the design in Figma in this PR?

@jlord I missed the dropshadow on the Overlay, so I will pull that out in this PR! The "X" can just be deleted and the buttons can be styled independently, but I can make everything look like the Figma design in the example button I'm adding in now!

@anjapatel this looks great! Just want to call out typography and spacing feedback:
(I'm not viewing this locally just referencing the screen shot so forgive me if it's already correct!)

Body copy: 14px
Heading: 16px
Spacing: 6px between heading and body and then 24px between body and buttons

@ackristen question on the radius of the modal: in Figma on its own it's shown with rounded corners on each corner but in the screenshot of it in the editor, there is no to top radius.

@ackristen question on the radius of the modal: in Figma on its own it's shown with rounded corners on each corner but in the screenshot of it in the editor, there is no to top radius.

Originally:
In the editor, I imagined it sitting flush below the editor header.
Update:
I found another place to use this component within the private project experience so we can keep the radius on all 4 corners.
Sorry for the confusion!

@ackristen is this looking better?

@ackristen is this looking better?

Edit: I did put 6px of space between the header and body, but it does look a little more spaced out than the figma. I'm combing through now in case there's some extra padding somewhere. Let me know if this is on the right track!

This looks good to me! I'm happy with it 👏

Also @ackristen, this new overlay style is positioned against the top of the browser window. Is this okay? The overlay is positioned relative to the browser so it would take a lot more time for me to find a way to work around that.
If this doesn't work for what you have in mind for the future, let me know! Maybe I can add this style variant to a different component that's easier to position.

Approved via Slack.

:rocket: PR was released in v0.19.0 :rocket:


Catch xml.etree.ElementTree ParseError exception from an invalid XML file

Context:
If the test results file contains a broken XML content, the junitparser command will fail with a:
xml.etree.ElementTree.ParseError: syntax error: .. failure.
See job failure example: https://prow.ci.openshift.org/view/gs/test-platform-results/logs/periodic-ci-mtc-qe-mtc-e2e-qev2-master-mtc1.8-ocp4.15-lp-interop-mtc-interop-aws/1756921885850865664#1:build-log.txt%3A93
This happens especially when we modify the test results with replacing it's content with a string contains:
"This file contained potentially sensitive information and has been removed.\\n"
REF:
https://redhat-internal.slack.com/archives/C04PK4QPSR1/p1707747454327419

@oharan2 if you run "make pre-commit" in the root of the repo, it should fix the errors or tell you what to fix :)

/verified


minor changes for ghost v4 compatibility

I've added ghost's koenig editor requirements, changed api version.
id = comment_id change is gscan's recommendation.
Theme is now fully compatible with ghost v4, tested in local development envoriment.

Thanks!