Implement Copy, Deref and FromStr to (ed25519|sr25519)::Public

It is now making use of the reexported FromStr of rstd. Is it OK?

Could you please use all my suggestions. Otherwise it will generate warnings for the wasm build.

Updated

Public is not Copy for a reason.

Public is not Copy for a reason.

What is the reason?

To make the clones operation explicit and avoid accidentally pessimising.

I think everything up to a cache line should be safe to implement Copy. Besides that, we already have in the code base:

u128 and that also implements Copy.
Stuff like H512 also implements Copy.

IIRC, clone on [T; N] (T: Copy) is a simply memcpy, threfore, pretty much the same thing as copy. Even though (ed25519|sr25519)::Public isn't repr(transparent) and "copiable", the compiler probably already optimizes clone to memcpy the inner array.
Personally, if you guys are willing to merge this PR without the Copy implementation, I will gladly remove it.

Ok - I've no strong opinions on the matter so happy to approve. @bkchr just waiting for an approval from you.

Squashed and rebased

Thanks!


add arm64 docker build

as titled.

I would like to add this, it seems though that the docker/build-push-action@v1 might only support it with the build_args property while  docker/build-push-action@v3 supports it natively with the platforms property.
do you have anything against/are there any known implications for bumping the version of this action?

Wow, thanks a lot @artemijspavlovs !
I don't think it's kept v1 for any purposes as this is just a single binary container.
We were using v2 in NebulaGraph Core.
@jievince correct me if wrong.
Thanks again @artemijspavlovs.

Just assigned to you, please take your time and ping me for anything I could help @artemijspavlovs :)


Make tox-pipenv support version of tox >= 3.8

Adpated changes by chiqomar with minimal changes to get this PR approved and merged.
Accomodates the changes in tox that caused tox-pipenv to break

Thanks @uhurusurfa, anything else you want to get in for a release?

@gaborbernat Thanks - much appreciated

@uhurusurfa Are you going to cut a release for this soon? I'm still experiencing this problem.

@gaborbernat - Any chance you can tag a release with this into Pypi?

I'd love to, tagged master for 1.9.10 release, but turns out only @tonybaloney has the rights to do releases...

@tonybaloney was blazing fast and now it's out at https://pypi.org/project/tox-pipenv/1.10.0/


Update howToInstall.md

The "How to Install" page was missing a key element (dependency modification) of the package installation for the manifest.json file. A change and a description for this omission was inserted.

Hey Arman thanks for the pull request! Feel free to shoot any questions on the framework my way and since you're working with Brian, you may also want to check out SpeckleUnity which I'm a co-maintainer of along with Dean Giddy.

Pleasure Jak, the London team spoke highly of you! I'll be sure to shoot questions your way and check out the SpeckleUnity project as well. :)

Regenerated the documentation site based on your input: https://pablothedolphin.github.io/Scriptable-Framework/articles/howToInstall.html


Allow overriding global wireframe setting.

Objective
Allow the user to choose between "Add wireframes to these specific entities" or "Add wireframes to everything except these specific entities".
Fixes #7309
Solution
Make the Wireframe component act like an override to the global configuration.
Having global set to false, and adding a Wireframe with enable: true acts exactly as before.
But now the opposite is also possible: Set global to true and add a Wireframe with enable: false will draw wireframes for everything except that entity.
Updated the example to show how overriding the global config works.

Setting wireframe.enable = true to disable displaying wireframes feels wrong to me.
I'd suggest changing the local per-entity Wireframe "policy" to be more explicit (bikeshed the names of the enum variants):
/// Local per-entity wireframe config.
// ... attributes ...
pub enum Wireframe { // or `WireframePolicy` or `LocalWireframeConfig` as a field of `struct Wireframe`
    /// Follow the global config, for example if `WireframeConfig { global: true }`, this entity will show a wireframe, but if `WireframeConfig { global: false }`, this entity won't show a wireframe
    UseGlobalConfig,
    /// Use the opposite of the global config, for example if `WireframeConfig { global: true }`, this entity won't show a wireframe, but if `WireframeConfig { global: false }`, this entity will show a wireframe
    InvertGlobalConfig,
    /// Ignore the global config, and show a wireframe
    Always,
    /// Ignore the global config, and don't show the wireframe
    Never,
}

@tigregalis I think you misunderstood. It was wireframe.enable = false that would make it never show the wireframe, regardless of global config. Which did show to me that my implementation was probably not as clear as it could be 😃.
I changed the wireframe component to WireframeOverride::AlwaysRender and WireframeOverride::NeverRender, to make it clear that it will make the mesh not care about the global config.

I've had a play with this and the new API makes sense to me. I've extended the example to show what toggling the global config does for entities with different local wireframe configs (red = never, yellow = no component, green = always); is this updated example something we want?
https://user-images.githubusercontent.com/38416468/215453389-c56b9dd1-bc80-4617-9c76-96cfbeac2678.mp4

I like it. I hadn't even thought of doing that. Makes it very clear what effects each option has.

I'm not sure if I like the new name WireframeOverride. Maybe keep the original Wireframe name? It shorter and still makes sense since it works regardless of global config.

Good point. The AlwaysRender and NeverRender names already indicate it is an override, so the additional Override in the name is redundant 👍

Brought up to date with 0.11, and fixed typo pointed out by shatur

@Wcubed could you resolve conflicts?

So, I wasn't aware of this PR and I think the merged api should have been different. I'd like to suggest it here first to see what people think and see if there's agreement.
I believe the api should have used 2 separate components Wireframe and NoWireframe (or maybe NoGlobalWireframe, NeverRenderWireframe, naming isn't really the point)
I think this is better for a few reasons:

Easier to migrate since it doesn't change the old behaviour. Essentially nothing to migrate. Right now this PR is a breaking change but I don't think it has to be.
It's similar to other "per mesh" rendering features like NotShadowCaster/NotShadowReceiver
It doesn't force new users to also think about global vs not global if all they want is to render a wireframe
This would also let you filter at the query definition level instead of filtering when running the query

If we decided to keep this api, please consider adding a migration guide section to the PR description.

it seems this PR broke rendering wireframes on windows / DX12

I don't think this was caused by this PR. It's also broken when using DX12 on the commit before this PR. The issue seems to be be with the DX12 backend.

@IceSentry two PRs that were merged at the same time, this one and #9895. It worked before those two, could you check the commit before (375af64e8cd0c9a1a64b88738d2d253aa9929d5a)?

I went back to https://github.com/bevyengine/bevy/pull/9796 and it's still broken when using DX12 for me

I created this PR with my proposed changes to make the API non breaking while keeping the override feature https://github.com/bevyengine/bevy/pull/10023


make sider responsive

The sider will collapse depends on window width, and content will ajust automatically.

The hostname can't be seen clearly in dark theme.


meta: add translator badge request issue template

This PR adds an issue template to request a translator badge.
It makes it easier to request one, with a ready to use form that asks for the required info.
The initial config.yml already takes care of redirecting users to the main repo for general issues.

This is good, thank you!


Slack a Gist when the release script fails

Every once in a blue moon, this app's release script on Heroku fails. Usually it's because GitHub or npm is down. The Electron website has a Heroku release script that saves failures output to a gist and send the url to Slack. Let's borrow that technique and use it here: https://github.com/electron/electron.atom.io/pull/729

Ended up using Papertrail instead. See https://github.com/electron/electron.atom.io/pull/756


LIVE-2324 - Removing currency for Circulating supply

Removed Currency from circulating supply in market/coin info

📝 Description
BUGFIX for LLD
In the currency's info under Circulating Supply was shown a currency which shouldn't be there. Removed it.
❓ Context

Impacted projects: ``
Linked resource(s): ``

🚀 Expectations to reach
Please make sure you follow these Important Steps.
Pull Requests must pass the CI and be internally validated in order to be merged.

@mlegall-ledger could you add a changelog please :pray:
pnpm changeset

Changeset ok @LFBarreto


Using @amplitude/identify to set boolean user property doesn't work

Expected Behavior

Tried to set a user property to true/false
Current Behavior

Boolean user property didn't get set in Amplitude using @amplitude/identify library. As a workaround, I've been casting to string first before calling amplitudeClient.identify().
Possible Solution

Steps to Reproduce

Tried doing something like:
const identify = new Identify();
identify.set("someProperty", true);
amplitudeClient.identify(userId, deviceId, identify);

to set someProperty user property to true but it didn't get set.
As a workaround, am currently doing:
const identify = new Identify();
identify.set("someProperty", String(true));
amplitudeClient.identify(userId, deviceId, identify);

to get it set.
Environment

SDK Version:  1.5.3 (@amplitude/identify: 1.5.5)
Node version:  v14.8.0

@ajin12  Thanks for pointing that out. The boolean type is not our valid type for Node SDK, but we should include that.  Will plan to work on that.

@ajin12 Thanks for pointing that out. The boolean type is not our valid type for Node SDK, but we should include that. Will plan to work on that.

Thanks!


Fix bug where "--colors" arg is added everytime an user executes a test.

Fixes #45

Can we get a merge on this? I'm kind-of done with scrolling down 5 screens filled with --colors=always, just to get to the errors.

Can we get a merge on this? I'm kind-of done with scrolling down 5 screens filled with --colors=always, just to get to the errors.

I would second that. Please!

Awesome, thanks for the PR! And sorry for the wait, I'm just back from vacation and not using PHP privately anymore so I'm not so quick here.

Published a new version with the fix, thanks again for the PR! It should show up in the marketplace soon and is available on github here too: https://github.com/elonmallin/vscode-phpunit/releases/tag/v4.1.1

Thanks a lot

Thanks a lot


Terminal scroll to bottom does not work

VSCode Version: Version 1.5.0-insider (1.5.0-insider)
OS Version: OSX - Yosemite

Steps to Reproduce:

Open the terminal
Perform some Git command
When command completes the terminal is not scrolled to the last line.

type something afterwards make the terminal scroll to the bottom.

Are you using oh-my-zsh?
This may help you
https://github.com/Microsoft/vscode/issues/8219#issuecomment-239602780

Thanks, that seemed to fix it :)

Closing as duplicate, thanks @Treri


how to attach auth role to "authid"?

public function processHello(array $args) {

    $helloMsg  = HelloMessage::createMessageFromArray($args[0]);
    $transport = $helloMsg->getDetails()->transport;

    return ['NOCHALLENGE', ['authid' => 'myUserName' , 'auth_roles'=>'test']];
}

is that correct?
I guess no, because I tried the following but I got {error: "wamp.error.not_authorized",..... when the client subscribing.

$authorizationManager = new \Thruway\Authentication\AuthorizationManager('realm1122');
$rules = [
    (object)[
        "role" => "test",
        "action" => "publish",
        "uri" => "",
        "allow" => false
    ],
    (object)[
        "role" => "test",
        "action" => "subscribe",
        "uri" => "",
        "allow" => true
    ]
];

foreach ($rules as $rule) {
    $authorizationManager->addAuthorizationRule([$rule]);
}
$router->registerModule($authorizationManager);

Try 'auth_role'=>'test' or 'auth_roles'=>['test'] . Either one of those should work.

Thanks a lot, this one did work: 'authrole'=>'test'


JavaScript heap out of memory due to large custom routes

An Odoo installation with approximately 20,000 products generates a very large customRoutes/products.json file after running yarn update:routes.
yarn dev runs very slowly and fails with a JavaScript heap out of memory error.
The current custom routes implementation seems like an inefficient approach. https://github.com/vuestorefront-community/template-odoo/blob/main/routes.js#L11
I recommend implementing a middleware to use Redis for loading the custom routes.
<--- Last few GCs --->

[1537708:0x538f750]   231374 ms: Mark-sweep (reduce) 1254.5 (1390.7) -> 1254.1 (1335.8) MB, 198.0 / 0.0 ms  (average mu = 0.720, current mu = 0.053) last resort GC in old space requested
[1537708:0x538f750]   231584 ms: Mark-sweep (reduce) 1254.1 (1335.8) -> 1254.1 (1319.6) MB, 210.1 / 0.0 ms  (average mu = 0.547, current mu = 0.000) last resort GC in old space requested

<--- JS stacktrace --->

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
 1: 0xb09c10 node::Abort() [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
 2: 0xa1c193 node::FatalError(char const*, char const*) [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
 3: 0xcf8dbe v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
 4: 0xcf9137 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
 5: 0xeb09d5  [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
 6: 0xec3448 v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
 7: 0xe911a6 v8::internal::Factory::CodeBuilder::AllocateCode(bool) [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
 8: 0xe91805 v8::internal::Factory::CodeBuilder::BuildInternal(bool) [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
 9: 0xe9221e v8::internal::Factory::CodeBuilder::Build() [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
10: 0x14e100e v8::internal::RegExpMacroAssemblerX64::GetCode(v8::internal::Handle<v8::internal::String>) [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
11: 0x11cba49 v8::internal::RegExpCompiler::Assemble(v8::internal::Isolate*, v8::internal::RegExpMacroAssembler*, v8::internal::RegExpNode*, int, v8::internal::Handle<v8::internal::String>) [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
12: 0x11e9dd7 v8::internal::RegExpImpl::Compile(v8::internal::Isolate*, v8::internal::Zone*, v8::internal::RegExpCompileData*, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, bool, unsigned int&) [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
13: 0x11ea580 v8::internal::RegExpImpl::CompileIrregexp(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, bool) [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
14: 0x11eb17e v8::internal::RegExpImpl::IrregexpPrepare(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>) [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
15: 0x11eb2f7 v8::internal::RegExpImpl::IrregexpExec(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, int, v8::internal::Handle<v8::internal::RegExpMatchInfo>, v8::internal::RegExp::ExecQuirks) [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
16: 0x12104c8 v8::internal::Runtime_RegExpExec(int, unsigned long*, v8::internal::Isolate*) [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
17: 0x15f2099  [/home/mo/.nvm/versions/node/v16.15.0/bin/node]
Aborted (core dumped)

hi @themreza good catch, we are aware of this problem and considering Redis also, but still considering other options.

Hello @themreza , tks for the feedback.
We changed the way of building routes.
Now we don't need generate routes for products anymore, we only use categories as parameters because category slug is part of product route/ slug.
But, the ideia you give, after set all custom routes in redis, you mean nuxt read this routes in build time ?

@odranoelBR As a general note, I'm finding it a bit hard to follow the changes (actually for both the storefront and Odoo modules, e.g. see https://github.com/odoogap/vuestorefront/issues/7#issue-1393544164).
Regarding the route generation, I think we should also assume that the backend has thousands of categories.
Therefore, rather than including the routes into the build, the slug resolution should be done on the server-side.
To speed up the lookup, we can use Redis to cache the routes.

Hi @themreza we have thousand of product links but not categories, it's very hard to have because they are base url like
/products/iphone8 or /blue-cars etc. We still need a route file to generate sitemaps for SEO.
We will consider the redis solution, must check how much memory will alocate and IO of it.
Tks


/vaults cors settings

update /vaults to the same cors settings as /screen /bolts, etc.
bridge:1 Access to XMLHttpRequest at 'https://bot.opendollar.com/api/vaults' from origin 'https://app.opendollar.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Fixed in https://github.com/open-dollar/od-bot/pull/123


Build and run on an M1 Mac

Trying to get this running on my M1, and the docker build process is not working. I have used the quick build process as well as the detailed process.. Both with Docker.
Right now, I can get key cloak and redash running fine, but the forms-flow-webapi continues to fault and restart every 5 seconds, which also seems to force forms-flow-bpm to restart at the same interval + ~1s.
Has anyone gotten a full build running on an M1 ? I've made edits to Dockerfile to update a few dependancies and ass the  --platform linux/amd64 to actually get the container to build, but still no luck.
Seeing if anyone else has had any luck running a local install on an M1 recently.

I can just agree to what @bnowacky says. I have tried to run FormsFlow on my M1 Mac today and run into the exact same issue. Even trying to edit and run the shell script did not lead to a solution. It somehow always ends up in the described crash-loop.

FYI, I somehow fixed that the web-api keeps crashing. Nevertheless, I still face problems with Camunda.
Here is a section of the error log:
forms-flow-bpm        | 2023-02-03 12:20:43.582 ERROR 1 --- [           main] o.s.b.web.embedded.tomcat.TomcatStarter  : Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'OAuth2LoginSecurityConfig': Unsatisfied dependency expressed through method 'setContentNegotationStrategy' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration': Unsatisfied dependency expressed through method 'setConfigurers' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.OAuth2ClientConfiguration$OAuth2ClientWebMvcSecurityConfiguration': Unsatisfied dependency expressed through method 'setClientRegistrationRepository' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientRegistrationRepository' defined in class path resource [org/springframework/boot/autoconfigure/security/oauth2/client/servlet/OAuth2ClientRegistrationRepositoryConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository]: Factory method 'clientRegistrationRepository' threw exception; nested exception is java.lang.IllegalArgumentException: Unable to resolve Configuration with the provided Issuer of "http://<IP_ADDRESS>:8080/auth/realms/forms-flow-ai"
Seeing that you, @sumesh-aot did the last commit to fix the deployment for M1 - maybe you can help here? :)
Thank you a lot in advance!

Thanks for your reply @sumesh-aot!
Steps to reproduce my issue:

(fix) and run start.bash (replacing docker-compose.yml with docker-compose-arm64.yml)

choose not to install analytics
add correct ip-address
This starts the docker container but results into the previously described problem

Second thing I tried out was:

Using the docker-compose-arm64.yml and starting it on its own.

Fails

Adding information from the sample.env to the .env file

Apparently this does not change anything

I tested the installation on my windows machine - it runs fine there. To me it seems that the windows script creates other .env variables. I want to try out whether manually changing them on MacOS helps.

Hey @bnowacky - we managed to get forms-flow up and running.
Since it is rather a "workaround" we pushed it to one of our own repositories.
To me it seems that the .env variables & config.js is filled with the wrong attributes on startup. Especially since the bash script is not working.
There is also a readme in here who should tell you what exactly you need to do:
https://github.com/FlowSquad/miranum-consulting/tree/main/forms-flow-showcase/forms-flow-ai
Lmk if this solves your problem! :)
(Would be cool to get this officially fixed though)

@Hafflgav Thank you for the feedback. I have modified the script to pull correct IP address and to fix other issues. Could you  please give a try and if it's working on your end ?

Hey @sumesh-aot! Thanks a lot for the update :)
When trying to run the script it complains about invalid identifies. This can easily be fixed by changing function names like "forms-flow-web" to "formsFlowWeb". Using "-" seems to be forbidden in function names.
(I wanted to push this to the branch but apparently do not have permissions to do so. :(
After having changed this I was able to run the script. I do not get container crashes anymore.
Though when logging into keycloak with the default login I do get a "Error: Request failed with status code 503"
So far I am not sure why this exactly happens.
I have noticed that

FORMIO_DEFAULT_PROJECT_URL=http://<IP_ADDRESS>:3001
is not included in the .env file which is after having executed the .bat on windows.

Another thing I saw is that the keys in the config.js file have been in quotation marks.
Windows outputs:
window["_env_"] = {
    NODE_ENV:"production",
    REACT_APP_API_SERVER_URL:"http://<IP_ADDRESS>:3001",
    REACT_APP_API_PROJECT_URL:"http://<IP_ADDRESS>:3001",
    REACT_APP_KEYCLOAK_CLIENT:"forms-flow-web",
    REACT_APP_KEYCLOAK_URL_REALM:"forms-flow-ai",
    REACT_APP_KEYCLOAK_URL:"http://<IP_ADDRESS>:8080",
    REACT_APP_WEB_BASE_URL:"http://<IP_ADDRESS>:5000",
    REACT_APP_BPM_URL:"http://<IP_ADDRESS>:8000/camunda",
    REACT_APP_WEBSOCKET_ENCRYPT_KEY:"giert989jkwrgb@DR55",
    REACT_APP_APPLICATION_NAME:"formsflow.ai",
    REACT_APP_WEB_BASE_CUSTOM_URL:"",
    REACT_APP_USER_ACCESS_PERMISSIONS:{accessAllowApplications:false,accessAllowSubmissions:false}
};

Let me know what you think about these findings :)

@Hafflgav Thanks again for the feedback.
I have a PR (https://github.com/AOT-Technologies/forms-flow-ai-deployment/pull/37/) in place to fix the quote and identifier issue (works on my M1 without those changes, weird). Formio project URL was getting populated in all scenarios I tried.


Optimize PerfEventQueue

Can you extend the commit message with a sentence of why you moved it to its own file?

Will do. It was just for better clarity. Or do you think that they should be in the same file?

Can you extend the commit message with a sentence of why you moved it to its own file?

Will do. It was just for better clarity. Or do you think that they should be in the same file?

No, after looking at those files, it made totally sense to have them separate, I'd just prefer a brief statement for the commit log.

I just noticed that we now don't have any test for the PerfEventProcessor. That class seems to be pretty simple now, but could you also add a small test for that?

Can you extend the commit message with a sentence of why you moved it to its own file?

Will do. It was just for better clarity. Or do you think that they should be in the same file?

No, after looking at those files, it made totally sense to have them separate, I'd just prefer a brief statement for the commit log.

This is done.

I just noticed that we now don't have any test for the PerfEventProcessor. That class seems to be pretty simple now, but could you also add a small test for that?

On it.

I just noticed that we now don't have any test for the PerfEventProcessor. That class seems to be pretty simple now, but could you also add a small test for that?

Done, please have a look.


About the decoder process

When I encountered some confusion while debugging your code, I used the following code during the decoding phase
up_outputs = []
if self.up_stages is not None:
    for i_stage, stage in enumerate(self.up_stages):
        i_level = self.num_down_stages - i_stage - 1
        x_skip = down_outputs[-(2 + i_stage)]
        x, _ = self._forward_up_stage(stage, nag, i_level, x, x_skip)
        up_outputs.append(x)
if self.output_stage_wise:
    out = [x] + up_outputs[::-1][1:] + [down_outputs[-1]]
    return out

down_outputs:{list:2}=[(32538,64),(10227,64)]
How to interpolate to obtain up_outputs={list: 1}=[(32538,64)] and ultimately obtain out={list: 2}=[(32538,64), (10227,64)]
Could you please provide a detailed explanation of the process of downsampling and upsampling? Thank you very much！

To be honest, I do not understand your question.
This code implements the classic behavior of a UNet model:

a series of downsampling stages are applied
after each downsampling stage, you keep track of the output, to be passed to the next stage, but also used in the skip connections
for upsampling stages, you operate on the latest upsampled cloud, concatenate it with the value from the skip connection, and run it through your decoder stage

How to interpolate...

Could you please provide a detailed explanation of the process of downsampling and upsampling?

If you are asking about how the "sampling" is done (ie you are looking for a point sampling, or a grid voxelization, or farthest point sampling operation somewhere), then the answer is: it is a hierarchical superpoint partition that we build it at preprocessing time. This is the core idea of this whole project, please check our paper https://arxiv.org/abs/2306.08045.

Thank you very much for your patient answer. I have another question about the code. If I want to train semantic segmentation with my first GPU and panoptic segmentation with my second GPU. So how should I set up my graphics card usage?

Look into CUDA_VISIBLE_DEVICES.
Your history of issues in this repo suggest you are not too familiar with deep learning and that you have not read the paper in details. I have to warn you, the project at hand involves some fairly advanced deep learning concepts. Besides, I cannot provide tutoring here, only support for true issues related to the code, or aspects of the project that lack clarity.


add-ons or addons ?

In my current Gecko patch, I had addons.

Refs https://github.com/mozilla-services/amo-blocklist-ui/issues/40

Okay, so since kinto-admin uses the collection name in the menu, it was decided to rename it to add-ons. We should probably add an issue in kinto-admin to read like a label attribute in the collection object instead.
I'll update my patch on Gecko to add-ons anyway.

https://github.com/mozilla-services/amo-blocklist-ui/issues/40

:confused: :sorry:

Actually, I realized the code was already landed in Gecko with addons: https://dxr.mozilla.org/mozilla-central/search?q=addons.collection

So what do we do about that?

If "addons" was pushed in gecko,  let's use "addons" everywhere at this point.
If the goal of "add-on" is for the UI, I think that's now down to having the ability to have labels attached to collection names in kinto-admin


[LINTER] git-black.sh should ignore deleted files in diff

see http://ci.tvm.ai:8080/job/tvm/job/master/1588/execution/node/22/log/

cc @comaniac @jroesch @areusch

I can take a look.


get_video_info should be removed

get_video_info should be removed because the api is removed the detail page and just put it in watch page.
For avoid the meaningless warning, I think it should be removed.

Yeah I might just do that. I don't recall any livestreams that have been age-gated thus far, though the possibility is probably there.
Alternatively I'll continue updating it, but the most recent one that gets it working again has it return less information, some of which I was using.


[CRITICAL] Fix exception when switch force close the socket

This was a critical problem. The controller died after force close
client side socket.

Crash log here:
[2015-01-23 15:28:34,426] ERROR  (etri.sdn.controller.OFController$QP::run:167)
[2015-01-23 15:28:34,427]  INFO We're now removing this controller from the protocol server. (etri.sdn.controller.OFController::removeSelf:303)
[2015-01-23 15:28:34,427]  INFO If you want to, please fix the controller error by following procedure. (etri.sdn.controller.OFController::removeSelf:304)
[2015-01-23 15:28:34,427]  INFO First, remove the controller jar file from the controllers directory. (etri.sdn.controller.OFController::removeSelf:305)
[2015-01-23 15:28:34,427]  INFO Second, fix the bug and put the fixed jar file under controllers directory. (etri.sdn.controller.OFController::removeSelf:306)
[2015-01-23 15:28:34,428]  INFO That's it. For more information, plz contact<EMAIL_ADDRESS>(etri.sdn.controller.OFController::removeSelf:307)

Thank you for your contribution. I will thoroughly test it for any side effects and then merge it to master branch.


Extension issue

Issue Type: Bug
Extension Name: python
Extension Version: 2021.10.1317843341
OS Version: Windows_NT x64 10.0.22000
VS Code version: 1.61.0

:warning: We have written the needed data into your clipboard. Please paste! :warning:

Thanks for the bug report, but unfortunately we need some more information from you in order to triage this issue appropriately. Please create a new bug by providing a filled-in copy of our issue template.

To help us diagnose this:

Use Extension: Install from VSIX command to install the following VSIX: https://github.com/microsoft/vscode-python/suites/4045758965/artifacts/102544038
Set python.logging.level to "info" in User settings.
and then please provide the logs as mentioned in the issue template.

Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)

XXX


Check for file overwrite on moving files before doing any refactoring

What is the behavior if no class matching the file name is found in the file? Falls back to simple file move?

In that case the user's computer will explode, killing all the house residents in the process, all because of writing bad code.

Oh then that's ok ;)


CRUD operations for database

Useful CRUD commands:

Retrieve hospitals based on location: db.HOSPITALS.find({"geometry": {$near: { $geometry: {type: 'Point', coordinates: [-70.98471383,41.672747140]}, $maxDistance: 10000}}})
Retrieve hospitals based on city: db.HOSPITALS.find({"properties.CITY": "LAFAYETTE"})


Broken link to Python library

The "Python library" link http://azure.github.io/azure-documentdb-python/ gives a 404. Should it be https://github.com/Azure/azure-cosmos-python?

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

ID: 08a28907-0d48-5496-d488-ed7d0139f5f1
Version Independent ID: f99eabd7-92df-cc3c-9750-1f777b0f1def
Content: Azure Cosmos DB: Introduction to the SQL API
Content Source: articles/cosmos-db/sql-api-introduction.md
Service: cosmos-db
GitHub Login: @rafats
Microsoft Alias: rafats

@sennendoko Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

@sennendoko thanks for identifying, we updated the link, changes should be live on Monday. In future, if you see any issues, feel free to click on the edit button on the page and submit your change, We would love to take community contributions !

#please-close

@sennendoko We will now proceed to close this thread. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.


max attached database increase doesn't work

Recompile the sqlite with max attached database to 125 doesn't work
Using the branch <IP_ADDRESS>, with the default Makefile that includes the option
-DSQLITE_MAX_ATTACHED=125
I still see error of max attached - 10
org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (too many attached databases - max 10)

OS: Linux 583b7ecd7230 5.10.76-linuxkit #1 SMP Mon Nov 8 10:21:19 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
sqlite-jdbc version <IP_ADDRESS>

Limits are managed at runtime now, not compile time. See https://github.com/xerial/sqlite-jdbc/pull/568#issue-772387173 for details.

Thanks!


CODE

Is this part included in the program you give?
df_N2 = pd.read_csv("N2.csv")
N2_isotherm = pyiast.ModelIsotherm(df_N2,
loading_key="Loading(mmol/g)",
pressure_key="P(bar)",
model="Henry")
df_CO2 = pd.read_csv("../CO2.csv")
CO2_isotherm = pyiast.ModelIsotherm(df_CO2,re_key="P(bar)",
model="Langmuir")
df_H2O = pd.read_csv("../H2O.csv")
H2O_isotherm = pyiast.ModelIsotherm(df_H2O,
loading_key="Loading(mmol/g)",
pressure_key="P(bar)",
fill_vaule=df_H2O["Loading(mmol/g)"].max())
#list of CO2,N2 and H2O oartial pressures (bar)
partial_pressures = [0.166,0.679,0.02]
component_loadings = pyiast.iast(partial_pressures,
[CO2_isotherm,N2_isotherm, H2O_isotherm])
total_pressure = 65.0 #total bulk gas pressure (bar)
adsorbed_mole_fralctions = [0.5,0.5] #deslired adsorbed mole fractions
gas_mole_fractions, component_loadings = pyiast.reverse_iast(
adsorbed_mole_fralctions,
total_pressure,
[ch3ch3_isotherm, ch4_isotherm])
I find this in paper but don't find it in code

you already posted this issue and I answered it here:
https://github.com/CorySimon/pyIAST/issues/13


Error: 'decoration' isn't a function or method and can't be invoked.

pls change from "decoration: state.decoration()," to "decoration: decoration," in file form_builder_file_picker.dart

solved in #18


Update agenda for May 8

Pull Request (PR) description

Adding new maintainers.
Updating Slack and Discord join links.
Adding new agend item.

This Pull Request (PR) fixes the following issues

Task list

[x] This PR changes documentation

This change is

@gaelcolas please review when you have a chance.


Added the Roll Call logo

@aishwaryachand  please make the pr in resource branch not in master branch, refer to discord channel(rollcall)


Biomarker Scoring

How should biomarker scores. Begin to look into algorithm based on publications, FDA approval, EHR, etc
Look at example in IDG. Discuss with Jeremy

Another idea is to add a hard cap to generic cancer biomarkers. For example, generic cancer biomarkers can be capped at a score of 2 (which would require 3 PMIDs to reach since generic cancer biomarkers get a -1 automatically).

The first version of this tool has been built, it's in this repo. Right now the tool just takes either user overwritten weights or the default weights and calculates a score for each biomarker in a set of data files. It then outputs to a JSON file with the biomarker_id and a score. The clinical usage weight is not used right now as we don't have this data yet.


higher resolution nucpos.bed.gz is empty

I originally posted a comment on a previous issue: https://github.com/GreenleafLab/NucleoATAC/issues/38 , but the original issue is closed, so maybe it wasn't seen. Thus, I am reposting as a new issue since there have been no updates for a few months. Sorry if you just didn't get around to responding.
In the meantime, I ran NucleoATAC on other samples and encounter the same problem every time. I tried both human and much smaller fly genome (so at least coverage should not be a problem).

Sorry, didn't see your followup on that issue!
Can you run NucleoATAC on the test data in the example folder?
nucleoatac run --bed example.bed --bam example.bam --fasta sacCer3.fa --out test_results

I didn't notice there was an example dataset. I tried it. I got an empty test_results.nucpos.bed.gz. I got 160 lines in test_results.occpeaks.bed and test_results.nucmap_combined.bed.

Thanks for running the test data.  Number of lines in test_results.occpeaks.bed is correct, but there should be 130 lines in the test_results.nucpos.bed.gz file, so something is definitely going wrong in execution of code independent of particulars of input data.
A couple more Q's:
NucleoATAC version?
Cython version?
Python version?
Numpy version?
Scipy version?
Operating System?
Within NucleoATAC directory can you try: nosetests tests/test_var.py (need to have nosetests installed)

NucleoATAC version: 0.3.3 (just reinstalled it to be safe)
Cython version: 0.23.4
Python version: 2.7.3
Numpy version: 1.12.0
Scipy version: 0.18.1
Operating System: CentOS 6.8
nosetests result:
/path/NucleoATAC/nucleoatac/NucleosomeCalling.py:86: RuntimeWarning: invalid value encountered in sqrt
  return np.sqrt(var)
FF
======================================================================
FAIL: Make sure variance calculation is close to what is obtained by simulation
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/path/NucleoATAC/tests/test_var.py", line 33, in test_sd1
    self.assertTrue(abs(sd1-sd2)<0.05*sd1)
AssertionError: False is not true

======================================================================
FAIL: Make sure variance calculation is same as would be obtained through alternate calculation
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/path/NucleoATAC/tests/test_var.py", line 43, in test_sd2
    self.assertTrue(abs(sd1-sd2)<0.001*sd1)
AssertionError: False is not true

----------------------------------------------------------------------
Ran 2 tests in 11.041s

FAILED (failures=2)

Thanks for the additional info.  The versions of those packages or the python version don't seem to be a problem on my system, and I haven't been able to reproduce the failing test or erroneous file output.  Could you additionally give the versions of all the dependencies?

I am not using a virtual environment. Is that a problem?
  In particular, in some cases I have found that when installing Cython using pip that an older version of Cython installed previously would actually get imported instead of the newly installed version (but the presence of the new version was what was registered when checking package dependencies upon installation).  Setting up a virtual environment and installing all the dependencies fresh in that environment solved the issue.
I haven't gotten a chance yet to test the package against all the versions you've listed, but that will be my next step in trying to reproduce the error.

I had trouble using virtualenv. After I activate it, pip still tries to install to the usual path and not to the local path. Even if I force it to install locally with --ignore-installed and I see the packages added to the site-packages in the environment, pip list still shows the old versions of the packages. Thus, virtualenv actually introduces new problems for me, so I'll need some time to troubleshoot those.

I resolved my virtualenv issues. This is my pip list before running NucleoATAC, which now looks fine to me:
appdirs (1.4.0)
cycler (0.10.0)
Cython (0.25.2)
functools32 (3.2.3.post2)
matplotlib (2.0.0)
NucleoATAC (0.3.4)
numpy (1.12.0)
packaging (16.8)
pip (9.0.1)
pyparsing (2.1.10)
pysam (0.10.0)
python-dateutil (2.6.0)
pytz (2016.10)
scipy (0.18.1)
setuptools (34.2.0)
six (1.10.0)
subprocess32 (3.2.7)
wheel (0.30.0a0)

I updated to the latest version and ran again:
nucleoatac version 0.3.4
start run at: 2017-02-26 23:08
---------Step1: Computing Occupancy and Nucleosomal Insert Distribution---------
Making figure
---------Step2: Processing Vplot------------------------------------------------
---------Step3: Obtaining nucleosome signal and calling positions---------------
---------Step4: Making combined nucleosome position map ------------------------
---------Step5: Calling NFR positions-------------------------------------------
end run at: 2017-02-26 23:11

Unfortunately, I am still getting 0 in nucpos.bed and 160 lines in occpeaks.bed.

I unfortunately still can't reproduce that output or the failing test with those package versions, making getting to the bottom of this issue difficult.
Do any of the other tests fail?  With v0.3.4 all the tests can be run with "python tests.py" in the main directory?

I got some fails with that.
$ python tests.py
....................FF..
======================================================================
FAIL: Make sure variance calculation is close to what is obtained by simulation
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/path/NucleoATAC/tests/test_var.py", line 33, in test_sd1
    self.assertTrue(abs(sd1-sd2)<0.05*sd1)
AssertionError: False is not true

======================================================================
FAIL: Make sure variance calculation is same as would be obtained through alternate calculation
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/path/NucleoATAC/tests/test_var.py", line 43, in test_sd2
    self.assertTrue(abs(sd1-sd2)<0.001*sd1)
AssertionError: False is not true

----------------------------------------------------------------------
Ran 24 tests in 386.461s

FAILED (failures=2)

Thanks, it looks like those are the same tests from tests/test_var.py run earlier.  Seem like the problem is likely with the calculateCov function in the nucleoatac/multinomial_cov.pyx file, although I am confused as to why it would work differently on your system instead of mine (Ubuntu)

Do you know how I might be able to troubleshoot this? Is there a specific function that might be responsible that I can quickly test without requiring the whole test dataset?

For troubleshooting, perhaps figuring out more specifically why the tests are failing will help.  If you try the following code within python in the main NucleoATAC directory (or edit file paths if in another directory):
import numpy as np
import nucleoatac.NucleosomeCalling as Nuc
import pyatac.VMat as V
from pyatac.chunkmat2d import BiasMat2D
from pyatac.chunk import ChunkList
from pyatac.bias import InsertionBiasTrack

bed_list = ChunkList.read('example/example.bed')
chunk = bed_list[0]
vmat = V.VMat.open('example/example.VMat')
biastrack = InsertionBiasTrack(chunk.chrom, chunk.start, chunk.end)
biastrack.read_track('example/example.Scores.bedgraph.gz')
biasmat = BiasMat2D(chunk.chrom,chunk.start+200,chunk.end-200,100,250)
biasmat.makeBiasMat(biastrack)
signaldist = Nuc.SignalDistribution(chunk.start+300,vmat,biasmat,35)

signaldist.simulateDist(5000)
sd1 = np.std(signaldist.scores)
sd2 = signaldist.analStd()

var_term = np.sum(signaldist.prob_mat*(1-signaldist.prob_mat)*signaldist.vmat.mat**2)
tmp = signaldist.prob_mat *signaldist.vmat.mat
cov_term = np.sum(np.outer(tmp,tmp))-np.sum(tmp**2)
sd3 = np.sqrt(signaldist.reads * (var_term - cov_term))

What are the values of sd1, sd2, and sd3?
(should all be approx equal, about 0.72)

Thanks for the test code.
I got an error for sd2:
>>> sd2 = signaldist.analStd()
nucleoatac/NucleosomeCalling.py:86: RuntimeWarning: invalid value encountered in sqrt
  return np.sqrt(var)

Everything else was fine I think:
>>> sd1
0.723933371134454
>>> sd2
nan
>>> sd3
0.72610032185706019

Ok that helps confirm that the problem is with calculateCov function specifically.
After running the first two blocks of code above (through signaldist = ...) can you try:
import pyximport; pyximport.install(setup_args={"include_dirs":np.get_include()})
from nucleoatac.multinomial_cov import calculateCov

flatv = np.ravel(signaldist.vmat.mat)
var = calculateCov(signaldist.probs, flatv, signaldist.reads)

What does var give?
If we can't figure out why that function is not working on your system, one thing we can possibly do as a temporary measure is to create a branch where that function is replaced by the method used for calculating "sd3".  That is the same calculation, just a slower implementation.
One thing I will try is updating the way the Cython code is included in the package to better follow recommendations (http://cython.readthedocs.io/en/latest/src/reference/compilation.html).  I will also look into why compilation of the file on different system could potentially lead to problems.

I think you meant sd2, not sd3, right?
Here are the latest results:
>>> import pyximport; pyximport.install(setup_args={"include_dirs":np.get_include()})
(None, None)
>>> from nucleoatac.multinomial_cov import calculateCov
>>>
>>> flatv = np.ravel(signaldist.vmat.mat)
>>> var = calculateCov(signaldist.probs, flatv, signaldist.reads)
>>> var
0.5272216774009897

Is that the expected value?

Yes that is the expected value.  'signaldist.analStd()' should just do those two computations and then take the square root of var -- very weird that it seems to work when calculateCov is called directly but not when it is called within 'signaldist.analStd()'. Perhaps the issue is with way pyximport is being used
sd2 in the example above is computed using the actual method employed in NucleoATAC.  sd3 is computed using an alternate, slower method

Thanks for clarifying. I guess we at least know where the problem is.
Maybe the solution could be to just add an if-else based on signaldist.analStd() output? Not very elegant, but hopefully effective.

I am not sure what that ifelse would test for, as i am not sure whether in other cases the function could give an other type of spurious signal.
I am trying to update the code to change the way the Cython code is imported, although have run into some roadblocks and unfortunately don't have a good estimate of when i'll be able to get that working and/or see if it might fix this issue

By if-else, I meant if signaldist.analStd() returns nan, then you could fall back to the slow method. Obviously you would know all the possible caveats better than me, so I understand if that doesn't really make sense.
Anyway, thanks for following up. Hopefully you will be able to fix this at some point.

Same issue, nucpos.bed.gz files empty. looking forward to the updates. Thank you so much!

One possible fix is using a docker container... I started looking into how to make one, and found that it seems like someone else has already created one:
https://biocontainers.pro/registry/#/showImages?domain=quay&repository=nucleoatac&starred=false&modified=18%2F01%2F2017

Thanks for a very prompt response. Seems the issue is OS specific and docker could be possible fix. I will keep you posted.

Unfortunately, I am running this on a cluster and can't use Docker.
Obviously it would be nice to have a Docker image for people who can use that option.

Remove #!/usr/bin/env python
From multinomial_cov.pyx
Cheers,

What is your gcc version?

I tried to solve the issue. Found something interesting.
It has to do with the version of your gcc C compiler.
In your home are there is a directory called .pyxbld. That is where the .c and .so files compiled from multinomial_cov.pyx are placed.
I deleted that .pyxbld directory from my home area (which will force nucleoatac to re-compile multinomial_cov.pyx) and changed my gcc version. By default CentOS 6 uses gcc version 4.4.7. I have environment modules, so I am able to load other gcc versions I have compiled in the past. When I loaded gcc 4.9.3, it works fine after multinomial_cov.pyx was built again.
Maybe the problem is that the C compiler has some issues with cython, which makes a non-functional multinomial_cov.pyx (even though it compiles fine).
Hope this helps to find the exact cause.
Cheers,

Thanks for the suggestion @vatese !
I was also on CentOS 6 with gcc 4.4. I switched to gcc 6.1. Everything seems to be working now.
test.occpeaks.bed.gz is 160 lines and test.nucpos.bed.gz is 130 lines.
nosetests tests/test_var.py comes out as OK.
signaldist.analStd() returns a value.

Thanks @vatese for figuring this out!  I guess I'm still not sure how to actually make the code compatible with the earlier version of gcc, but at least now we know the source of the problem and one way to get around it

Hi,
I tried doing what was suggested here.  Briefly, I deleted the .pyxbld from my home directory.  Then i used python tests.py.  It forced re-compile of the C part of the code. I used the GCC 5.4.0. I still get the following error:
======================================================================
FAIL: Make sure variance calculation is close to what is obtained by simulation
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/gpfs/ycga/home/sm2556/GitHub/NucleoATAC/tests/test_var.py", line 33, in test_sd1
    self.assertTrue(abs(sd1-sd2)<0.05*sd1)
AssertionError: False is not true

======================================================================
FAIL: Make sure variance calculation is same as would be obtained through alternate calculation
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/gpfs/ycga/home/sm2556/GitHub/NucleoATAC/tests/test_var.py", line 43, in test_sd2
    self.assertTrue(abs(sd1-sd2)<0.001*sd1)
AssertionError: False is not true

----------------------------------------------------------------------
Ran 24 tests in 205.134s

My python is 2.7.13.  What should be my next step?

@sameet Unfortunately I'm not sure what the best next step would be :slightly_frowning_face:  I still don't know the underlying cause of this bug, other than that the gcc version seems important.  Given that someone reported using gcc 6.1 without this problem, if it is feasible to try that version out that might be one possible thing to try.


Cannot find where images are stored

/etc/default/docker file has
DOCKER_OPTS="--storage-driver=aufs -g ~/docker-home"
but I can't fine any image into folders

~/docker-home
/var/lib/docker/aufs

Where the images should be located?

Hi!
Please read this important information about creating issues.
If you are reporting a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this repository. If there is a duplicate, please close your issue and add a comment to the existing issue instead.
If you suspect your issue is a bug, please edit your issue description to include the BUG REPORT INFORMATION shown below. If you fail to provide this information within 7 days, we cannot debug your issue and will close it. We will, however, reopen it if you later provide the information.
This is an automated, informational response.
Thank you.
For more information about reporting issues, see https://github.com/docker/docker/blob/master/CONTRIBUTING.md#reporting-other-issues

BUG REPORT INFORMATION
Use the commands below to provide key information from your environment:
docker version:
docker info:
uname -a:
Provide additional environment details (AWS, VirtualBox, physical, etc.):
List the steps to reproduce the issue:
1.
2.
3.
Describe the results you received:
Describe the results you expected:
Provide additional info you think is important:
----------END REPORT ---------
#ENEEDMOREINFO

There are a couple of things at play here:

Does the package that you are using look at /etc/default/docker at all (ie, if you are on Ubuntu 15.04 with systemd, then maybe not?)
Does upstart/systemd expand ~/? I'm not sure.
~/ is probably /root in this case.

Closing since this isn't really a Docker issue.
For support, please feel free to hit me up on #docker on IRC, there is also the docker-user ML, and forums.docker.com


[iOS] Unexpected deltas after changing text in performAction

Steps to reproduce

Run the sample code on iOS 17.5
Type "run tom"
Press the action button

Expected results
The editing value should be . , since it is the value sent to the IME in  performAction.
Actual results
The following deltas are reported AFTER sending the editing value to the IME in performAction:
TextEditingDeltaReplacement(
    oldText: '. run tom',
    replacementText: 'Tom',
    replacedRange: TextRange(start: 6, end: 9),
    selection: TextSelection.collapsed(
      offset: 9,
      affinity: TextAffinity.downstream,
    ),
    composing: TextRange(start: -1, end: -1),
  );
TextEditingDeltaInsertion(
    oldText: '. run Tom',
    textInserted: '\n',
    insertionOffset: 9,
    selection: TextSelection.collapsed(
      offset: 10,
      affinity: TextAffinity.downstream,
    ),
    composing: TextRange(start: -1, end: -1),
  );

This can be confirmed by looking at the logs.
Code sample
Code sample
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() {
  runApp(
    const MaterialApp(
      home: Scaffold(
        body: TextInputExample(),
      ),
    ),
  );
}

class TextInputExample extends StatefulWidget {
  const TextInputExample({super.key});

  @override
  State<TextInputExample> createState() => _TextInputExampleState();
}

class _TextInputExampleState extends State<TextInputExample> implements DeltaTextInputClient {
  final FocusNode _focusNode = FocusNode();
  final GlobalKey _textKey = GlobalKey();

  TextInputConnection? _inputConnection;
  TextEditingValue _currentEditingValue = const TextEditingValue(
    text: '. ',
    selection: TextSelection.collapsed(offset: 2),
  );

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
      _attach();
    });
  }

  @override
  void dispose() {
    _focusNode.dispose();
    super.dispose();
  }

  @override
  void updateEditingValueWithDeltas(List<TextEditingDelta> textEditingDeltas) {
    TextEditingValue newEditingValue = _currentEditingValue;

    for (final delta in textEditingDeltas) {
      print(delta);
      newEditingValue = delta.apply(newEditingValue);
    }

    setState(() {
      _currentEditingValue = newEditingValue;
    });
  }

  void _attach() {
    if (_inputConnection != null) {
      return;
    }
    _inputConnection = TextInput.attach(
      this,
      const TextInputConfiguration(
        enableDeltaModel: true,
        inputType: TextInputType.multiline,
        textCapitalization: TextCapitalization.sentences,
        inputAction: TextInputAction.newline,
        keyboardAppearance: Brightness.light,
      ),
    );
    _inputConnection!.show();
    _inputConnection!.setEditingState(_currentEditingValue);
  }

  @override
  void performAction(TextInputAction action) {
    if (action == TextInputAction.newline) {
      setState(() {
        // I'm reseting the editing value, I don't expect to receive replacemente deltas
        // refering to the previous value.
        _currentEditingValue = const TextEditingValue(
          text: '. ',
          selection: TextSelection.collapsed(offset: 2),
        );
        _inputConnection!.setEditingState(_currentEditingValue);
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Focus(
        focusNode: _focusNode,
        autofocus: true,
        child: DecoratedBox(
          decoration: BoxDecoration(border: Border.all()),
          child: Text(
            key: _textKey,
            _currentEditingValue.text,
            textAlign: TextAlign.center,
          ),
        ),
      ),
    );
  }

  @override
  void connectionClosed() {}

  @override
  AutofillScope? get currentAutofillScope => null;

  @override
  TextEditingValue? get currentTextEditingValue => null;

  @override
  void insertTextPlaceholder(Size size) {}

  @override
  void performPrivateCommand(String action, Map<String, dynamic> data) {}

  @override
  void removeTextPlaceholder() {}

  @override
  void showAutocorrectionPromptRect(int start, int end) {}

  @override
  void showToolbar() {}

  @override
  void updateEditingValue(TextEditingValue value) {}

  @override
  void updateFloatingCursor(RawFloatingCursorPoint point) {}

  @override
  void didChangeInputControl(TextInputControl? oldControl, TextInputControl? newControl) {}

  @override
  void insertContent(KeyboardInsertedContent content) {}

  @override
  void performSelector(String selectorName) {}
}

Screenshots or Video
No response
Logs
Logs
flutter: TextEditingDeltaInsertion#7e39e(oldText: ., textInserted: R, insertionOffset: 2, selection: TextSelection.collapsed(offset: 3, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#c4e44(oldText: . R, textInserted: u, insertionOffset: 3, selection: TextSelection.collapsed(offset: 4, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#daa6a(oldText: . Ru, textInserted: n, insertionOffset: 4, selection: TextSelection.collapsed(offset: 5, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaReplacement#cc868(oldText: . Run, textReplaced: Run, replacementText: run, replacedRange: TextRange(start: 2, end: 5), selection: TextSelection.collapsed(offset: 5, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#f1e9f(oldText: . run, textInserted:, insertionOffset: 5, selection: TextSelection.collapsed(offset: 6, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#db2c2(oldText: . run, textInserted: t, insertionOffset: 6, selection: TextSelection.collapsed(offset: 7, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#bb566(oldText: . run t, textInserted: o, insertionOffset: 7, selection: TextSelection.collapsed(offset: 8, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#f8aaa(oldText: . run to, textInserted: m, insertionOffset: 8, selection: TextSelection.collapsed(offset: 9, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaReplacement#4ba7a(oldText: . run tom, textReplaced: tom, replacementText: Tom, replacedRange: TextRange(start: 6, end: 9), selection: TextSelection.collapsed(offset: 9, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#7e677(oldText: . run Tom, textInserted:
  , insertionOffset: 9, selection: TextSelection.collapsed(offset: 10, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))

Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.22.0, on macOS 14.4.1 23E224 darwin-arm64, locale
    en-BR)
    • Flutter version 3.22.0 on channel stable at
      /Users/angelosilvestre/dev/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 5dcb86f68f (9 days ago), 2024-05-09 07:39:20 -0500
    • Engine revision f6344b75dc
    • Dart version 3.4.0
    • DevTools version 2.34.3

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/angelosilvestre/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • Java binary at: /Applications/Android
      Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[!] Xcode - develop for iOS and macOS (Xcode 15.4)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15F31d
    ! CocoaPods 1.12.1 out of date (1.13.0 is recommended).
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin
        code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To upgrade see
      https://guides.cocoapods.org/using/getting-started.html#updating-cocoapods
      for instructions.

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      17.0.6+0-17.0.6b829.9-10027231)

[✓] VS Code (version 1.89.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.88.0

[✓] Connected device (4 available)
    • iPhone 15 Pro (mobile)          • 79D2CA2A-3C07-49AD-A0DF-E4EBCC6BCC1E • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-17-5 (simulator)
    • macOS (desktop)                 • macos                                • darwin-arm64   •
      macOS 14.4.1 23E224 darwin-arm64
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad                • darwin         •
      macOS 14.4.1 23E224 darwin-arm64
    • Chrome (web)                    • chrome                               • web-javascript •
      Google Chrome 125.0.6422.60

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

cc @justinmc @Renzo-Olivares
Possibly related: https://github.com/flutter/flutter/issues/129061 and https://github.com/flutter/flutter/issues/142894

I can also reproduce this issue on iPhone 15 Pro, iOS 17.4. I also checked this on several platforms and results are below:

iOS app: oldText delta output is . run tom. The text is displaying as . run tom \n.
Android app: oldText delta output is . run tom. The text is displaying as . run tom \n.
Web app: oldText delta output is .. The text is displaying as . \n.
macOS app: oldText delta output is . run tom. The text is displaying as ..

Note: \n means an empty line on screen.

Output log on iOS (similar result on Android)
flutter: TextEditingDeltaInsertion#a0ca1(oldText: ., textInserted: R, insertionOffset: 2, selection: TextSelection.collapsed(offset: 3, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#32ce5(oldText: . R, textInserted: u, insertionOffset: 3, selection: TextSelection.collapsed(offset: 4, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#3d5ad(oldText: . Ru, textInserted: n, insertionOffset: 4, selection: TextSelection.collapsed(offset: 5, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaReplacement#059a8(oldText: . Run, textReplaced: Run, replacementText: run, replacedRange: TextRange(start: 2, end: 5), selection: TextSelection.collapsed(offset: 5, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#3b53f(oldText: . run, textInserted:, insertionOffset: 5, selection: TextSelection.collapsed(offset: 6, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#b201c(oldText: . run, textInserted: t, insertionOffset: 6, selection: TextSelection.collapsed(offset: 7, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#af15f(oldText: . run t, textInserted: o, insertionOffset: 7, selection: TextSelection.collapsed(offset: 8, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#1b768(oldText: . run to, textInserted: m, insertionOffset: 8, selection: TextSelection.collapsed(offset: 9, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#fe85d(oldText: . run tom, textInserted:
  , insertionOffset: 9, selection: TextSelection.collapsed(offset: 10, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))

Output log on Web
TextEditingDeltaInsertion#af12b(oldText: ., textInserted: r, insertionOffset: 2, selection: TextSelection.collapsed(offset: 3, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
TextEditingDeltaInsertion#5ffdd(oldText: . r, textInserted: u, insertionOffset: 3, selection: TextSelection.collapsed(offset: 4, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
TextEditingDeltaInsertion#f5724(oldText: . ru, textInserted: n, insertionOffset: 4, selection: TextSelection.collapsed(offset: 5, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
TextEditingDeltaInsertion#e1bbe(oldText: . run, textInserted:, insertionOffset: 5, selection: TextSelection.collapsed(offset: 6, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
TextEditingDeltaInsertion#dcf1a(oldText: . run, textInserted: t, insertionOffset: 6, selection: TextSelection.collapsed(offset: 7, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
TextEditingDeltaInsertion#6e2fb(oldText: . run t, textInserted: o, insertionOffset: 7, selection: TextSelection.collapsed(offset: 8, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
TextEditingDeltaInsertion#36bd7(oldText: . run to, textInserted: m, insertionOffset: 8, selection: TextSelection.collapsed(offset: 9, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
TextEditingDeltaInsertion#5e9b9(oldText: ., textInserted:
  , insertionOffset: 2, selection: TextSelection.collapsed(offset: 3, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))

Output log on macOS app
flutter: TextEditingDeltaInsertion#eb2d4(oldText: ., textInserted: r, insertionOffset: 2, selection: TextSelection.collapsed(offset: 3, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#420ba(oldText: . r, textInserted: u, insertionOffset: 3, selection: TextSelection.collapsed(offset: 4, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#12708(oldText: . ru, textInserted: n, insertionOffset: 4, selection: TextSelection.collapsed(offset: 5, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#c28dd(oldText: . run, textInserted:, insertionOffset: 5, selection: TextSelection.collapsed(offset: 6, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#3815f(oldText: . run, textInserted: t, insertionOffset: 6, selection: TextSelection.collapsed(offset: 7, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#8e4b6(oldText: . run t, textInserted: o, insertionOffset: 7, selection: TextSelection.collapsed(offset: 8, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#e96dc(oldText: . run to, textInserted: m, insertionOffset: 8, selection: TextSelection.collapsed(offset: 9, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))
flutter: TextEditingDeltaInsertion#e2750(oldText: . run tom, textInserted:
  , insertionOffset: 9, selection: TextSelection.collapsed(offset: 10, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))

flutter doctor -v (stable and master)
[✓] Flutter (Channel stable, 3.22.0, on macOS 14.1 23B74 darwin-x64, locale en-VN)
    • Flutter version 3.22.0 on channel stable at /Users/huynq/Documents/GitHub/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 5dcb86f68f (11 days ago), 2024-05-09 07:39:20 -0500
    • Engine revision f6344b75dc
    • Dart version 3.4.0
    • DevTools version 2.34.3

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1087.7-11185874)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
    • Xcode at /Applications/Xcode15.3.app/Contents/Developer
    • Build 15E204a
    • CocoaPods version 1.15.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2023.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • android-studio-dir = /Applications/Android Studio.app/
    • Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1087.7-11185874)

[✓] VS Code (version 1.89.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.88.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 14.1 23B74 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 124.0.6367.208

[✓] Network resources
    • All expected network resources are available.

• No issues found!

[!] Flutter (Channel master, 3.22.0-36.0.pre.54, on macOS 14.1 23B74 darwin-x64, locale en-VN)
    • Flutter version 3.22.0-36.0.pre.54 on channel master at /Users/huynq/Documents/GitHub/flutter_master
    ! Warning: `flutter` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 414d923872 (71 minutes ago), 2024-05-19 21:58:34 -0400
    • Engine revision c6fecf65fb
    • Dart version 3.5.0 (build 3.5.0-169.0.dev)
    • DevTools version 2.36.0-dev.10
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1087.7-11185874)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
    • Xcode at /Applications/Xcode15.3.app/Contents/Developer
    • Build 15E204a
    • CocoaPods version 1.15.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2023.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • android-studio-dir = /Applications/Android Studio.app/
    • Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1087.7-11185874)

[✓] VS Code (version 1.89.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.88.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 14.1 23B74 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 124.0.6367.208

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.


Fix user entity not being fetched for scaffolder dry runner

Hey, I just made a Pull Request!
This PR fixes issue #25231
The problem: User signed in details was not usable in the template dry runner e.g. ${{ user.ref }} or ${{ user.entity }}.
The fix: User entity was not being fetched from catalog or passed into the dry runner input in the /v2/dry-run endpoint. With this fix it will now do this similarly to the /v2/tasks endpoint.
Before fix:

After fix:

:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[x] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

Hey @stephenglass thanks for raising this PR!
This looks sensible, could you perhaps add some tests for this behaviour :pray:

Hey @stephenglass thanks for raising this PR!
This looks sensible, could you perhaps add some tests for this behaviour 🙏

@benjdlambert  Done! Let me know if that works!


refactored PW and tests to not take require as a constructor argument

Coverage remained the same at 100.0% when pulling ac5430aa8bdb08b8994b1df0bb64d802cfa72120 on pw-arguments-refactor into 4171b739d32bacec76ec7ec2df894ff75695b99b on master.


Update readme badges

Looks like ember-router-scroll is no longer using Greenkeeper?

Hey!  This will be included in #204, which I expect to get out today!


Add first replay test

@Hixie

FYI, the full recording that this checks in is 350 KB

We talked about future plans. The idea that made the most sense to us is having tests first run their test against a boring environment (we would have one checked in for each platform we support), then tweak the (in-memory) recording to be what we're actually testing for (e.g. "pub segfaulted"), and then run the test against that mutated recording and see if the tool reacts as we would like.

Ok, all automated tests are passing now.  This is probably worth another look.  /cc @yjbanov who was recently in this code as well.

A bit late to the party, but can we store a recording in one file?

A recording gets zipped up into one file when it takes the form of a bug report, but one file for all that's in a recording would be too unwieldy.
It's kinda moot with respect to our replay tests, since this was just a proof-of-concept that also ensures that we're able to run hermetically and don't regress while I work on the longer-term solution, which won't require us checking in recordings at all. (see Ian's comment above)

Great plan!


Add string types: TrimStart, TrinEnd, Trim

Summary by CodeRabbit

New Features

Introduced new type utilities for string manipulation: TrimStart, TrimEnd, and Trim.
Added a new type definition ReverseString for reversing strings.
Implemented unit tests for string trimming utilities.

Bug Fixes

Updated test cases for DropFirst type to ensure accurate type evaluations.

Documentation

Enhanced clarity of type definitions and added guidelines for future string manipulation functions.

Chores

Updated export statements and included new types in the relevant modules.

Welcome to Codecov :tada:
Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests.
:information_source: You can also turn on project coverage checks and project coverage reporting on Pull Request comment
Thanks for integrating Codecov - We've got you covered :open_umbrella:


Croparea is not restored after zoom

Describe the bug
I use the cropper with a container that has the same size as the cropper, both width as heigth.
When rotating an image, the croparea will resize to the dimensions of the rotated image (smaller). The croparea does not return to it's initial size, for example when zooming in.
To Reproduce

Rotate (2nd scroller) the image 90deg, the croparea will become smaller
Zoom in (1st scroller)

Expected behavior
I would like to see that the croparea would expand to the size of the container if you zoom in on the rotated image. This could also be achieved when you have the possibilty to change the size of the cropArea.
https://codesandbox.io/p/sandbox/sharp-archimedes-32pzkk

Hi,
The sandbox link is broken apparently.


Why is stripAnsi required for lastLine? Any way to get colors output?

This might be a silly question, but why is stripAnsi() required here: https://github.com/SamVerschueren/listr-update-renderer/blob/master/index.js#L24 ?
I'm trying to do some colored progress bars, and after removing the call locally things appear to be fine... Perhaps I'm missing something?

It's a good question. Earlier on we had this bug with Listr where the rendering of the list went fubar. I thought that this was caused by some ANSI escape codes because it can be used for more then only coloring the output. But after some investigation, we found the real cause of that bug so you're right, this one might not be necessary anymore. I still have to check some edge cases though.

@SamVerschueren great, that's good to know. For now I'll stick with the gray progress bars and await an update :)
If there's any testing / edge case checks that you can offload by writing them down I'd be happy to try to help.

Well the use case I'm not sure about is when you use an ANSI escape code that removes lines. Does that remove the listr rendering as well or does it work like it should?

Any news or investigation on this? I would also like to see the change without ansi stripping.
What about wrapping stripAnsi  into an options condition?
Best regards
Philipp


Allow an adaptable argument

Allows for the argument adaptable to be specified in the use-block, to force the sling model creation to use a specific adaptable.

@raducotescu Is this enough to trigger the validation error added in https://issues.apache.org/jira/browse/SLING-6779?

Block elements that accept dynamic options are excluded from those checks (data-sly-use, data-sly-template, data-sly-call).

@paul-bjorkstrand, before merging this I'd like to also see some tests added. Could you please use the examples @vladbailescu mentioned and provide one?

I know it's been a while (over a month) but I have not had a chance to dig in to adding tests. Still plan do to so, just making sure this PR doesn't go stale :-)

@raducotescu, @vladbailescu, and @kwin:
Quite a long time since I revisited this. I have attempted to make some changes to the tests as mentioned by Vlad, but I am not certain exactly how to run the tests. I have pushed my changes to my fork (commit). If one of you can guide me on how to execute the tests (and review the changes when that PR is opened) then I think we can get this change, and the associated test, merged in.

@paul-bjorkstrand, I'm afraid that you'll have to send this PR to https://github.com/apache/sling-org-apache-sling-scripting-sightly. Starting with version 1.4.0-1.4.0 of the {{org.apache.sling.scripting.sightly}} module we support loading Sling Models directly in the https://github.com/apache/sling-org-apache-sling-scripting-sightly/blob/master/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/JavaUseProvider.java. This was done via https://github.com/apache/sling-org-apache-sling-scripting-sightly/commit/bcd46027e09182911c55bb244d42debb1bd367c7.

@raducotescu Can you please deprecate this module then?

@raducotescu  in that case, this is not even needed. The only reason I was implementing it here is because it already exists in the JavaUseProvider.

@kwin, sure.
@paul-bjorkstrand: great. Sorry, I didn't pay enough attention to the code change before writing my previous comment.


Update docs for Renew nodes in CertificateStore CSP docs.

@microsoft-github-policy-service agree

Thanks for creating this PR @kevinhwang. The CSP docs are automated using DDF files from windows source, and the node description and format is in the DDF definition and any manual changes to these items will get overwritten when the automation runs. For this issue, please submit feedback via Feedback Hub app. Once the feedback is addressed, the change will flow into the DDF files, and docs will get automatically updated. For more info on this, see Contributing to the CSP reference articles.


Misc fixes

A collection of small fixes/changes produced whilst I was running coremark to get the latest Ibex performance numbers across different configurations.

My apologies for the rather delayed response! Thanks for reviewing @hcallahan-lowrisc @rswarbrick @marnovandermaas would you mind taking another look?

I still have my question about the example config, but this looks reasonable otherwise.


Chapman Core Documentation

Chapman Core Schema, Diagrams, and Documentation
Schema Documentation: https://docs.google.com/spreadsheets/d/1p9a0fijHEIIlkWYh4VyfZxZVtbt-fa8TBDhASuznUcY/edit?usp=sharing
Supporting Diagrams: https://docs.google.com/presentation/d/1gr3OMHW-RujKhefKEl8x5cnQ7YUJPyQt7_05luyD9vs/edit?usp=sharing
Schema: https://drive.google.com/file/d/1e-8uPws0NMihKJ7fUh1XJ1ftcQ7wuV7-/view?usp=sharing

Thanks @ben-norton, will review when I get a chance. I already have one question, but will create a separate issue for that.

New Data Model Diagram. Google sheet revisions are in progress.
I'm going to map the relationship to frictionless using views.

I'd like to keep this topic moving alongside Camtrap-DP. This may not be an immediate issue or topic of discussion, but it will circle back eventually. Whether it stays an issue is another question. I don't think its technically an 'issue' rather a topic accompaniment along with similar resources in a wiki. You could create a wiki page for past and current camera trap data models. Then this moves under that page as a subsection alongside WI and eMammal.

This is moving to a separate repository and should be removed.

@ben-norton can I close this issue then?


Ability to log in with GitHub account to sync Atom config

It would be great if I could login with a GitHub account and have Atom store my settings either in Dropbox, or GitHub as a repository, or in some way that is easy to access and maybe even sync them across all my installations of Atom so that when I download a new package, it is downloaded everywhere. Another suggestion is to be able to manually export a .atomconfig JSON file that I could just import to Atom at any point to configure settings, install packages, change themes, etc.
I think having the first would be more important for most people, but for anyone who is offline and for anyone who likes to keep their own backups in other places, the manual settings export is really useful.
If this sounds like a good idea to Atom contributors and consumers, I'd like to help out with the PR to make this happen.

I think it'd be interesting if there was a websocket connection between Atom and atom.io on sign in. Then you could technically add "install" buttons and the like to atom.io and have that action automatically reciprocated on Atom.
@simurai mentioned something to this effect on my PR for atom settings-view

:+1: I want this, but IMO if we are going to support it as an official  package, it will require integration work to use the (non-open-source) atom.io API as the sync source.
I'm down to do that but I have other things on my plate right now so I think what this needs to go forward first is an API proposal. That is to say, someone should think about how the sync API would work and document it, and we can talk about it and refine it.
An upside to starting there is that having this nicely documented means that a) the package is easier to write and b) if people want to create their own sync servers and not use the one atom.io provides, the doc will make it super easy for them (and once we agree on a doc we will commit to atom.io staying compatible).

Agreed. One other thing Atom will need before that gets implemented is an official Auth package. Setting up and storing personal tokens (or whatever auth method chosen) securely. I'll probably go ahead and create an issue on that for visibility.

Pretty sure there's already keychain support, and the apm client definitely stores tokens securely on all platforms.

I'll have to look into that. It'd just be nice if there was built in support for doing that with GitHub.

:+1: this would be the killer feature for me ... I'm so bored of managing .vimrc in dotfiles repositories, I just want to download atom, login and have my usual environment

This would be a killer feature and it fits great into the strategy goal of github as the ecosystem

+1

There's still this package:
https://atom.io/packages/sync-settings
But I don't know if it still works or gets maintained.

@thedaniel what else can be configured/customized other than:

packages
themes
atom stylesheets, init scripts, keymaps
preferences

If that's all, I think the simplest way is to just sync on program startup?
A few ideas as to where the data is stored:

GitHub server as part of user account
GitHub repository

@ilanbiala That's pretty much it. Here are a couple interesting edge cases:

packages that users check out into their packages directory directly rather than install from atom.io
packages that need to compile native node dependencies
stylesheets and init scripts that refer to other files, whether under the .atom tree or elsewhere on disk

A first pass at this that just syncs a list of package and theme names and installs them via APM, as well as the contents of init.coffee, styles.less, config.cson, keymap.cson, and snippets.cson would be acceptable, and just assume that if someone is checking out git repos or extracting tarballs into .atom or doing clever things with config they can handle that themselves, or just check it all into a repo and be done with it.

or just check it all into a repo and be done with it.

Also, it would be quite easy for someone to write a package that automates this particular method without it having to touch core or the API.

it would be ideal to have this as a native feature. sync-settings is great, but it needs to be maintained and works in a bit of a 'hacky' way.

:+1:

+1 This would make it a lot easier to just install and work comfortably, without having to hunt down packages and change keybinds.

+1 Keeping packages in sync is a pain

+1 Having all my settings and packages synced across all my devices would be awesome.

:+1: Working on 3 devices makes this an absolute must-have for me.

+1 Yes please.

Isn't Atom built of off Chromium? I know very little about what it would take to get this feature, but signing in as you would sign into your Chrome or Firefox browser and have all settings/addons synced seems like it could be done. But again, I know very little.

AFAIK Chromium (open source) doesn't have the syncing capabilities that Google Chrome (based on Chromium but closed source) has.
Atom uses the node package manager (npm) for installing packages (with hooks, dependencies and everything). Chrome/Chromium extensions are just zip files with another file extension (.crx), extracted into a specific directory
Chrome/Chromium extensions store their config data in localStorage (sqlite), Atom extensions store their config data in Atom's config file or their own config file (yaml).

It would be great to have the actual profile storage implemented in a pluggable way such that alternative profile storage solutions (WebDAV, Dropbox) could be added later on. Or just provide built-in WebDAV sync right away :grin:
Other than that: :+1: this one is a must since syncing ~/.atom as a whole via WebDAV is way too heavyweight and unreliable with (at least some) available sync solutions...

Do we have any progress on this? I mean yes we can use sync-setting and it works pretty fine, but I really feel like this should be a built-in feature. It also enhance the connection between Atom and Github.com - just like how the "Open in Atom" in Github for Windows enhances the connection between Atom and itself.

This might be a stale issue, but this feature still isn't available.

@thomasjo @kevinsawicki it seems like some people have developed packages to do this, but why isn't this bundled with Atom/developed by the core Atom team?

would you ever consider working on this issue/feature? I beleave it's a very good idea to backup atom settings/packages/snippets, so if anything go wrong you could restore everything.
besides that you could easly copy/move atom to another PC using this feature.

@Ali-00-Ridha this is possible with sync-settings


⚠ Bofrost.nl has degraded performance

In d757ba8, Bofrost.nl (https://www.bofrost.nl) experienced degraded performance:

HTTP code: 200
Response time: 1029 ms

Resolved: Bofrost.nl performance has improved in 86ec8e2 after 6 minutes.


Consider removing O type parameter of serialize_with_flavor

postcard::serialize_with_flavor is written in an odd way that makes the caller restate the Flavor's Output type explicitly when using turbofish.
https://github.com/jamesmunns/postcard/blob/a0ef8a2f90f53f1c30a554624c187a9672d098c9/src/ser/mod.rs#L367-L370
- pub fn serialize_with_flavor<T, S, O>(value: &T, storage: S) -> Result<O>
+ pub fn serialize_with_flavor<T, S>(value: &T, storage: S) -> Result<S::Output>
  where
      T: Serialize + ?Sized,
-     S: Flavor<Output = O>,
+     S: Flavor,

I can't tell whether this was a stylistic choice or oversight. My preference is for serialize_with_flavor::<T, Cobs<Slice<'a>>>(...) over serialize_with_flavor::<T, Cobs<Slice<'a>>, &'a mut [u8]>(...), but I can see there may be valid preferences in the other direction.

As far as I can tell - this was likely an oversight, probably an artifact implementing flavors and never stepping back and realizing that those (always?) are the same type.
I do think this would be a breaking change as you noted in https://github.com/jamesmunns/postcard/pull/105, but I'm tagging it with the 2.0 label so I don't forget to clean this up on the next major release.


FQDNs dependencies

Clarify that the JSON contains additional FQDNs on top of those in the article, not full list.

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

@dagiro Would you be able to review this PR? Thank you

#sign-off

@dagiro: I'm sorry - only the author of this article, @hrasheed-msft, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.

#please-close


ARM64_32 architecture for WatchOS missing in NuGet package

Description
I started to use SkiaSharp in a Xamarin WatchOS project for drawing charts in a Watch app.
Since the Apple Watch Series 4 was introduced, it became mandatary to compile Watch apps against the ARM64_32 architecture.
But when I try to compile my app, that now includes the SkiaSharp package, against that architecture the linker gives an error.
To prevent this, the NuGet package for SkiaSharp would need to be extended with a version of the SkiaSharp library compiled against the ARM64_32 architecture for WatchOS.
Expected Behavior
It would be great if I could use SkiaSharp in a WatchOS app that is compiled against the ARM64_32 architecture.
Actual Behavior
When compiling the Watch app, the linker currently gives the following error:
ARM64_32 architecture for WatchOS missing in NuGet package
Basic Information

Version with issue:  1.68.0
IDE:  Visual Studio for Mac 8.3 with Xcode 11
Platform Target Frameworks:

iOS: 13
watchOS: 6.0

Target Devices:

iPhone X running iOS 13
Apple Watch Series 4 running WatchOS 6

Steps to reproduce

Start Visual Studio 8.3 for Mac
Create a new iOS project
Add a new WatchOS project to the solution
Open the project properties of the WatchOSExtension project
Select configuration Debug and platform iPhone
Change the supported architecture to ARM64_32
(if you don't, the app can't be deployed to a Series 4 or higher Apple Watch)
Click OK
Add the SkiaSharp NuGet package to the WatchOSExtension project
E.g. in the InterfaceController.CS file add the following lines of code to the Awake method:

            SKBitmap oBitmap = new SKBitmap(400, 300, false);
            SKCanvas oCanvas = new SKCanvas(oBitmap);
            oCanvas.Clear(SKColors.Blue);
            SKPaint oPaint = new SKPaint();
            oPaint.Color = SKColors.Yellow;
            oPaint.StrokeWidth = 5;
            oCanvas.DrawCircle(200, 150, 100, oPaint);

Try to compile the solution
You will see the linker error in the error list pane

Thanks for reporting this, I'm having a look now and I'll see if I can get an update out ASAP.

https://github.com/mono/SkiaSharp/pull/967 was just merged with arm64_32 support.

That's great. Thanks!

Merged in https://github.com/mono/SkiaSharp/pull/967

@OABsoftware I just pushed the latest master build to the internal feed:
https://nugetized.blob.core.windows.net/skiasharp-eap/index.json
You should find a 1.68.1-rc.151 build for all the SkiaSharp packages.

Great! I will try again with that version.


⚠ Bofrost.de has degraded performance

In 5f62981, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1420 ms

Resolved: Bofrost.de performance has improved in 1d5466f after 9 minutes.