Support for In-Place Node Updates

What would you like to be added:
We like/need to offer, for all spec changes, a way to update cluster nodes in-place (all except for the ones where we have no other technical alternative, e.g. switching out physical machines will always require node rolling).
For these in-place node updates, we need to understand what exactly should to be done:

Roll the nodes if otherwise technically impossible (a physical machine is no longer operational or goes into maintenance)
Update the node (with or without drain; has its pros and cons) and reboot (e.g. OS update)
Drain the node before we update it and restart the kubelet (e.g. K8s minor update, see ref)
Just update the node (w/o drain) and restart the kubelet (e.g. K8s patch update, see ref)

All of the above (and maybe more cases) need to be detected and should trigger different forms of in-place node updates.
Note: Maybe some stakeholders would want to avoid an actual drain that would move the pod to another machine. In this case, we might get away with "local cleaning" (files/containers) after we stop the kubelet. When it restarts, it won't know that it used to run these containers. Would that be of any help to some users?
Until now, Gardener only supported the very first and last use case. Now we need to support also all the other use cases, trying to hold on to the machines (whether physical or virtual) and their Kubernetes node resources indefinitely, while keeping the impact under update as minimal as possible.
Why is this needed:
Physical machines/bare metal nodes (whether manually joined or programmatically provisioned) cannot be easily rolled like we roll today virtual machines. Physical machines/bare metal nodes are rather "pets", not "cattle" (like virtual machines). Usually:

They have long boot times, unless they already fully booted and can be (UEFI) fast-booted without running certain checks like POST (Power-On Self-Test, e.g. memory tests)
They have long cleanup/sanitization times to erase all data before returning them to a pool
They have locally attached disks that cannot be "moved" like network-attached volumes that can be "re-attached" easily
They are rather large in size and limited in number and not as interchangeable and sliceable as virtual machines

This is why we need to find a way to preserve them/never roll this kind nodes. In some cases, this may be also beneficial to brownfield/singleton applications/services that are rather sensitive to node rolling/disruptions in general.

We collected the following requirements/comments from adopters using/planning to use Gardener on bare metal hardware:

Implement all updates in-place, i.e. preserve the nodes and also the machines (currently not possible for k8s minor version or OS updates, but default for k8s patch version updates and some other changes -> requires A/B booting; then we can even update the OS)
Respond to external events such as "Machine will be shut down soon/when, please gracefully drain immediately", which could be handled by an extension directly (or indirectly via the metadata service or similar sources and the node agent)
Being able to pause a roll-out (possible only from within the seed and only for machine roll-outs/with MCM)
Temporarily exclude individual machines from roll-out (before or while an update is ongoing)
Make it possible to “hook in” remote maintenance controllers (it isn't really clear, whether a hook is really necessary; our philosophy until now was, that the deployments should/must steer that via PDBs, but there can be more complicated pre-conditions that are unrelated to PDBs, e.g. whether or not the image registry is currently up and running/available).

Ideally, people can steer (e.g. https://github.com/sapcc/maintenance-controller) their roll-outs. As said, there are some checks that do not really fit into PDBs (e.g. excluding a single node/machine for a longer period of time because of “some reasons” or pausing the roll-out because the image registry is down), so if we want to avoid the last 3 bullet points above, i.e. if we want to avoid pause/exclusion/hooks, we could also offer the following maybe:

Offer a different machine deployment update strategy OnDelete analogous to the StatefulSet, where the NodeAgent/MCM does not roll immediately and only new nodes receive the new spec (this would also avoid the combinatorial explosion of worker pools that we see with some adopters/users)
Nothing happens until the node is (in-place) updated+rebooted or drained+deleted (no matter what was changed, e.g. even a different OS/version; just as an example)
The stakeholder has their own specific maintenance controller running inside or outside of the cluster
It sets labels to (in-place) update+reboot the machine (not yet supported) or to drain+delete it (already supported by MCM), so they can steer/decide what to do as they see fit, when they see fit (today one machine, the next machine 3 days later, if they need)
Until then, some of the requirements (but not k8s minor version/OS updates) can also be implemented via a DaemonSet instead (that watches the associated node labels and “does things locally”), but real support in GardenLinux/NodeAgent would make this feature more versatile/useful

Garden Linux PoV:

We will target only Garden Linux for in-place updates. People shall switch to Garden Linux, if they want in-place updates (Garden Linux as differentiator; no time nor interest in supporting other operating systems; no deep stack innovation/integration possible).
SecureBoot and immutability are desired from security PoV.
For SecureBoot (https://wiki.debian.org/SecureBoot), the UKI needs to be signed. The Garden Linux team does the signing with an intermediate CA. While it is not possible to replace the root CA in many cases (e.g. stamped into the AWS AMI, cannot be updated programmatically in the BIOS of bare metal machines and must be updated manually by a human operator), rotating the intermediate CA is still possible (no problem for us, i.e. we can hold onto a machine for as long as the root CA certificate is valid).
This can be combined with in-place updates as we can steer which folders are mutable and immutable. The kernel and more is delivered in a UKI file (https://uapi-group.org/specifications/specs/unified_kernel_image/) that can be downloaded and booted into (into memory; reboot very fast in ~30s or so depending on various factors).
We need to check (the OS extension team probably) which folders must be mutable and then test the process, i.e. boot into a Garden Linux node, update it, see that everything (pods/containers) works again after reboot.
The GardenLinux teams wants to provide a tool to boot into another OS, basically 2 params: OS version/URL, flag whether the mutable folders shall be purged (e.g. Kubernetes minor version update) or not/kept as-is (all other cases).

From here on upwards:

Today, we calculate machine classes and operating system configs from the shoot worker pool configuration. If the machine class changes, we update the machine deployment which triggers the rolling update. If only the operating system config changes, the node controller in the Gardener resource manager controls, via labels it sets at the nodes, the gradual roll-out of the updated operating system configs that then the Gardener node agent executes. With in-place updates, we discussed to shift the latter responsibility to MCM and make it generally control the roll-out based on the given worker pool configuration (maxUnavailable and maxSurge).

MCM will need to support different update strategies:

RollingUpdate:

Rolling: Changing the spec triggeres a rolling update of the nodes according to maxUnavailable and maxSurge (either >0)
OnDelete: Changing the spec doesn’t trigger anything, but new nodes get the new spec; old nodes can be directly deleted
OnLabel: Changing the spec doesn’t trigger anything, but new nodes get the new spec; old nodes can be rolled via a label

InPlaceUpdate:

Rolling: Changing the spec triggers an in-place update of the nodes according to maxUnavailable (>0) while maxSurge must be 0
OnLabel: Changing the spec doesn’t trigger anything, but nodes that are labelled will be in-place updated

This way, we can leverage the node drain logic of MCM that we might have to rely upon when we update a Kubernetes minor version which requires, according to the spec (https://kubernetes.io/releases/version-skew-policy/#kubelet-1), to drain the pods from the node first. This may also be required for changes to kube-system or CA rotation, but let’s see. Maybe people would want to opt-out/take care themselves (e.g. in the case of CA rotation).

The heavy lifting is then done in the Gardener node agent.

We have not discussed yet, how bare metal nodes will be adopted into a cluster and where their description/configuration resides. The current worker pools are a “difficult fit” as bare metal nodes can be all different, have no machine or volume type (inherent property of the bare metal machine). Then again, with IronCore, it’s not exactly bare metal either as already for the first clusters the MetalAPI will be used, so maybe we don’y really have to treat the IronCore case as a high-touch (=manual) bare metal case after all and IronCore must only configure the right update strategy to switch off MCM’s rolling update implementation and activate the in-place update strategy.

Research/prototypes/first work packages:

Garden Linux & OS Extension: Garden Linux OS update+reboot test (mutable folders)
MCM: MCM update strategies
Gardener Core: Changing GRM+GNA

/assign @acumino @shafeeqes @ary1992

A General Overview of the Solution:
Both MCM (Machine Controller Manager) and GNA (Gardener Node Agent) will be used to perform in-place updates. MCM will provide an interface that prepares the machine/node for an update. This interface can be used by other components to determine if a node is ready for an update, allowing the tool to perform the update and then notify MCM that the node has been successfully updated. In the case of Gardener, this tool will be GNA.
This design has been chosen to leverage all the functionalities provided by MCM (such as draining nodes, using maxUnavailable for selecting machines/nodes for updates, etc.). Additionally, MCM can remain a standalone component without any dependency on Gardener.
Implementation Details:
MCM (Machine Controller Manager):
MCM will provide two strategies for performing updates: InPlace and OnLabel.

InPlace Strategy: Machines will be selected based on maxUnavailable and will go through the following steps:

Mark the machine as unschedulable.
Drain the node.
Mark the machine as ready for an update using a set of labels/annotations.
Wait for an annotation/label indicating that the machine has been updated.
Once the update is detected, the node will be uncordoned.

OnLabel Strategy: Machines/nodes will be selected for updates based on certain labels, which the user has control over. This strategy gives users the flexibility to specify which machines/nodes should be updated by applying predefined labels.

In the current implementation, when a Kubernetes minor version or OS/Machine Image is updated in the shoot (worker pool), the provider extension creates a new MCC (Machine Class), and the MCD (Machine Deployment) is updated to use this new MCC. MCM detects that the Machine Deployment now references a new Machine Class, creates a new MCS (Machine Set) for the MCD referencing the new MCC, and machines are rolled based on the rolling strategy (new machines are created and old ones are deleted).
With the InPlace strategy, instead of creating new machines and deleting the old ones, machines/VMs will be transferred from the old MCS to the new MCS, avoiding the need to recreate machines.
GNA (Gardener Node Agent):
GNA acts as the update tool. When the OS or Kubernetes minor version is updated for a shoot, GNA will first check for the MCM annotation/label indicating that the node is ready for the update. It will then proceed to update the respective dependencies on the node. If the update is successful, GNA will notify MCM that the update has been completed.
The shoot/worker pool will allow configuring a rolling strategy for the nodes. If the InPlace or OnLabel strategy is selected, then during Kubernetes minor version or OS/Machine Image updates, GNA will wait for MCM's "ready-to-update" annotation on the node. Once this annotation is present, GNA will perform the update and mark/label the node as updated.
OS Upgrade:
Currently, only gardenlinux will be supported for in-place OS updates. Gardenlinux will provide an update tool called gardenlinux-update, which can be triggered(GNA in case of gardener) to perform the OS update on the node.

More details and other discussed approaches will be provided in a future GEP (Gardener Enhancement Proposal).

I still did not get the point of an InPlace Update if the node must be drained anyway. The impact for the pods running on this node is almost the same as if they where rescheduled on a new node which was newly created with a newer version of the kubelet and OS. The burden of implementing a InPlace Update strategie in GNA and the OS itself must not be undertaken.

Thanks for the preliminary overview. I guess it makes sense to also think about the extensibility aspect of GNA. As of today, OS handling is moved into dedicated extensions, i.e., gardener/gardener does not have any specific knowledge. Teaching GNA to run a gardenlinux-update command breaks/violates this. Do you have ideas how to keep the GNA code generic?

I still did not get the point of an InPlace Update if the node must be drained anyway. The impact for the pods running on this node is almost the same as if they where rescheduled on a new node which was newly created with a newer version of the kubelet and OS.

This is needed for the use case where we can't lose the node, it can be unavailable for some time for maintenance but should not be deleted.
Draining is needed for multiple reasons, one reason is that OS will be rebooted for an upgrade and this will terminate all the processes running on that node abruptly, which is not the correct thing to do, therefore before upgrading OS, node needs to be drained.

I guess it makes sense to also think about the extensibility aspect of GNA. As of today, OS handling is moved into dedicated extensions, i.e., gardener/gardener does not have any specific knowledge. Teaching GNA to run a gardenlinux-update command breaks/violates this. Do you have ideas how to keep the GNA code generic?

Yes, we have planned it that way. OSC will a provide generic way to call an upgrade tool, which will be utilized by the GNA. This will keep the GNA code independent of the OS.

I still did not get the point of an InPlace Update if the node must be drained anyway. The impact for the pods running on this node is almost the same as if they where rescheduled on a new node which was newly created with a newer version of the kubelet and OS.

This is needed for the use case where we can't lose the node, it can be unavailable for some time for maintenance but should not be deleted. Draining is needed for multiple reasons, one reason is that OS will be rebooted for an upgrade and this will terminate all the processes running on that node abruptly, which is not the correct thing to do, therefore before upgrading OS, node needs to be drained.

The only Situation i can imagine is excessive use of local storage, in all other cases it will be safer and faster to simply rotate the node.

I guess it makes sense to also think about the extensibility aspect of GNA. As of today, OS handling is moved into dedicated extensions, i.e., gardener/gardener does not have any specific knowledge. Teaching GNA to run a gardenlinux-update command breaks/violates this. Do you have ideas how to keep the GNA code generic?

Yes, we have planned it that way. OSC will a provide generic way to call an upgrade tool, which will be utilized by the GNA. This will keep the GNA code independent of the OS.

But what is the plan if on a specific OS no "generic update tools" is available / installed ?

The only Situation i can imagine is excessive use of local storage, in all other cases it will be safer and faster to simply rotate the node.

The reason for this is explained in the very first comment under "Why is this needed".

But what is the plan if on a specific OS no "generic update tools" is available / installed ?

You cannot do In-place updates in that OS. As of now, only gardenlinux will support it.

But what is the plan if on a specific OS no "generic update tools" is available / installed ?

We cannot do in-place updates in that OS. For now, only gardenlinux will support it.

But what is the plan if on a specific OS no "generic update tools" is available / installed ?

We cannot do in-place updates in that OS. For now, only gardenlinux will support it. We can validate the Shoot not to configure Inplace strategy if the OS used doesn't support it.

TBH i dont like this approach.

We should also think and clarify the failure cases. What if the GNA fails ? How should we handle this ? The GNA should ideally add a failed-update annotation to the Nodes which failed. How should we handle timeouts - ie cases where the ready-to-update annotation/label never goes away ?

TBH i dont like this approach.

We have opened a GEP for the approach in https://github.com/gardener/gardener/pull/10828. Do take a look and provide feedback or alternatives.


added support for powershell lambda functions

Description of changes:
Added support for PowerShell lambda functions. This is my first PR here so let me know if I missed anything!
Checklist:

[X] Write unit tests
[ ] Write/update functional tests
[ ] Write/update integration tests
[ ] make pr passes
[ ] Write documentation

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

We still see value in adding powershell in sam init. Instead of adding them directly in here, we should add them into https://github.com/awslabs/aws-sam-cli-app-templates/ instead. This will allow us to define a powershell example within the .NetCore runtime.
Closing this PR but we would love a PR for this to our app templates repo that SAM CLI uses for init.


Rail System

https://www.prusa3d.com/category/spare-parts/?page=11

https://help.prusa3d.com/guide/3-x-axis-assembly_67064


update teams-only-mode-considerations.md

Since the launch of consumer skype integration this does work in Teams only mode. removed incorrect note.

@JohanFreelancer9 Copy editing is needed for this PR. Thanks.

@LanaChin PR has been copyedited and is ready for final review, could you please check and merge? Thanks!

Thanks @technonath  - I've merged your update.


Ac/package updates

-Changed the name of package to SiennaTemplate.jl
-added Diataxis guidelines for documentation
-updated to Documenter 1.0
-updated formatter.jl
@kdayday
@jd-lara

@annacasavant and @kdayday the conflicts need to be fixed to merge this.


Which kind of model is better for keyword-set classification?

There exists a similar task that is named text classification.
But I want to find a kind of model that the inputs are keyword set. And the keyword set is not from a sentence.
Thank you.

Can you give an example of this kind of problem?
What do you mean by keyword? And why can you not do a direct lookup in your target corpus?

1,
input ["apple", "pear", "water melon"] --> target class "fruit"
input ["tomato", "potato"] --> target class "vegetable"
2,
I want find the better model.

You need a WordNet ontology. This is not a text classification problem.
I am not sure if this is the right forum to ask for help around this.


add a community membership guidelines

What type of PR is this?
/kind documentation
What this PR does / why we need it:
Provides criteria for what can be applied for as a member of the kurator community and what kind of circumstances would result in the revocation of kurator community membership.
Which issue(s) this PR fixes:
Fixes # #499

/lgtm


Xcode 10.2 Support

When I'm trying to rebuild framework for new Xcode 10.2, it allways fails.
Is it possible to support new Xcode 10.2?
Many thanks!

I have created PR #49 that solves the problem. Waiting to be reviewed and merged.

Thanks. Support added in the Release 2.6.0


Streaming multipart parser without tmpfiles

The multipart parser
(https://github.com/mcavage/node-restify/blob/master/lib/plugins/multipart_parser.js) uses formidable currently. Formidable creates tempfiles for each file upload, and never clears those. Even with a tmpreaper in place, this can be exploited for a DOS by sending requests with a lot of file uploads in a short time.
https://github.com/mscdex/busboy looks like a promising alternative to formidable. It supports streaming and dropping file uploads. The interface for streaming would need to be worked out- maybe by passing in something like req.form?

+1 for file streaming support :)

Is this ever likely to happen?

We have been using https://github.com/mscdex/busboy for a while. Early versions had some bugs, but those have since been fixed.

FWIW, we have been using https://github.com/mscdex/busboy in other non-restify projects since, and is has worked well for us (apart from some bugs early on).

👍

I can't bear formidable as well. Busboy seems stable at least for me.

If anyone is interested, we would welcome a PR to the plugins repository to either change the implementation or swap out the module that it uses.

Some of us do contribute. However, I don't think a simple PR can provide this feature unless there is some refactoring effort along with unit tests. I see the following issues with the current design.

bodyParser.js loads all the parsers statically from the same directory. Instead there should be way to register the parser that way people can override based on the mime or content type or url or some other value
multipartBodyParser.js should be like a base class with generic api methods. The default implementation class could use formidable and then the community can create their own parser with their favourite library
If possible please adopt ES6 and babelify the code to support older node. Cant bear to see function within functions within functions with return (false) and return next() as well as return (object)

Given the popularity of this framework there should be some kind of agreement regards to the changes even before someone could invest their time for a PR.

@prabhu All of those suggestions sound great - feel free to kick off a discussion in the plugins repo, as plugin development has stopped in the main repo here.


removeDeadAssigns: Remove all exprs using remove_if.

removeDeadAssigns: Remove all exprs using remove_if.
If there are many expressions to remove, calling erase repeatedly is expensive as it has to move all subsequent expressions. In the worst case (everything is dead), it's quadratic in the number of expressions.

Motivation

Remove the last significant source of overhead in CFG.
Test plan

Covered by existing tests.

We have a policy of testing changes to Sorbet against Stripe's codebase before
merging them. I've kicked off a test run for the current PR.  When the build
finishes, I'll share with you whether or how it failed. Thanks!
Stripe employees can see the build result here:
→ https://go/builds/bui_IEbnskntti6lbN


Convert HTML to Markdown (PM_COLLECT_PROC)

Fixes a lot of formatting wrongdoings, as well as renames
and reorders parameters consistently with callback signature.
Regarding this parameters:
_In_opt_ LPWSTR lpValueName,
...
_Inout_ LPDWORD lpNumObjectTypes

The query string parameter lpValueName is annotated as optional
(nullable), however I have not found a signle proof of that in either
documentation or in code. Queries against performance counters HKEYs
via RegQueryValueExW are meaningless without lpValueName, which is
exactly our query string. Running such null query results in
Error Code 0x00000057: The parameter is incorrect.
Number of objects written, lpNumObjectTypes, is specified as in/out.
I believe, this was an oversight. Documentation does not explain how
to use it as an input anyway.

@ratijas : Thanks for your contribution! The author(s) have been notified to review your proposed change.

I'd wish there were Github issues available, but here we go.
We need to port OpenPerformanceData page to new documentation system.

Thanks for the updates! However, we should reflect the source definition in the documentation. The qualifications you identify could be added as notes. Here's the definition again:
typedef DWORD (APIENTRY PM_COLLECT_PROC) (In_opt LPWSTR lpValueName,
Inout
At(*lppData, Pre_writable_byte_size(*lpcbTotalBytes) Post_writable_byte_size(*lpcbTotalBytes))
At(Old(*lppData), Post_writable_byte_size(*lpcbTotalBytes))
LPVOID *lppData,
Inout LPDWORD lpcbTotalBytes,
Inout LPDWORD lpNumObjectTypes);

Here's the definition again:

It is actually with those ugly underscore _prefixes_and_suffixes_ everywhere, but yeah, this is it.
I think this is a perfect example why documentation should be generated strictly from the source code (~cough cough rust~). Also, I don't understand where that #Syntax block magically comes from.
So, what is the best course of amendments? Reflect actual incorrect "attributes" as they are, and add my slightly modified commit message as a > [!NOTE]  AcTuAlLy, ... ?

Yes, that's what I tried to convey in my previous response. The attributes should reflect reality, while any note/qualification should address a concrete concern/error condition while being concise and to the point.

Sorry. Just wanted to make it super clear for myself, so I won't end up doing needless work.

@ratijas : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Reworked, amended. Check it out now.
BTW, I still stand by this statement:

We need to port OpenPerformanceData page to new documentation system.

Are there sources of old documentation available? Can I get help porting page metadata etc.?

@Karl-Bridge-Microsoft Hi, How is it going?

Hi @ratijas, thanks for your efforts with this topic. Your updates are extensive and require significant review and refinement. Some definitely cannot be published as is. I'll address as time permits.

Hi, @Karl-Bridge-Microsoft, it's been a while. I'm starting to worry.
What do you think of my comments?

@Karl-Bridge-Microsoft : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Hi @ratijas - as I remarked, the updates are quite extensive and need thorough review. Thanks for your patience.

Hi @Karl-Bridge-Microsoft,
It's OK, no worries. Take your time.
Do you think you could provide me with a source of OpenPerformanceData page? While you are busy with other things, I'm willing to put some effort in porting it here. That way, we could finally replace that ugly old link for good.  But I can't do it completely on my own, as I am missing yaml metadata which cannot be retrieved from a rendered webpage.

link revised
ugh. link re-revised.

It's gonna be such squash & very merge :rofl: wow

the updates are quite extensive and need thorough review.

I'd be happy to help in any way I can. If you need my cooperation, don't hesitate to ping me — it's not like I'm busy with anything urgent recently.
Best,
Ivan

@Karl-Bridge-Microsoft : Thanks for your contribution! The author(s) have been notified to review your proposed change.


File '[...]/src/App.vue.__VLS_template.jsx' is a JavaScript file. Did you mean to enable the 'allowJs' option?

This is new and occurred between > 0.37.5, <= 0.37.8

Setting it to allowJs true works for now, but I personally prefer not to allow it, so I get an error when someone in my team writes a js instead of ts file.

Seeing the same problem.
In my case it is caused by single-file-components that do not have a <script> tag.
Adding <script lang="ts" setup></script> to these files helps as a workaround for now.

@Eusebius1920 You are right 💚
The content of my App.vue is
<template lang="pug">
router-view
</template>


Allow empty patch in git apply

Fixes #991.
Previously, https://github.com/pulumi/ci-mgmt/pull/983 attempted to fix this behavior; however, the --allow-empty was erroneously appended to the git am command, not the git apply command, as it should have been.
Git documentation for git apply --allow-empty is the behavior we want.

Locally changed in pulumi-gcp:
apply() {
  assert_upstream
  assert_no_rebase_in_progress "$1"

  git submodule update --force --init
  # Iterating over the patches folder in sorted order,
  # apply the patch using a 3-way merge strategy. This mirrors the default behavior of 'git merge'
  cd upstream
  for patch in ../patches/*.patch; do
    if ! git apply --3way "$patch" --allow-empty; then
      cat <<EOF

make upstream
guin(master *) pulumi/pulumi-gcp🦉 make upstream
scripts/upstream.sh "upstream" apply
Submodule path 'upstream': checked out '580cd0c10bc9d6334da3c248f4a3b0a897c8f57a'
Applied patch to 'google-beta/provider/provider.go' cleanly.
Applied patch to 'google-beta/services/sql/resource_sql_database_instance.go' cleanly.
[...]
warning: 3 lines add whitespace errors.
Applied patch to 'google-beta/services/storage/resource_storage_bucket.go' cleanly.
Applied patch to 'google-beta/tpgresource/labels.go' cleanly.

make upstream.rebase
guin(master *) pulumi/pulumi-gcp🦉 make upstream.rebase
scripts/upstream.sh "upstream.rebase" start_rebase
Submodule path 'upstream': checked out '580cd0c10bc9d6334da3c248f4a3b0a897c8f57a'
Rebasing in place at 580cd0c10bc9d6334da3c248f4a3b0a897c8f57a
Switched to and reset branch 'pulumi-patch'
Your branch is up to date with 'local'.
branch 'pulumi-patch' set up to track 'local'.
Applying ../patches/0001-Allow-disabling-the-partner-name.patch
[...]
Applying: fix label imports
Current branch pulumi-patch is up to date.

The full patch set has been cleanly applied to the './upstream' repository.
To "edit" the patch set, commit changes directly to './upstream'. When
you are done making changes, run:

    make upstream.finalize

to finish the rebase and commit those changes into the patch set.

make upstream.finalize
guin(master *%) pulumi/pulumi-gcp🦉 make upstream.finalize
scripts/upstream.sh "upstream.finalize" end_rebase
../patches/0001-Allow-disabling-the-partner-name.patch
../patches/0002-Add-nil-checks-for-sql-database-instance-flattening.patch
../patches/0003-rebase-bigquery_dataset.patch
../patches/0004-Add-flattening-of-self-managed-certificates.patch
../patches/0005-website-docs-d-tweaks.patch
../patches/0006-docs-patching.patch

../patches/0007-Exclude-scripts-dir-from-provider-go-module.patch
../patches/0008-Remove-duplicative-resource-token.patch
../patches/0009-Fix-794-with-an-unconditional-read.patch
../patches/0010-Remove-pattern-string-from-compute-forwarding-rules.patch
../patches/0011-fix-label-imports.patch
Submodule path 'upstream': checked out '580cd0c10bc9d6334da3c248f4a3b0a897c8f57a'
Applied patch to 'google-beta/provider/provider.go' cleanly.
[...]
Applied patch to 'google-beta/provider/provider.go' cleanly.
Applied patch to 'google-beta/services/sql/resource_sql_database_instance.go' cleanly.
../patches/0010-Remove-pattern-string-from-compute-forwarding-rules.patch:16: trailing whitespace.

../patches/0010-Remove-pattern-string-from-compute-forwarding-rules.patch:25: trailing whitespace.

../patches/0010-Remove-pattern-string-from-compute-forwarding-rules.patch:38: trailing whitespace.

Applied patch to 'website/docs/r/compute_forwarding_rule.html.markdown' cleanly.
Applied patch to 'website/docs/r/compute_global_forwarding_rule.html.markdown' cleanly.
warning: 3 lines add whitespace errors.
Applied patch to 'google-beta/services/storage/resource_storage_bucket.go' cleanly.
Applied patch to 'google-beta/tpgresource/labels.go' cleanly.
guin(master *) pulumi/pulumi-gcp🦉 git status
On branch master
Your branch is behind 'origin/master' by 4 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   patches/0001-Allow-disabling-the-partner-name.patch
        modified:   patches/0002-Add-nil-checks-for-sql-database-instance-flattening.patch
        modified:   patches/0006-docs-patching.patch
        modified:   patches/0008-Remove-duplicative-resource-token.patch
        modified:   patches/0009-Fix-794-with-an-unconditional-read.patch
        modified:   patches/0011-fix-label-imports.patch
        modified:   scripts/upstream.sh

no changes added to commit (use "git add" and/or "git commit -a")


Can't make session

Expected behaviour
CAIRIS Loads
Actual behaviour
Oops. I did a gitpull, but CAIRIS won't load now suggesting a browser error that can't make a session.
I did run the quick_setup script just in case that helped clear anything, but it still won't play ball.
Steps to reproduce the behaviour
Did a git pull this in past half hour
Version of CAIRIS
Operating Systems / Hardware

Have you tried removing your cookies and browser cache?

Yep, I've done it a couple of times in FF and Chrome, but didn't help.

Strange - nothing has changed recently, so the problem is either (i) browser cache related or (ii) something about the model . Can you please upload the model so I can take a look?

I'm not sure why, the problem seems have to resolved itself.

Thank you/sorry!


Update media query for tooltip animation to avoid horizontal scroll

@pgte Are either of those Travis builds something I should be worried about?

I'm working on getting the the tests for peer-pad to be meaningful, but right now only the end-to-end test in https://github.com/ipfs-shipyard/peer-pad/blob/master/test/e2e/smoke.test.js asserts anything useful.
The tests are failing on this PR as it changes a Jest snapshot. I've just tried it locally, and I think you just need to revert the change to the snapshot and the tests will pass.

Cool, thanks @olizilla!


Use in isolate?

Has anyone ever used this library in an isolate? Seems like a natural thing to me, but I just refactored my code to do that and I'm getting an error from "state". This simple startup code;
    FlutterBlue _ble = FlutterBlue.instance;
    _ble.state.then((s) {
      print('FB: $s');
    }).catchError((err) {
      print('FB: $err');
    });

prints "FB: error: native function 'Window_sendPlatformMessage' (4 arguments) cannot be found"
sendPlatformMessage is part of Flutter's GUI code, and doesn't appear in your code anywhere. I'll try to see if I can make a minimal example for you.

@lcrocker Platform messages are for communication between Dart <-> Android/iOS.
It's been awhile since I've updated myself on the work being done to support background isolates, and I'm not sure if it will require changes to the plugin.
I'll subscribe to flutter/flutter#13937 and keep updated on it.

https://github.com/pauldemarco/flutter_blue/pull/191 should let you run in an isolate.

@rmawatson been at this all day. I pulled #191 directly and also merged with master to gain access to the new api. Everything compiles and runs, but I cannot get it to scan properly.
Here is my debug output:

Is there any update? Do Isolates work with this?

I have the same question.

Any update?


TypeError: The HTMLDivElement.align setter can only be used on instances of HTMLDivElement

When copying a DOM object, following line fails:
child[i] = _clone(parent[i], depth - 1); https://github.com/pvorb/clone/blob/e3f252d1eb24f4e269337098295604e266719d4d/clone.js#L156
TypeError: The HTMLDivElement.align setter can only be used on instances of HTMLDivElement
It seems like calling Object.getPrototypeOf on a DOM element gives HTMLDivElementPrototype which has a slightly different behavior than HtmlDivElement.
Reproducible in Safari Version 10.0 (106<IP_ADDRESS>.10)

Hm, maybe we should use the cloneNode method when dealing with document nodes?

btw, Object.create( Object.getPrototypeOf(document.createElement('div'))).align = 'foo' will fail in Chrome (Version 57.0.2987.133 (64-bit)) as well, although with a different error message:
Uncaught TypeError: Illegal invocation.
Agree that with document nodes, cloneNode should be used.

There are more cases where Object.create(Object.getPrototypeOf(...)) fails. For example: const url = clone(new URL('http://example.com')) throws the same Uncaught TypeError: Illegal invocation in chrome and TypeError: 'set href' called on an object that does not implement interface URL. in Firefox


Remove vendored three.js and ros3djs.

This also includes the 3 lines from my other pull request which should be merged first. If you do not want the other PR, I will remove the lines here too.

Hi, I get this error when running bower update:
bower ros3djs#^0.17.0                    ENORESTARGET No tag found that was able to satisfy ^0.17.0

Additional error details:
Available versions in git://github.com/RobotWebTools/ros3djs.git: 0.15.0, 0.14.0, 0.13.0, 0.12.0, 0.11.0, 0.9.0, 0.8.0

So I think we would need to use 0.15.0.
However, vendoring is probably better for now. I had to copy some unreleased changes from ros3djs:  925e7606914548157213112530d13a768f094d1b and ff63583a5be3807263fe6128625230f9f0bf7701, but I don't remember the exact rationale. I think one of them was to change the tf prefix for the URDF (to dynamically switch robot displays) and the other was to make the point cloud display faster.

Vendoring is always a bad idea - you effectively forked the downstream repository which makes it harder for your clients (me) to use both the downstream library and yours.
Once ros3djs adds the bower configuration (linked above) the error should go away - we have to wait on that for sure. Once they merged, you also should have then all the changes you hoisted into your version, since we directly depend on the current git version of ros3djs.

Could you try again, now that the ros3djs one is merged?

Same error, are you able to do it yourself?

it does work for me :/.


Rest controller(behaviors)

I use the behavior in the rest controller: the cors and the authenticator. When the query comes into action, where the "HttpBearerAuth" is and does not pass the token validation, the "handleFailure" method is called in which the exception
 throw new UnauthorizedHttpException ('Your request was made with invalid credentials.');
The exception is thrown, and headers of the cors are not set.

Q
A

Yii version
2.0.13-dev

PHP version
7.1

Operating system
Windows10

@gud3 what is the question? Attach your authenticator behavior after the cors.
/**
     * @inheritdoc
     */
    public function behaviors()
    {
        $behaviors = parent::behaviors();
        unset($behaviors['authenticator']);

        $behaviors['corsFilter'] = [
            'class' => Cors::class,
            'cors' => [
                'Origin' => ArrayHelper::getValue(\Yii::$app->params, 'cors.origin', ['*']),
                'Access-Control-Request-Headers' => ['Authorization', 'X-Pagination-Total-Count', 'X-Pagination-Page-Count', 'X-Pagination-Current-Page', 'X-Pagination-Per-Page'],
                'Access-Control-Expose-Headers' => ['Authorization', 'X-Pagination-Total-Count', 'X-Pagination-Page-Count', 'X-Pagination-Current-Page', 'X-Pagination-Per-Page'],
            ]
        ];

        $behaviors['authenticator'] = [
            'class' => HttpBearerAuth::className(),
        ];
        $behaviors['authenticator']['except'] = ['options'];

        return $behaviors;
    }

Yes, I set the cors before authentication. But when the request fails, the headers are not set. When you check, do not forget that the option query remembers the corset headers for the time specified by the "Access-Control-Max-Age"

It was all because I forgot to add a line unset($behaviors['authenticator']);. Only I do not understand how it affected if I overwrote an array?

I don't know whether this has been resolved or not.
But only to state the main points that I found here.
we must call unset($behaviors['authenticator']) before resetting the behaviors['authenticator']. This is important to make the right order becase the parent::behaviors() already has the authenticator index.

The issue is open so it was not.

I'm not sure if handling of that changed since Yii 2.0.13 but I've just tested it on 2.0.40 and CORS headers are preserved after UnauthorizedHttpException is thrown so I'm closing this. Feel free to comment if it requires reopening.

I'm not sure if handling of that changed since Yii 2.0.13 but I've just tested it on 2.0.40 and CORS headers are preserved after UnauthorizedHttpException is thrown so I'm closing this. Feel free to comment if it requires reopening.


automatic insert newline when prompt length is longer than column size

need to fix linenoise

currently not adjust prompt due to depending on external prompt rendering function


exceptions swallowing

Here is an exception swallowing antipattern used:
https://github.com/python-websockets/websockets/blob/main/src/websockets/legacy/server.py#L251
The outer try-except catches the inner exception raised here: https://github.com/python-websockets/websockets/blob/main/src/websockets/legacy/server.py#L241
Unhandled exceptions should not be silenced. Programming with this library is hard due to this issue.

For async version the exception swallowing is implemented "by design" into Python: https://bugs.python.org/issue42526
So if the legacy server is removed, this issue may not be relevant anymore.

 Or did you actually encounter an issue in practice? If you did encounter an issue, what was it?
In case you missed it — we don't have a caller to which we could propagate an exception due to the inversion of control pattern which is typical in servers. The only thing we can do is log the exception and this is happening on line 238, before re-raising it on line 241.

I spent almost whole day on debugging silenced exceptions (due to my programming errors), then on finding how to make them "loud". I'm using async websockets server, so finally I took a advice to  wrap handler with try..catch, and use traceback.print_exc there.
The websocket server runs in Django environment, so logging setup could be affected by Django project itself (I didn't verified this yet). I expected the server to crash (dunno why) when programming error / unhandled exception occurs, but this is not how asyncio works in Python.  Other servers (like Django) works similar way, so "loud" error message should be fine. But it must be displayed somewhere. I got literally nothing today on my stdout, which confused me a lot.

The only thing we can do is log the exception and this is happening on line 238, before re-raising it on line 241.

Regardless of the above, it will be better than complete silence. But I'm afraid that logging can be silenced outside. I have no idea what to do best so that the developer always sees that there is an exception. Introduce debug mode and also print exceptions to stdout? Not sure...

Responsibility for this issue sits with Django's logging, not with websockets.

With an off-the-shelf logging setup, websockets does the right thing.
For example, if you run this server:
#!/usr/bin/env python

import asyncio
from websockets.server import serve

async def echo(websocket):
    CRASH

async def main():
    async with serve(echo, "localhost", 8765):
        await asyncio.Future()  # run forever

asyncio.run(main())

and then you make a connection, you get this output:
connection handler failed
Traceback (most recent call last):
  File "/Users/myk/dev/websockets/src/websockets/legacy/server.py", line 236, in handler
    await self.ws_handler(self)
  File "/Users/myk/dev/websockets/example/echo.py", line 7, in echo
    CRASH
NameError: name 'CRASH' is not defined

The way Django configures logging is, unfortunately, just wrong :-( In Django's defense, the design of the logging module doesn't help either.
If you read closely the documentation, you will find this sentence:

logger will still exist, but will silently discard anything logged to it, not even propagating entries to a parent logger

The docs painfully point out that you do NOT want that behavior... but you get it by default... which is very unfortunate... and that's the problem you're hitting.
I recommend LOGGING_CONFIG = None and configuring logging manually.
(For context I happen to know a bit about Django.)

Yes, you're right. But other servers prints errors not only via logging. Django renders a html page with a traceback, when debug mode is enabled. Other servers returns traceback in a response to request. I would suggest not rely only on the logging.
Anyway, thanks for your effort and sorry for creating an issue not closely related to the project.

I recommend LOGGING_CONFIG = None and configuring logging manually.

In this case I can't. This is a already existing project with precise logging configuration.

 This is a already existing project with precise logging configuration.

You can.
Replace:
LOGGING_CONFIG = {...}

with:
LOGGING_CONFIG = None

import logging.config
logging.config.basicConfig({...}

Here's an example from a random project of mine.
dev settings
logging.config.dictConfig({
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'stdout': {
            'format': '%(asctime)s %(name)s %(levelname)s %(message)s',
            'datefmt': '%Y-%m-%dT%H:%M:%S%z',
        },
    },
    'handlers': {
        'stdout': {
            'class': 'logging.StreamHandler',
            'formatter': 'stdout',
        },
    },
    'root': {
        'handlers': ['stdout'],
        'level': 'INFO',
    },
})

prod settings
logging.config.dictConfig({
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'stdout': {
            'format': '%(asctime)s %(name)s %(levelname)s %(message)s',
            'datefmt': '%Y-%m-%dT%H:%M:%S%z',
        },
    },
    'handlers': {
        'stdout': {
            'class': 'logging.StreamHandler',
            'formatter': 'stdout',
        },
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'root': {
        'handlers': ['stdout', 'mail_admins'],
        'level': 'INFO',
    },
})

Now, if you want a one-line fix, just add 'disable_existing_loggers': False, to your LOGGING_CONFIG and that should solve it!

(At least solve the worst of it.)

PS - logs of Django's HTTP server don't suffer from this issue because Django [configure its logging first]

Yes. I don't like the way logging is configured in Django. I remember Pyramid, where you can set everything up just the way you want . Django won the battle, though ;)

;-)

Now, if you want a one-line fix, just add 'disable_existing_loggers': False, to your LOGGING_CONFIG and that should solve it!

Wow! Many thanks for your time and examples! I didn't expect that. I will try to improve the logging config.
But I really hate it ;)


all cluster unavailable if DNS server fails

v2.2.4
After losing our DNS Server this morning I found rancher to show all cluster being unavailable.
2019/08/04 05:08:34 [ERROR] CatalogController system-library [catalog] failed with : Remote commit check failed: Repo [https://git.rancher.io/system-charts] is not accessible: Get https://git.rancher.io/repos/system-charts/commits/release-v2.2: dial tcp: lookup git.rancher.io on <IP_ADDRESS>:53: read udp <IP_ADDRESS>:55764-><IP_ADDRESS>:53: i/o timeout
Seems a bit extreme? Why does everything go unavailable, the Rancher setup doesn't use this DNS server, its for public lookups only.

I confirm, DNS went back online and rancher is working fine again. THis is unclear because the LAN services don't use it.
It appears rancher master fails because of external git lookups


Autofullscreen + PiP causes black unusable screen

Reproduction steps

Open a video which autoplays fullscreen (biblekids basically)
Go to PiP by swiping to home screen
Go back to the app
The app becomes a black screen and you cant get out of it.

Expected behavior
The video should come back to the app and keep playing fullscreen.
Additional information
Related tickets

@mulundapm i set this to "this week", but feel free to reprioritize this

ios only

Fixed by https://github.com/bcc-code/bcc-media-app/commit/43ef30fc036506ab270ff12419f2c036ef8c1ede
v4.5.4


Pug (ex-Jade) is not highlighted

Pug (ex-Jade) is not highlighted on preview page

Hi @BroFox86 , thanks for reporting:)
It looks like the suffix .pug is not recognized by highlight.js at this moment. We need to map it to .jade internally.

It turns out that Jade/Pug is not supported in highlight.js. I'll close this issue.
@BroFox86 , If you feel the support is necessary, highlight.js might be a better place for a feature request.

https://github.com/isagalaev/highlight.js/issues/929
https://github.com/isagalaev/highlight.js/issues/1159


Making sure atleast one items is highlighted before selecting on TAB

Current behaviour is, when user press TAB, ui-select is just triggering select() without checking if there is any activeIndex. If I do a clear, then there shouldn't be any highlighted item and it should not select when I press TAB.
Please correct me if I am wrong

Reverted this since there's a test it breaks when merged with current master - this needs updating.


Two lines (marked as unread line and divider lines) display at the same time

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Open website and any paid sum chat
Click on mark as unread

Expected Result:
we should display 1 line at the same time
Actual Result:
Two lines (marked as unread line and divider lines) display at the same time
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Version Number: 1.3.58-0
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
screen-capture (4).webm

Expensify/Expensify Issue URL:
Issue reported by: @mahmudjontoraqulov
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1691827544521099
View all open jobs on GitHub

Proposal
Please re-state the problem that we are trying to solve in this issue.
Both lines (divider line and mark as unread line) show at the same time when clicking on the mark as unread
What is the root cause of that problem?
Let's see the requested money report as below image

In this report, we have 2 report actions (CREATED action and IOU action). The divider line is rendered by CREATED action, the new marker line is rendered by IOU action and the CRETED action is rendered before IOU action. After IOU action is marked as unread, currentUnreadMarker is set while rendering the IOU action. It means that the CREATED action is rendered before currentUnreadMarker is set. It caused that while rendering the CREATED action shouldHideThreadDividerLine will be set based on the old currentUnreadMarker (because in this time, currentUnreadMarker isn't set until IOU action is rendered)
What changes do you think we should make in order to solve the problem?
Because for each ReportActionList we only have one value of shouldHideThreadDividerLine. So we don't need to initialize shouldHideThreadDividerLine in renderItem function. I suggest we should create a new state called  shouldHideThreadDividerLine
const [shouldHideThreadDividerLine, setshouldHideThreadDividerLine] = useState(false);

and we will reset this state when currentUnreadMarker is changed in here
https://github.com/Expensify/App/blob/893c2a5f88ca5268230f580c26fd5b3d6a9efafe/src/pages/home/report/ReportActionsList.js#L238-L240
setshouldHideThreadDividerLine(sortedReportActions.length > 1 && sortedReportActions[sortedReportActions.length - 2].reportActionID === currentUnreadMarker.current)

Result
https://github.com/Expensify/App/assets/141406735/799fbc63-5d73-4810-a7ef-9830c6f828c3

Reviewing today!

Reviewing today while in the air! Currently taxi'd, will get to once I can hop on wifi! Sorry I didn't get to this last week, had head down on wave4 saastr

Coming back from conference last week - updating today!

confirmed

you're right! Thanks @parasharrajat!


Separate snapshot from persist

Description
For Windows users snapshot has some problems. This allows persist to work till we figure out snapshot problem on Windows, while we investigate, by separating persist and snapshot.

For contributor use:

[X] Targeted PR against master branch
[ ] Linked to GitHub issue with discussion and accepted design OR link to spec that describes this work
[X] Code follows the standards mentioned here
[X] Updated relevant documentation
[X] Re-reviewed Files changed in the GitHub PR explorer
[ ] Added appropriate labels

Codecov Report

Merging #190 (b751209) into master (a6f0f4d) will decrease coverage by 2.05%.
The diff coverage is 20.45%.

@@            Coverage Diff             @@
##           master     #190      +/-   ##
==========================================
- Coverage   51.52%   49.46%   -2.06%
==========================================
  Files          30       30
  Lines        2430     2436       +6
==========================================
- Hits         1252     1205      -47
- Misses       1028     1086      +58
+ Partials      150      145       -5

Flag
Coverage Δ

unittests
49.46% <20.45%> (-2.06%)
:arrow_down:

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

Impacted Files
Coverage Δ

server/server.go
48.81% <0.00%> (ø)

server/storage.go
5.71% <0.00%> (-0.17%)
:arrow_down:

storage/badger/store.go
37.13% <14.28%> (-12.87%)
:arrow_down:

storage/badger/config.go
55.55% <66.66%> (-6.95%)
:arrow_down:

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


async_forward_entry_setup stops working in HA 2025.01

Home Assistant Log Warning:
Detected code that calls async_forward_entry_setup for integration seatconnect with title: xxxxxxx and entry_id: yyyyyy, during setup without awaiting async_forward_entry_setup, which can cause the setup lock to be released before the setup is done. This will stop working in Home Assistant 2025.1. Please report this issue.

same here

got this warning to, plus two other ones:
Detected that custom integration 'seatconnect' calls async_forward_entry_setup for integration, seatconnect with title: XXXX and entry_id: YYYY, which is deprecated and will stop working in Home Assistant 2025.6, await async_forward_entry_setups instead at custom_components/seatconnect/init.py, line 238: hass.async_create_task(, please create a bug report at https://github.com/farfar/homeassistant-seatconnect/issues
SOURCE_TYPE_GPS was used from seatconnect, this is a deprecated constant which will be removed in HA Core 2025.1. Use SourceType.GPS instead, please report it to the author of the 'seatconnect' custom integration
The last one will be easy to fix, I think, even with my knowledge in Python and HA Integrations. But the first two seem more complicated.

Looks like hass.config_entries.async_forward_entry_setups(entry, [component]) is doing its job.
The integration works and no errors in the log.

This code is no longer being maintained by me and requires contributors in order to fix issues.
I merged the PR in latest release and it will hopefully buy you some time!
Thanks @z-master42


[AutoDiff] Declare differential-producing differential operators.

Add differential operators in the design overview that haven't been declared and reorder the declarations to match the design overview.

@swift-ci please test tensorflow


Resilience4jCircuitBreaker ignoring Context set by ContextPropagator

Hello everyone,
recently we have upgraded our Spring Cloud version to 2023.0.0 that updated spring-cloud-starter-circuitbreaker-resilience4j from version 3.0.3 to version 3.1.0. After that migration our service was not able to propagate security context when calling external service through OpenFeign client. We were using ContextPropagator to pass the the SecurityContext to the circuitbreaker in order to retrieve custom authentication token and pass it in the next request.
It seems that after the upgrade to latest version the thread that is running the Feign request is not populated with context as it was before.
After some investigation we suspect that this change might be responsible. According to some issues from the resilience4j GitHub such as this spawning additional threads after ThreadPoolBulkhead already created one might result in issues that we are observing.
We have found a solution to circumvent this issue by customizing the Resilience4jCircuitBreakerFactory with DelegatingSecurityContextExecutorService, but this would force us to disable the groups as it is not yet supported (https://github.com/spring-cloud/spring-cloud-circuitbreaker/issues/180) and we need to have groups enabled.
For now we have reverted to version 3.0.3 of spring-cloud-starter-circuitbreaker-resilience4j which works with the ContextPropagator. Would it be possible to re-enable support for it?
Sample code below:
Feign client and configuration
@FeignClient(url = "localhost:8090",
    name = "FeignApiClient",
    configuration = {FeignClientConfiguration.class})
public interface FeignApiClient extends ApiDescription {

}

public class FeignClientConfiguration {

    @Bean
    public RequestInterceptor oauth2RequestInterceptor() {
        return new SecurityContextAwareRequestInterceptor();
    }

}

Our custom Feign request interceptor to retrieve the security context and set proper headers (it is just a dummy one, so it does not set the actual values):
public class SecurityContextAwareRequestInterceptor implements RequestInterceptor {

    @Override
    public void apply(final RequestTemplate template) {
        getAuthenticationOrNull().ifPresentOrElse(authentication -> template.header(HttpHeaders.AUTHORIZATION, "Bearer " + authentication), () -> System.out.println("Security context is empty"));
    }

    private Optional<UsernamePasswordAuthenticationToken> getAuthenticationOrNull() {
        return Optional.ofNullable(SecurityContextHolder.getContext()).map(SecurityContext::getAuthentication).map(authentication -> (UsernamePasswordAuthenticationToken) authentication);
    }
}

And our ContextPropagator to set SecurityContext in threads spawned by resilience4j:
public class SecurityContextPropagator implements ContextPropagator<SecurityContext> {

    @Override
    public Supplier<Optional<SecurityContext>> retrieve() {
        return () -> Optional.ofNullable(SecurityContextHolder.getContext());
    }

    @Override
    public Consumer<Optional<SecurityContext>> copy() {
        return context -> SecurityContextHolder.setContext(context.orElse(null));
    }

    @Override
    public Consumer<Optional<SecurityContext>> clear() {
        return context -> {

        };
    }
}

Group support should be there.  In fact #180 should have been closed by https://github.com/spring-cloud/spring-cloud-circuitbreaker/pull/181

If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.

Group support should be there. In fact #180 should have been closed by #181

Oh, that's great, I missed that the PR was already merged. Then we will switch to this approach when the change is released.
Still, I would appreciate if would look into support for ContextPropagator from resilience4j or at least mention in the docs that ContextPropagator is not compatible and other approach is required.

Have you tried to see if it works without using OpenFeign?

I tried adding something like this:
public String getValue() {
        return circuitBreakerFactory.create("no-feign-circuitbreaker", "no-feign").run(() -> {
            SecurityContext context = SecurityContextHolder.getContext();
            return Optional.ofNullable(context).map(SecurityContext::getAuthentication)
                .filter(authentication -> authentication instanceof UsernamePasswordAuthenticationToken)
                .map(UsernamePasswordAuthenticationToken.class::cast)
                .map(authentication -> {
                    System.out.println("Context is here");
                    return restClient.get().uri("http://localhost:8090").header("Authentication",
                        authentication.getName()).exchange((clientRequest, clientResponse) -> {
                        return new String(clientResponse.getBody().readAllBytes(), StandardCharsets.UTF_8);
                    });
                })
                .orElseGet(() -> {
                    System.out.println("No Context Available");
                    return "";
                });
        }, throwable -> fallback());
    }

    public String fallback() {
        return "Ups, something's broken";
    }

The result is the same, using version 3.0.3 of spring-cloud-circuitbreaker-resilience4j I can access the properly populated SecurityContext within the method wrapped by the circuitbreaker, but using version 3.1.0 results in an empty context. In both cases I can see that the ContextPropagator is called, but only version 3.0.3 actually allows me to access it.

You mentioned...

We have found a solution to circumvent this issue by customizing the Resilience4jCircuitBreakerFactory with DelegatingSecurityContextExecutorService, but this would force us to disable the groups as it is not yet supported (https://github.com/spring-cloud/spring-cloud-circuitbreaker/issues/180) and we need to have groups enabled.

As mentioned above groups are now supported, so does this workaround work for your use case then?
Can you describe how you are customizing Resilience4jCircuitBreakerFactory?

Sorry, I think there was some miscommunication there. Yes, the latest code from the master branch works with this workaround when I added following configuration:
@Configuration
public class Resilience4JSecurityContextDelegatingConfig {

    @Bean
    public Customizer<Resilience4JCircuitBreakerFactory> groupExecutorServiceCustomizer() {
        return factory -> factory.configureGroupExecutorService(group -> new DelegatingSecurityContextExecutorService(Executors.newVirtualThreadPerTaskExecutor()));
    }

}

This, along with the ContextPropagator, solves the issue of the missing context, both for the raw spring-cloud-circuitbreaker as well as for the OpenFeign client. But the group support is not yet released if I'm not mistaken?

Yes, the snapshot version together with the Customizer fixes the problem as far as I can tell. Thank you for help and information.

Adding:
@Bean public Customizer<Resilience4JCircuitBreakerFactory> groupExecutorServiceCustomizer() { 	return factory -> factory.configureGroupExecutorService(group -> new DelegatingSecurityContextExecutorService(Executors.newVirtualThreadPerTaskExecutor())); }
is enough or do we need the ContextPropagator? How to configure it?

This:
@Bean
	public Customizer< Resilience4JCircuitBreakerFactory > executorServiceCustomizer()
	{
		return factory ->
		{
			SecurityContextPropagator securityContextPropagator = new SecurityContextPropagator();
			final ContextAwareScheduledThreadPoolExecutor.Builder executorBuilder = ContextAwareScheduledThreadPoolExecutor.newScheduledThreadPool();
			executorBuilder.corePoolSize( 6 );
			executorBuilder.contextPropagators( securityContextPropagator );
			factory.configureExecutorService( executorBuilder.build() );
			factory.configureGroupExecutorService( groupName -> executorBuilder.build() );
		};
	}

Seems to work. Hope is helpful for others.
Not sure we can do this via config properties as well.

Tried:
@Bean
	public Customizer< Resilience4JCircuitBreakerFactory > executorServiceCustomizer()
	{
		return factory ->
		{
			SecurityContextPropagator securityContextPropagator = new SecurityContextPropagator();
			final ContextAwareScheduledThreadPoolExecutor.Builder executorBuilder = ContextAwareScheduledThreadPoolExecutor.newScheduledThreadPool();
			executorBuilder.corePoolSize( 6 );
			executorBuilder.contextPropagators( securityContextPropagator );
			factory.configureExecutorService( executorBuilder.build() );
			factory.configureGroupExecutorService( groupName -> executorBuilder.build() );
		};
	}

and would expect my thread to have in the name the following:
THREAD_PREFIX = "ContextAwareScheduledThreadPool"

But from the logs, it seems that the pool that was defined is not the used one:
2024-06-07 10:36:29.926 DEBUG [pool-3-thread-2] - (xxx.business.service.client.DummyClient:72) - [DummyClient#get] ---> GET http://dummy-service/v1/user/abc HTTP/1.1
2024-06-07 10:36:30.927 ERROR [http-nio-8080-exec-4] - (xxx.validation.ErrorHandlingControllerAdvice:66) - Unhandled Exception
org.springframework.cloud.client.circuitbreaker.NoFallbackAvailableException: No fallback available.

Request failed because it had no Bearer token.

Finally I've figured out.
The Customizer was not applied, because of wrong import.
Make sure you import:
import org.springframework.cloud.client.circuitbreaker.Customizer

Then you can use configuration properties:
resilience4j:
  scheduled:
    executor:
      corePoolSize: 8
      contextPropagators:
        - xxx.config.SecurityContextPropagator

or you can do it programmatically:
	@Bean
	public ContextAwareScheduledThreadPoolExecutor contextAwareScheduledThreadPool(){
           return ContextAwareScheduledThreadPoolExecutor.newScheduledThreadPool()
	          .corePoolSize(8)
                  .contextPropagators(new SecurityContextPropagator()).build();
        }

Then like in the Spring Cloud docs, you can use the Customizer:
	@Bean
	public Customizer< Resilience4JCircuitBreakerFactory > executorServiceCustomizer( ContextAwareScheduledThreadPoolExecutor executor )
	{
		log.info( "Configuring Resilience4JCircuitBreaker executor service with context propagation!" );
		return factory ->
		{
			// https://docs.spring.io/spring-cloud-circuitbreaker/reference/spring-cloud-circuitbreaker-resilience4j/specific-circuit-breaker-configuration.html
			// https://docs.spring.io/spring-cloud-circuitbreaker/docs/current/reference/html/spring-cloud-circuitbreaker-resilience4j.html#_customizing_the_executorservice
			factory.configureExecutorService( executor );
			factory.configureGroupExecutorService( groupName -> executor );
		};
	}


Remove unsupported disableFlow and disableAppView commands

These commands have been non-functional for several months now. Updating to reflect their retired status.

Docs Build status updates of commit 7634678:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sharepoint/sharepoint-ps/sharepoint-online/Set-SPOSite.md
:white_check_mark:Succeeded
View (sharepoint-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Same as @dariomws says, they are still available in 16.0.21610.12000, are those going to be removed soon from the module?

@Steven-Jia please reply

@yogkumgit @get-itips thanks for calling out that they're still in the build. I wasn't aware of that when I made the doc PR. I checked with the team and they'll get around to removing it from the module in the coming weeks. However, even if a user ran the command with these parameters today, they would not do anything. Given that, would you like to wait until the parameters are removed from the module before merging this, or can we put something in now to reflect the actual retired state of those parameters?

I would say adding a note about deprecation and once the release that remove them is out, a new PR can be made to remove them.

@Steven-Jia

Docs Build status updates of commit 08f902a:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

sharepoint/sharepoint-ps/sharepoint-online/Set-SPOSite.md
:x:Error

Details

sharepoint/sharepoint-ps/sharepoint-online/Get-SPOTenantCdnPolicies.yml
:warning:Warning

Details

sharepoint/sharepoint-ps/sharepoint-online/Remove-SPODataConnectionSetting.yml
:warning:Warning

Details

sharepoint/sharepoint-ps/sharepoint-online/New-SPOSite.yml
:warning:Warning

Details

sharepoint/sharepoint-ps/sharepoint-online/Set-SPOTenant.yml
:warning:Warning

Details

sharepoint/sharepoint-ps/sharepoint-online/Set-SPOSite.md

Line 0, Column 0: [Error-MAML2Yaml_LoadFileFailed]

Failed to load file: W:/fk2c-s/sharepoint/sharepoint-ps/sharepoint-online/Set-SPOSite.md:28:(69) '> [!NOTE]
> [-DisableAppViews <AppViewsPolicy>] a...'
 Expect Heading, please try to use PlatyPS validate the content

sharepoint/sharepoint-ps/sharepoint-online/Get-SPOTenantCdnPolicies.yml

Line 11, Column 9: [Warning-file-not-found] Invalid file link: 'Set-SPOTenantCdnEnabled.yml'.

sharepoint/sharepoint-ps/sharepoint-online/Remove-SPODataConnectionSetting.yml

Line 8, Column 9: [Warning-file-not-found] Invalid file link: '../sharepoint-server/Get-SPODataConnectionSetting.yml'.

sharepoint/sharepoint-ps/sharepoint-online/New-SPOSite.yml

Line 12, Column 9: [Warning-file-not-found] Invalid file link: 'Set-SPOSite.yml'.

sharepoint/sharepoint-ps/sharepoint-online/Set-SPOTenant.yml

Line 11, Column 9: [Warning-file-not-found] Invalid file link: 'Set-SPOSite.yml'.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 5c8f02b:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

sharepoint/sharepoint-ps/sharepoint-online/Set-SPOSite.md
:x:Error

Details

sharepoint/sharepoint-ps/sharepoint-online/New-SPOSite.yml
:warning:Warning

Details

sharepoint/sharepoint-ps/sharepoint-online/Remove-SPODataConnectionSetting.yml
:warning:Warning

Details

sharepoint/sharepoint-ps/sharepoint-online/Set-SPOTenant.yml
:warning:Warning

Details

sharepoint/sharepoint-ps/sharepoint-online/Set-SPOSite.md

Line 0, Column 0: [Error-MAML2Yaml_LoadFileFailed]

Failed to load file: W:/mtit-s/sharepoint/sharepoint-ps/sharepoint-online/Set-SPOSite.md:28:(69) '> [!NOTE]
> [-DisableAppViews <AppViewsPolicy>] a...'
 Expect Heading, please try to use PlatyPS validate the content

sharepoint/sharepoint-ps/sharepoint-online/New-SPOSite.yml

Line 12, Column 9: [Warning-file-not-found] Invalid file link: 'Set-SPOSite.yml'.

sharepoint/sharepoint-ps/sharepoint-online/Remove-SPODataConnectionSetting.yml

Line 8, Column 9: [Warning-file-not-found] Invalid file link: '../sharepoint-server/Get-SPODataConnectionSetting.yml'.

sharepoint/sharepoint-ps/sharepoint-online/Set-SPOTenant.yml

Line 11, Column 9: [Warning-file-not-found] Invalid file link: 'Set-SPOSite.yml'.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

@Steven-Jia Please.

@yogkumgit can you help with resolving the failed check and merge conflicts?

Docs Build status updates of commit 16aa669:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error: PullRequestMergeConflict] Cannot sync git repo to specified state. Please make sure the pull request is mergeable.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

@Steven-Jia

@tiburd @tseward I created a new PR since it seems like this repo has been renamed and I'm running into a lot of issues when trying to merge upstream. Please review this PR: https://github.com/MicrosoftDocs/OfficeDocs-SharePoint-PowerShell/pull/75


Using new Homekit TV with iOS 10 on one device causes no response

Hi merdok - can I just start with saying this is an awesome homebridge plugin and an integral part of the home automation.  Thanks for all the hard work.
I seem to have come across a problem and I don't think it's something you can do about but thought I'd check for your thoughts on it.
I have an LG OLED using homebridge and and a variety of apple devices controlling including iPhones, iPads, HomePod etc.  They are all using iOS 12.2 except for an old iPad that I have in the wall that I run all my home automation off (using Home Assistant).
I recently decided to upgrade the settings in homebridge-webostv to use the new TV service instead of the older legacy method of buttons and I immediately found it would work for about 30 seconds but would then show a 'no response' for all my homebridge icons in HomeKit (on the iOS 12.2 devices).  I tried running debug but it would not give any hints.  In fact, the TV and nest etc would keep reporting to homebridge console but HomeKit would say no response.  So it seemed it was a homebridge -> HomeKit communication issue of some kind.
After trying a heap of things, I had a theory that maybe the old iPad using iOS 10 was causing the problem as it would come up in it's HomeKit but would say 'unsupported'.  So I turned off the iPad, removed persist, re-added the accessory etc (like I have been doing each time trying to fix it) and voila it worked!   Although the iPad was set as 'disabled' as a HomeKit hub, it seems having the iOS device connected with a component that needs iOS 12.2 causes the whole lot to stop working, even when I have a heap of other iOS 12.2 devices running, including the primary hub (HomePod).
Now unfortunately I don't have another iPad to replace this old one and it works fine for everything else.  I don't even need the TV to come up on it, just as long as I can use my homepod or Apple Watch to voice control it.  However I do need the iPad in the wall for other reasons.
I am suspecting this is a HomeKit thing but thought I would ask for your help in case it was something you might be able to control.  In the meantime I think I'll have to go back to the legacy control although I did like the remote capability in the control centre on my phone.
Thanks.
Lachlan.

Hi,
i do not think that there is something i can do about it. It would be difficult for me to reproduce the issue since all my device are on iOS12.2+. Maybe the iOS10 device cannot really work with the new TV devices introduces in iOS12.2 and because of that you have the issues.

There's the same problem in iOS 12.4.4 iPhone 5s - device not response

device not response has usually something to do with homebridge itself and not this plugin.

I'm just using this plugin, but i could be Homebridge (HOOBS) fault too.
There's quite new Note js 12.14.1...


Fix incorrect VM box in Vagrantfile

I'm really sorry about this, but I had one of the VMs using the wrong Virtualbox box. I'd been playing around with Ubuntu 16 but ended up going back to 14 for the Elasticsearch box in my local Vagrantfile, and didn't make the corresponding fix to Vagrantfile.dist.

AHA! :)


add yarn.lock to .gitignore

This is also just a test to figure out the pull process

I think yarn.lock is actually meant to be versioned

http://stackoverflow.com/questions/39990017/should-i-commit-the-yarn-lock-file-and-what-is-it-for


Added GLSL as a project using nom.

Coverage remained the same at 88.076% when pulling 19227fd6c20c71e666260bed6b90f3b123fa6f66 on phaazon:glsl into b05c3ed368580f4f6a496d626e4f942bfcc395ff on Geal:master.

Ouuuuuuui \o/


Editing the DropBox-synced notes

It should be able to edit my synced notes, not only view them.

Coming soon. Thank you for your waiting!

Woah!
"How fast is your sword!" :)
So I wait impatiently.

👍

I would also like this feature.
Great app

Came here to ask for the same thing =)
Also if I am not mistaken a note created on iOS doesn't sync to dropbox, since one can only create a note in the local folder?

Hi guys, this feature was released at iOS v1.1.0 and Android v1.0.9.
The syncing manual is here. https://medium.com/boostnote/boostnote-mobile-how-to-synchronize-with-dropbox-95d845581eea

Enjoy Boostnote :)


nc4nix: 0-unstable-2024-08-01 -> 0-unstable-2024-09-07

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for nc4nix is: Packaging helper for Nextcloud apps
meta.homepage for nc4nix is: https://github.com/helsinki-systems/nc4nix
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0-unstable-2024-08-02 in filename of file in /nix/store/rhm0pqkd927b5i41vgbyb102gzxbgckn-nc4nix-0-unstable-2024-08-02

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

nc4nix

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/rhm0pqkd927b5i41vgbyb102gzxbgckn-nc4nix-0-unstable-2024-08-02 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A nc4nix https://github.com/r-ryantm/nixpkgs/archive/536472fc4456a368300e9f3d583c4d675577c52c.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/536472fc4456a368300e9f3d583c4d675577c52c#nc4nix

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/rhm0pqkd927b5i41vgbyb102gzxbgckn-nc4nix-0-unstable-2024-08-02
ls -la /nix/store/rhm0pqkd927b5i41vgbyb102gzxbgckn-nc4nix-0-unstable-2024-08-02/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

nc4nix

Maintainer pings
cc @onny for testing.

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for nc4nix is: Packaging helper for Nextcloud apps
meta.homepage for nc4nix is: https://github.com/helsinki-systems/nc4nix
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0-unstable-2024-08-11 in filename of file in /nix/store/6miql8iqn9rzh167q7zds2sw65168x6r-nc4nix-0-unstable-2024-08-11

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

nc4nix

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/6miql8iqn9rzh167q7zds2sw65168x6r-nc4nix-0-unstable-2024-08-11 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A nc4nix https://github.com/r-ryantm/nixpkgs/archive/47bb663b0c931387435e028744d345d2cadac743.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/47bb663b0c931387435e028744d345d2cadac743#nc4nix

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/6miql8iqn9rzh167q7zds2sw65168x6r-nc4nix-0-unstable-2024-08-11
ls -la /nix/store/6miql8iqn9rzh167q7zds2sw65168x6r-nc4nix-0-unstable-2024-08-11/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

nc4nix

Maintainer pings
cc @onny for testing.

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

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for nc4nix is: Packaging helper for Nextcloud apps
meta.homepage for nc4nix is: https://github.com/helsinki-systems/nc4nix
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0-unstable-2024-08-18 in filename of file in /nix/store/lbbgs3f2xdqasmdkkx6vpdfa7kbxhp8s-nc4nix-0-unstable-2024-08-18

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

nc4nix

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/lbbgs3f2xdqasmdkkx6vpdfa7kbxhp8s-nc4nix-0-unstable-2024-08-18 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A nc4nix https://github.com/r-ryantm/nixpkgs/archive/484ff2f57cc2228987fe724f1020a416c59be119.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/484ff2f57cc2228987fe724f1020a416c59be119#nc4nix

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/lbbgs3f2xdqasmdkkx6vpdfa7kbxhp8s-nc4nix-0-unstable-2024-08-18
ls -la /nix/store/lbbgs3f2xdqasmdkkx6vpdfa7kbxhp8s-nc4nix-0-unstable-2024-08-18/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

nc4nix

Maintainer pings
cc @onny for testing.

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

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for nc4nix is: Packaging helper for Nextcloud apps
meta.homepage for nc4nix is: https://github.com/helsinki-systems/nc4nix
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0-unstable-2024-08-25 in filename of file in /nix/store/25cc8mjh7pvhyixacri2m9j9jpvg7j5l-nc4nix-0-unstable-2024-08-25

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

nc4nix

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/25cc8mjh7pvhyixacri2m9j9jpvg7j5l-nc4nix-0-unstable-2024-08-25 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A nc4nix https://github.com/r-ryantm/nixpkgs/archive/cbee0df030cfe68c98a1104291d983cd463d099c.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/cbee0df030cfe68c98a1104291d983cd463d099c#nc4nix

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/25cc8mjh7pvhyixacri2m9j9jpvg7j5l-nc4nix-0-unstable-2024-08-25
ls -la /nix/store/25cc8mjh7pvhyixacri2m9j9jpvg7j5l-nc4nix-0-unstable-2024-08-25/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

nc4nix

Maintainer pings
cc @onny for testing.

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

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

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for nc4nix is: Packaging helper for Nextcloud apps
meta.homepage for nc4nix is: https://github.com/helsinki-systems/nc4nix
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0-unstable-2024-08-30 in filename of file in /nix/store/07pzgxlablbym7k319a1zsm1bcg3jnbh-nc4nix-0-unstable-2024-08-30

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

nc4nix

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/07pzgxlablbym7k319a1zsm1bcg3jnbh-nc4nix-0-unstable-2024-08-30 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A nc4nix https://github.com/r-ryantm/nixpkgs/archive/cd471ab20e9cd1c6f2a56f61342a1a9f01a815fc.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/cd471ab20e9cd1c6f2a56f61342a1a9f01a815fc#nc4nix

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/07pzgxlablbym7k319a1zsm1bcg3jnbh-nc4nix-0-unstable-2024-08-30
ls -la /nix/store/07pzgxlablbym7k319a1zsm1bcg3jnbh-nc4nix-0-unstable-2024-08-30/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

nc4nix

Maintainer pings
cc @onny for testing.

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

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

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for nc4nix is: Packaging helper for Nextcloud apps
meta.homepage for nc4nix is: https://github.com/helsinki-systems/nc4nix
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0-unstable-2024-09-07 in filename of file in /nix/store/zhm0k21yyx9d582v1rhwf7lfpc4s3wgv-nc4nix-0-unstable-2024-09-07

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

nc4nix

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/zhm0k21yyx9d582v1rhwf7lfpc4s3wgv-nc4nix-0-unstable-2024-09-07 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A nc4nix https://github.com/r-ryantm/nixpkgs/archive/6e24b86def4c2ebf5a7f88ae0d639a530d0bb792.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/6e24b86def4c2ebf5a7f88ae0d639a530d0bb792#nc4nix

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/zhm0k21yyx9d582v1rhwf7lfpc4s3wgv-nc4nix-0-unstable-2024-09-07
ls -la /nix/store/zhm0k21yyx9d582v1rhwf7lfpc4s3wgv-nc4nix-0-unstable-2024-09-07/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

nc4nix

Maintainer pings
cc @onny for testing.

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

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


Add Newton-Krylov solver

Purpose
This PR extends NewtonsMethod so that it can run Newton-Krylov methods and Jacobian-free Newton-Krylov methods. This is necessary for testing IMEX EDMF in ClimaAtmos.
Content
NewtonsMethod now has a KrylovMethod field, which can be used to find an approximate solution to the linear system generated on each Newton iteration using any Krylov subspace solver from Krylov.jl. For a Jacobian-free Newton-Krylov solver, a ForwardDiffJVP can be used to calculate a Jacobian-vector product using the forward difference approximation, whose step size can be controlled with a ForwardDiffStepSize (there are 3 options for this---two from a paper and one that I derived myself to get some intuition for how to manually adjust the step size if it's not working well).
There is a thorough unit test of the new features in test/newton.jl, which checks that a linear equation can be solved in one iteration and that a non-linear equation can be solved in several iterations. The documentation has been extended with docs/src/newtons_method.md, which includes the docstrings for every data structure related to Newton's method (convergence checkers, periodic Jacobian updaters, forward-difference step size calculators, etc.).

bors r+


Update stable version in repo from 0.0.0 to 0.7.0

Think about adding version 0.7.0 to stable repository.
Version: stable=0.0.0 (0 days old) => latest=0.7.0 (104 days old)
Installs: stable=0 (0%), latest=412 (32.65%), total=1262
Click to edit

@pdbjjens
Any reason to NOT publish this adapter at stable repo?

@mcm1957
There are still two issues open, which I would like to fix and close, This would also involve an new version with some testing period before being published to stable.

This issue seems to be outdated.
This issue suggests to update the stable version of this adapter to 0.7.0 but the current stable version is already 0.7.0.
So this issue should be closed.


AttributeError: module 'lightning' has no attribute 'LightningApp'

AttributeError: module 'lightning' has no attribute 'LightningApp'
I can not run this project, how to deal with it ?

I was able to make it work with the following changes Inapp.py, add at the top
from lightning.app import LightningApp

And then change the following line
app = L.LightningApp(LitGradio())

Into
app = LightningApp(LitGradio())

Will make a PR to fix this

yes, LightningApp This package is included in Lightning.app, the source code does not import the app


Bug: doesn't work for signal

I have a simple test
  it("should work for signal", () => {
    const [count, setCount] = createSignal(0);

    const App = () => {
      return
{count()}
;
    };

    const result = render(() => <App />);

    expect(result.container.innerHTML).toBe("
0
");

    setCount(1);

    expect(result.container.innerHTML).toBe("
1
");
  });

the second expect does not pass since the result is still
0

I suspect this might be related to the version of Solid pulled in. It is possibly the static server version is being pulled in. If using Jest I strongly recommend using solid-jest. Please confirm. I will update the main docs to mention it.

Thanks, it works.


Remapping a shortcut for multiple keys trokes

Description of the new feature / enhancement
Maybe there is a way to accomplish this, but I can't figure it out for the life of me. I want to create a multi-key shortcut. For example, when I hit "Alt + A" I want powertoys to execute the shortcut "Alt, P, E, Up Arrow, Enter"
But I seem to only be allowed to enter one key stroke, as in I can change Alt + A to be something else, like Alt + B but I can't change it to Alt + B + Z
Is there a way?
Scenario when this would be used?
When using MIDI2LR I can only use one keyboard short cut at a time, see I need to find a way to combine multiple shortcuts into one key, then assign that one key in midi2lr
Supporting information
No response

AutoHotkey or PowerAutomate could do this without breaking a sweat!

would you have any idea how to accomplish that in auto-hotkey? I'm zero at programing :(

Based on your example, you might want to start with something like - but do check
HotIfWinActive "MIDI2LR"
!A::
{
    SetKeyDelay 75, 25  ; 75ms between keys, 25ms between down/up.
    Send, {!}{P}{E}{Up}{Enter}
}

Thanks for trying, but it didn't work. Actually, I don't think the script needs to take midi2lr into account, it just needs to execute the code in lightroom...but I suspect this is beyond my ability to understand :-(

/dup https://github.com/microsoft/PowerToys/issues/4508


University aliases

Describe the task
Many colleges/university names have aliases. We should maintain a list of aliases for any university and have them configurable from college create/edit screen. That will help with better match-making and search functionality.
Expected behavior
CRUD options for users (HR managers) to manage aliases for any university.

This is done. Closing.


Image Tile

I really needed a tile just to display images. The custom tie did not work for some reason.

That's not a really detailled description of your problem. So I've created a TilesFXTest class in the test package which shows how to show an image by using the custom tile skin. In principle this is all you need:
 Image     img     = new Image(TilesFXTest.class.getResourceAsStream(YOUR_IMAGE"));
 ImageView imgView = new ImageView(img);

 Tile tile = TileBuilder.create()
                        .skinType(SkinType.CUSTOM)
                        .prefSize(750, 750)
                        .title("Image Tile")
                        .text("My Image")
                        .textVisible(true)
                        .graphic(imgView)
                        .build();

Here is a screenshot of the Tile with an image.