perf: optimize set_body function

Summary:
This pull request optimizes the set_body function in the RequestTemplate module, eliminating redundancy and improving code readability.
Issue Reference(s):
Fixes #934
Build & Testing:

[x ] I ran cargo test successfully.
[ ] I have run ./lint.sh --mode=fix to fix all linting issues raised by ./lint.sh --mode=check.

Checklist:

[ x] I have added relevant unit & integration tests.
[ ] I have updated the documentation accordingly.
[x ] I have performed a self-review of my code.
[x ] PR follows the naming convention of <type>(<optional scope>): <title>

@SOUMOJIT-CHAKRABORTY Take a pull from the main and then run the benchmarks comparing results.

@SOUMOJIT-CHAKRABORTY Take a pull from the main and then run the benchmarks comparing results.


fr.free.wrw.commons (androidTest) not working because many unresolved references in code.

Description
When im trying to run any androidTests. There are many unresolved references and the tests cant be run.

After adding the dependency 'apps-android-commons.app.main' everything seems to work.
Can anyone tell me if this is normal and the normal way of working or am I doing something wrong?

@VinzRoosen Could you elaborate a bit on how you ran the tests ? That would help in understanding the issue better.


Pretty ReadMe

Images

Emojis

:bridge_at_night:
:rocket:
:suspension_railway:

:straight_ruler:
:chart_with_downwards_trend:
:chart_with_upwards_trend:

Looks pretty good now, maybe add a few more examples later...


Basic semantic analysis

Turn an SQL statement, its results, and a QEP into an insightful message to the user. #6 #7 #8 #9

Superseded by #34


pipenv alters PATH env var in an unexpected way

Issue description
$ pipenv shell alters the PATH env var by remove /usr/local/bin
Expected result
$ pipenv shell
$ echo $PATH
PATH should be the same as outside of the pipenv shell, with the virtualenv path added to the front.
Actual result
$ pipenv shell
$ echo $PATH
/usr/local/bin is missing from the PATH, despite being present in the PATH before the shell is activated.
Steps to replicate
Running Ubuntu 18.04, using FISH shell.

Can you confirm where /usr/local/bin is configured and what the shell is after pipenv shell?

I started a clean Ubuntu 18.04 docker image, with Python 3.7, fish, and pipenv, and the issue is not happening. So it has something to do with how my fish shell is set up, nothing to do with pipenv, sorry for creating an issue un-necessarily.
I will check the offending machine on Monday for problems with how the fish shell is set up and the PATH is being altered compared to a fresh install.

Just to get you something to work with, check how you are setting things up. pipenv shell doesn’t spawn login shells so it won’t get the same manipulation you give in your config for checking if status --is-login. Beyond that I’m glad it’s working :) closing for now!


Provide more room for coding in SQL code cells (aduxr)

Provide more room for coding in code cells. Currently, one line is provided. Rarely is one line of SQL code written.  One line in the code cell seems confining. Extra lines can be collapsed empty lines when the cell is closed.
The current cells seems to "bounce up and down" as you code.

On v1.7.0, my SQL code cells do expand to multiple lines, but they do not expand sufficiently to show the whole query for >1 lines of code.
Lines typed -> lines visible:

1 -> 1
2 -> 1.5
3 -> 2
4 -> 3
5 -> 3.5
6 -> 4.25

and so on. Lines shown grows slower than lines typed, for some reason.

@chlafreniere can you engage on this?
@philosophicles could you give details on any settings that may be different in your environment? I would have to guess that something about font used or other editor-related setting is not being included in our size calculations here. If you could help by providing any non-default settings you have, this might help us solve.

Will do - this problem is on my work laptop which isn't where I am until Tuesday. Will update when I can check.

@kevcunnane @chlafreniere see above 👆

@philosophicles thanks! That should be enough to go on, we can start including size and experimenting with what'll be accurate enough in our counts. Apologies for the delay here - Memorial day weekend meant we all are just checking back in now. Appreciate having a solid example to work with.


Bluemaxima.Voyager version 18.05

[ ] Have you signed the Contributor License Agreement?
[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] This PR only modifies one (1) manifest
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: codeflow:open?pullrequest=https://github.com/microsoft/winget-pkgs/pull/110297&drop=dogfoodAlpha

That website seem downloading very slow.

It look like it open up 7-zip console.

Automatic Validation ended with:

How do we deal with self extracting ZIP files with no shortcuts?


Monitor: kubernets config and deploy script

Work in progress: some modifications to the deploy script to store the monitor's keys in a kube secrets config. Also, a kubernetes config for the monitor.
This should be reviewed after it is ready and  #776 and #768 been reviewed and merged.

Codecov Report

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

@@           Coverage Diff           @@
##           master     #787   +/-   ##
=======================================
  Coverage   47.25%   47.25%
=======================================
  Files          34       34
  Lines        2588     2588
=======================================
  Hits         1223     1223
  Misses       1178     1178
  Partials      187      187

Continue to review full report at Codecov.

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


Better API

Depends on #13

Rebased and merged here -> https://github.com/tursodatabase/libsql_android/pull/16


Inconsistent Server Subscription 'Type' Values

Summary
The first response message returned by the server subscription method is not consistent with subsequent response messages, since the first response generically identifies the response type as a "response" ('type': 'response'). Subsequent server status messages can easily be identified as such by the "serverStatus" value ('type': 'serverStatus').
Given that one can subscribe to multiple streams simultaneously, it seems ideal to clearly identify the subscription method that produced a given response message.

Upon further examination, the first response message includes the fee_base key, while subsequent messages include base_fee. This can be seen in the below example response messages.
The validation subscription stream uses base_fee, so changing the instance of fee_base to base_fee would bring all these useful response messages into alignment, which would make life more convenient for developers.
Finally, I wonder about removing the result key from the initial response, while retaining the status and type keys in the response.
Example Initial Response
{'result': {'fee_base': 10, 'fee_ref': 10, 'hostid': '????', 'ledger_hash': '????', 'ledger_index': 78263743, 'ledger_time': 731537762, 'load_base': 256, 'load_factor': 256, 'pubkey_node': '????', 'random': '????', 'reserve_base': 10000000, 'reserve_inc': 2000000, 'server_status': 'full', 'validated_ledgers': '32570-78263743'}, 'status': 'success', 'type': 'response'}

Example Subsequent Response
{'base_fee': 10, 'load_base': 256, 'load_factor': 256, 'load_factor_fee_escalation': 256, 'load_factor_fee_queue': 256, 'load_factor_fee_reference': 256, 'load_factor_server': 256, 'server_status': 'full', 'type': 'serverStatus'}


Add dotnet labels-projects doc

Fixes https://github.com/dotnet/docs/issues/17575

Move labels and projects doc to contrib guide (after this is merged I'll replace the content in the file in the styleguide folder with a link to here).
Consolidate two docs that had similar names in the TOC ("Contribute to .NET docs" and "How to contribute to .NET docs").

@BillWagner please review.

@BillWagner Thanks for reviewing!

#sign-off

@Jim-Parker This is ready to merge.


import cairo problem

import cairo
File "/anaconda3/lib/python3.6/site-packages/cairo/init.py", line 1, in
from ._cairo import *  # noqa: F401,F403
ImportError: dlopen(/anaconda3/lib/python3.6/site-packages/cairo/_cairo.cpython-36m-darwin.so, 2): Symbol not found: _cairo_tee_surface_add
Referenced from: /anaconda3/lib/python3.6/site-packages/cairo/_cairo.cpython-36m-darwin.so
Expected in: flat namespace
in /anaconda3/lib/python3.6/site-packages/cairo/_cairo.cpython-36m-darwin.so
macOS 10.13.2
anaconda python3.6

I am having this issue right now too.

I install another python3.7 and it works. From 'www.python.org', not anaconda.

@WeiruLin Can this issue be closed?

I don't think there is a package called "cairo", because you can't run pip install cairo, there are just no packages named cairo. I run with python 3.7

should be pip install pycairo @Sir-Teo https://pypi.org/project/pycairo/


First row adding as empty while updating the data dynamically

Description :
Table contains two columns, Name & status.

First time while creating table I'll get names from API-1 so table will Crete with names and status column will be empty. In this case it's working fine(No empty record).
Then second level I'm submitting these names in to DB(Names list will be up to 1 to 500,1000 and above also). while submitting I'm fetching status from another API-2.

Example to reproduce the behavior :

API-1 contains name list

API-2 contains Name with status of submission. (Like Failed or success for each record)

Then I will submit these name to DB, In this case, I'm fetching submit status each 5 sec, then the data row count look like, 1,5,20,25...So I will update these data in to state so Table will update automatically.

But the problem is, even if I have only one record also, in "handleDataChange" I'm getting 2 records. any data if you update dynamically its always inserting one empty row in front of first in  the table.

If I have 15 records the first 9 rows are showing in first page then other 6 records are showing in 2nd page. Here no records missing in table, but pagination count mismatch.

This issue occurs when we are updating dynamically,Once created table then if we update, in this case it's inserting empty record.

My current versions :
"react-bootstrap-table-next": "^4.0.0",
"react-bootstrap-table2-filter": "^1.3.1",
"react-bootstrap-table2-paginator": "^2.1.2",
Please check snap shot for more clarification.

`
Component 1:
const tableData = [ //Use this data as props
{id:1,"name":"Name 1",status:"Success",errorDetails:null},
{id:2,"name":"Name 2",status:"Already exists",errorDetails:null},
{id:3,"name":"Name 3",status:"Failed",errorDetails:"null"},
{id:4,"name":"Name 4",status:"Already exists",errorDetails:null},
{id:5,"name":"Name 5",status:"Already exists",errorDetails:null},
{id:6,"name":"Name 6",status:"Failed",errorDetails:null},
{id:7,"name":"Name 7",status:"Already exists",errorDetails:null},
{id:8,"name":"Name 8",status:"Failed",errorDetails:null},
{id:9,"name":"Name 9",status:"Success",errorDetails:null},
{id:10,"name":"Name 10",status:"Failed",errorDetails:null},
];

Component 2:
import React, { Component } from 'react';
import BootstrapTable, { TableHeaderColumn } from 'react-bootstrap-table-next';
import filterFactory, { customFilter } from 'react-bootstrap-table2-filter';
import paginationFactory, { PaginationProvider } from 'react-bootstrap-table2-paginator';
import StatusFilter from './StatusFilter';
import 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';
import 'react-bootstrap-table2-filter/dist/react-bootstrap-table2-filter.min.css';
import 'react-bootstrap-table2-paginator/dist/react-bootstrap-table2-paginator.min.css';
class SummaryPaging extends React.Component {
constructor(props) {
super(props);
this.state = {
namesList: props.namesList || []
};
}
componentWillReceiveProps(nextProps) {
if (nextProps.namesList !== this.props.namesList) {
this.setState({
namesList: [this.state.namesList, ...nextProps.namesList],
});
}
}
render() {
const { namesList } = this.state;
const columns = [
{
dataField: 'name',
text: 'Name',
style: {
width: '40%'
}
},
{
dataField: 'status',
text: 'Status',
filter: customFilter(),
style: {
width: '60%'
},
filterRenderer: (onFilter, column) => {
return
},
classes: function callback(cell, row, rowIndex, colIndex) {
if (cell === 'Success') {
return "mgstatus success-icon";
} else if (cell === 'Failed') {
return "mgstatus error-icon";
} else if (cell === 'Already exists') {
return "mgstatus exist-icon";
}
}
}
];
let hidePageSize = (namesList.length <= 10);
const options = {
sizePerPage: 10,
hideSizePerPage: hidePageSize,
hidePageListOnlyOnePage: true,
};
const handleDataChange = ({ dataSize }) => {
console.log("handleDataChange called - dataSize: ", dataSize);
}
return (
namesList.length > 0 ?

 : null
);
}
}
export default SummaryPaging;`

Hi Allen any update on this.
Could you please respond back.

@lavakumart I can't reproduce this issue, would you please make a simple and minimal example on codesandbox so that I can help you more efficient? Thanks
here is an example from other issue reporter.


Added tests on try-finally and try-with-resources

Resolves #628

Yes, tests fail on JVM 1.8 :)

@sandwwraith, tests passed


Update eclipse.json due to broken links

The links are broken and the version is super old

never mind, something else is broken


fix: icon color not changing on hover for links

What does it do?
Fixes the hover behavior for link icons by applying the correct color to both text and SVG paths. Updated styles to use color for text and fill for SVG paths.
Why is it needed?
The link icon color did not change on hover due to incorrect style rules. This fix ensures consistent hover feedback for better user experience.
How to test it?

Navigate to the Link component in the Storybook design system site.
Hover over the link to observe the color change.
Verify that both the text and the SVG icon change to the desired primary color on hover.

Additionally, a video has been attached for visual reference, showcasing the changes and the expected behavior.
https://github.com/user-attachments/assets/b27d30df-6dd3-4f85-8d65-0082159cb7da
Related issue(s)/PR(s)
Fixes #1825

That's perfect @mukulpadwal 👌


fix typo about upper and lower case letters

More details is needed 😄. Like, which docs?

This one? #59

ReBirth


blink_led for zedboard

Hello,
The README states that the blink_led programs is for the arduino board. Make BOARD=zedboard_pulpino gives errors. Is it possible to run the blink led tests for the zedboard ?
Thank you !

Hi,
blink_led requires a pwm driver and there is no pwm driver available for pulpino. But you can test the blinky application instead, which does the same stuff by just toggling a gpio. Blinky works with pulpino


Article/Map/3D-model filtering is broken when window size changes

Just like issue #300, only with other objects.

And fixed.


Not able to Use text "A/B" within Step Definition

I want to use a text "A/B", which doesn't need to be retrieved as a String in my code.
"A/B" is just for highlighting purpose in my Cucumber step.
Current behavior
A step with text "A/B" in the cucumber step is not matched step-definition.
My Step Definition:

My Cuumber Step:

Desired behavior
A step with text "A/B" in the cucumber step is not matched step-definition. As both the texts are same, I don't want to pick it using  {string} in my step definition
Test code to reproduce
    @smoke
    Scenario: GET all atamodels
        #Given As a user I want to execute signIn api request with "TEAM_LEAD" user role
        #Then verify "@signin" response status code is 200
        #And verify access token is received in cookies
        When I make a GET request on "A/B" endpoint
        #Then verify response status code is 200
        #And verify datamodels list is received

When('I make a GET request on "A/B" endpoint', () => {
  cy.request({
      method: 'GET',
      url: `/trainer/api/analytics/datamodels`,
      headers: {
        'Content-Type': 'application/json'
      }
  }).as('getDataModelsForTrainer');

})

Versions

Cypress version:  NA
cypress-cucumber-preprocessor: "^4.0.0",
Node version:  v12.18.3

You're likely encountering alternative text. Try escaping it.

You're likely encountering alternative text. Try escaping it.

When('I make a GET request on {string} endpoint', (value) => {
//use the value passed: "A/B"
cy.request({
method: 'GET',
url: /trainer/api/analytics/datamodels,
headers: {
'Content-Type': 'application/json'
}
}).as('getDataModelsForTrainer');
})

When('I make a GET request on {string} endpoint', (value) => {
//use the value passed: "A/B"
cy.request({
method: 'GET',
url: /trainer/api/analytics/datamodels,
headers: {
'Content-Type': 'application/json'
}
}).as('getDataModelsForTrainer');
})

@steevessaillant I don't want to extract and use "A/B" as value, just for naming

I'm going to assume to tried escaping as per Cucumber's docs and solved this. Feel free to say otherwise, but only if you actually tried.


Support pickling of PyProgram

pyQuil pickles its Program, so we need to support it in the bindings. There is this open issue in pyo3 with more information.

Closed by #173


More stringent JSON parsing 📱

Howdy! So @dblock pointed out that an errant null returned from Metaphysics could still crash the app, so I added some regression tests and got some advice on Twitter about how to deal better with Objective-C JSON parsing. The only parts of our app that parse JSON manually are the ones that use GraphQL (and causality web socket stuff, which is handled by Swift optionals) so it definitely makes sense to test them and make them more robust. I looked for other signs of keypath access that didn't check for NSNull but didn't find any.
I'm sending the PR to the 3.2.5-release branch because Apple will likely require us to submit a fresh binary anyway, and there's no reason that 3.2.5 shouldn't benefit from the better JSON parsing. I'm testing this on-device but my iOS 10 device is totally out of juice; I will mark the PR with an 📱 once it's been tested on-device.

          1 Warning

:warning:
Needs testing on a Phone if change is non-trivial

  Generated by :no_entry_sign: Danger

          1 Warning

:warning:
Found unstubbed networking requests

ArtsyAPIArtworksSpec in test_favourites__fails_on_an_empty_response
ArtsyAPIArtworksSpec in test_favourites__it_works_in_the_success_case
ArtsyAPIArtworksSpec in test_favourites__doesnt_crash_with_null_JSON_in_the_data_field
ArtsyAPIArtworksSpec in test_favourites__doesnt_crash_with_null_JSON_in_the_me_field
ArtsyAPIArtworksSpec in test_favourites__doesnt_crash_with_null_JSON_in_the_savedartworks_field
ArtsyAPIArtworksSpec in test_favourites__doesnt_crash_with_null_JSON_in_the_artworksconnection_field
ArtsyAPIArtworksSpec in test_favourites__doesnt_crash_with_null_JSON_in_the_pageInfo_field
ArtsyAPIArtworksSpec in test_favourites__doesnt_crash_with_null_JSON_in_the_edges_field
ArtsyAPIArtworksSpec in test_favourites__doesnt_crash_with_null_edges
ArtsyAPIArtworksSpec in test_favourites__doesnt_crash_with_null_cursor_info
ArtsyAPISalesSpec in test_it_works_in_the_success_case
ArtsyAPISalesSpec in test_fails_on_an_empty_response
ArtsyAPISalesSpec in test_doesnt_crash_with_null_JSON_in_the_data_field
ArtsyAPISalesSpec in test_doesnt_crash_with_null_JSON_in_the_sale_field
ArtsyAPISalesSpec in test_doesnt_crash_with_null_JSON_in_the_saleartworks_field
ArtsyAPISalesSpec in test_returns_an_empty_array_for_an_NSNull_saleartworks
ArtsyAPISalesSpec in test_returns_an_empty_array_for_saleartworks_with_NSNull_artworks

  Generated by :no_entry_sign: Danger

I’m too tired (and was about to sign off) to perform an extensive code-review right now. Were you hoping to ship this very soon or is me reviewing this over the weekend ok too?

No rush – we're still blocked by Apple anyway 😄

I have to investigate those unstubbed network requests anyway 🤔

This is good, but things like id savedArtworks = [me[@"saved_artworks"] orNil]; seem to be fairly tedious to do all over the place. Is there maybe a better solution? How do others do this?
In Ruby we would return a Hashie::Mash that allows you to not fail when retrieving values. In other languages I am used to checking the schema against a stylesheet for the response, then there're guarantees for the interface. Finally a simple wrapper in which I can do id savedArtworks = wrapper.get(@"saved_artworks") seems easier.

Yeah, it is tedious. Objective-C has a limitation where properties can't be accessed on id (even though you can call equivalent methods). Otherwise we could write something like<EMAIL_ADDRESS>Normally our JSON parsing is handled for us, but GraphQL is an exception. I couldn't find any decent GraphQL libraries for iOS and the ones I did find were all in Swift. There's a runtime hack I considered but I wouldn't recommend it.

Okay so the test failures took some tracking down. Turns out the staging url doesn't have a path, and previous tests were stubbed against staging URLs (we only compare paths) but some tests are stubbed with production URLs (which is... concerning). The path Foundation calculates is either "/" or "" depending on the URL, so the path check was failing.
Some unit test(s) somewhere are switching an NSUserDefault to make use staging or production – I'll look for them. I tested after reseting simulator settings and it worked, so 🤞 for Circle.

After speaking with @orta, isolating the tests' use of NSUserDefaults has been on the todo list for a while. It's a significant undertaking, I think outside the scope of this PR, so I've opened https://github.com/artsy/eigen/issues/2424 to track progress on it. I believe this PR can be reviewed as-is.

I’m slightly on the fence about this. If a service starts returning data that the app does not expect (not just “garbage”) then how will we know that’s happening? I don’t believe these NSError objects are being reported to Sentry, but even if they were they don’t point to the exact line the exceptional case occurred at. An exception, however, does.
Instead of silently not being able to deal with data we serve, I would rather have 5 people run into a crash and that leading to use realising an API was changed in an incompatible way or that a service is down and that might otherwise go unnoticed.

Alternatively, if the app would be able to work without this data being available, maybe a try/catch block that reports the caught exception to Sentry would be more appropriate?

The only parts of our app that parse JSON manually are the ones that use GraphQL

Thinking about this some more, is AFNetworking doing this same NSNull to nil dance for us and is this code just replicating that? Because in that case I guess the argument about visibility is somewhat moot, if AFNetworking has been doing this for most of our data since forever.
Also, if this is the case, can’t we leverage AFNetworking’s code that does this? Instead of having to litter code with orNil?

Hmm, those are good points @alloy. I've looked at AFJSONResponseSerializer does have a removesKeysWithNullValues which recursively removes NSNull values from the response JSON. I'll try removing the extra orNil calls and re-run the tests to see if that serves our purposes (handling it at the response serialization level seems right to me).

Okay, I've updated the PR. Note that the AFNetworking function has a limitation (noted in comments) that prevents it from removing null from JSON arrays. I've submitted a PR to fix the bug.

I've done further on-device testing and everything looks good 👍

I’m still hesitant to pull the merge trigger. Apparently this hasn’t been an issue in the real world and there’s probably other incorrect data cases we could dream up that would lead the app to crash. But as I said before, at least in those cases we’d get notified about it.
@orta What is your take on this?

Yeah, I think the change for all networking requests is a bit too drastic. It'd be pretty difficult to test every use case of our API, I think it's great for new graphQL requests like this, but calls to gravity probably shouldn't change IMO

Hmm, yeah makes sense. I'll limit the scope of the response serializer changes to metaphysics requests 👍

Agreed 👍

Okay cool, almost have that done. I did cherry-pick some work previously done against the master branch in https://github.com/artsy/eigen/pull/2421 because it made it easier to distinguish GraphQL requests. Will post when it's ready for review.

Hmm, since we're now differentiating between removing the nulls, our stubbing has to get a little more complicated. I think instead of doing like a full-stack test of the ArtsyAPI (and stub network requests), I'll test that the GraphQL endpoints call methods that specify removing nulls, and then test those methods individually, and so on all the way down. It'll take just a bit more time.

          1 Error

:no_entry_sign:
There were snapshot errors

  Generated by :no_entry_sign: Danger

Okay, so this PR now also pulls in changes from #2421 (which consolidated GraphQL response error-handling). It was getting really awkward not having those changes in this PR about response-handling, so I cherry-picked them.
The gotcha with testing the remove-null behaviour was that our HTTP request stubbing layer sits above AFNetworking's response serialization, so it was difficult to stub null values and testing to see if they'd get stripped. A different sharedAPI class is initialized when the code runs in unit tests, which bypasses our use of AFNetworking altogether. I kept the existing tests for successful JSON parsing GraphQL responses, but moved the checks for nulls cases to an OCMock-based stub. It's a little extra overhead but I really like how they turned out.
My local Xcode is a bit squiffy so CI might not pass – will take a closer look tomorrow.

Getting different failures locally – looks like state that was previously leaked between tests is getting disrupted, and unrelated tests that were relying on that state are now failing. Xcode alway runs tests in the same order, so this was likely to happen sooner or later.
I'll download Circle's version of Xcode and see if I get the same errors, and I'll keep pecking away at this.

Awww heck yeah, figured it out. Turned out to be a lot simpler – just a missing override for our network stub.

@alloy this is good for review again 👍

I’m OOO today. @orta can you give it the final 👀?

Overall I'm fine with this, not a fan of so many async tests, as historically they've been flakey, but I'm going to assume you thought of this when making the tradeoffs. So this is good to go.


Confirm if there is any data to migrate for #4270 (Decomission Linked Earth)

We need to refine https://github.com/2i2c-org/infrastructure/issues/4270 so that we can go ahead with decomissioning. The deletion of data wasn't confirmed - this needs to be confirmed.
### Tasks
- [ ] Reach out to the community champion (as listed in relevant airtable) via freshdesk and ask if data can be deleted or not

Definition of Done

[ ] We know if data can be deleted or not from the Linked Earth hub
[x] This information has been added to #4270

Users were told to remove their data from the hub by August 25th, hence We are not migrating the data. https://github.com/2i2c-org/infrastructure/issues/4270#issuecomment-2286667774


feat: API to trigger sync (with full refresh option)

Test Plan
[Describe test plan here]
Deployment instructions
[Add any special deployment instructions here]

@asdfryan can you re-review?


fix: handle long token names gracefully, ref leather-wallet/extension…

This PR improves the display of ItemLayout at the base + sm breakpoint to stop long token names breaking the UI. I implemented it based on this bug for Runes.
You can see here how the change helps the UI for Runes tokens with long names:
https://github.com/user-attachments/assets/5e4173d8-c2d6-43be-92c1-aa10da1e6dcd
Changing ItemLayout here also affects some other places where we will use ellipsis in the action popup. I could implement a Runes specific fix but I think it's better to restrict this on small views in a more global manner.
SWAP - Ethereum WBTC via All...

Activity List - age000-governance

Summary by CodeRabbit

New Features

Enhanced the ItemLayout component to improve handling of the titleLeft prop with new styling properties, ensuring better display control and preventing text overflow.

Bug Fixes

Implemented a maximum width constraint and text overflow handling for titles, allowing text to truncate with an ellipsis when exceeding the specified width.

truncateString

I think we should deprecate truncateString, we only use it once for AccountNameTitle in AccountNameSuspense.
If we use CSS it's easier to have it adjust based on breakpoint. In this change we only add ellipsis if its on the small breakpoint


[Go] Add zap log bridge

Fixes https://github.com/open-telemetry/opentelemetry-go-contrib/issues/5191
I think it would be better to reuse the OTel Registry, but it is currently impossible:

https://github.com/open-telemetry/opentelemetry.io/issues/4846

CC @khushijain21


Numbers are too much linkified

To reproduce:

Numbers are linkified in strings like this in a room:

qq3333qq
3333

Numbers are linkified as soons as there is at least 4 of them. I don't think it's necessary to linkify numbers in such strings, more if these numbers are surounded with letters. iOS and web don't do that.
I think it dates from https://github.com/vector-im/riot-android/issues/1077.
Plus it can lead to visuals like theses in search layouts:

FTR, this happens on older android devices (i have it on kitkat but not on N)


Misformatted help text

If I do hv.help(hv.Labels), I  get bogus formatting for some of the parameters:
>>> hv.help(hv.Labels)
Parameter docstrings:
=====================

cdims:    The constant dimensions defined as a dictionary of Dimension:value
          pairs providing additional dimension information about the object.

          Aliased with constant_dimensions.
datatype: A priority list of the data types to be used for storage
                 on the .data attribute. If the input supplied to the element
                 constructor cannot be put into the requested format, the next
                 format listed will be used until a suitable format is found (or
                 the data fails to be understood).
extents:  Allows overriding the extents
                        of the Element in 2D space defined as four-tuple
                        defining the (left, bottom, right and top) edges.
kdims:    The label of the x- and y-dimension of the Labels element in form
          of a string or dimension object.

It looks like this happens when the docstring includes different spacing on the first line than on subsequent lines, as for datatype and extents below.  It would presumably be a lot of work to go through all Parameterized objects and make sure they have the same spacing on every line, so instead could we put some sort of preprocessing code into hv.help to normalize the whitespace before calling pydoc.help()?
class Labels(Dataset, Element2D):
    kdims = param.List(default=[Dimension('x'), Dimension('y')],
                       bounds=(2, 2), constant=True, doc="""
        The label of the x- and y-dimension of the Labels element in form
        of a string or dimension object.""")

cdims = param.Dict(default=OrderedDict(), doc="""
   The constant dimensions defined as a dictionary of Dimension:value
   pairs providing additional dimension information about the object.

   Aliased with constant_dimensions.""")

class Dataset(Element):
    datatype = param.List(datatypes,
        doc=""" A priority list of the data types to be used for storage
        on the .data attribute. If the input supplied to the element
        constructor cannot be put into the requested format, the next
        format listed will be used until a suitable format is found (or
        the data fails to be understood).""")

class Element2D(Element):

    extents = param.Tuple(default=(None, None, None, None),
                          doc="""Allows overriding the extents
              of the Element in 2D space defined as four-tuple
              defining the (left, bottom, right and top) edges.""")

It would presumably be a lot of work to go through all Parameterized objects and make sure they have the same spacing on every line, so instead could we put some sort of preprocessing code into hv.help to normalize the whitespace before calling pydoc.help()?

I think fixing the docstrings is the correct thing to do and the latter is both tricky to get right and also implemented in param iirc. This is more of a param issue than a holoviews issue.

If you are voting to fix the docstrings, then how is it a param issue?  The docstrings are in holoviews.

...  then how is it a param issue

The suggestion to add some preprocessing to fix the whitespace would be a param issue. Otherwise, I agree that the docstrings need updating in holoviews.


Move the tpu related logic to a separate folder

What type of PR is this?
/kind cleanup

What this PR does / why we need it
Which issue(s) this PR fixes

Fixes #4
Special notes for your reviewer
Does this PR introduce a user-facing change?

/ok-to-test

/ok-to-test

/label tide/merge-method-squash
/lgtm
/approve


Remove defaulted or empty, non-virtual destructors

Subject of the issue
I'm not quite sure how they ended up like but a few types have non-virtual destructors that do nothing. The existence of these destructors implicitly disables move semantics even if they're = default'd so it's best to remove them entirely. Here are the types where I found this happening. There may be more.

sf::Font
sf::SocketSelector
sf::Cursor
sf::Font

Cursor and ScoketSelector classes use pimpl idiom, having a std::unique_ptr to forward-declared type.
Font uses a similar pattern on Android.
So the compiler cannot generate destructor at class definition time.

This issue didn't end up being nearly as simple as I thought so I'm closing it.


Legion classicons

This PR contains additions/deprecations for the classicons element for Legion.
It depends on #267 to work correctly for Legion.
It also eliminates the need for #223 and #240.
These commits are compatible with both live and beta clients.

As for druid's combo points. We have requireSpec, requireSpell, why dun we add requirePower to handle this case? :laughing:

Hey, I made a small patch for this PR https://github.com/ls-/oUF/commit/cd20ebc03949a2feaa0d8ef3c6d2c4fc0c72631f. It fixes combo points for dudus, e.g. combo points are only shown for cat form, so I went blizz way and added new RequirePower check. If you dun like it, no problem, I'll keep it to myself, hehe.
On a different note, UNIT_DISPLAYPOWER event has no arguments besides unit, so there's no need to register it for Path, cuz it'll never get into Update function anyway. IMHO, it should be used for VisibilityPath.

There's one more issue w/ class icons. Can't apply fix it to this PR, cuz it's not based on latest master commit 😕, but this issue was introduced by your PR.
Please, change this line to
Path(self, event, unit, unit == 'vehicle' and 'COMBO_POINTS' or ClassPowerType)

after you rebase this PR.

You could do the pull request against p3lim's branch. Of course you should
apply your changes onto his branch as well.

@Rainrider, I can, sure, but at first I wanna know if needs these changes in his PR or not, He may say that it should be handled by layout 😕
And second fix can't be applied to his branch.

Any element should mimic the blizzard behavior by standard, and even if I personally prefer to see the combo points outside cat form, it should be merged.
Feel free to send the PR my way.

Rebased the tip of the branch to master, no idea why it wasn't already.

Found one more issue while testing on Malygos, GetComboPoints is not ready on PLAYER_ENTERING_WORLD (reloading UI) and will report 0 regardless.
Not sure if we want to properly support such a case with custom logic, as it's only appearing in these rare situations when we're testing, and GetComboPoints is/should be deprecated anyhow, just up to blizzard to fix UnitPower

TBH, there're quite many things that aren't ready on PLAYER_ENTERING_WORLD in Legion. For example, there's an issues w/ shapeshifting. If you log in or reload UI in some sort of form, many functions will return values for humanoid form.
Even blizz UI suffers from this issue.

Here I logged in as a cat, yet I have Lunar energy and additional mana bars. I dunno what they did to loading process in Legion.

When you added the "RequirePower" check, I think it broke it a bit for druids going in and out of cat form. If you log in while in cat form, the combo points will show. But if you then go out of cat form, the visibility update will disable the element and unregister "UNIT_DISPLAYPOWER" event, so it will never be enabled again.

@Blazeflack , when UNIT_DISPLAYPOWER is disabled, SPELLS_CHANGED is used for visibility checks, it fires whenever players shapeshifts.

I'm not seeing the "SPELLS_CHANGED" event fire at all:
http://i.imgur.com/00iZmcY.jpg

Have no issues "SPELLS_CHANGED" :(

Here I logged in as a cat, switched to travel form and switched back to cat.

Did you see the edits I made to my post?

Hm, yeah. But this SPELL_CHANGED issue is really weird. It occurs in you case, but it doesn't happen in mine, although we hopefully run same version of oUF. That's why I posted everything I posted 😐
And thank you, although I need to tweak texture a bit T_T BTW, I'm about to steal some actionbar code from ElvUI 😁 Ofc I'll mention from it's stolen.

Yeah I compared the classicons files just to make sure, and it matches 100% to the file in p3lims branch.
I think adding a spell check for Shred is a good way to alleviate most of the issues surrounding combopoints in various druid forms.

I made the following changes, and it seems to work a lot better:
`From cda7671ab401b056185aa7af1a40f4e59c16aa85 Mon Sep 17 00:00:00 2001
From: Blazeflack<EMAIL_ADDRESS>Date: Mon, 18 Jul 2016 11:36:11 +0200
Subject: [PATCH] Added Shred as RequireSpell for Druids in the ClassIcons
element

elements/classicons.lua | 3 +++
1 file changed, 3 insertions(+)
diff --git a/elements/classicons.lua b/elements/classicons.lua
index c0ac3ea..cb01a37 100644
--- a/elements/classicons.lua
+++ b/elements/classicons.lua
@@ -161,6 +161,8 @@ local function Visibility(self, event, unit)
else
self:RegisterEvent('SPELLS_CHANGED', Visibility, true)
end

  	elseif (RequireSpell) then

  		self:RegisterEvent('SPELLS_CHANGED', Visibility, true)
  	end
  end

end
@@ -244,6 +246,7 @@ do
  if(isBetaClient and PlayerClass == 'DRUID') then
  	RequirePower = SPELL_POWER_ENERGY

  	RequireSpell = 5221 -- Shred
  end

elseif(PlayerClass == 'MAGE' and isBetaClient) then
ClassPowerID = SPELL_POWER_ARCANE_CHARGES
--
2.6.4.windows.1`

Much more consistency, the combopoints show up when I expect them to and hide when they should.

There is still the issue you mentioned here: https://github.com/haste/oUF/pull/266#issuecomment-233147444
Logging in or reloading while in a form returns values as if you were in human form. Not sure if there is any way we can work around that.

That issue is unfixable 😞 Something is broken on blizz side, they even tried to solve by adding delayed update to their combo widget via C_Timer, but it didn't help, cuz functions start returning proper values only after player shapeshifts.

As for your fix, elseif (RequireSpell) then, simple else is enough, cuz it'll go that way only if there's a required spell, but character didn't have it yet, and IsPlayerSpell(RequireSpell) returned false.

Oh you're right. Sometimes I fail at logic (or logic fails me) :(

I'm replacing the power logic for Shred check, there is no point allowing CP to be shown unless one can gain it.

@p3lim, well, feral druids in humanoid form has Shred, but don't use focus, so they don't have combo bar and can't use said abilities, both checks are needed.

@ls- I would say that if you end up being in a situation where you're in humanoid form and still have combo points, it'd be in a situation where you'd want to use them soon anyways, and knowing exactly how many you have could be a good thing.

I'm happy to bring up that subject again at a later date, but right now I'm focusing on finishing the PRs so that @haste can (finally) review them, we're way too close to (and in some regions already past) the patch.

That'll be the last rebase of this PR for now.

I still think, that @haste should add you @p3lim as a collaborators for oUF.


feat: bump mongoose

Bump mongoose v5 to v6
BREAKING CHANGE: bump mongoose

Hey @pierissimo. I had to add a ts-ignore to the Schema constructor. The error was this, and didn't know how to fix it:
Also in the code from the mongoose package, it complains. I think these are both linter errors but this one is harder to fix since it happens inside the dependency code:

Okay looks like using skipLibCheck fixed both issues :)

@adriasala124
let's make sure to update the mongoose version in the examples, and also it would be great to run the examples to check if everything's good there

there may be some problem with the context typing, that we use extensively in apps.
Try to put in an example app, this piece of code, it will fail:
model.findOne({}, {}, { context: {} }); // context is typed as string, here will be failing

there may be some problem with the context typing, that we use extensively in apps.
Try to put in an example app, this piece of code, it will fail:
model.findOne({}, {}, { context: {} }); // context is typed as string, here will be failing

Hey @pierissimo! As we discussed to avoid collision of our 'context' with the mongoose context I have renamed it to 'davinciCtx'. I know the examples are missing, I have the changes locally but I need to make the release in order to update the dependencies in the examples.

@adriasala124 that is not needed, just make the builds and link the packages:
lerna run build
lerna bootstrap

then you can use the new package versions in the examples

looks good, still not 100% sure if davinciCtx is a good naming or is a bit obscure. davinciContext may be a bit clearer?
Let's see what the other reviewers think

I also prefer something like 'davinciContext' as is more clear.
@adriasala124 something strange with the coverage, not sure why diff hit is showing that number if we are not affecting coverage.


Prevent unsaved changes alert when clicking a save button

The "Are you sure you want to leave?" alert shows up for ModelAdmin under certain conditions:

It is a create form
for me, it only happens when I have Html field
Click save

Restarting tests since we merged some CMS changes. Should be passing now.


STORM-3348 Incorrect message when group id is not provided as kafka s…

…pout config on storm UI
See this for more details - https://jira.apache.org/jira/browse/STORM-3348

+1. The test failure is unrelated.

JIRA is unstable for me right now. I'll mark the issue resolved later. Thanks for the fix @OjhaVivek.


Out of screen drop-downs

Not really reproducible but we still get cases when drop-downs get out of screen

It was fixed in a recent commit: https://github.com/feenkcom/gt4pharo/commit/6ebe8d68311820ed88b440f904f947b59a71c447


Fix sensor sample amg88xx

Fixed sensor sample according to discussion in https://github.com/zephyrproject-rtos/zephyr/issues/52794 so it can again run out of the box.

Hello @avisconti & @teburd,
could you please take a short look into this change? Thanks a lot.


acinclude.m4: test for OPENSSL_NO_ENGINE

With >= LibreSSL 3.8.1 the engine code has been removed and OPENSSL_NO_ENGINE has been defined, testing for this define during configure will prevent implicit function declarations when using an ssl implementation with the engine code disabled or removed.

Can you test whether this works with current trunk? I think this was likely fixed in 1e06568a28e02b477eb660cc18a42420360103cf

@notroj I tested the current trunk (https://github.com/apache/httpd/commit/c9028584a89a761e2804b596ce2c9f961f5b6fb8) which worked, then I tested that commit (https://github.com/apache/httpd/commit/1e06568a28e02b477eb660cc18a42420360103cf) which failed....
I then checked the 2.4.58 tag which matches the version in Gentoo, this also fails to build. Lastly I bisected between the trunk and the 1e06568a28e02b477eb660cc18a42420360103cf commit and found the commit that fixed this was 922d6bbc423f1684c002031dabc98c7ffabc8e08. This is a similar fix to what I was doing here so I'll close this now.
Thanks for the reply!
For reference my build command was:
export CFLAGS="-O2 -pipe -Werror=implicit-function-declaration"
./buildconf --with-apr=../apr-1.7.4 --with-apr-util=../apr-util-1.6.3 && ./configure && make

Thanks a lot for testing it out.


🐛 | Audio Interface name suggestions are incorrect (e.g. for OS desktop version)

See https://github.com/MiczFlor/RPi-Jukebox-RFID/discussions/2267#discussioncomment-8556789

The setup has the wrong  interface name as default setting
The suggestions are incorrect as they are for the user, but mpd.service runs as root.
The output differs for example if the "desktop" version of Raspberry Pi OS is installed.

Fix:
sudo amixer scontrols has to be used and the first entry should be set as default interface name.

Recommendation for lite emphasized in install description: https://github.com/MiczFlor/RPi-Jukebox-RFID/wiki/INSTALL


After resetting the workspace, the code keeps running without any blocks

When I switch scenes and reset the workspace and create a new one, this green ligh stays there and the code keeps running even without any blocks. Am I supposed to do anything else to prevent this from happening?

Sorry for the mess of disposing workspace. Lacking test :)
Please check this new commit.

No problem at all, bugs happen quite a lot, it's perfectly understandable!
Thank you so much for ur constant support and for letting us use your work!
Just another doubt to be clarified, what is the propper way of resetting the workspace now with the new code?
I'm handling events from the WorkspaceView for when I'm transitioning in and out of Ublockly's interface. What methods should I assign to each event?

Just the same as I said last time. I also add it here with a little bit new code modifications.

If you need to switch scenes, which means WorkspaceView will be destroyed and re-created, you can follow the Brutal way.

Btw do you have any idea why these tests are failing?
I don't think we changed anything related to this. Were they passing on your project?

Yes, mine is passed.

There must be some log to get a hint?

I'm getting this for some reason

Sorry that I couldn't figure out what is wrong.
Could you please check if you have changed class FieldAngle or class Number. Or you could debug into the code to check what is going wrong.


UIActivityIndicatorView is too large in iOS 5

Printing the frame of the activity indicator view when it is set is correct:
Printing description of activityIndicator_:
<UIActivityIndicatorView: 0x9ea3630; frame = (6 3; 14 14); hidden = YES; layer = <CALayer: 0x9e9eab0>>

But the spinner seems to be ignoring the frame

@GMR42 This solution is so simple that it's already brilliant again :) Not exactly what I was aiming for, but works like a charm as a simple workaround for what still seems like an undocumented behavior (=bug) in iOS 5. Will push this soon, including a conversion to ARC. Thanks a lot!

Please make any conversion to ARC as a separate branch.
On Oct 13, 2011, at 11:50 AM, Matthias<EMAIL_ADDRESS>wrote:

@GMR42 This solution is so simple that it's already brilliant again :) Not exactly what I was aiming for, but works like a charm as a simple workaround for what still seems like an undocumented behavior (=bug) in iOS 5. Will push this soon, including a conversion to ARC. Thanks a lot!
--
Reply to this email directly or view it on GitHub:
https://github.com/myell0w/MTStatusBarOverlay/issues/34#issuecomment-2396267

I don't plan on maintaining two different code-bases and I'm always on the side of new technology if it makes coding easier. Remember that you can mix and match ARC and non-ARC code without problems in your App, so this shouldn't be an issue (as long as you use Xcode 4.2 which is now out of beta).
Am 13.10.2011 um 17:56 schrieb Matt Coneybeare:

Please make any conversion to ARC as a separate branch.
On Oct 13, 2011, at 11:50 AM, Matthias<EMAIL_ADDRESS>wrote:

@GMR42 This solution is so simple that it's already brilliant again :) Not exactly what I was aiming for, but works like a charm as a simple workaround for what still seems like an undocumented behavior (=bug) in iOS 5. Will push this soon, including a conversion to ARC. Thanks a lot!
--
Reply to this email directly or view it on GitHub:
https://github.com/myell0w/MTStatusBarOverlay/issues/34#issuecomment-2396267

--
Reply to this email directly or view it on GitHub:
https://github.com/myell0w/MTStatusBarOverlay/issues/34#issuecomment-2396328

Matthias,
No problem - glad I could help.
Gareth
On 13 October 2011 16:50, Matthias Tretter <
<EMAIL_ADDRESS>
@GMR42 This solution is so simple that it's already brilliant again :) Not
exactly what I was aiming for, but works like a charm as a simple workaround
for what still seems like an undocumented behavior (=bug) in iOS 5. Will
push this soon, including a conversion to ARC. Thanks a lot!
--
Reply to this email directly or view it on GitHub:
https://github.com/myell0w/MTStatusBarOverlay/issues/34#issuecomment-2396267

@myell0w perhaps you can add to the readme how to integrate into a non-ARC project. I have added the -fobjc-arc compiler flag to the subproject compile sources entry ( http://cloud.coneybeare.net/BLP0 )  but I am still crashing with dyld: Symbol not found: _objc_retain


Can Drogon 'execute like' nodejs?

Hi,
Does .setThreadNum(1) makes drogon apps run like nodejs apps (run to completition)?
Is it safe to dispatch multiple HTTP requests without worrying about the synchronization of shared structures like maps and vectors?
Does this unique thread runs until next I/O operation (to switch to another request) or in a time slice manner?
Alex

Hi, there.
After digging into the source code for some days, I think I can answer your question. If anyone finds some mistake in my answer, please point out without hesitation.

The parameter of setThreadNum() means the number of IO threads, not including main thread.
In each thread, there is an trantor::EventLoop instance, strictly binding to it.
All tasks assigned to one EventLoop will be only executed in it's owner thread.
The main loop will not execute any of your tasks unless you assign some to it on purpose.

Does .setThreadNum(1) makes drogon apps run like nodejs apps (run to completition)?

Yes.
Tasks are executed immediatelly if call runInLoop() in the owner thread,  otherwise it will be queue-d in EventLoop::funcs_, and will be executed sequentially.
Is it safe to dispatch multiple HTTP requests without worrying about the synchronization of shared structures like maps and vectors?

Yes, if you only operate on your structure in the only IO loop.
Does this unique thread runs until next I/O operation (to switch to another request) or in a time slice manner?

Not sure what you mean by runs until. (run meaning currently executing task, or thread not quit?)
EventLoop is based to IO-multiplexing. If there is currenly no task, the thread will block until next request, or timeout (a default 10 seconds in trantor), or a wakeup by another thread (in your case it might not happen).
If there is a task running, the loop will not detect incoming request until next epoll_wait, which will happen when all queue-d tasks are finished.

Hello hwc0919, thank you for your answer.
I am asking this because I am interested in replacing nodejs REST API (running in a cheap VPS) by C++/drogon similar API in order to face up the RAM requirements of the nodejs (sometimes nodejs dies due to out of memory in a 512 RAM VPS). This way I will not rely on garbage collector of nodejs and probably I can stay with a cheap VPS offering the same service and save money...
In the meanwhile, I was executing some tests and the results are aligned with your answer:
Here is my test case:
...

ADD_METHOD_TO(Mail::getTest, "/test", Get);
...

void getTest(const HttpRequestPtr&,std::function<void(const HttpResponsePtr&)>&& callback)
{
			std::cout << std::endl << std::endl << "Before callback" << std::endl;
			//usleep(2000000);
			callback( HttpCommon::makeSuccessResponse() ); //answer client right now (request was accepted...)
			std::cout << "After callback and now sending email" << std::endl;

			auto *smtpmailPtr = app().getPlugin<SMTPMail>();
			... //send email using plugin as an I/O example operation
}

int main()
{
    drogon::app().addListener("<IP_ADDRESS>",8080);
    drogon::app().loadConfigFile("../config.json");

    drogon::app().setLogPath("./");
    drogon::app().setLogLevel(trantor::Logger::kWarn);
    drogon::app().setThreadNum(1);

    drogon::app().run();
}

Then I used this to stress a little bit this app:
$ab -n 10  http://<IP_ADDRESS>:8080/test
and I always get:
Before callback
After callback and now sending email
Before callback
After callback and now sending email
Before callback
After callback and now sending email
Before callback
After callback and now sending email
Before callback
After callback and now sending email
Before callback
After callback and now sending email
Before callback
After callback and now sending email
Before callback
After callback and now sending email
Before callback
After callback and now sending email
Before callback
After callback and now sending email
Email sent with success...
Email sent with success...
Email sent with success...
Email sent with success...
Email sent with success...
Email sent with success...
Email sent with success...
Email sent with success...
Email sent with success...
Email sent with success...
(Email sent with success... is a message I added to the sendEmail() callback argument)
So, this seems that using one thread (besides the main one) that thread executes the task until next I/O operation of that task and then picks another task to execute...
Alex

Is it safe to dispatch multiple HTTP requests without worrying about the synchronization of shared structures like maps and vectors?

If you are talking about classic thread synchronization problems. No, as @hwc0919 said there is 1 main thread a N IO threads. The IO threads are what's handling the HTTP requests among other things. So when you have multiple threads, you'll have to handle access and writes to your vectors and maps; otherwise you get race conditions.
But if you are going to only access the data on the only IO thread and not using the main thread. It isn't an issue.

So, this seems that using one thread (besides the main one) that thread executes the task until next I/O operation of that task and then picks another task to execute...

Ah. Yes, this is expected. trantor's event loop is a task based system. In this case the task is handling the HTTP request. The callback may push the response onto the task list and continues executing the HTTP handler. The respond gets send when the event loop finishes all current tasks and start processing the newly pushed task. There's no real way to ensure the respond gets sent immediately. But you can queue your auxiliary tasks to the main/IO thread, thus allowing the request getting sent early.
asyncHandleHttpRequest(const HttpRequestPtr &req,
                                                std::function<void(const HttpResponsePtr &)> &&callback) {
    auto res = HttpResponse::newHttpResponse();
    res->setBody("ok");
    callback(res); // Ask drogon to send the respond back.

    // Queues a task to be run on the 0th IO thread
    app().getIOLoop(0)->queueInLoop([](){
          DoSomething();
    });
}

Does this unique thread runs until next I/O operation (to switch to another request) or in a time slice manner?

This is a complicated subject. Assuming you are not using coroutines. Each task is an unit of execution. The event loop runs each task to finish. Then process the next task. However, callbacks from HTTP clients, DB calls, Redis, CacheMap, etc.. can be running on a different thread (unless you know the client is running on the same thread as your current one).
With coroutines, it depends on the object you co_awaited on. weather the await returns immediately and other factors.

Thanks @hwc0919!

Thank you marty1885. That function was what I was looking for.
Please, could you explain how asyncHandleHttpRequest() works in practice?
How can we be sure that it will be handled by Main thread?
Why calling DoSomething() and not callback(res); instead inside queueInLoop?
Thank you

No, handlers always run on a IO thread. You can  app().getLoop()->queueInLoop(...) to queue a task on the main thread. But it's unnecessary and slow. Just set the IO thread count to 1 to avoid data races.
asyncHandleHttpRequest is just a HTTP handler. There's nothing special to it.

Why calling DoSomething() and not callback(res); instead inside queueInLoop?

What do you want to achieve? Maybe I've misunderstood. The example queues sending a respose. Then queues a compute heavy function on the main thread. So the IO thread could be free to handle new requests and sending the response.

void asyncHandleHttpRequest(const HttpRequestPtr &req,
                                                std::function<void(const HttpResponsePtr &)> &&callback) {
    auto res = HttpResponse::newHttpResponse();
    res->setBody("ok");
    callback(res); // Ask drogon to send the respond back.

    // Queues a task to be run on the 0th IO thread
    app().getIOLoop(0)->queueInLoop([](){
          DoSomething();
    });
}

@marty1885
Should it be app().getLoop() instead of app().getIOLoop(0) to get the main loop?

I was looking for a way to "ensure" that
callback( HttpCommon::makeSuccessResponse() );
is executed as soon as possible, once after this call the other instructions of the http handler will be executed next. I want to "free" client request at the beginning of the http handler and then execute the job.( I know that may be there is an error and no way to inform client but no problem)

Sorry I still did not understand the usage of asyncHandleHttpRequest...
At this moment I am relying in:
ADD_METHOD_TO(Mail::getTest, "/test", Get);
...
void getTest(const HttpRequestPtr&,std::function<void(const HttpResponsePtr&)>&& callback)
{
callback( HttpCommon::makeSuccessResponse() );
...
sendEmail():
}
To answer http client at the beginning and then to send the email.
Should I replace all this with asyncHandleHttpRequest() in order to answer http client and then use queueInLoop in order to queue the email sending operation?

@hwc0919 In most cases you'd want to use the main loop. Yes. But this issue wants to avoid dealing with multiple threads. So instead the sample code uses the IO loop

Thanks for the discussion. I think this is valuable information for the documentation. I’m currently still searching for a place where a short introduction to Drogon’s threads model would fit. As always any ideas are welcome.


Active Coolers Config does not correctly apply?

Am i getting something wrong?
For my new reactor i got 2060 H/t too much heat.
So i replaced 12 passive water coolers through active water coolers.
The config says:
Water Passive: 60
Water Active: 300
So i assumed i would have the following heat afterwards:
2060-(12x300)+(12x60) = -820 H/t
De facto i got: 980 H/t
Misunderstanding? Did something wrong? Bug?

It's because the config specifies the cooling effectiveness in H/mB, and by default, the active cooler uses up 0.5 mB/t, so if the active water rate is 300 H/mB, then the cooling rate of an active water cooler is 300 x 0.5 = 150 H/t.

"by default"?
Does this mean there is an option - i can't find one.

Yep - 'active cooler max rate' I think, in the Fission section.


What are custom security attributes in Microsoft Entra ID?

Hello,
It would be great to have the documentation also for:

groups - how to add, manage, use, which groups supported (security, mail-enabled, distribution, etc.)
devices - how to add, manage, use, which device type supported (android, ios, etc.)

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

ID: 2896aa11-53c5-722b-aabf-e59dda55cf38
Version Independent ID: 7291a3a0-24d6-0e88-9105-29001f7e3ed1
Content: What are custom security attributes in Microsoft Entra ID? - Microsoft Entra
Content Source: docs/fundamentals/custom-security-attributes-overview.md
Service: entra
Sub-service: fundamentals
GitHub Login: @rolyon
Microsoft Alias: rolyon

@lightupdifire
Thanks for your feedback! We will investigate and update as appropriate.

@lightupdifire
Here are the links to the documentation for managing groups and devices in Azure Active Directory:
Manage groups in Azure Active Directory
Add or delete devices using Azure Active Directory
These documents cover how to add, manage, and use groups and devices in Azure AD, as well as which types of groups and devices are supported. Let me know if you have any further questions!

@SaibabaBalapur-MSFT
I mean on how to apply and manage the custom security attributes to Groups and Devices.

I apologize for the confusion earlier. Custom security attributes can be assigned to groups and devices in Azure AD using the Azure AD PowerShell module. Here are the steps to assign custom security attributes to groups and devices:
Assign custom security attributes to a group

Install the Azure AD PowerShell module by running the following command in an elevated PowerShell session:
Install-Module AzureAD

Connect to your Azure AD tenant by running the following command:
Connect-AzureAD

Assign a custom security attribute to a group by running the following command:
Set-AzureADGroupExtension -ObjectId <GroupObjectId> -ExtensionName "<AttributeName>" -ExtensionValue "<AttributeValue>"

Replace <GroupObjectId> with the object ID of the group you want to assign the custom security attribute to, <AttributeName> with the name of the custom security attribute, and <AttributeValue> with the value of the custom security attribute.

Assign custom security attributes to a device

Install the Azure AD PowerShell module by running the following command in an elevated PowerShell session:
Install-Module AzureAD

Connect to your Azure AD tenant by running the following command:
Connect-AzureAD

Assign a custom security attribute to a device by running the following command:
Set-AzureADDeviceExtension -ObjectId <DeviceObjectId> -ExtensionName "<AttributeName>" -ExtensionValue "<AttributeValue>"

Replace <DeviceObjectId> with the object ID of the device you want to assign the custom security attribute to, <AttributeName> with the name of the custom security attribute, and <AttributeValue> with the value of the custom security attribute.

I hope this helps! Let me know if you have any further questions.

@SaibabaBalapur-MSFT
Thanks! So I was looking into this document (https://learn.microsoft.com/en-us/entra/fundamentals/custom-security-attributes-overview) and was searching documentation about how to manage custom security attributes for groups and devices,
If some document already exists, maybe can add into this document a hyperlink + note?


examples/basic: Blank screen

I just tested it with the C version, it happens there too.
git clone https://github.com/webview/webview_go
cd webview_go/examples/basic/
go run main.go

System: go version go1.21.4 linux/amd64
The cursor changes when I hover over where the text is supposed to be, but otherwise its just a blank white screen. In a VM (go version go1.21.4 linux/amd64) it works fine. Has anyone an idea what the issue could be?
I tried to use webview.New(true) in hopes of some helpful logs, but only get this:
# github.com/webview/webview_go
In file included from webview.cc:1:
../../libs/webview/include/webview.h: In member function ‘void webview::detail::gtk_webkit_engine::eval(const std::string&)’:
../../libs/webview/include/webview.h:617:35: warning: ‘void webkit_web_view_run_javascript(WebKitWebView*, const gchar*, GCancellable*, GAsyncReadyCallback, gpointer)’ is deprecated: Use 'webkit_web_view_evaluate_javascript' instead [-Wdeprecated-declarations]
  617 |     webkit_web_view_run_javascript(WEBKIT_WEB_VIEW(m_webview), js.c_str(),
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  618 |                                    nullptr, nullptr, nullptr);
      |                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/webkitgtk-4.0/webkit/WebKitPrintOperation.h:29,
                 from /usr/include/webkitgtk-4.0/webkit2/webkit2.h:74,
                 from ../../libs/webview/include/webview.h:510:
/usr/include/webkitgtk-4.0/webkit/WebKitWebView.h:526:1: note: declared here
  526 | webkit_web_view_run_javascript                       (WebKitWebView             *web_view,
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Overriding existing handler for signal 10. Set JSC_SIGNAL_FOR_GC if you want WebKit to use a different signal

The helloworld wails app worked fine though:
https://wails.io/docs/tutorials/helloworld/

https://github.com/javalikescript/webview-c is also not working..

I tried   webview_navigate(w, "https://go.dev"); - It seems to load the site, as the cursor changes when hovering over the window, but it still stays all white/blank. The context Menu works though.

Hm, here a screenshot of https://www.uninformativ.de/git/lariza/file/README.html

It probably is a system-local problem.. Still I wonder why wails is working fine.

Ok, it seems to happen in wails as well if these options are used:
Linux: &linux.Options{
	WebviewGpuPolicy: linux.WebviewGpuPolicyNever,
},

In wails, the default value is linux.WebviewGpuPolicyNever, precisely to workaround this "blank window issue" :
https://github.com/wailsapp/wails/blob/v2.7.1/v2/internal/frontend/desktop/linux/window.go#L96
https://github.com/wailsapp/wails/issues/2977
In C, the hardware acceleration can be disabled like this:
webkit_settings_set_hardware_acceleration_policy(settings, WEBKIT_HARDWARE_ACCELERATION_POLICY_NEVER);

https://github.com/wailsapp/wails/blob/v2.7.1/v2/internal/frontend/desktop/linux/window.c#L461

Official documentation warns about disabling hardware acceleration.

Disabling hardware acceleration might cause some websites to not render correctly or consume more CPU.

https://webkitgtk.org/reference/webkit2gtk/stable/property.Settings.hardware-acceleration-policy.html
Here your issue appears to be that enabling it causes incorrect rendering? This library doesn't do anythign to enable/disable it so that sound mean that the default is used:
WEBKIT_HARDWARE_ACCELERATION_POLICY_ALWAYS

Hardware acceleration is always enabled, even for websites not requesting it.

Now I wonder what is either causing you to apparently not have working hardware acceleration, whether that's intended/expected, and why WebKit may be having issues with whatever is going on in your environment.

Now I wonder what is either causing you to apparently not have working hardware acceleration, whether that's intended/expected, and why WebKit may be having issues with whatever is going on in your environment.

See https://github.com/wailsapp/wails/issues/2977#issuecomment-1791041741:

There are several webkit bug reports related to this:
https://bugs.webkit.org/show_bug.cgi?id=228268 and https://bugs.webkit.org/show_bug.cgi?id=261874#c32
This is clearly webkit/nvidia related and there's no real fix yet [..]

Does launching your app with the environment variable WEBKIT_DISABLE_COMPOSITING_MODE=1 help?
https://trac.webkit.org/wiki/EnvironmentVariables

Force Accelerated Compositing mode to be always off

Yes, WEBKIT_DISABLE_COMPOSITING_MODE=1 also makes it work normally, I just tested it

It seems that I'm experiencing the same issue in Ubuntu 22.04:
raphy@raohy:~/webview-prj$ g++ basic.cc -std=c++11 -Ilibs/webview $(pkg-config --cflags --libs gtk+-3.0 webkit2gtk-4.0) -o build/basic && ./build/basic
In file included from basic.cc:1:
libs/webview/webview.h: In member function ‘void webview::detail::gtk_webkit_engine::eval(const string&)’:
libs/webview/webview.h:689:35: warning: ‘void webkit_web_view_run_javascript(WebKitWebView*, const gchar*, GCancellable*, GAsyncReadyCallback, gpointer)’ is deprecated: Use 'webkit_web_view_evaluate_javascript' instead [-Wdeprecated-declarations]
  689 |     webkit_web_view_run_javascript(WEBKIT_WEB_VIEW(m_webview), js.c_str(),
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  690 |                                    nullptr, nullptr, nullptr);
      |                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/webkitgtk-4.0/webkit/WebKitPrintOperation.h:29,
                 from /usr/include/webkitgtk-4.0/webkit2/webkit2.h:74,
                 from libs/webview/webview.h:579,
                 from basic.cc:1:
/usr/include/webkitgtk-4.0/webkit/WebKitWebView.h:526:1: note: declared here
  526 | webkit_web_view_run_javascript                       (WebKitWebView             *web_view,
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
KMS: DRM_IOCTL_MODE_CREATE_DUMB failed: Permission denied
Failed to create GBM buffer of size 480x320: Permission denied
KMS: DRM_IOCTL_MODE_CREATE_DUMB failed: Permission denied
Failed to create GBM buffer of size 480x320: Permission denied
KMS: DRM_IOCTL_MODE_CREATE_DUMB failed: Permission denied
Failed to create GBM buffer of size 480x320: Permission denied
Failed to create EGL images for DMABufs with file descriptors -1, -1 and -1

raphy@raohy:~/webview-prj$ g++ bind.cc -std=c++11 -Ilibs/webview $(pkg-config --cflags --libs gtk+-3.0 webkit2gtk-4.0) -o build/bind && ./build/bind
In file included from bind.cc:2:
libs/webview/webview.h: In member function ‘void webview::detail::gtk_webkit_engine::eval(const string&)’:
libs/webview/webview.h:689:35: warning: ‘void webkit_web_view_run_javascript(WebKitWebView*, const gchar*, GCancellable*, GAsyncReadyCallback, gpointer)’ is deprecated: Use 'webkit_web_view_evaluate_javascript' instead [-Wdeprecated-declarations]
  689 |     webkit_web_view_run_javascript(WEBKIT_WEB_VIEW(m_webview), js.c_str(),
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  690 |                                    nullptr, nullptr, nullptr);
      |                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/webkitgtk-4.0/webkit/WebKitPrintOperation.h:29,
                 from /usr/include/webkitgtk-4.0/webkit2/webkit2.h:74,
                 from libs/webview/webview.h:579,
                 from bind.cc:2:
/usr/include/webkitgtk-4.0/webkit/WebKitWebView.h:526:1: note: declared here
  526 | webkit_web_view_run_javascript                       (WebKitWebView             *web_view,
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
KMS: DRM_IOCTL_MODE_CREATE_DUMB failed: Permission denied
Failed to create GBM buffer of size 480x320: Permission denied
KMS: DRM_IOCTL_MODE_CREATE_DUMB failed: Permission denied
Failed to create GBM buffer of size 480x320: Permission denied
KMS: DRM_IOCTL_MODE_CREATE_DUMB failed: Permission denied
Failed to create GBM buffer of size 480x320: Permission denied
Failed to create EGL images for DMABufs with file descriptors -1, -1 and -1

For both examples I get the empty (blank) screen as output :

Can you please share the following details?

The Linux distribution you're using and version.
Whether you're using an NVIDIA GPU.
The GPU driver (Nouveau/open source, NVIDIA/proprietary) and version.

I "solved" with:
export WEBKIT_DISABLE_COMPOSITING_MODE=1

fedora 37 + nvidia driver 545.29.06

I've somehow been unable to reproduce the issue.
GPU: NVIDIA GeForce GTX 1080 Ti

OS
Linux kernel
NVIDIA driver
Windowing system
Compiler
WebKitGTK version

Ubuntu 22.04.3
6.5.0-1009-oem
535.129.03
X11
GCC 12.3.0
2.42.3

Ubuntu 23.10
6.5.0-14-generic
535.129.03
X11
GCC 13.2.0
2.42.3

Ubuntu 23.10
6.5.0-14-generic
535.129.03
Wayland
GCC 13.2.0
2.42.3

Fedora 37
6.5.12-100.fc37.x86_64
545.29.06
Wayland
GCC 12.3.1
2.42.2

Fedora 39
6.6.8-200.fc39.x86_64
545.29.06
Wayland
GCC 13.2.1
2.42.3

Yes I think it sometimes worked for me too, I am not sure what triggers it. But clearly its a problem multiple people report. Have you tested f37 + 545.29.06 + x11? That's what I am using. I can't test it right know, but I could imagine that a restart of the system temporarily "fixes" the problem, so it would be additionally hard to reproduce it reliably

Setting environment variable WEBKIT_DISABLE_DMABUF_RENDERER=1 also appears to work around the issue.

Have you checked whether the issue persists with NVIDIA driver 535?

I can't test that currently, unfortunately. Do you know of a command to downgrade the nvidia driver on fedora to a specific version?

Ok, I looked in the dnf logs: when I originally reported https://github.com/webview/webview_go/issues/19#issue-2035907595 I had 3:535.129.03-1.fc37 installed

I'm not very familiar with Fedora but I guess we don't need to check anymore since you seem to have had the issue with driver 535.
I've submitted a workaround for this issue.


[RN 0.52] New YellowBox.ignoreWarnings fail to ignore listed warnings

Is this a bug report?
Yes
Have you read the Contributing Guidelines?
Yes
Environment
Environment:
  OS: macOS Sierra 10.12.6
  Node: 9.3.0
  Yarn: 1.3.2
  npm: 5.6.0
  Watchman: 4.9.0
  Xcode: Xcode 9.2 Build version 9C40b
  Android Studio: Not Found

Packages: (wanted => installed)
  react: 16.2.0 => 16.2.0
  react-native: 0.52.0 => 0.52.0

Steps to Reproduce
$ react-native run-ios
Expected Behavior
iOS simulator run without showing ignored YellowBox warnings
Actual Behavior

Reproducible Demo
I have in index.js:
import React, {Component} from "react"
import {
  AppRegistry,
  StyleSheet,
  View,
  Dimensions,
  StatusBar,
  YellowBox,
} from 'react-native'
YellowBox.ignoreWarnings = ([
  'Encountered an error loading page',    // WebView uri: result.url and url failing to load - "bloomberg suneq" https://github.com/facebook/react-native/issues/7839#issuecomment-224111608
  'Deprecation warning: moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',
  'Task orphaned for request ',
  'Remote debugger is in a background tab which may cause apps to perform slowly',
])

This is not the case with the previous form: console.ignoredYellowBox = [...] prior to this change in RN 0.52. The 2 YellowBox warnings in screenshot above got properly ignored. Now in RN 0.52, the only way I can as a workaround suppress these YellowBox warnings is by adding a catch-all disable to my index.js:
console.disableYellowBox = true

Am I missing something in my `YellowBox.ignoreWarnings = ([...]) specs so they aren't actually ignoring?

Just send a PR for revising the docs
https://github.com/facebook/react-native-website/pull/173

Documentation updated in 0.52 and next version. Thank you all.

I am running RN 0.55.2 and I followed the docs but I am still getting yellow box warnings with both a specific error to ignore and also trying console.disableYellowBox = true;. Neither case is effective at stopping any yellow box warning messages from popping up. I have wiped the app, cache, reinstalled, etc., no dice.
Any thoughts on how I can resolve this?  Thx!

I've been using:
console.ignoredYellowBox = ['Setting a timer', 'source.uri should not']; // Ignore Firebase timer issues.

This works against 0.51.1.

This is still an issue with 0.56.0. Neither of the solutions work. It's also a problem when encountering dynamically created warnings like the one below.
YellowBox.js:67 (ADVICE) View #17 of type RCTView has a shadow set but cannot calculate shadow efficiently. Consider setting a background color to fix this, or apply the shadow to a more specific component.

For me with 0.56.0 worked this
YellowBox.ignoreWarnings(["Warning:"]);
But I had to put it in the right file, that cause this error, not root file

I had console.disableYellowBox = true; in App.js  and it was working perfectly before. Stopped working when I updated react native. Moved it to index.js and now it works again.

For me with 0.56.0 worked this
YellowBox.ignoreWarnings(["Warning:"]);
But I had to put it in the right file, that cause this error, not root file

I've put it before the import causing the warning in the root file and it is working as expected.


Add { nodir: true } to glob.sync() in README

The plugin throws Error: EISDIR: illegal operation on a directory, read when it finds a directory in the glob.
Greate work btw! 😄

Would be nice to change the globs too from ${PATHS.src}/* to ${PATHS.src}/**/*

Hey, thanks for the PR, would you also like to change the ${PATHS.src}/* to ${PATHS.src}/**/*? I think that's a good idea

done 😄

Thank you!


minLength for references

Hi,
I posted a bug to the redoc repository, that my swagger definition does not work with the newest alpha.
https://github.com/Rebilly/ReDoc/issues/631
And I got the following answer:
I checked it out and it is caused by the following pattern which is used in multiple places in your spec:
{
  "description": "The field properties.",
  "minLength": 1,
  "allOf": [
    {
      "$ref": "#/definitions/FieldPropertiesDto"
    }
  ]
}

Can you explain, why there is a minLength property?
My json: https://www.dropbox.com/s/g0szlu37n9qlyy1/swagger.json?dl=0

Indeed, doesnt make much sense. Can you post the property code and the dto code?

Ah its probably a property with [Required] and not of thype string, right?

Yes, exactly:
    /// <summary>
    /// The schema properties.
    /// </summary>
    [Required]
    public SchemaPropertiesDto Properties { get; set; }

Ok yes, this is a bug... - the MinLength should only be generated for required string properties. Is it correct that you'd expect that this property is not set on this property? Is redoc failing completely because of this?

Yes and yes, but others validators don't care, it is only redoc.

Thanks, will this be published to nuget automatically?

Not really, I need to release a new NJS version und update the packages in NSwag and release that too... is this urgent?

No, it is fine, just a question.


Please implement clap_plugin.reset() for your plugins.

Hello!
https://github.com/free-audio/clap/blob/main/include/clap/plugin.h
typedef struct clap_plugin {
   ...
   // - Clears all buffers, performs a full reset of the processing state (filters, oscillators,
   //   envelopes, lfo, ...) and kills all voices.
   // - The parameter's value remain unchanged.
   // - clap_process.steady_time may jump backward.
   //
   // [audio-thread & active]
   void(CLAP_ABI *reset)(const struct clap_plugin *plugin);

CLAP hosts have to rely on plugin developers to implement this in order to revert the plugin DSP back to a "clean" DSP state. An example of where this is needed is the "panic button" that many DAWs provide which will kill active reverb tails, delay feedback, etc.

the issue is that many plugins already released which do not have this function and if exposed will misbehave (clap host sees the function available but then it does nothing..)

Well yes that is exactly the issue I am reporting. Calling reset() doesn't do anything.

but it does have query possible, the function being null means its not implemented.

Says who? Is that documented in the CLAP headers somewhere? As far as I know reset is a required function. Plugins can return null when an extension is queried but that is extensions, not core functions. But I might have missed some documentation somewhere. In any case none of the DPF plugins set that function to null.

I dont think I was clear in my point... if DPF would do the quick approach of implementing a fallback reset that triggers deactivate + activate, that would break RT requirements because those calls are not meant to be RT safe. but if the host is in control it can check if the reset function is null, and in that case do the re-activation instead.

Why not simply implement reset()?

Says who? Is that documented in the CLAP headers somewhere? As far as I know reset is a required function.

is it stated somewhere that the plugin struct calls are all mandatory?

Why not simply implement reset()?

just being very conservative on any additions to DPF base API, to not get it bloated. this request seems reasonable, but we have to keep in mind backwards compatibility.
looking around clap apis I think its possible to keep backwards compat with https://github.com/free-audio/clap/blob/main/include/clap/host.h#L30 while adding a new function (though it will need to be guarded by a feature macro again, so we only involve the host restart on old/non-updated plugins)

Says who? Is that documented in the CLAP headers somewhere? As far as I know reset is a required function.

is it stated somewhere that the plugin struct calls are all mandatory?

Is it stated somewhere that they're not? CLAP doesn't have a proper specification yet so a lot of stuff like this is unspecified. I've cried a lot about it here: https://github.com/free-audio/clap/discussions/414
Personally I would assume that all functions are mandatory unless explicitly specified as being optional. What do you think?

Why not simply implement reset()?

just being very conservative on any additions to DPF base API, to not get it bloated. this request seems reasonable, but we have to keep in mind backwards compatibility. looking around clap apis I think its possible to keep backwards compat with https://github.com/free-audio/clap/blob/main/include/clap/host.h#L30 while adding a new function (though it will need to be guarded by a feature macro again, so we only involve the host restart on old/non-updated plugins)

The function is already there. It's just a no-op https://github.com/DISTRHO/DPF/blob/f5815166356e85a5fe244f6024c2e401f04b10fa/distrho/src/DistrhoPluginCLAP.cpp#L2446

well I added something for this in 800583a8de694d329f4e3b3bb05340b2d9558f36 which might serve as the initial step.
if we introduce a dedicated reset function on DPF plugin API then we could make use of that instead of doing this restart.
but I think for the moment this is a nice quick fall-back solution, assuming it works..

well I added something for this in 800583a which might serve as the initial step.
if we introduce a dedicated reset function on DPF plugin API then we could make use of that instead of doing this restart. but I think for the moment this is a nice quick fall-back solution, assuming it works..

Thanks for looking into this, but this is not correct! "reset" and "restart" are different concepts. The plugin shouldn't request the host to restart it when reset() is called. All it needs to do is reset its own DSP state back to zero.

Thanks for looking into this, but this is not correct! "reset" and "restart" are different concepts. The plugin shouldn't request the host to restart it when reset() is called. All it needs to do is reset its own DSP state back to zero.

I know and understand the concept, but in many (all?) plugins the re-activation triggers the same. it just so happens that deactivate + activate does a few more extra things.
And this is just a fallback anyway

Okay I get it. Sorry I am a bit tired but I understand your reasoning now. Thanks for looking into it!

testing would be much appreciated. do you know of other plugin APIs that have similar concepts? it would add extra motivation/reasons to add it as plugin API.
I recall AU having this, dont think VST2 has it, LV2 for sure doesnt. maybe VST3?

I can trying building your develop branch from source tomorrow and see if your fallback works ok. I think the main motivation to add it should be that CLAP specifies that it should be added but I admit that CLAP is still under-specified so you are not morally required to do anything. The argument that hosts may simply call stop_processing or deactivate instead isn't good because many plugins don't even perform a DSP reset in those functions either. That's why I will likely be bugging more plugin developers about implementing reset() properly.
I'm not overly familiar with VST3 but if I understand right, the VST host has the flexibility to destroy and recreate the audio component without affecting the GUI, so they don't need to rely on the plugin developer to implement a DSP reset. CLAP's approach is probably cleaner but unfortunately doesn't work very well currently because it requires the plugin developers to all be playing by the rules

juce has juce::AudioProcessor::reset - a user function to reset
VST3 has IAudioProcessor::setProcessing which is required to reset buffers if called with false.  Juce calls reset from here.
AU has  ComponentResult MusicDeviceBase::Reset (AudioUnitScope inScope, AudioUnitElement inElement) override`
clap has (as mentioned) void clap_plugin_t::reset() noexcept
From perusing the JUCE code it seems Unity has a similar API, but VST2 and AAX do not, or if they do, they are not implemented by JUCE. But that was just a quick scan.

I'd like to help you test this but I'm not actually sure how to build the DPF plugins with your 'develop' branch instead of 'main'. But if it is easy for you to send me an MVerb.clap binary for Windows then I can at least give it a quick test to check if the reverb tail is stopping now. But there is no rush, I can wait until your next official release

@colugomusic simply checkout develop branch and build?

@colugomusic simply checkout develop branch and build?

https://github.com/DISTRHO/DPF-Plugins has no develop branch

@colugomusic ah sorry, didn't realize you meant that repo and I also didn't know that this one has dpf fully vendored instead of as a submodule.

Ah I see what you mean. I may be able to just checkout develop and drop it in locally then.

there is a script on that repo to update the plugins, anyhow I run it just now and updated the plugins + dpf

there is an experimental implementation as per 576b507dc44797ab5142f1017452d2b3a5adeda4
instead of a new function I went with a custom parameter designation, alike bypass.


Compilation errors: wrong types used for _BitScanForward.

In a _WIN64 context, _BitScanForward is used.
_BitScanForward expects types of unsigned long */unsigned long, but uint32_t*/uint32_t * are being fed into it.
I'd like to propose typecasting as a solution:
_BitScanForward ((unsigned long *)&ones_count, (unsigned long)~wps->wvbits.sr);

Thanks, I assume this is another C++ issue. I'll take a look and maybe create a macro like I do for _BitScanReverse().

Not this time I don't think. According to the docs for _BitScanForward, here, the prototype is the same in C and C++.
This may simply simply be a shortcoming of TravisCI as you can't test anything on Windows using that system...

It's definitely a C++ issue. I created a test program and compiled it for C and C++ (with /TC and /TP respectively):
C:\cygwin64\home\david\wavpack-five>type test.c
#include <intrin.h>

int main (void)
{
    unsigned int foo, bar = 17;

    _BitScanForward (&foo, bar);

    return 0;
}

C:\cygwin64\home\david\wavpack-five>cl /TC test.c
Microsoft (R) C/C++ Optimizing Compiler Version 15.00.21022.08 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

test.c
Microsoft (R) Incremental Linker Version 9.00.21022.08
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:test.exe
test.obj

C:\cygwin64\home\david\wavpack-five>cl /TP test.c
Microsoft (R) C/C++ Optimizing Compiler Version 15.00.21022.08 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

test.c
test.c(7) : error C2664: '_BitScanForward' : cannot convert parameter 1 from 'unsigned int *' to 'unsigned long *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

C:\cygwin64\home\david\wavpack-five>

I believe this is a little overly pedantic because unsigned int and unsigned long are exactly the same thing to the Microsoft C/C++ Compiler, which is why the simple cast you suggest would work fine for now.
But someday they might make long 64-bits (like on Linux) which would [silently] break that, so I did a slightly more complex fix (and verified that there was no performance penalty).
Thanks!

Interesting!
Looking at the problem again, long only needs to be at least 32-bits according to the C++ standards - which your recent change encompasses nicely.
Cheers.


[keyvault] remove get_certificate example from get_certificate_version endpoint

Good catch! Do you have time to add a replacement? I think something simple right after the get_certificate snippet would work, like
# [END get_certificate]

version = certificate.version

# [START get_certificate_version]

certificate = certificate_client.get_certificate_version(cert_name, version)

print(certificate.id)

# [END get_certificate_version]


[FEATURE] Any example or plan to integrate exist api service

If you'd like to discuss your feature idea first with the community (highly recommended!) please visit our Discord channel.
bring api to website
not database。
using api build fasthtml website

I fail to see why you can't achieve this with python code.
from fasthtml.common import *
import requests

app,rt = fast_app()

@rt('/')
def get():
response = requests.get("https://api.sampleapis.com/coffee/hot").  # << Make request
return Div(P(f'Hello World! {response.content}'), hx_get="/change")  # << Use API  response in user response

serve()


Save Card Details

Any chance you guys are going to implement this? I'd be glad to help out where I can.

There are a couple of things regarding this: first of all, there is a open PR which still requires a bit of fixing and alignment. Secondly, we pivoted our product a bit so saving card details featured got pushed away in the priority queue. Although I'm feeling that this library has a potential to be useful for open source community and will try to implement card saving.

Ah I see. Don't over extend yourself, but this library is helpful! We are using it in an app on Play and iOS stores.


stdin for sam local doesn't have correct encoding

stdin for sam local doesn't have correct encoding
When piping data to sam local invoke you will get UnicodeEncodeError when preseted with non-ASCII unicode streams.
Steps to reproduce the issue:

Make sure you're using the python2.7 SAM
Create a test file like :  { "city": "Tromsø" }  -- the 'o' character is non-ASCII character
cat test.json | sam local invoke

Note: this only reproduces when it's piped in (via stdin) rather than provided as a '-e file'
Observed result:
Traceback (most recent call last):
  File "/Users/koblas/.virtualenvs/aws-sam/bin/sam", line 11, in <module>
    sys.exit(cli())
  File "/Users/koblas/.virtualenvs/aws-sam/lib/python2.7/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/Users/koblas/.virtualenvs/aws-sam/lib/python2.7/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/Users/koblas/.virtualenvs/aws-sam/lib/python2.7/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/koblas/.virtualenvs/aws-sam/lib/python2.7/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/koblas/.virtualenvs/aws-sam/lib/python2.7/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/koblas/.virtualenvs/aws-sam/lib/python2.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/Users/koblas/.virtualenvs/aws-sam/lib/python2.7/site-packages/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args[1:], **kwargs)
  File "/Users/koblas/.virtualenvs/aws-sam/lib/python2.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/Users/koblas/.virtualenvs/aws-sam/lib/python2.7/site-packages/samcli/commands/local/invoke/cli.py", line 44, in cli
    docker_network, log_file, skip_pull_image, profile)  # pragma: no cover
  File "/Users/koblas/.virtualenvs/aws-sam/lib/python2.7/site-packages/samcli/commands/local/invoke/cli.py", line 76, in do_cli
    stderr=context.stderr)
  File "/Users/koblas/.virtualenvs/aws-sam/lib/python2.7/site-packages/samcli/commands/local/lib/local_lambda.py", line 80, in invoke
    stdout=stdout, stderr=stderr)
  File "/Users/koblas/.virtualenvs/aws-sam/lib/python2.7/site-packages/samcli/local/lambdafn/runtime.py", line 68, in invoke
    env_vars = environ.resolve()
  File "/Users/koblas/.virtualenvs/aws-sam/lib/python2.7/site-packages/samcli/local/lambdafn/env_vars.py", line 100, in resolve
    result[name] = self._stringify_value(value)
  File "/Users/koblas/.virtualenvs/aws-sam/lib/python2.7/site-packages/samcli/local/lambdafn/env_vars.py", line 195, in _stringify_value
    result = str(value)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf8' in position 16: ordinal not in range(128)

Expected result:
Lambda function should run in the sam way as if invoked as sam local invoke -e test.json

Please open an issue in the SAM CLI repo


Reduce size of bundle

Is your feature request related to a problem? Please describe.
The size of the package is huge, due to a double export of some packages.
See here.
Describe the solution you'd like
In the package.json, all the peerDependencies are present in the dependencies which result in a huge bundle size.
When this package is built, it will include the bundle of ol, ol-ext, etc...
Additional context
I'm trying to build an app in Nuxt with this package for the map.

Hey, actually it shouldn't include this in the bundles since the rollup option external in the vite config is set to face this issue. Removing this makes the bundle size increasing.


oauth client

Hi,
Do you have plans to also do the client package (https://github.com/thephpleague/oauth2-client) from The PHP League as a CakePHP 3.0 plugin?

No plans for the oauth2 client since it doesn't need any custom adapters to work with CakePHP 3


Make AnimationTree reference AnimationPlayer instead of AnimationMixer

Fixes #83927
The animation_player property is set to only allow AnimationPlayer. But set_animation_player() did not do any checks about it. Internally, AnimationTree only checks if it points to an AnimationMixer before using the path. So when set to point to the AnimationTree itself, an infinite loop occurs eventually.
It's confirmed on RocketChat that set_animation_player() should only allow AnimationPlayer instead of AnimationMixer currently.

What if this value is set before the tree is available?

To makes things easier, I changed the internal reference from AnimationMixer to AnimationPlayer instead.

Thanks!

Cherry-picked for 4.2.2.


chore: add testing notes

Description:
In order to improve the new contributor's onboarding, this PR aims to add some notes that explain how we test verdaccio.
Still, work in progress, the purpose is anyone is able to add, modify or improve our unit testing pipeline.

[x] unit testing notes
[x] functional testing notes
[x] e2e testing notes

Thanks @DanielRuf !

I'd like to take a look at this in the next days. We'll give a bit of oomph to verdaccio-gitlab and get up to speed with verdaccio 4.x stable.
I see most of this is new content. Is this documenting the existing practice or are there any relevant changes to the testing procedure? (or put in another way, it this the same procedure as 3.x stable and 4.x betas?
@bufferoverflow

Hi @dlouzan

Is this documenting the existing practice or are there any relevant changes to the testing procedure? (

Nothing new, I'm just documenting the existing practice, so, new contributors do not feel blocked.

If there is no more feedback, I guess I can merge tomorrow. :-) thanks for your comments.