Integration causes a constant and abnormal increasing of CPU and RAM Memory usage.

Description
I've successfully integrated four Tapo C420 cameras in Home Assistant.
The cameras don't have an assigned IP, since they use the Tapo Hub to communicate with the app. So, the integration was made by using the Hub IP address, and nothing went wrong.
Despite that, I discovered that the integration causes a constant and enormous increasing in CPU and RAM memoru usage; as a result, the overall performance of my HA decreased, with many response delays. Even turning on a light with a zigbee button became a struggle.
The CPU usage never increased over the 5% threshold, and now it's over 20% and still increasing hour by hour. The only thing that sets the things right is rebooting the system, but then the CPU start increasing again. Same for the RAM Memory.
I tried reinstalling the integration and disabling all the non-necessary entities, but the problem seems to be still there (I'm just using the motion sensor and the battery entities, no streaming).
My setup Is pretty clean and light, i have very few integrations and a low number of devices.
Reproduction Steps
It was described above.
Expected behavior
I shouldn't experience an increase of CPU/Memory and heavy lags.
If applicable, add error logs.
///
Device Firmware
1.2.4 Build 20221208 rel.73688
Using stream component
No
Does camera work via official integrations?
N/A
Camera has all attributes filled out in developer tools
Yes
HASS Environment
I'm using HASSIO on a Raspberry PI4 with 4GB RAM Memory.
Search for similar issues
Yes
Additional information
No response

Looks like a memory / cpu cycle leak. I am not experiencing this with multiple c200s so I cannot test this.
I don't really see a reason why this would be happening since the battery cameras actually do less, maybe some initialization / update logic is wrong since there is the difference.

I have also noticed that the integration requires a lot of time to initialize (more than 90 seconds - in my case, this is the integration that requires more time: in second place, there is Alexa Media Player, about 12 seconds) and, in my logs, i get these warnings:
Setup of select platform tapo_control is taking over 10 seconds.
08:56:53 – (AVVISO) Seleziona
Setup of number platform tapo_control is taking over 10 seconds.
08:56:53 – (AVVISO) Numero
Setup of light platform tapo_control is taking over 10 seconds.
08:56:53 – (AVVISO) Luce
Setup of button platform tapo_control is taking over 10 seconds.
08:56:53 – (AVVISO) Pulsante
Setup of switch platform tapo_control is taking over 10 seconds.
08:56:53 – (AVVISO) Interruttore
Anyway, thanks in advance for any help or suggestions... I'd like not to have to return my Tapo cameras for not being able to solve this isssue :(

I dont know if I can be of any help, but I'm getting 2 kind of errors in my logs, concerning this integrations, with a lot occurrences. Could that explain the memory leak? Is there any way to fix them?
Here you can find the error messages:

Logger: custom_components.tapo_control
Source: custom_components/tapo_control/init.py:289
Integration: Tapo: Cameras Control (documentation, issues)
First occurred: 20:53:28 (248 occurrences)
Last logged: 22:56:55
Unexpected error fetching Tapo resource status data: <pytapo.Tapo object at 0x7f8796fa30>
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 225, in _async_refresh
self.data = await self._async_update_data()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 181, in _async_update_data
return await self.update_method()
File "/config/custom_components/tapo_control/init.py", line 289, in async_update_data
] = updateDataForAllControllers[tapoController]
KeyError: <pytapo.Tapo object at 0x7f8796fa30>

Logger: custom_components.tapo_control
Source: custom_components/tapo_control/init.py:285
Integration: Tapo: Cameras Control (documentation, issues)
First occurred: 20:58:20 (227 occurrences)
Last logged: 22:51:53

HTTPSConnectionPool(host='<IP_ADDRESS>', port=443): Max retries exceeded with url: /stok=c08e99acee619920a804e8df8f33f559/ds (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f7a38d540>: Failed to establish a new connection: [Errno 111] Connection refused'))

HTTPSConnectionPool(host='<IP_ADDRESS>', port=443): Max retries exceeded with url: /stok=b0b51d4df9bb28d90af096e99daf7db9/ds (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f795b3b20>: Failed to establish a new connection: [Errno 111] Connection refused'))

HTTPSConnectionPool(host='<IP_ADDRESS>', port=443): Max retries exceeded with url: /stok=d799b35bde8b319fafe26e6b540db875/ds (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f71b3dc90>: Failed to establish a new connection: [Errno 111] Connection refused'))

HTTPSConnectionPool(host='<IP_ADDRESS>', port=443): Max retries exceeded with url: /stok=277559316db9db54c4425d06c2f858c4/ds (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f71b3cd00>: Failed to establish a new connection: [Errno 111] Connection refused'))

HTTPSConnectionPool(host='<IP_ADDRESS>', port=443): Max retries exceeded with url: /stok=c08e99acee619920a804e8df8f33f559/ds (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f71b3d1e0>: Failed to establish a new connection: [Errno 111] Connection refused'))

The error shows your camera hub is refusing the connection. You probably need to fix the network.

I have the requested TCP/lan ports already open, and the integration, however, works without problem? What could It be?
Anyway, I'm reporting this error as well:
Logger: homeassistant.helpers.entity
Source: helpers/entity.py:543
First occurred: 01:58:03 (1 occurrences)
Last logged: 01:58:03
Updating state for sensor.ingresso_battery (<class 'custom_components.tapo_control.sensor.TapoBatterySensor'>) took 0.546 seconds. Please report it to the custom integration author.

The update is fine.
The issue here is that the camera is refusing the connection sometimes, which might be the reason of the performance issues (which should be fixed).
As for the help with the network that is something you will need to figure out and fix.

Hi,
Indeed, I have noticed that the Motion Detection entity becomes unavailable
from time to time, for a short amount of time (I have enabled only that
entity and the battery entity).
Could you give me any hint about how to investigate? I really don't know
where to start. Thanks in advance!
Filippo
Il sab 14 gen 2023, 12:36 Juraj Nyíri @.***> ha scritto:

The update is fine.
The issue here is that the camera is refusing the connection sometimes,
which might be the reason of the performance issues (which should be fixed).
As for the help with the network that is something you will need to figure
out and fix.
—
Reply to this email directly, view it on GitHub
https://github.com/JurajNyiri/HomeAssistant-Tapo-Control/issues/278#issuecomment-1382719122,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AXQLB672GMQP2B3RCIUG2GLWSKFU7ANCNFSM6AAAAAATZVMUUY
.
You are receiving this because you authored the thread.Message ID:
@.***>

Hi @JurajNyiri,
I'm literally going crazy because of this issue.
I'm concluding that the problem is that your integration works fine with any Tapo camera, except for those that needs an hub.
I alredy have a Tapo C110 perfecty working with Home Assistant: all the troubles arose with Tapo C420 and its hub.
I tried:

checking the Port-Forwarding / Virtual Server configuration on my router;
monitoring the quality of the wifi signal (which is "strong" for every camera);
updating my router firmware;
resetting the hub;
removing and reinstalling the integration (many times);
removing the Ipv4 and Ipv6 firewall protections,

but nothing changed.
I guess I'll have to return all my battery Tapo camera and move to another brand, unless you can provide for some other way to try to fix the issue.

Hello, please enable debug logs and send them. Ideally also add comments to where did you see the performance decrease.

Hi,
I've started the debug logs for the integration, restarted Home assistant and stopped the debug about 30 minutes later. All I got from the logs is here (as already posted):
2023-01-15 12:58:32.648 WARNING (MainThread) [homeassistant.components.switch] Setup of switch platform tapo_control is taking over 10 seconds.
2023-01-15 12:58:32.654 WARNING (MainThread) [homeassistant.components.button] Setup of button platform tapo_control is taking over 10 seconds.
2023-01-15 12:58:32.658 WARNING (MainThread) [homeassistant.components.light] Setup of light platform tapo_control is taking over 10 seconds.
2023-01-15 12:58:32.659 WARNING (MainThread) [homeassistant.components.number] Setup of number platform tapo_control is taking over 10 seconds.
2023-01-15 12:58:32.662 WARNING (MainThread) [homeassistant.components.select] Setup of select platform tapo_control is taking over 10 seconds.
The performance decrease starts with just enabling the integration, it is enough to make CPU and Memory begin their climb to the top.
It's likely that, later or sooner, I'll get the connections issue reports as the logs previously posted.

That means you have not enabled debug logs properly.
logger:
  default: critical
  logs:
    custom_components.tapo_control: debug
    homeassistant.components.onvif: debug

Critical logs TAPO.txt.txt
Sorry, I did not know I could edit the logger. I've attached the critical logs (about 10 minutes from HA startup). If you need more, I have more than 30 minutes of logs, but the file was too big.

Thank you for submitting the logs. I will take a look a it after my vacation during February.

Well, thank you. I have 15 days left to return my cameras; so, unless you
will able to take a quick look to provide for a possible solution soon,
I'll have to move to another brand anyway.
Have a nice day.
Filippo
Il dom 15 gen 2023, 17:29 Juraj Nyíri @.***> ha scritto:

Thank you for submitting the logs. I will take a look a it after my
vacation during February.
—
Reply to this email directly, view it on GitHub
https://github.com/JurajNyiri/HomeAssistant-Tapo-Control/issues/278#issuecomment-1383193589,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AXQLB6Z6TL2XODO3M7AZD5LWSQQYDANCNFSM6AAAAAATZVMUUY
.
You are receiving this because you authored the thread.Message ID:
@.***>

having the same issues, when adding c100 and c200 to my installation, the cpu goes up to 100% and then makes the pi freeze.
no problems with c310

having the same issues, when adding c100 and c200 to my installation, the cpu goes up to 100% and then makes the pi freeze.
no problems with c310

same with c200, freeze and raspberry restart required

I checked the logs and nothing out of the ordinary in them. I think as a next step someone experiencing the issue will need to debug this in the code.

Hi, there must be something to fix for sure. In the pic you can see the growth of CPU when the integration is enabled. I disabled it when it exceed 50%. It's so frustrating :(

1.log
2.txt
Hi, I've uploaded about 17 minutes (part 1 & part 2) of logs obtained by using the Profiler integration, hoping that could help to find what the problem is caused by. First I've enabled the Profiler, then Tapo Cameras control and eventually restarted Home Assistant without any further operations to let the Profiler record.
By viewing the recordings, I noticed many redundant updates, constantly repeated in a short time, for the cameras, Is that normal? Could that be the reason why the CPU usage grows relentlessly?

Hello, can confirm I have the same issue with C420S.
CPU load shows spikes that are increasing over time and RAM usage keeps increasing.
Disabling the integration immediately shows a near 0% CPU load.
Running home assistant on docker and I will be happy to provide logs.

when i switched to 32bits installation of HA the problem stopped for me

Hi,
thanks for your commitment, it seems to work now! The memory leak seems gone, at least during the first 15-20 minutes of usage.
I'm submitting about 10 minutes of logs, recorded after HA was restarted, if useful.
home-assistant_profiler_2023-03-21T12-51-21.316Z.log


single song download

Is it possible to add one more feature if it is then please add a feature so that we can download a single song also
I mean, there are several playlists that have songs which we don't like
Or maybe another feature like after pasting the playlist link we'll get a list preview and then we can deselect those songs which we don't like
That'll be very helpful

Indeed, I wanted to download the last few songs of a playlist, but I had to download the full playlist which took a long time because there are 500 songs in it.

Okay will try and add it as a feature in next update :)
Thanks. Will try and work on it by Weekend


Question about the Voxel Features

Congratulations on your great work!
I have read your paper and have several questions that bother me:
In your work,

Firstly, the voxel grid is first generated.
Secondly, use the gird_to_lidar, lidar_to_cam, cam_to_img transformation to find the correspondence between the grid coordinates and the image coordinates.
Thirdly, use grid_sample to sample features from Frustum to Voxel.
Finally, Voxel collapse to BEV features

Since, in my opinion, the BEV features represent the world coordinates. My question is, why not just use BEV features to generate 'BEV grid', which represents the real world (lidar) coordinates? So, the  gird_to_lidar step can be omitted. Am I right?
I am still confused about the 'Voxel Features'. I don'y know what is it used for?
Thank you very much, looking forward to your replay!

Hi and thanks for the interest!
So to answer your second question, voxel_features refers to the 3D voxel feature grid, which is referred in the paper as V. We generate this as an intermediate 3D representation before collapsing it to a BEV feature grid `bev_features.
For both voxel_features and bev_features, their coordinates aren't in real world coordinates but rather in what I refer to as grid coordinates, where the coordinates are grid cell index. Meaning that coordinates range from (0, R) where R is the maximum number of cells in a specific axis. Real world coordinates range from values in metres, which is the range shown here. You need the grid_to_lidar transformation to convert from grid indices to real world coordinates in meters.

Thanks for your reply!
There exists another question:
Is it possible to directly transform the Frustum Features to BEV features without using the Voxel Features?
Thank you very much, looking forward to your replay!

Yes, it would be possible if you use the same strategy as PointPillars. Essentially, you construct your voxel grid such that it only has one height layer (voxel_size_z = 4 for KITTI). This results in voxel_features being equivalent bev_features, and can use it directly in the 3D object detection stage. An issue with this a forsee is that you only have one sampling point for each "pillar" (Center of the pillar in CaDDN), where the pillar feature should include information from all points within the pillar. This is why we construct the voxel grid first, and collapse it to BEV such that it includes information from all points within the pillar.

Thank you very much. I have got it! It really helps me a lot.


Korean translation & miho Bori Mona Yuran race plant seeds

Korean translation & miho Bori Mona Yuran race plant seeds

Sorry I somehow didn't even see these PRs, didn't get the notification.


Rmtarfix02

Added fix for removal of tarball after untar for freeing up space, and the respective test case in test_volume.py. Used os.remove instead of rm. All the test cases are working fine.

You don't need to create new PRs for these. You can just update the existing branches, FYI.


Issue #8 Archive a card

@onurbozkurt ❤thanks for implementing this great feature. I will make a release during the weekend.


Release version 2.1.0

This is a component issue for 2.1.0.
Coming from opensearch-build#1818. Please follow the following checklist.
Please refer to the DATES in that post.
How to use this issue

This Component Release Issue
This issue captures the state of the OpenSearch release, on component/plugin level; its assignee is responsible for driving the release. Please contact them or @mention them on this issue for help.
Any release related work can be linked to this issue or added as comments to create visiblity into the release status.
Release Steps
There are several steps to the release process; these steps are completed as the whole component release and components that are behind present risk to the release. The component owner resolves the tasks in this issue and communicate with the overall release owner to make sure each component are moving along as expected.
Steps have completion dates for coordinating efforts between the components of a release; components can start as soon as they are ready far in advance of a future release. The most current set of dates is on the overall release issue linked at the top of this issue.
The Overall Release Issue
Linked at the top of this issue, the overall release issue captures the state of the entire OpenSearch release including references to this issue, the release owner which is the assignee is responsible for communicating the release status broadly.  Please contact them or @mention them on that issue for help.
What should I do if my plugin isn't making any changes?
If including changes in this release, increment the version on 2.0 branch to 2.1.0 for Min/Core, and <IP_ADDRESS> for components. Otherwise, keep the version number unchanged for both.

Preparation

[x] Assign this issue to a release owner.
[x] Finalize scope and feature set and update the Public Roadmap.
[ ] All the tasks in this issue have been reviewed by the release owner.
[ ] Create, update, triage and label all features and issues targeted for this release with v2.1.0.

CI/CD

[ ] All code changes for 2.1.0 are complete.
[ ] Ensure working and passing CI.
[ ] Check that this repo is included in the distribution manifest.

Pre-Release

[ ] Update to the 2.1.0 release branch in the distribution manifest.
[ ] Increment the version on the parent branch to the next development iteration.
[ ] Gather, review and publish release notes following the rules and back port it to the release branch.git-release-notes may be used to generate release notes from your commit history.
[ ] Confirm that all changes for 2.1.0 have been merged.
[ ] Add this repo to the manifest for the next developer iteration.

Release Testing

[ ] Find/fix bugs using latest tarball and docker image provided in parent release issue and update the release notes if necessary.
[ ] Code Complete: Test within the distribution, ensuring integration, backwards compatibility, and performance tests pass.
[ ] Sanity Testing: Sanity testing and fixing of critical issues found.
[ ] File issues for all intermittent test failures.

Release

[ ] Complete documentation.
[ ] Verify all issued labeled for this release are closed or labelled for the next release.

Post Release

[ ] Prepare for an eventual security fix development iteration by incrementing the version on the release branch to the next eventual patch version.
[ ] Add this repo to the manifest of the next eventual security patch version.
[ ] Suggest improvements to this template.
[ ] Conduct a retrospective, and publish its results.

https://github.com/opensearch-project/opensearch-build/pull/2254
https://github.com/opensearch-project/index-management/pull/389
2.1.0 changes are completed and merged.

Hi @rupanshisharma ,
We found below issues tagged with v2.1.0 that were not closed or resolved in this release. Can you take a look and close the ones that are resolved or retag them with next version you see fit?
Thanks!
#285  Deprecate the "Master" nomenclature  enhancement, v2.1.0   about 2 months ago
#280  Support Snapshot Management (*SM*)   feature, v2.1.0, RFC  about 16 days ago


How often do you update the play store version?

Because I am having problems with the friend request window in NA and I saw that you already fixed it here #525 but this fix is not in the play store version yet.
Sorry if my english is bad.

When they are confident that no bugs happen. It is always better to minimize bugs in releases.
You can always grab the latest builds from GitHub Actions.

@minhducsun2002 said right about testing stuff before putting on PlayStore. It's not like the PlayStore version has any problems. The friend screen issue is basically DW messing up on NA. All other servers have that button which somehow got deleted on NA.
I can't put up a new release and expect people to understand how to use it.
Sorry for the bad editing, but this is how people are on the YouTube video on the current version:

All the wikis and have to be updated and a new tutorial video is needed for them. I don't want to be flooded with everyone asking the same questions again and again.

You can get the latest Canary build here: https://github.com/MathewSachin/Fate-Grand-Automata/releases/tag/canary
It has the latest features we have implemented.
Things have changed quite a lot from the PlayStore version and not everything is very well-tested.


A new release any time soon?

The windows destroy stream bug is a pretty major one for applications that create new streams on a regular basis. Think we could push a new version? It has been over a year after all.

Yes, agreed it's time for a new release! CPAL will publish a new version to crates.io automatically when a PR that updates the version in the cargo.toml is merged. Would you mind submitting a PR to update the version to 0.8.3? From a quick glance over the commits since the last version I don't think there have been any breaking changes that would require bumping to 0.9 just yet.
It probably also makes sense to do one more release before @ishitatsuyuki and I attempt to address #204 and #268 which may result in some more significant breaking changes (but hopefully nothing too tricky to update to).


Put DeepCAM code directly into repo

Remove the submodule link and just put the code in directly.

closed by https://github.com/mlcommons/hpc/pull/9


Test: TSC Task Provider

Test for #26079
Complexity
2
OS

[ ] Linux @bpasero
[ ] Mac @waderyan
[ ] Windows @Lixire

Setup
Create a simple workspace that has a .vscode/tasks of
{
    "version": "2.0.0"
}

Scenarios

Create a tsconfig.json in your workspace.

Run the Run task command

Ensure that a task for tsconfig.json is shown

Create a simple ts file and try building using the task. Check that errors are reported

Try running the build task. This should also build the tsconfig.json

Try creating multiple tsconfig.json in sub folders and with names such as tsconfig.app.json. You should now see task for each tsconfig.json. The build task should build all of these.

Try setting "typescript.tsc.autoDetect": "off". Ensure that tsc tasks no longer show up

@mjbvz due to https://github.com/Microsoft/vscode/issues/27516 I can no longer test.

Looks like #27516 got fixed


Conversion functions \seq_set_from_tl:Nn etc

We have \seq_(set|gset)_from_clist:NN, \seq_(set|gset)_from_clist:Nn and \clist_(set|gset)_from_seq:NN. I recently felt the need for \seq_set_from_tl:Nn to initialize a sequence variable. Would it make sense to add all conversion functions between tl, clist and seq (as lists of items)?
Note that \tl_set_from_clist:NN is not just copying: it encloses each item in the clist in braces (perhaps only if that's more than one token?). In the same way, \clist_set_from_tl:NN adds commas.
On a similar idea, \seq_set_from_prop_keys:NN might make sense (to get a sequence of all keys in a prop).

I'm wary of adding too many of these. There are cases where they are needed, but I'd prefer to see solid reasons for adding them rather than simply 'all combinations'. We want to encourage careful choosing of the correct list-like variable type, and I'm not sure simply providing 'every conversion imaginable' does that.

I was thinking of \seq_set_from_tl:Nn (not the arg type), used if you want to initialize a sequence from the items in a token list. For instance, I was trying to get random letters in the alphabet, and first, I wanted a sequence with all those letters. The simplest would be \seq_set_from_tl:Nn \l_alpa_seq { abcdefghijklmnopqrstuvwxyz }. Then, that was before we added \tl_item:Nn: now I could have stayed with a token list. It is probably best to leave those functions as an idea, but not implement them unless a real use case appears.
Do we have a list of "/candidates which aren't quite useful, at least yet/"?


SA Existence Check Fix

Fixed ServiceAgreement existence check in commit/proof managers, added optional SA object delete for cancelUpdate

Included in #189


Add support and documentation for R: prefix (JSON curly brackets support)

Solves issue https://github.com/MobileDynasty/pytest-env/issues/11

I'm currently struggling with this issue - would be good to see this merged!

I'm currently struggling with this issue - would be good to see this merged!

You should be able to pip install from my branch. The original devleopers, MobileDynasty seem to have completely abandoned development

bump

@lgarvey @deanq @areeb-lululemon @lelabo-m The issue is fixed now in the official pytest-env, https://github.com/pytest-dev/pytest-env/pull/9


Update Get-SPOSite.md

Updating note to be more accurate.

Docs Build status updates of commit 23bc32e:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sharepoint/sharepoint-ps/sharepoint-online/Get-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

somewhat related, I've seen default values in ConditionalAccessPolicy even not using the limit or filter:

@tiburd Please merge this PR. Thanks

Docs Build status updates of commit 2ba4a96:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sharepoint/sharepoint-ps/sharepoint-online/Get-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


hubble: Remove spammy debug log message on lost events

When debug log is enabled, and in particular when monitor aggregation is disabled [1], this debug message tends to spam the agent logs. Instead of rate-limiting it, given we already have a metric for the same (hubble_lost_events_total), let's just remove it.
1 - This combination of debug enabled and monitor aggregation disabled is very frequent on datapath debugging sessions.

I don't think we need to run the full end-to-end tests for this simple removal of a debug log, so marking ready to merge.

Hey! I'd like to have this backported to 1.13.6, please. This debug log can have a negative impact on CPU utilization, see #27661


Dirty eloquent models sometimes don't reload from DB as expected

I have a model User that hasOne('CustomerAccount'). CustomerAccount has some properties, such as credit_card_id and charge_amount.
The following code produces: ErrorException: Creating default object from empty value on the $account->charge_amount line.
$user = User::find($id);
$customerAccount = new CustomerAccount;
$customerAccount->user_id = $id;
$customerAccount->credit_card_id = $card_id;
$customerAccount->save();
$account = $user->customerAccount;
$account->charge_amount = 10;
$account->save;

This is not my actual code which uses several functions, but should be sufficient to explain the problem.
It's fixable by adding $user = User::find($id); immediately after $customerAccount->save();
I think $user should be marked as dirty when it's related object, CustomerAccount saves.

Thanks for the issue, but I personally disagree that we should change the current behaviour. Let's see what other people think, inc @taylorotwell.

I'd suggest that it's fair for a developer to always assume that properties and relations on their model are accurate to what's in the database as soon as a save call has been made. I understand why that's not the case here (the foreign key is on the dirty model), but think it's surprising.

I assume this doesn't happen if you did:
$customerAccount->user()->associate($user);

instead of
$customerAccount->user_id = $id;

Am I wrong about that?

@trevorgehman great question. I tend to avoid that construction because it's always felt a little clumsy to me.

Imho what @trevorgehman describes is the 'proper' way to do it in Eloquent since that's how you handle relationships. Setting the foreign keys manually bypasses the whole relationship handling and is more like a low level connection.
Imho the code you describe should not automatically touch your user instance, that's what the touches property is for.
A general rule about relationships in Eloquent is that the parent doesn't really know much about its relationship models or what operations were executed on them.
Here are a few examples:

$post = $user->post()->create(['name' => 'First Post']);
If you immediately try to access $user->post after invoking this command the relationship won't be set on $user and will be loaded from the DB even though you just created it yourself. I.e. $user->post won't be the same instance as $post and an extra DB call will be made.

$user->post()->delete();
If the post relationship was loaded before the statement $user->post it will not return null as you might expect. I.e. you will get a zombie instance which doesn't have a persistent representation in the DB.

Deleting a parent model won't delete its relationships, i.e. $user->delete() will not delete the post of the user and Eloquent doesn't provide any automatic mechanism to handle relationship deletions when the parent gets deleted. That's especially problematic if you can't use foreign key constraints.


WIP safe mode and tx pause {continued}

Targets #12092

Changes the tx pause pallet to accept input as RuntimeCalls, instead of stringy names.

The storage is still stringy names, as it allows for less headache on migration and safety
The UI can now help you as in the Proxy pallet have dropdown selections for the possible calls, and there should be no possibility of user error, or inserting calls that do not explicitly exist in the runtime. Example:

The above likely means we have to over specify calls with "real" values, but all we really want here is the call without dummy data. TBD on behavior and if a fix is possible

tests for tx pause  and safe mode working as written :tada:
uniform naming for call filters that are "safe" from being filtered by either pallet independently, it may be people will want one impl for their unfilterable calls

Considerations
One issue with tx pause pallet to accept input as RuntimeCalls: on runtime upgrades changing names or removing pallets that are paused will be inaccessible to remove from tx pause storage, as the runtime metadata won't include the matching  stringy names from before.
Possible solution: a "raw" call in this pallet to insert or drop pauses by stringy names explicitly as a privileged call for the unpause origin. Alternatively, just a note on how to remove a raw storage key if you missed it in a migration (likely not possible from the unpause origin!)
Its more of a corner case IMHO, and a very simple migration would be needed if you wanted to keep a modified call paused. No issue leaving an irrelevant call name in storage either. Not an DOS attachable thing or something likely to case any issue if forgotten
TODO

[ ] Update kitchen sink runtime config for the safe mode origins needed (not correct or working as it stands now)
[ ] Need to add tests ensuring indirect calls from pallets, like batching via util pallet (and perhaps proxy) {tested manually to work as expected in the kitchensink via polkadot.js apps UI}
[ ] Add preset call filter for the tx pause pallet such that what amounts to a "batch" of items will be placed into storage for tx pause in a single call. There should be no need to analyze and form a manual pause_call batch.

Can this be derived from a match statement ergonomically, so you can specify pallets inclusive of all calls without explicitly naming each?
Desired behavior is being able to selectively unpause calls that are placed in this preset batch of calls to add to the vec of paused calls.

To ensure that the RuntimeCall type used as a field needed to be set by end users, I wanted to make sure it wasn't too difficult and that it would prevent "footguns"  using 917961b I have made an MVP demo of using the tx-pause with subxt: https://github.com/NukeManDan/pause-subxt
@ggwpez  wdyt? Not too bad for the extra safety and less need to lookup the correct string to place into storage for the pallet and the function/call as it was previously?

This pull request has been mentioned on Polkadot Forum. There might be relevant details there:
https://forum.polkadot.network/t/safe-mode-and-transaction-pause-pallets/636/1

@ggwpez wdyt? Not too bad for the extra safety and less need to lookup the correct string to place into storage for the pallet and the function/call as it was previously?

We could already safe-guard against wrong pallet names by going through all available pallets. This is maybe also possible for calls. I think requiring additional argument data which we will then ignore is not good.
It also gives off the impression that we could filter a complete by arguments, since they are provided. But we ignore them later on.
I will ask @shawntabrizi today in a meeting what he thinks.

Agreed that extraneous call data is not ideal. Dumb question: is it possible to specify a type that is inclusive of only the call without values? Perhaps its somewhere in the macro logic to generate the RuntimeCall enum or maybe a way to cheaply impl a type that does this from the fully generated RuntimeCall enum...?

This pull request has been mentioned on Polkadot Forum. There might be relevant details there:
https://forum.polkadot.network/t/safe-mode-and-transaction-pause-pallets/636/4

This pull request has been mentioned on Polkadot Forum. There might be relevant details there:
https://forum.polkadot.network/t/safe-mode-and-transaction-pause-pallets/636/6

Introduced FullNameOf makes a handy Contains impl for calls and/or pallets to be filtered:
https://github.com/paritytech/substrate/blob/b95b2861ec0bf0d2abd89adb64a8707ff53c7904/bin/node/runtime/src/lib.rs#L217-L241


Fix fullscreen worldmap drawing

Fixes #5

With the upcoming API changes in 1.6.36 the following has to be implemented instead:
import net.runelite.api.widgets.WidgetID;
...
setLayer(OverlayLayer.MANUAL);
drawAfterInterface(WidgetID.FULLSCREEN_MAP_GROUP_ID);


Stakeholder review of Construction phase progress

#3 Issue by smattingly,
Two to three weeks into the Construction phase, all success-critical stakeholders should meet and try to come to agreement on the following points.

We agree that the work products captured in this repository ...

[ ] ... identify suitable hardware and software installations that are ready for use.
[ ] ... document that all data required to operate the system is in place.
[ ] ... document that there has been sufficient operational readiness testing.
[ ] ... document that there has been sufficient training for end users and for operations and maintenance staff.
[ ] ... document that all necessary software licenses, vendor agreements, etc. are in place, and that there is a plan for keeping them current.
[ ] ... document that sufficient tools, processes, and personnel are in place to proactively identify system problems and to address them when they occur.
[ ] ... document that sufficient tools, processes, and personnel are in place to provide support and assistance to system users.
[ ] ... document that there are clear responsibilities for dealing with various kinds of system operational and maintenance issues.
[ ] ... document that there are appropriate levels of backup and redundancy for system hardware, software, data, configuration information, and personnel.

Check the box for each item that is endorsed by all stakeholders. Then create a comment on this issue to document the outcome of the review. The comment should contain one of these three possible outcomes.

All the checklist items are complete, and the Initial Operational Capacity milestone is met.
Some checklist items are incomplete, and the Initial Operational Capacity milestone is not met. We agree to invest 2 to 3 weeks of additional work toward this milestone, then hold another review.
Some checklist items are incomplete, and we agree that no more resources should be invested in this effort.

If appropriate, set the due date of the IOC milestone for 2 to 3 weeks in the future, when the next stakeholder review will take place.

Some checklist items are incomplete, and the Initial Operational Capacity milestone is not met. We agree to invest additional work toward this milestone, then hold another review in 2 weeks.

(Picking up Fall semester) Some checklist items are incomplete, and the Initial Operational Capacity milestone is not met. We agree to invest additional work toward this milestone, then hold another review in 2 weeks.


docs(requirements): add requirements for every widget

WIP. This is hacky, I did not manage to add @requirements tags
fixes #2302

@vvo I made the requirements jsdoc tag work, and made the sidebard display dynamic. Now we need to proof read all the requirements so that we don't have duplicate info or typos :D

Netlify can't deploy anymore eh!

Netlify is broken because of sass

Thanks for @Haroenv for noticing the typos. I corrected and also added more fixes.

Dataset seems to have changed... Merging this.


Add: Scroll Duration Prop

Scroll interval and scroll duration should not be necessarily be the same time interval

Can you change your commit message to Feat: and update the document?
Ï
Thanks for your PR!~ 🍺

Totally, but I can't add it in chinese due to my lack of understanding.

Totally, but I can't add it in chinese due to my lack of understanding.

It's okay, we'll do the translation work.


tx-generator: use new JSON format in tx-generator-service

Use the auto-derived aeson instances for the tx-generator configs.
This format is easier to maintain in Haskell but not more difficult to read in nix.

subsumed by https://github.com/input-output-hk/cardano-node/pull/3638


pyre: 0.0.14 -> 0.0.17

Motivation for this change
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[X] NixOS
[X] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[X] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[X] Fits CONTRIBUTING.md.

@GrahamcOfBorg build pyre

No attempt on aarch64-linux (full log)
The following builds were skipped because they don't evaluate on aarch64-linux: pyre
Partial log (click to expand)

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowUnfree = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowUnfree = true; }
to ~/.config/nixpkgs/config.nix.

Success on x86_64-linux (full log)
Attempted: pyre
Partial log (click to expand)
Ran 57 tests in 12.013s

OK
[][][][]{}[][][][][][]
[][][][]{}[][][][][][]
[][][][]{}[][][][][][]
[][][][]{}[][][][][][]
[][][][]{}[][][][][][]
[][][][]{}[][][][][][]
/nix/store/rczaxis205i5x0lsmmabc4hz96h2gxpa-pyre-check-0.0.17

Success on x86_64-darwin (full log)
Attempted: pyre
Partial log (click to expand)
----------------------------------------------------------------------
Ran 57 tests in 4.401s

OK
[][][][][][][][][][]{}[][]
[][][][][][][][][][]{}[][]
[][][][][][][][][][]{}[][]
[][][][][][][][][][]{}[][]
[][][][][][][][][][]{}[][]
[][][][][][][][][][]{}[][]


Allow overriding optimizations and autoescape options via configuration

Twig Environment provides following additional options for developers:

autoescape (string) - Sets the default auto-escaping strategy (name, html, js, css, url, html_attr, or a PHP callback that takes the template "filename" and returns the escaping strategy to use -- the callback cannot be a function name to avoid collision with built-in escaping strategies); set it to false to disable auto-escaping.
optimizations (int)  - A flag that indicates which optimizations to apply (default to -1 -- all optimizations are enabled; set it to 0 to disable).

TwigEnvironmentFactory currently creating a new Environment instance using a limited list of options and Environment has no interface to set these options later but the construction.
This PR provides a compatible way for disabling optimizations and auto-escaping (which enabled by default) using configration:
$config = [
    'twig' = [
          'timezone'       => 'UTC',
          'cache_dir'      => 'data/cache/twig',
          // ... after all others
          'autoescape'     => false, // 'html' by default
          'optimizations'  => 0, // -1 by default
    ],
];

I have also wrote two test cases for these new options and considered using same values as Twig defaults in factory.
Only detail that bugging me is if Twig decides to change these defaults in a future release, TwigEnvironmentFactory would also need to be adjusted to reflect this changes.

I have documented them in both README.md and src/TwigEnvironmentFactory.php

Thanks, @edigu!


ENTTEC buffer bierfly resets to 0

ENTTEC buffer bierfly resets to 0 when simply sending an update. I don't know exactly what causes this. It could be that when updating (at 44Hz) the values are messed up. Is there some way to disable the resend or change the interval?

Is that with the "open" or the "pro"?

ODE MK2 ethernet

Setting dmx speed to 0 like this
universe = dmx.addUniverse("test", "artnet", enttecip.value, {         dmx_speed: 1,       });
Fixes the issue seemingly. But doesn't fix the actual problem

The best solution would be to be able to configure to only send an update when values have changed. This would still not fix the actual issue though. This could mean that when you do change values, the values in the ENTTEC are still reset to 0 briefly

Solved. I was accessing the universe singleton instance I made with async calls without locking the initializations. This would end up with one universe instance sending 0 values. The other sending my values.


Collapsed multiple EXPOSE lines into a single one

Instead of having
EXPOSE 5432
EXPOSE 8000
EXPOSE 8080

I decided to collapse everything into a single line EXPOSE 5432 8000 8080

I'm going to go ahead and close this PR since it's pretty old and conflicts with the latest Dockerfil


[Feature] Always raise warnings in every invocation, even if partial parsing is used

Is this your first time submitting a feature request?

[X] I have read the expectations for open source contributors
[X] I have searched the existing issues, and I could not find an existing issue for this feature
[X] I am requesting a straightforward extension of existing dbt functionality, rather than a Big Idea better suited to a discussion

Describe the feature
dbt sometimes raises warnings at parse time, such as tests that reference missing relations, or model configuration nodes in dbt_project.yml that refer to folders that do not exist.
On subsequent invocations, if parsing steps are skipped because partial parsing is used, then these warnings aren't re-raised, which gives the false impression that the condition that caused the warning has been resolved, when in fact the warning condition still exists.
dbt should raise parsing-related warnings on all invocations even if partial parsing means that parsing was skipped.
Describe alternatives you've considered
No response
Who will this benefit?
Anyone who encounters a parsing-related warning in dbt and is confused about why the warning message is inconsistent (see for example https://getdbt.slack.com/archives/CBSQTAPLG/p1718056852222639)
Are you interested in contributing this feature?
No
Anything else?
No response

Thanks for suggesting this @mwstanleyft 💡 !
@dataders, @jtcohen6, and myself got a chance to discuss this today, and we agree that:

dbt should raise parsing-related warnings on all invocations even if partial parsing means that parsing was skipped.

This would give users consistent and repeatable warnings regardless if partial parsing is used or not. Then users can configure warn_error_options on a warning-by-warning basis to leave as-is, silence, or promote to an error.


Updated "context" import since it has become a standard library

After "go 1.7", "context" has become a standard library
Please see: https://golang.org/doc/go1.7#context

Coverage remained the same at 67.765% when pulling 5df314a2dc5e85ac859f637309aa261ee1e957cf on faruzzy:master into 05548ff55570cdb9ac72ff4a25a3b5e77a6fb7e5 on mattn:master.

Coverage remained the same at 67.765% when pulling 5df314a2dc5e85ac859f637309aa261ee1e957cf on faruzzy:master into 05548ff55570cdb9ac72ff4a25a3b5e77a6fb7e5 on mattn:master.

Yes, known issue. This is hack for compatibility. I should decide dropping go1.6 .


[FLINK-28144][runtime] Let JobMaster support blocklist.

What is the purpose of the change
SlotPool should avoid allocating slots that located on blocked nodes. To do that, our core idea is to keep the SlotPool in such a state: there is no slot in SlotPool that is free (no task assigned) and located on blocked nodes. Details are as following:

When receiving slot offers from task managers located on blocked nodes, all offers should be rejected.
When a node is newly blocked, we should release all free(no task assigned) slots on it. We need to find all task managers on blocked nodes and release all free slots on them by SlotPoolService#releaseFreeSlotsOnTaskManager.
When a slot state changes from reserved(task assigned) to free(no task assigned), it will check whether the corresponding task manager is blocked. If yes, release the slot.

Verifying this change
BlocklistDeclarativeSlotPoolTest
DeclarativeSlotPoolServiceTest#testReleaseFreeSlotsOnTaskManager
JobMasterTest#testBlockResourcesWillTriggerReleaseFreeSlots
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (no)
If yes, how is the feature documented? (not applicable)

Thanks for review @zhuzhurk @reswqa . I 've addressed all the comments. Please take a look.

Thanks for review @zhuzhurk ! I have addressed the last comment and squashed the commits.


Add sdk-friendly output file that omits source maps

This is for DE27307: https://rally1.rallydev.com/#/23712112623/detail/defect/55991329557
Basically, we need to have a rallymetrics file that does not have a source map in it because it screws up the chrome debugger when trying to debug sdk-debug.js

LGTM


No custom include path in compiler command line

If add to src_build any -I directive containing relative path, then platformio parser just throw it away.
Example:
src_build = -I/home/user/include - work, if dir exist
src_build = -I. - don't work

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/26008880-no-custom-include-path-in-compiler-command-line?utm_campaign=plugin&utm_content=tracker%2F2014790&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F2014790&utm_medium=issues&utm_source=github).

This is also an issue on windows.  I build a default project with SublimeText which creates a src and lib directory but the lib directory is not put in the path.  So I tried adding it to the config file and can't figure out any way to do it on Windows 7, with platformio 2.2.2.  Here are the various things I tried and what I see on the compiler line:
Input: src_build_flags = -Ic:/Users/foo/project/lib
Compiler: -Ilib
Input: src_build_flags = -I/Users/foo/project/lib
Compiler: -Ilib
Input: src_build_flags = -I../lib
Compiler: -Ilib
Is there any work around?  This is pretty crippling at this point.

@TD22057 PlatformIO automatically handles libraries from lib directory. Each lib should be placed in own directory. See docs http://docs.platformio.org/en/latest/userguide/cmd_init.html#description
As for this issue - I'll work on it. Sorry for the troubles :cry:

Thanks.  Off topic: I was hoping to not have a flat library (lib/LIB_NAME/SOURCE) structure and use platformio.  There are way too many libraries with the same names so I was hoping to have lib/DIR/LIB_NAME/SOURCE and then say "#include "DIR/LIB_NAME/File.h" in my code.  Of course I'm coming from a regular C++ dev background so perhaps that's the wrong way to think about Arduino...

@TD22057 PlatformIO looks for source code of libraries in lib/DIRs. Try this:
#include <LIB_NAME/File.h>

don't need additional flags
PlatformIO will automatically find dependencies from your source files and built static libs. You should see it in build result.

Please report me if you still have problems.

Dear @aunoor, @TD22057,
Please re-test the latest PlatformIO 2.3.6.dev3 http://docs.platformio.org/en/latest/installation.html#development-version


Python 3 Compatibility

Currently, only Python 2.7 tests are passing on travis. Need to check the diff with 2to3 and get Python 3 compliance.

Tests are now passing in Python 2.x and 3.x in Travis CI, although some other tests fail because of PEP8, etc.


How to write a unit test for a command that DI Mediator

Hi,
CreateCustomerCommand.cs DI Mediator to publish customer created event. If I want to write a unit test for this, how can I create a Mediator instance for it?
Thanks.

I would go into mocking Mediatr or if you wanna test everything then go into Integration tests. I don't see any advantages of testing only command + events rather than mocking/integration.
Good luck 😅

I've added an example unit test, hope this helps, sorry for the delay!


Not sure how to launch terminal

Hi, i can't open config menu, it's said:

Not sure how to launch terminal!
Please set path to terminal executable in $TERMINAL environment variable.

however i already set env variable TERMINAL with my xfce4-terminal but problem exists. Thanks.

When you set environment variable, did you launch GUI from same terminal, or new one? Because environment variable is set only for current "window". And if you set it permanently somewhere in .profile or .bashrc, then you need to restart GUI for it to reload env variables.

@mmozeiko thanks for the answer. so i just realize that's how env variable works:

Because environment variable is set only for current "window"

i'm glad you pointing it out for me, im starting it from different terminal actually so the problems exist. however i already add export command in profile.d too but after restarting rclone-browser problem still occurred, maybe should i logout first?. But by info from about how env variable works then i have idea to edited rclone-browser menu from menulibre and change it command launcher to:
bash -c "export TERMINAL=/usr/bin/xfce4-terminal && /usr/bin/rclone-browser"
then problem solved. thanks for your help and btw this is an awesome project!.

You should be able to put "export TERMINAL=..." inside ~/.bashrc. And then it should work when launching GUI from new terminal or application launcher.

@mmozeiko thats a better idea... thanks :+1:


Save error in Windows (AccessDeniedException)

Since 1.7 I problems with configurate-yaml and loader.save(...) method.
Whenever I execute:
// ConfigurationLoader dataLoader;
// ConfigurationNoed dataNode;
dataLoader.save(dataNode);

There is a warning in console:
Error in PartiesFileDispatcher at removeParty_147: AccessDeniedException > E:\Servers\mcss\servers\Bungee_1.16.1\plugins\Parties\28722883721391database.yml.tmp -> E:\Servers\mcss\servers\Bungee_1.16.1\plugins\Parties\database.yml
sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83)
sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:301)
sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:287)
java.nio.file.Files.move(Files.java:1395)
com.alessiodp.parties.libs.configurate.loader.AtomicFiles$AtomicFileWriter.close(AtomicFiles.java:98)
java.io.BufferedWriter.close(BufferedWriter.java:266)
com.alessiodp.parties.libs.configurate.loader.AbstractConfigurationLoader.save(AbstractConfigurationLoader.java:171)
com.alessiodp.parties.core.common.storage.file.YAMLDao.saveFile(YAMLDao.java:55)
com.alessiodp.parties.common.storage.dispatchers.PartiesFileDispatcher.removeParty(PartiesFileDispatcher.java:145)
com.alessiodp.parties.common.storage.PartiesDatabaseManager.lambda$removeParty$5(PartiesDatabaseManager.java:109)
java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1640)
net.md_5.bungee.scheduler.BungeeTask.run(BungeeTask.java:63)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
java.lang.Thread.run(Thread.java:748)

The result is a correct database (the data is saved correctly) but there is the warning and a file<PHONE_NUMBER>1391database.yml.tmp is created and not eliminated.
Some info about how it is handled:

Plain server with just LuckPerms and my plugin
The removeParty (the method executed) is executed in an async single thread (not server main thread)
The tested server is BungeeCord (Build #1536 - latest one currently)
Both configurate and configurate-yaml are in the plugin jar

This sounds like some sort of filesystem permissions issue -- I develop on windows and haven't been able to reproduce this. Do you happen to have a runnable example that can reproduce it?

I completely deleted the plugin folder then let it regenerate it and now it works :P
I tested it in 2 different servers but I copy pasted the plugin folder so the permission issue was still there, really strange issue.
Sorry for the issue ;)

No worries, glad to hear it was resolved :)


Upgrade guide from Sufia/CurationConcerns

Changes

Move all app/views/curation_concerns views to app/views/hyrax
Move app/controllers/curation_concerns to app/controllers/hyrax
Move app/actors/curation_concerns to app/actors/hyrax
Move app/forms/curation_concerns to app/forms/hyrax
Move app/presenters/curation_concerns to app/presenters/hyrax
change the namespace of all controllers from CurationConcerns to Hyrax
Remove include CurationConcerns::CurationConcernController. Ensure that     self.curation_concern_type = GenericWork comes after include Hyrax::WorksControllerBehavior
Remove include Sufia::Catalog from app/controllers/catalog_controller.rb
Set config.search_builder_class = Hyrax::CatalogSearchBuilder in app/controllers/catalog_controller.rb
Remove Hydra::BatchEdit.add_routes(self) from the routes.
Remove mount CurationConcerns::Engine, at: '/' from the routes
Remove include CurationConcerns::MainAppHelpers from app/models/sufia_helper.rb
Remove include CurationConcerns::ApplicationControllerBehavior from app/controllers/application_controller.rb
Remove the files app/assets/javascripts/batch_edit.js and app/assets/stylesheets/batch_edit.scss
Create a migration to migrate sufia_features to hyrax_features

Should all the sufia here be hyrax, or are there vestiges of Sufia in hyrax yet?

Yeah s/sufia/hyrax/g

Also:

Make sure any tweaks made in the Sufia or CC initializer move over into the Hyrax initializer.

This has been completed and tested by 3-4 institutions now. Closing. https://github.com/projecthydra-labs/hyrax/releases/tag/v1.0.0.rc2****


Component widgets

Issue: https://github.com/moxie-leean/ng-patternlab/issues/3

@andybar2 a few thoughts:

I guess it's possible to override the widget's template by creating a new one with the same name, then including that instead in the pattern config? We should explain this in the docs.
Is there a way we could pass in the actual fields instead of lnContent? E.g. email, phone, etc instead. This would make the widget components more in line with the others.

@adamf321

Nowadays we can not override the widgets templates. To do that we could add an optional "template" parameter on each "enabledComponent" at the patterns.json file, and adapt the gulp task to include those custom templates instead of the default ones. That will also work for all other components too.

About lnContent parameter, I think it is actually possible to pass the actual fields. We need to change the widgets-area component which should include dynamic parameters for each section. Let me work a bit on that and I'll return back.

@andybar2 can't we override them by just omitting the component from the pattern config, then including the new one from the app with the same name?

Yes, you can create a complete custom widget (template + directive) with the same name as a generic one. Then you don't include the generic widget in the enabledComponents of the patterns.json and you can include the custom widget in the generic widgets-area. I thought you were talking about overriding only the template file, and still use the directive of the generic...

I think this is fine for now. We could improve it by doing what you say, but it's a lower priority.


Player keeps reloading 2.6.2

Unfortunately the player keeps reloading for me everyatime i start a video or live session. Has anyone a solution to this? I'm on a Sony Android TV. App version is 2.6.2. Cache and everything was deleted and fresh install has been done.

Sounds like a duplicate of #119

I had similar problems, but only with some videos.  As of 17:42UTC on Saturday, I am unable to successfully play the Qualifying replay, however the highlights for P3 do play without issue, as well as the Qualifying Pre-Show.  This leads me to believe that it could be some issue with permissions on the source files for those video streams?


How To Render ASCII Image into Box Content

I would like to render an image into the top of a scrollable box so I can scroll the image and description up and down.
I tried appending the image to the box, but it just overlays the text and doesn't scroll the content. I also tried converting the image buffer to string and inserting that as content but maybe I did it wrong, the buffer was a PNG and not an ascii art.
const myContent = 'Lorem Ipsum...';
jimp.read(__dirname + '/john.jpeg', function(err, image) {
        image
          .scaleToFit(80, 80)
          .write(__dirname + '/john.png', (err, image) => {
            image.getBuffer(jimp.MIME_PNG, function (err, image) {
              const box = blessed.box({
                parent: screen,
                padding: 2,
                content: myContent,
                scrollable: true,
                left: 'center',
                top: 'center',
                width: '100%',
                height: '100%',
                style: {
                  bg: 'black',
                  fg: 'green',
                },
                border: 'line',
                keys: true,
                vi: true,
                alwaysScroll: true,
                scrollbar: {
                  ch: ' ',
                  inverse: true
                }
              });

            // Set active
            layout.append(box);
            box.focus();

            // Add image to box...
            png = blessed.image({
              parent: box,
              top: 0,
              scale: 0.1,
              left: 0,
              width: '50%',
              height: Number.parseInt(80 * 9 /16 / 2),
              file: __dirname + '/john.png',
              search: false,
            });
            screen.render();
            screen.on('resize', () => {
              png.clearImage();
              png.setImage(__dirname + '/john.png');
              screen.render();
            })
          });
        });

I have an idea. Image has a cellmap property. Should I just convert that multi-dimensional array into a sring with newlines at end of each row?

Based on the vendor code that creates the cellmap, it looks like I should be able to do png.img.renderANSI(png.cellmap) to get a string of text that represents the image.

Wow, yeah. Now my code is even uglier, but it's on the right track... I'll have to spend time cleaning this up.
...
// Add image to box...
            const imageContainer = blessed.box({
              parent: screen,
              left: 'center',
              top: 'center',
              width: '100%',
              height: '100%',
              content: '',
            });
            imageContainer.hide();
            png = blessed.image({
              parent: imageContainer,
              top: 0,
              scale: 0.1,
              left: 0,
              width: '100%',
              height: Number.parseInt(80 * 9 /16 / 2),
              file: __dirname + '/john-bolton.png',
              search: false,
            });

            screen.render();
            screen.on('resize', () => {
              png.clearImage();
              png.setImage(__dirname + '/john.png');
              const img = png.img.renderANSI(png.cellmap);
              box.setContent(`${img}\n${myContent}`)
              screen.render();
            })
          });
...


v0.17.10 Ubuntu: blank window on startup

Expected behavior
See Kitematic window with non-blank features upon starting the application.
Actual behavior
Kitematic window is blank and unresponsive
Information about the Issue
Downloaded release v0.17.10, onto Ubuntu 18.04 system.
Unzipped file.
$ sudo dpkg -i Kitematic-0.17.10_amd64.deb
$ kitematic

...blank screen
Steps to reproduce the behavior
See immediately above.

...
...

try https://github.com/Trackhe/kitematic/releases


Warning from yarn install

Link to reproduction
No response
Describe the Bug
I was originally on payload 2.5.0 and when running a yarn install I got an error for the following dependencies of payload:
payload > json-schema-to-typescript > glob ><EMAIL_ADDRESS>payload > pino-pretty > help-me > glob ><EMAIL_ADDRESS>The error is:
This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
I updated Payload to version 2.18.3, as well as updating all of my payload plugins to the latest version and I'm still receiving the error.
To Reproduce
Run Yarn install on payload v2.18.3
Payload Version
2.18.3
Adapters and Plugins
"@payloadcms/bundler-webpack": "^1.0.6",     "@payloadcms/db-mongodb": "1.5.1",     "@payloadcms/plugin-cloud": "^3.0.1",     "@payloadcms/richtext-slate": "^1.5.2"

https://www.npmjs.com/package/inflight
Looks like inflight is deprecated.  According to this SO post, it is caused by something in eslint-typescript because there is a version mismatch;
https://stackoverflow.com/questions/78527247/have-used-npm-create-vitelatest-but-after-finishing-the-compilations-am-getting


Says "add some spawn points in" when I try to export but i already have 4.

Im trying to export so i can test it out on my quest as a .qmap but it is telling me to add in spawnpoints which i already have!

edit: I found out you need to put them under the maps game object. this is why you shouldn't skim through things.


Calico Kube-controller Keeps crashing

I built a 2-node Kubernetes Cluster, with the networking handled by Calico.
Expected Behavior
Everything would be running with no crashes..
Current Behavior
However, the kube-controller, one of the calico-node, coredns and kube-proxy are constantly crashing. (The calico-node, coredns and kube-proxy crashed are all on the worker, while the calico-node, coredns and kube-proxy on the master are fine).
kube-system   calico-kube-controllers-58dbc876ff-kkv7t   0/1     CrashLoopBackOff   14 (13s ago)     68m
kube-system   calico-node-2dq2t                          0/1     Running            0                68m
kube-system   calico-node-lvvq7                          0/1     CrashLoopBackOff   18 (3m1s ago)    68m
kube-system   coredns-79bf799d5d-splms                   1/1     Running            0                83m
kube-system   coredns-79bf799d5d-x9kf6                   0/1     CrashLoopBackOff   15 (3m19s ago)   83m
kube-system   etcd-ai-pc-wsl                             1/1     Running            0                3h3m
kube-system   kube-apiserver-ai-pc-wsl                   1/1     Running            0                3h3m
kube-system   kube-controller-manager-ai-pc-wsl          1/1     Running            0                3h3m
kube-system   kube-proxy-ksmfg                           0/1     CrashLoopBackOff   32 (45s ago)     178m
kube-system   kube-proxy-ztm5w                           1/1     Running            0                3h3m
kube-system   kube-scheduler-ai-pc-wsl                   1/1     Running            0                3h3m

k describe pod -n kube-system calico-kube-controllers-58dbc876ff-kkv7t shows it "Failed to create pod sandbox, connection is unauthorized":
Events:
  Type     Reason                  Age                From               Message
  ----     ------                  ----               ----               -------
  Normal   Scheduled               67s                default-scheduler  Successfully assigned kube-system/calico-kube-controllers-58dbc876ff-228mn to worker-1
  Warning  FailedCreatePodSandBox  66s                kubelet            Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox "51b76c61ce2ac51d9daf25e8d4b08f83cd317e784f943d21d82e5c25541be711": error getting ClusterInformation: connection is unauthorized: Unauthorized
  Normal   Killing                 52s                kubelet            Stopping container calico-kube-controllers
  Normal   SandboxChanged          51s                kubelet            Pod sandbox changed, it will be killed and re-created.
  Normal   Pulled                  49s (x2 over 52s)  kubelet            Container image "docker.io/calico/kube-controllers:v3.24.1" already present on machine
  Normal   Created                 49s (x2 over 52s)  kubelet            Created container calico-kube-controllers
  Normal   Started                 49s (x2 over 52s)  kubelet            Started container calico-kube-controllers

logs in the kube-controller node:
W1202 22:13:28.500517       1 client_config.go:617] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
2022-12-02 22:13:28.500 [INFO][1] main.go 127: Ensuring Calico datastore is initialized
2022-12-02 22:13:28.540 [INFO][1] main.go 153: Calico datastore is initialized
2022-12-02 22:13:28.540 [INFO][1] main.go 190: Getting initial config snapshot from datastore
2022-12-02 22:13:28.709 [INFO][1] main.go 193: Got initial config snapshot
2022-12-02 22:13:28.709 [INFO][1] watchersyncer.go 89: Start called
2022-12-02 22:13:28.710 [INFO][1] main.go 207: Starting status report routine
2022-12-02 22:13:28.710 [INFO][1] main.go 216: Starting Prometheus metrics server on port 9094
2022-12-02 22:13:28.710 [INFO][1] watchersyncer.go 130: Sending status update Status=wait-for-ready
2022-12-02 22:13:28.710 [INFO][1] syncer.go 86: Node controller syncer status updated: wait-for-ready
2022-12-02 22:13:28.710 [INFO][1] watchersyncer.go 149: Starting main event processing loop
2022-12-02 22:13:28.710 [INFO][1] watchercache.go 181: Full resync is required ListRoot="/calico/resources/v3/projectcalico.org/ippools"
2022-12-02 22:13:28.710 [INFO][1] main.go 493: Starting informer informer=&cache.sharedIndexInformer{indexer:(*cache.cache)(0xc000504090), controller:cache.Controller(nil), processor:(*cache.sharedProcessor)(0xc0001a3810), cacheMutationDetector:cache.dummyMutationDetector{}, listerWatcher:(*cache.ListWatch)(0xc000504078), objectType:(*v1.Pod)(0xc000601000), resyncCheckPeriod:0, defaultEventHandlerResyncPeriod:0, clock:(*clock.RealClock)(0x300a280), started:false, stopped:false, startedLock:sync.Mutex{state:0, sema:0x0}, blockDeltas:sync.Mutex{state:0, sema:0x0}, watchErrorHandler:(cache.WatchErrorHandler)(nil), transform:(cache.TransformFunc)(nil)}
2022-12-02 22:13:28.710 [INFO][1] main.go 493: Starting informer informer=&cache.sharedIndexInformer{indexer:(*cache.cache)(0xc0005040d8), controller:cache.Controller(nil), processor:(*cache.sharedProcessor)(0xc0001a3880), cacheMutationDetector:cache.dummyMutationDetector{}, listerWatcher:(*cache.ListWatch)(0xc0005040c0), objectType:(*v1.Node)(0xc00005ec00), resyncCheckPeriod:0, defaultEventHandlerResyncPeriod:0, clock:(*clock.RealClock)(0x300a280), started:false, stopped:false, startedLock:sync.Mutex{state:0, sema:0x0}, blockDeltas:sync.Mutex{state:0, sema:0x0}, watchErrorHandler:(cache.WatchErrorHandler)(nil), transform:(cache.TransformFunc)(nil)}
2022-12-02 22:13:28.710 [INFO][1] resources.go 350: Main client watcher loop
2022-12-02 22:13:28.710 [INFO][1] main.go 499: Starting controller ControllerType="Node"
2022-12-02 22:13:28.710 [INFO][1] watchercache.go 181: Full resync is required ListRoot="/calico/ipam/v2/assignment/"
2022-12-02 22:13:28.710 [INFO][1] controller.go 193: Starting Node controller
I1202 22:13:28.710626       1 shared_informer.go:255] Waiting for caches to sync for nodes
2022-12-02 22:13:28.710 [INFO][1] watchercache.go 181: Full resync is required ListRoot="/calico/resources/v3/projectcalico.org/clusterinformations"
2022-12-02 22:13:28.710 [INFO][1] watchercache.go 181: Full resync is required ListRoot="/calico/resources/v3/projectcalico.org/nodes"
2022-12-02 22:13:28.711 [INFO][1] watchercache.go 294: Sending synced update ListRoot="/calico/resources/v3/projectcalico.org/ippools"
2022-12-02 22:13:28.711 [INFO][1] watchersyncer.go 130: Sending status update Status=resync
2022-12-02 22:13:28.711 [INFO][1] syncer.go 86: Node controller syncer status updated: resync
2022-12-02 22:13:28.711 [INFO][1] watchersyncer.go 209: Received InSync event from one of the watcher caches
2022-12-02 22:13:28.711 [WARNING][1] hostendpoints.go 96: Unexpected kind received over syncer: IPPool(default-ipv4-ippool)
2022-12-02 22:13:28.968 [INFO][1] watchercache.go 294: Sending synced update ListRoot="/calico/resources/v3/projectcalico.org/nodes"
2022-12-02 22:13:28.968 [INFO][1] watchersyncer.go 209: Received InSync event from one of the watcher caches
2022-12-02 22:13:28.969 [INFO][1] watchercache.go 294: Sending synced update ListRoot="/calico/resources/v3/projectcalico.org/clusterinformations"
2022-12-02 22:13:28.970 [WARNING][1] hostendpoints.go 96: Unexpected kind received over syncer: ClusterInformation(default)
2022-12-02 22:13:28.970 [INFO][1] watchersyncer.go 209: Received InSync event from one of the watcher caches
2022-12-02 22:13:28.970 [INFO][1] watchercache.go 294: Sending synced update ListRoot="/calico/ipam/v2/assignment/"
2022-12-02 22:13:28.970 [INFO][1] watchersyncer.go 209: Received InSync event from one of the watcher caches
2022-12-02 22:13:28.970 [INFO][1] watchersyncer.go 221: All watchers have sync'd data - sending data and final sync
2022-12-02 22:13:28.970 [INFO][1] watchersyncer.go 130: Sending status update Status=in-sync
2022-12-02 22:13:28.970 [INFO][1] syncer.go 86: Node controller syncer status updated: in-sync
I1202 22:13:29.011411       1 shared_informer.go:262] Caches are synced for nodes
I1202 22:13:29.011420       1 shared_informer.go:255] Waiting for caches to sync for pods
2022-12-02 22:13:29.430 [INFO][1] hostendpoints.go 177: successfully synced all hostendpoints
I1202 22:13:29.511996       1 shared_informer.go:262] Caches are synced for pods
2022-12-02 22:13:29.512 [INFO][1] ipam.go 253: Will run periodic IPAM sync every 7m30s
2022-12-02 22:13:29.512 [INFO][1] ipam.go 331: Syncer is InSync, kicking sync channel status=in-sync

Possible Solution
I first thought it was an IP problem with the worker's Calico-node, but the solution here didn't work.: https://github.com/projectcalico/calico/issues/2965
Your Environment

Calico version calico/kube-controllers:v3.24.1
Orchestrator version Kubernetes 1.25
Operating System and version: ubuntu 22.04

This is happening because Kubernetes for Containerd settings doesn't get configured correctly by default under Ubuntu 22.04.
Follow the steps here to install and configure Containerd: https://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/install-containerd-on-ubuntu-22-04.html.


(GH-1862) Specify preferred  algorithms for SSH transport connections

This adds the following SSH transport configuration options:

encryption-algorithms
host-key-algorithms
kex-algorithms
hmac-algorithms

Each of these options accepts an array of preferred algorithms to use when
establishing a connection using the SSH transport. When a *-algorithms
option is set, net-ssh is configured to only attempt to establish a
connection to the target using algorithms in the list.
Each *-algorithms option accepts a special defaults item, which will
automatically add all of default, supported algorithms for net-ssh to
the list. For example, the following config:
ssh:
  encryption-algorithms:
    - defaults

Would expand to the following:
ssh:
  encryption-algorithms:
    - aes-256-ctr
    - aes-192-ctr
    - aes-128-ctr

Starting with the release of net-ssh 6.0, several algorithms were
deprecated and disabled by default. This prevented users from using
these algorithms when establishing connections with targets. These
options allow users to enable these deprecated algorithms.
This also catches the Net::SSH::Exception exception when establishing SSH
connections to targets. Previously, regular net-ssh exceptions would not
be caught, leading to Bolt raising a net-ssh error, which may not have
enough information for a user to correct the issue.
In particular, when net-ssh is unable to settle on an algorithm between
the server and client preferences, it would raise an exception listing
the server and client preferences that would not be caught by Bolt. Now,
Bolt will catch these exceptions and change them to Bolt errors. When
net-ssh is unable to settle on an algorithm, Bolt will also add
additional information such as which algorithms are supported and how to
enable disabled algorithms.
!feature

Specify preferred algorithms for SSH transport connections
(#1862)
Users can now specify a list of preferred algorithms to use when
establishing connections with targets using the SSH transport with the
encryption-algorithms, host-key-algorithms, kex-algorithms, and
hmac-algorithms config options. Each option accepts an array of
algorithms and overrides the default list of preferred algorithms.
You can read more about these options in the Bolt configuration
reference.

!feature

Improve error handling when unable to settle on OpenSSH algorithms
(#1861)
Bolt now raises a more detailed error message when the local host and
remote target are unable to settle on an OpenSSH algorithm when
establishing a connection. The error includes a list of supported
algorithms, including instructions on how to enable support for
unsecure algorithms that are disabled by default.

CLA signed by all contributors.

I think these commits can be squashed.

It looks like we can add Macs to this list, but not KexAlgorithms

I think all three commits can be squashed, this is all part of the same work.


ANCOM Speed

Hi all,
First I wanted to say thank you for making this wonderful program open source. Its people who do this who really help push science forward. So thank you.
I am using ANCOM on human stool microbiome data. Specifically, shotgun metagenomic data, taxonomic data that has been classified by Kraken2. I have used ANCOM successfully for this procedure. However, this step
res = ANCOM(feature_table, meta_data, struc_zero, main_var, p_adj_method,
alpha, adj_formula, rand_formula)
took me around 12 hours. Not 30seconds. I have seen issue #17 but I am not comfortable filtering my data.
However, I have at my disposal a 24 core CPU so I thought I would run ANCOM in parallel to speed it up. Basically I transformed res= in to a function, exported to the cluster and ran it. It runs however, I think instead of using 20 cores as I instructs its just running the same code 20 times because its really slow.
#make CPU cluster
detectCores()
cl <- makeCluster(20) #Make cluster, change CPU number to number of cores available
clusterEvalQ(cl, {
library(readr)
library(tidyverse)
library(tidyr)
library(dplyr)
library(readxl)
library(nlme)
library(dplyr)
library(ggplot2)
library(compositions)
})
clusterExport(cl, c('feature_table','meta_data','struc_zero','p_adj_method','p_adj_method','adj_formula','rand_formula',"ANCOM", "main_var"))
f1 <-function(i) {
t_start = Sys.time()
res = ANCOM(feature_table, meta_data, struc_zero, main_var, p_adj_method,
p_adj_method, adj_formula, rand_formula)
t_end = Sys.time()
t_run = t_end - t_start # around 30s
}
clusterExport(cl, c('f1'))
data.go <- lapply(cl, f1)
So I guess my question is, is there any valid way to make this process faster, or has anyone had success running ANCOM with parallel. Thanks in advanced.

Hi @DJFast,
Thanks for your interest in ANCOM and your valuable comment on parallel computing!
Unfortunately, the ANCOM R script was not written in the form of parallel computing, but we will definitely add this feature when publishing the corresponding R package.
Best,
Huang

Hi @FrederickHuangLin
Thanks for getting back to me on this. I appreciate the honesty. I look forward to the upcoming release of the R package. Keep up the great work.
Best,
David


Console changes automatically changes font

I am running Windows 10 Pro Insider Preview Build 17711.
Opening a Powershell session with Open Powershell here starts a session with codepage 65001 (utf8). When using any commandline tool like robocopy, the codepage seems to switch to cp932, my computer's locale for non-Unicode applications, for the duration of the tool's task. After the task has finished, the codepage reverts to 65001. In case of these two codepages, where one codepage does not support Lucida Console, this codepage switching is easily noticeable by the switches to the CJK console font and back to Lucida Console.
Expected performance is that the codepage is not changed, even though it is preferable in cases where the tool actually outputs cp932.

I suspect this is in part caused by the new API that's been introduced in build 17711.

@DarthSpock, It's got nothing to do with the new API because there isn't a tool on the planet yet that calls the new API.
@Dormanil, what language is your computer in by default? What did you set your regional and locale settings to? (a.k.a. how did you end up in 65001 to begin with and are you perhaps using a Japanese machine so it is trying to default to 932?)

Click the "Change system locale..." button on the "Region" page where you captured the last screenshot there.
There's a "Beta: Use Unicode UTF-8 for worldwide language support" checkbox there. Is it checked?

It is not.

Registry Editor. HKCU\Console node.
Check all the folders and subfolders. Report any of them that have the key name "CodePage" set and what it is set to.
As an example, you might say
HKCU\Console > No CodePage Key
HKCU\Console%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe\ > CodePage key says 65001.

Node
CodePage Key Value

HKCU\Console
N/A

HKCU\Console%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe
932

HKCU\Console%SystemRoot%_SysWOW64_WindowsPowerShell_v1.0_powershell.exe
N/A

HKCU\Console\C:_Program Files_WindowsApps_CanonicalGroupLimited.UbuntuonWindows_1604.2017.922.0_x64__79rhkp1fndgsc_ubuntu.exe
N/A

HKCU\Console\C:_Program Files_WindowsApps_KaliLinux.54290C8133FEE_<IP_ADDRESS>_x64__ey8k8hqnwqnmg_kali.exe
N/A

HKCU\Console\Git Bash
N/A

HKCU\Console\Git CMD
N/A

OK, then that is mega wacky how you even got to 65001 in the first place.
I'm going to go with your weird locale mixing dance is tripping up someone's code somewhere in this entire stack. I'll file a bug, but it's honestly priority 3 as most people don't mix locales as hard as you do.
This is now MSFT:18239932.

Same thing happens to me. Insider 17713.1000 is used. No CodePage is set in HKCU\Console and any of its subsets, locale set to China (Simplified Chinese) and the 'Beta UTF-8 Support' isn't checked; launching PowerShell goes direct to 65001 and running any command (including PowerShell built-in ones) will cause codepage changed to 936 until the command finishes.
Also, something even worse is that in WSL, I ssh onto some machine (it's fine till here) and open a tmux/vim, font is changed to "新宋体" which is not the setting I'm using anywhere (I've changed font in HKCU\Console to some other font, and also ubuntu.exe). Here I've checked the codepage after tmux/vim opened, it's still 65001, not changed. No clue why this would happen.

OK, so some background on why this happens.
GDI, the really old rendering stack we use, converts your codepage to a "charset" in order to figure out what font to use. This is easy and makes sense for things like 437 US English Codepage = Western Charset, 932 Japanese Codepage = Japanese Charset, 949 Korean Codepage = Hangeul Charset.
However, when you have 65001 for whatever reason, that represents UTF-8 Unicode which is technically supposed to be capable of representing any character. But it doesn't have a well-defined charset.
When the codepage changes from 65001 to 936 (which is probably your "non-Unicode locale for system applications" in the Regional control panel page), GDI goes from "I have no idea what the charset is so I'm not going to try to match a font" to "Ooooh, ooooh, I know what this is, I'm going to choose a font that primarily supports simplified Chinese!" and the font switches on you.
If you were in 936 the whole time, the font wouldn't have changed.
This isn't an easy fix on the console window side because some people like the font changing when things go from 437 (English) to 936 (Simplified Chinese) because most English fonts don't have Simplified Chinese characters in them, and that old rendering engine of GDI we use doesn't have a very good way of doing font-fallback (or stitching characters from other fonts into your current one when a glyph is missing).
I'm not sure why Powershell is launching in 65001. That's the biggest mystery and what has changed in the system to start showing you this problem.

Update: I am discussing this issue with the PowerShell team. Will post an update soon.

It seems to have been fixed here in build 17763.1; the terminal now launches in 936 which is the correct codepage on my PC.

OK I tried on 17763.1 and on 18309 and I cannot get the Powershell window to launch in 65001 with Launch Powershell Here. I'm going to close this for now and I closed the internal bug. If it comes back, let me know.


Closes #47 - Switch to admiraldev::assert_unit()

Thank you for your Pull Request! We have developed this task checklist from the Development Process Guide to help with the final steps of the process. Completing the below tasks helps to ensure our reviewers can maximize their time on your code as well as making sure the admiral family codebase remains robust and consistent.
Please check off each taskbox as an acknowledgment that you completed the task or check off that it is not relevant to your Pull Request. This checklist is part of the Github Action workflows and the Pull Request will not be merged into the main branch until you have checked off each task.

[x] Place Closes #<insert_issue_number> into the beginning of your Pull Request Title (Use Edit button in top-right if you need to update)
[x] Code is formatted according to the tidyverse style guide. Run styler::style_file() to style R and Rmd files
[x] Updated relevant unit tests or have written new unit tests, which should consider realistic data scenarios and edge cases, e.g. empty datasets, errors, boundary cases etc. - See Unit Test Guide
[x] If you removed/replaced any function and/or function parameters, did you fully follow the deprecation guidance?
[x] Update to all relevant roxygen headers and examples, including keywords and families. Refer to the categorization of functions to tag appropriate keyword/family.
[x] Run devtools::document() so all .Rd files in the man folder and the NAMESPACE file in the project root are updated appropriately
[x] Address any updates needed for vignettes and/or templates
[x] Update NEWS.md under the header # admiral<ext> (development version) if the changes pertain to a user-facing function (i.e. it has an @export tag) or documentation aimed at users (rather than developers)
[x] Build site pkgdown::build_site() and check that all affected examples are displayed correctly and that all new functions occur on the Reference page.
[x] Address or fix all lintr warnings and errors - lintr::lint_package()
[x] Run R CMD check locally and address all errors and warnings - devtools::check()
[x] Link the issue in the Development Section on the right hand side.
[x] Address all merge conflicts and resolve appropriately
[x] Pat yourself on the back for a job well done! Much love to your accomplishment!

@AndersAskeland @manciniedoardo
The updated admiraldev::assert_unit() has now been merged to main, so this is to finalize the ratio functions by switching from our internal unit assertion to admiraldev's one. I'm also taking a chance to update the code as per discussion here. Thanks in advance for your review.

It is looking good!
I have one thing that I think we should discuss before merging, which is how we should handle constant variables.
For instance, as the code is now, derive_param_waisthgt() will set height as constant if we provide an argument for constant_by_vars. I fear that this might be a bit confusing, both because the documentation says "By variables for when Height is constant", and that we don't specifically state we want a constant. I actually think we should have an additional argument, where we more specifically set height as a constant. For instance, constant_height. What are your thoughts on this @yurovska ?

@AndersAskeland Thanks for your comment. I personally don't find it confusing given that all other similar {admiral} functions are designed in the same way. For instance, see derive_param_bmi

It is looking good!
I have one thing that I think we should discuss before merging, which is how we should handle constant variables.
For instance, as the code is now, derive_param_waisthgt() will set height as constant if we provide an argument for constant_by_vars. I fear that this might be a bit confusing, both because the documentation says "By variables for when Height is constant", and that we don't specifically state we want a constant. I actually think we should have an additional argument, where we more specifically set height as a constant. For instance, constant_height. What are your thoughts on this @yurovska ?

@AndersAskeland Thanks for your comment. I personally don't find it confusing given that all other similar {admiral} functions are designed in the same way. For instance, see derive_param_bmi

In that case, I agree we should keep it consistent with admiral! Great work @yurovska !


Should owner and path be separate list items under write_files

Should owner and path be in different list item in the example below? Are owner, path and content keys not supposed to be part of one object?
write_files:
  - owner: www-data:www-data
  - path: /etc/nginx/sites-available/default
    content: |
      server {
        listen 80;
        listen 443 ssl;
        ssl_certificate /etc/nginx/ssl/mycert.cert;
        ssl_certificate_key /etc/nginx/ssl/mycert.prv;
        location / {
          proxy_pass http://localhost:3000;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection keep-alive;
          proxy_set_header Host $host;
          proxy_cache_bypass $http_upgrade;
        }
      }
  - owner: azureuser:azureuser
  - path: /home/azureuser/myapp/index.js
    content: |
      var express = require('express')
      var app = express()
      var os = require('os');
      app.get('/', function (req, res) {
        res.send('Hello World from host ' + os.hostname() + '!')
      })
      app.listen(3000, function () {
        console.log('Hello world app listening on port 3000!')
      })

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

ID: 0d3da20d-57c3-1dcf-ada6-e9ded556e028
Version Independent ID: bc6f80e2-38c9-aafe-cbe9-2eaf94117474
Content: Tutorial - Customize a Linux VM with cloud-init in Azure
Content Source: articles/virtual-machines/linux/tutorial-automate-vm-deployment.md
Service: virtual-machines-linux
GitHub Login: @cynthn
Microsoft Alias: cynthn

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

@mjalas Thanks for reporting. owner, path and content keys should be part of same object.


Android API33 (Xamarin) looks to be missing with VS 16.11.23 update

Description
After Jan 11, 2023 we are seeing build errors for our Xamarin project, saying it could not find android.jar for API level 33.
##[error]C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(520,2): Error XA5207: Could not find android.jar for API level 33. This means the Android SDK platform for API level 33 is not installed. Either install it in the Android SDK Manager (Tools > Android > Android SDK Manager...), or change the Xamarin.Android project to target an API version that is installed. (C:\Program Files (x86)\Android\android-sdk\platforms\android-33\android.jar missing.)
Platforms affected

[X] Azure DevOps
[ ] GitHub Actions - Standard Runners
[ ] GitHub Actions - Larger Runners

Runner images affected

[ ] Ubuntu 18.04
[ ] Ubuntu 20.04
[ ] Ubuntu 22.04
[ ] macOS 11
[ ] macOS 12
[X] Windows Server 2019
[ ] Windows Server 2022

Image version and build link
Runner Image
Image: windows-2019
Version: 20230117.1
Included Software: https://github.com/actions/runner-images/blob/win19/20230117.1/images/win/Windows2019-Readme.md
Image Release: https://github.com/actions/runner-images/releases/tag/win19%2F20230117.1
Is it regression?
Version: 20221214.4
Expected behavior
See description
Actual behavior
See description
Repro steps
See description

Hello @t-anderson!
After little check I found that we have only 33-EXT4 platform SDK . Check here:

Just to be sure I used setup-android action and got same result:

I recommend you to check your project for an opportunity to use that SDK. Or you may open an issue for VS Studio developers. It happens from time to time with VS. For example: https://github.com/dotnet/maui/issues/10222

Opened and issue on VS Developer Community. https://developercommunity.visualstudio.com/t/Android-API33-Xamarin-looks-to-be-miss/10258905

I know this is closed but why was the extension included in the name?  I think its possible that is what's throwing things off for the build.  Notice that EVERY other version of the Android Platform SDK is a simple numeric.  In the AndroidManifest.xml, one does not reference the minor version number, rather just the main version number for the target SDK version.
In the most recent version of Visual Studio for Windows 2022, the Android SDK only offers us developers 33.0.2.  We don't even have access to 33-EXT4

The following can be used to work around the problem:
    - name: Install Android 33
      if: runner.os == 'Windows'
      shell: cmd
      run: '%ANDROID_HOME%\cmdline-tools\latest\bin\sdkmanager "platforms;android-33"'

It is only needed on windows-2019, not on windows-2022 or windows-latest.

@mattjohnsonpint would be available with the new Windows images very soon. Deployment in progress.


Exceptions thrown inside a block passed to DefaultAbly’s scope.launch() are suppressed

See 4430c3527b70fa8649cba99501dde2cb84330e13 which demonstrates this issue. The part that worries me is in bold.

I have modified the code so that the test "connect - when channel attach does not complete" will cause line 374 of Ably.kt to throw an exception.
When running this test, a message is logged (presumably by the coroutines runtime) about the caught exception, but it does not seem to propagate any further and the test passes.
This issue only occurs when I throw the exception inside the scope.launch block - if I call it outside that block then the exception propagates and the test fails.
I guess this is related to the fact that scope uses SupervisorJob, which I believe introduces some sort of error suppression behaviour. I don’t know whether this is intentional, perhaps so that unexpected errors don’t bring the whole process down? But in unit tests, it has the nasty side effect of causing MockK’s fail-fast mocks – which rely on exceptions to communicate the fact that they have been incorrectly configured (i.e. that a called method has not been mocked) – to not cause a test failure when incorrectly configured. This can lead to incorrectly passing tests.

The corresponding Jira issue is https://ably.atlassian.net/browse/SDK-3247


Add reqwest client to proxy middleware

This PR was basically a copy from older version with testcases added.


Add peer-dependencies

Seems like Electron, React, and React DOM should be peer-dependencies, right?

Updated in e762b36


[RFE] Add the machine(set) and auto-scaler output when available

The machines, machinesets, and cluster auto-scaller config should be displayed when available in the node section.

Included since version 1.2.10


Calling commands from builtin does not enter INSERT mode in fzf window

calling commands from the command line are unaffected. the fuzzy finder hangs when using builtin -> anycommand

Can you provide more information what's happening? which command are failing? is it just files for exmaple or all?  does the same command work when run outside of the builtin? what neovim/fzf versions are you using?

sorry, the commands work from builtin but picker is unusable. calling them directly works fine. Here's a link to a image https://imgur.com/5zlFAy0 . the top  was called directly from a mapped key, the bottom from builtin. notice the cursor is at the bottom of the picker (green background) which scrolls but selects/highlights nothing
Packer updated fzf-lua today, neovim version 0.6

Oh, I see what's happening here, it's just not entering INSERT mode after being called from builtin, press i after the call from builtin and you'll be able to interact with the window.
Let me change the title of this post and try to figure out why this happens.
In the meantime can you run the below and let me know the result?
-- should return 'true' or 'false'
:lua print(vim.tbl_isempty(vim.fn.getcompletion('ModeChanged', 'event')))

Btw, from the screenshot it seels you do not have fd installed, (non-GNU find prepends ./ before paths), I'd highly recommend installing fd for better functionality and performance.
Same goes for rg (ripgrep) if you don't have it for better grep functionality.

Don't need to test or reply to the earleir comment latest commit should solve this for you.

the print command returns true
i do have fd installed although i may have changed the config in the past

FYI, the ./ prefix seems to be a new thing since fd v8.3.0 (see chanelog) now requires adding --strip-cwd-prefix to remove the prefix.
I don't really want to test fd version to conditonally add this option so fzf-lua now does the stripping if necessary.