My case number - 26234370
I am using SharePointPnPPowerShellOnline version 3.23.2007.0.
I am connecting using Connect-PnPOnline -Url > -UseWebLogin


@mohandivraniya that explains it then. WebLogin will work as it works through a cookie to authenticate. The issue I believe we are all facing here is that we cannot register an application in AAD, apply the SharePoint Application principal Users.ReadWrite.All and use that to update a user profile. You would either need to assign the same client Id social permissions through AppInv.aspx as well to make it work or alternatively use -UseWebLogin.


Here's a non-interactive method for connecting that does work to change user profile properties from a script running in an Azure runbook or function: Example 3 on this page. You must make one change. Follow this article Granting access using SharePoint App-Only, but add the scope /sharepoint/**social**/tenant. Update the Permission Request XML as follows, and it will permit writing user profile properties.

This ACS method is retired now but _explicitly still supported for SharePoint use_


Thanks @Markarend for taking the time to detail out what I mentioned above to help others better understand the workaround. Still I believe that should be seen as a workaround. We're currently trying to see if filing a hotfix request for this has any chance of succeeding.


I'd expect tools very well may report /*2*/, since a nullable argument is
passed to a method declared to expect a non-null parameter. Seemingly it
would be more work not to report something here, and reporting seems better
than not reporting in this case, but ultimately it's a tool decision what
to report in implementation code.


My scenario is that the parameter _had_ been non-null once, but it was changed to nullable in a half-hearted attempt to "make the tools happy".

Note, the scenario is also contrived, and not posed as an argument that "some terrible thing will happen 100,000 times per day to users!". Only illustrating why the conceptual treatment in URL "sits right" with me.

This is what I believed I was addressing when I said:

We may have to say this over and over, "we are not dictating what tools must do. but our choices have consequences on what they will want to do, and that matters."


Good news! :) I'm working on this as part of my main job now. The current status is: in my branch there's a rust implementation of a peg parser for a small part of the python grammar, but complete with whitespace handling (thanks to the awesome work on whitespace parsing and tokenization by @bgw). It can successfully roundtrip simple functions like this without any extra string allocations (the built CST shares memory with the input source string), and it seems to be _real_ fast (it will be interesting to see if this holds as I add more and more of the grammar).

I've opted for implementing the heavy lifting in Rust, and then expose the resulting CST as Python objects as part of a relatively high level interface that will be compatible with URL
I'm hoping this will let us get significant speedups in both CPU and memory usage while being memory-safe.

There's still lots of work to do, for example:
- better error messages
- comprehensive testing
- more grammar
- wrap the API to be usable from Python

I'll keep updating this issue as I go along


It would be awesome if Microsoft could fix this for Azure AD app-only contexts. This has been an issue for a while, and you lose a bit of transparency for your app registrations when you are building AD Apps, and subsequently have to register some permissions though appinv.aspx


We are tripping over this as well. Found this thread and it's awesome that there are workarounds and - more important - this is being worked on. 👍

Standing in line and waiting for the engineers to click "ship it" ;)


Perhaps **Etherpad** could be useful in some way to meet this challenge: URL


Bij welk object hoort dit attribuut potentieel? Bij IMEV:OpslagVerpakt_TeBerekenenAfstandVergunningsplicht


Turns out engineering already had a backlog item open to implement those permissions. The need to have this implemented is raised to engineering through a Critical Design Change Request (CDCR) now based on the discussion here with the aim of prioritizing the backlog item on upcoming sprints. They're currently looking into the efforts it would take to implement this.


@angry-cellophane
Thanks. Good idea. This limitation is really annoying. Hoping to see it's eliminated.


@angry-cellophane I agree this is a frustration, and I would love for it to be something that 'just works for users', however I have a continuing concern around the PromQL implications. I'm by no means a PromQL master, but my understanding is that, unlike SQL, **Prometheus automatically joins like time series, as long as all tags match**.

That means that opposite is also true: Prometheus will drop metrics that don't all match. So I'm worried about how Prometheus will treat the mis-matched tags when doing graphs and aggregations.

Since that is a fundamental way that Prometheus works, they have rejected suggestions on how to work around it in the underlying data model and instead have insisted that clients publish matching tags.

I don't have a specific recommendation currently, just wanted to raise the data model concerns in case others have investigated that aspect further and can offer insight.


TypeScript developers, please, do whatever the hell you want with file extensions, this debate has been going on for years, I don't care, your mind is set, fine. But just document this very basic thing in a place that's easy to find: how on earth do I run the JavaScript emitted by tsc when "module" is set to "ESNext"? That will save a lot of people a lot of time. Most people understand "transpiles to JavaScript" as "transpiles to working JavaScript". But this is not the case.


@checketts

Prometheus (the database + scraper) doesn't drop metrics, it works fine with different sets of label names and values by creating a new time series for each unique combination of key-value labels. The only downside is disk space.
The metrics schema is not defined upfront, labels can be added or dropped if required not impacting existing data (a new time series).

Prometheus java sdk lets clients aggregate metrics in memory and return current values when Prometheus scrapes data.

Prometheus java sdk provides:
1. Collectors - an abstraction that returns metric samples when called. It's like a `java.util.function.Supplier` that returns a list of metric samples. Each sample has a list of label names and values associated with it.
2. CollectorRegistry - collector-aggregator. It doesn't store any metrics, instead it stores other collectors and returns their results when called. It's like an iterator of iterators.
3. Counters, gauages, histograms, summaries - pre-baked collectors, keep the current state in memory and return metrics samples when called.

#2 has no restriction on label names and values
#3 has a restriction, label names are immutable and defined when the object (e.g. a Counter) is being built. Label names cannot change after the object is built. This only applies to prometheus objects (`io.prometheus.client.Counter`, `io.prometheus.client.Gauge`, etc).

So micrometer doesn't really use #3, only #1 and #2. Every micrometer collector (e.g. `io.micrometer.core.instrument.Counter`) is registered as a collector (`io.micrometer.prometheus.MicrometerCollector`) in `CollectorRegistry`. When `CollectorRegistry` is called out, it goes through all registered collectors, calls them out and returns the result. It doesn't check label names and values, it simply returns what collectors return.
There's no any restriction on the prometheus side besides #3 I mentioned above but micrometer doesn't use anyway. Micrometer doesn't support different label names due to the way `io.micrometer.prometheus.MicrometerCollector` has been implemented. It makes label names immutable and label values dynamic. I raised a PR (linked to this issue) to make label names dynamic too.

If this issue is critical for anyone, you can copy the changed classes from my PR in put them in your project. I did the same about a month ago and get all metrics as expected since then.


I am getting the same error on Mac and Ubuntu. Have you solved this issue @Resoguy


@angry-cellophane Sorry, using the word 'drop' was confusing, you are correct that the SDK, Scraping, and Prometheus storage won't drop the unmatched metrics.

I was referring to how PromQL queries work. I have a feeling (though my understand is incomplete) that PromQL queries will exclude some metrics from calculations when labels don't match, requiring a user to use the `without` or `by` to get a complete result.

If you have done any work in regards to ensuring that PromQL queries make sense when the underlying meter labels aren't all aligned, I would love to hear about your methods and approach.


Would really love this to be honest!
I encounter a lot of Postman collections in the wild but translating them manually to httr/ curl in R is a bit painful.
This would be a really beneficial addition to the Postman ecosystem considering R is at rank 12 according to TIOBE index.


Thank you but I was able to solve this by updating npm to the latest version.


is dit wat er wordt bedoeld? Alle classificatie informatie is nu in het objecttype vastgelegd, inclusief het beschermingsniveau:
image


@checketts it depends on the query and how it groups data but generally no issue. Prometheus creates a separate time series for each unique combination of key-labels.
The user, who writes prom queries, need to keep in mind that there's more than 1 set of label names and that's it.

Some simple examples:

metrics

# HELP responses
# TYPE app_responses counter
app_responses{uri="/", outcome="SUCCESS", clientId="123"} 10
app_responses{uri="/", outcome="SUCCESS", clientId="456"} 5
app_responses{uri="/", outcome="FAILURE", error="INVALID_REQUEST", clientId="123"} 2
app_responses{uri="/", outcome="FAILURE", error="DATA_NOT_FOUND", clientId="456"} 3

1. Percent of failed requests in past 10 mins
`sum(increase(app_responses{outcome="FAILURE"}[10m])) / sum(increase(app_responses[10m]))` returns 0.25 as expected

2. For each error to show its percent of all requests in past 10 mins.
`sum(increase(app_responses{outcome="FAILURE"}[10m])) by (error) / ignoring(error) group_left sum(increase(app_responses[10m]))` returns 0.1 and 0.15 as expected.


seems like my PR with the fix got stuck. For anyone, who's eager to try the fix, I created an example of how it can be used, you'll need to copy two classes into your project URL


Can you please provide the line number of the source code that causes the error, in the error message?


Now that all the issues in the first milestone have been completed I have released the first alpha.

I've also created an initial guide on how you can get setup with a fresh project. Migration guide to come in the future.

Find the guide here:
 URL


Just as an update, the topic is still on the table and has not been forgotten. No decision has been made yet if this functionality will be adjusted or not unfortunately.


I've noticed this occasionally happen when adding a new package with yarn. It will revert from the working:

` "resolved": " URL

to the non-working:

`"resolved": "git+ssh://git@github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0"`

Manually switching back fixes this headache for me.


Beste Paul, hierbij zoals verzocht de reactie van Geodan:

Technische impact: De REV API specificatie moet gewijzigd worden.


Ran into this as well. If further info can be helpful let me know.


@travisghansen did you repro this by creating a snapshot from a non-existing volume? Want to make sure it's the same cause.


In my case the api call to the backing storage system had some invalid options in the payload resulting in a failure. I would effectively pass the failed api response back up to the grpc client (this repo?) and observe that over and over at a rapid pace.


I'm hitting this exact same issue. I'm not using webpack, just plain typescript and my javascript output is broken because the .js extension is missing. How on earth can this not be a bug? What am I supposed to do instead?


@TheBoneJarmer If you're just doing plain TS and JS, use the would-be filename as the import specifier like so:

ts
import { version } from "./version.js";


The problem with this solution is that if you have an "outDir" different
than the default, i.e. a setup where transpiled files don't live beside the
.ts files, most tools will freak up and that's not a nice development
experience.

I was so pissed-up buy this that I built this monstrosity:
 URL

You can install it and have it watch your "outDir" and it will quickly and
transparently add the .js extension where appropriate to the transpiled
files as they appear / are updated by tsc.

It seems to be working well. Only missing major feature is that I currently
don't rewrite the source-maps but it doesn't seem to matter much since the
changes I make in the js files are only adding 3 chars to some import
statements at the end of some lines. No line offets, no changes to any
place where you would be likely nor even able to set a breakpoint anyways.

Give it a go and let me know of any issues you might find!

There are webpack modules that do the same thing, but my solution is much
less invasive: keeps file and directory structure, no bundling, no config.

I spent a considerable amount of time reading the obscure ESM spec and I'm
pretty confident my tool doesn't do anything unwise.

I actually think TS has it wrong, as the ESM spec clearly states that there
is no such thing as a default file extension. So you should "import foo
from '. /foo.ts'" and that should transpile to "import foo from
'./foo.js'". I don't see any deviation from JS here. "import foo from
'./foo'" seems just wrong.

On Thu, Jul 29, 2021, 22:43 RA80533 ***@***.***> wrote:


Thanks for the replies guys. Personally I entirely agree with @djfm. I am grateful for the workaround from @RA80533 though, don't take me wrong. But it is far from a good solution imho. And the reasons why are nicely explained by djfm. That said, you are not the only one who got that idea. I found another npm package through Google which does what I believe you do as well. It is called tsc-esm and is created by user @Gin-Quin.


That said. I also took my time to learn a bit more about the whole es6 module system and I also think javascript has a flaw here. Imho they should introduce something similar to what happens in urls with index.html. In most if not all web servers you never have to manually insert '/index.html' at the end of an url. When the path ends with a / the server automatically converts that to /index.html. When no file extension is added at the end of an import statement, the client should convert this first to .mjs. If no such file exists than to .js. And only then the client should throw an error if neither files were found.

Therefore I more or less can understand why typescript devs don't consider this a bug from their side. Typescript merely interprets the import statement for typescript purposes but may not be able to convert it that easily to esm. But I do think this should be a config option.

I mean, several users already created their own npm package out of frustration which I think shows how big this problem is. And they are right to be frustrated because my basic typescript app produces broken javascript, which is a definitely a bug from typescript. And the fact that typescript devs do not want to admit that is just plain ignorance and stupid. This will only push people away from using TS. And on top of that, the fact that they say they won't do a thing about it does pisses me off even more.

Imho the tsc should stop conversion when an import statement cannot be converted to esm. Or throw a warning or hint that narrows down to "Due to limitations in the javascript language you are supposed to add a .js in your import statement or else tsc will produce broken code". And I'd be fine with that but not the way it is now.


For a bit of clarity, this behavior is due to the way modern web authors tend to serve content. Web servers as a whole are glorified file systems. A request to `/` is semantically equivalent to inspecting the root directory yet, because web servers have optimized the browsing experience in a manner such that they aren't beholden to typical file system behaviors, that would-be directory request is often treated as a file request through some arcane redirection.


We should fork TypeScript. Let's call it FreeScript for instance.

There are way too many things in the hands of Microsoft right now and they
go way too well together: they have GitHub, Copilot (I'm in the preview and
it's pretty freaky), TypeScript, VSCode...

It's too good to be true. Our hands are tied. I have kind of a bad feeling
about this. Could turn out the wrong way.

I'd love something like a mix between TypeScript and Webpack. Except that
you wouldn't have to bundle up everything using hard to understand and hard
to configure plugins of plugins of plugins. But a lightweight, carefully
designed, and extensively tested layer of plugins on top of tsc could be
very nice.

Imagine how the language could grow if you could add rules to tsc via
plugins, like they do in eslint. Without any changes to JavaScript eslint
managed to get to a pretty good level of static analysis. Just imagine what
the community could do using TypeScript instead of JS.

How many times have I encountered a situation in TS where it wouldn't
compile even-though there was no way in hell the code could fail.

Like:

if (someArray.length > 0) {
 const x = someArray.pop();
 console.log(x.y);
}

Doesn't compile with strictNullChecks, x might be undefined. But i'm pretty
sure it may not.

But I digress, sorry.

On Fri, Jul 30, 2021, 09:09 RA80533 ***@***.***> wrote:


when I do this, I get `Cannot read property 'then' of undefined`. the first form id in `#form1` gets rendered, but the second one never does. any advice?


Here's the current status of the rewrite: I think I have 99% of the Python 3.8 grammar implemented, and the parser can roundtrip (parse -> serialize losslessly; i.e. input bytes are same as output bytes) all of the LibCST python implementation (i.e. this repo). This is a big milestone but there's still some work to be done. But first, some details in case you want to play around:

The code currently lives still in URL you should be able to `cargo build` in that directory to get a debug build. This will put a binary called `parser` (`parser.exe` on Windows) in `target/debug/` which
* accepts python code on stdin, then parses it into a CST and serializes it back onto stdout
* optionally (when given the `-d` flag) dumps the internal CST representation before the generated source - this should look familiar if you've used `python -m libcst.tool print` before
* if the first argument is `-n` it doesn't output anything (except parse errors), just parses the input

Here's what I know still needs to be done:
* [ ] wrap the API in a thin python layer to be usable from LibCST
* [ ] hunt down bugs in the grammar by parsing all the python source code ever
* [ ] implement missing grammar features like match statement, walrus, or parenthesis around `with` statements
* [ ] there's a bug with whitespace parsing around the end of multiple nested indented blocks; this results in duplicate whitespace in certain situations - but not for any of the LibCST source code apparently
* [ ] figure out how to make a LibCST release that can switch between the new and old parser backends
* [ ] CI for the rust code

And then on top of this it'd be nice to look into:
* [ ] Perf optimizations. I haven't done any :)
* [ ] Make the parser error-recoverable; that is, for a syntactically invalid Python document, try and produce _something_ that resembles a CST and is usable. This would be great for interactive use cases like IDE linting.
* [ ] Improve the parser error messages. They are really basic at the moment, just outputting expected characters at the furthest parsed position.
 * [ ] There has been some great work in CPython recently around this front, and we should be able to port most of it over easily, if rust-peg can be enhanced to support early termination


I've setup an example using github actions here: URL

Sample run: URL


Following the approach of @defrex i've used the lazy approach with lazy and suspense:

StorybookScreen.tsx

javascript
const StorybookUI = lazy(() => import('../../storybook'));

const StorybookScreen: React.FC = () => {
 return (
 loading }>

 );
};

App.tsx

javascript
const App: React.FC = () => (
 { __DEV__? : }
);


Following the approach of @defrex comment i've used the lazy approach with react lazy and suspense:

StorybookScreen.tsx

javascript
const StorybookUI = lazy(() => import('../../storybook'));

const StorybookScreen: React.FC = () => {
 return (
 loading }>

 );
};

App.tsx

javascript
const App: React.FC = () => (
 { __DEV__? : }
);


Guys... i think i fixed it... i wasted 2 days of my life googling

Credits goes to: URL

Solution:

dart
 XFile xfile = await _cameraController.takePicture();

 List imageBytes = await xfile.readAsBytes();

 img.Image? originalImage = img.decodeImage(imageBytes);
 img.Image fixedImage = img.flipVertical(originalImage!);

 File file = File(xfile.path);

 File fixedFile = await file.writeAsBytes(
 img.encodeJpg(fixedImage),
 flush: true,
 );

Essentially we have to extract the image bytes we took into a temporary file variable, flip it and then write back those bytes into the original image we took, resulting in anti-mirrored file


Any update from Microsoft SharePoint Online on this issue?????


Its still under discussion. Vacation period makes things progress slow unfortunately. Also because there is an easy workaround available, it takes more effort to raise the priority on this.


@KoenZomers Thanks for updating me. The easy workaround you are talking about is app-only credential?


The easy workaround is to apply what is written here:
 URL

So you can combine your AAD App Registration with ACS permissions to make this work. You would just need to get another token from ACS to handle the user profile stuff, if you directly communicate with the SharePoint/Graph APIs. If you use PnP PowerShell, this will be done automatically for you and you just need to set the permissions as mentioned in the referenced post.


It creates non-valid ES6 code when given non-valid ES6 code. The first line in index.ts should be rewritten like so:

ts
import {start} from "./lib.js";


@RA80533, no, it creates non-valid ES6 code when given _valid_ TypeScript code.


@KoenZomers Thanks, mate. I give it a go. Really really hope Microsoft fix it properly so.


Read the official documentation: URL as mentioned from the *account* section:

RAILS_ENV=production bin/tootctl accounts create USERNAME --email EMAIL@MAIL.LOL --reattach


@mthld Thanks for your answer, I was seeing the link, but it can't solve the problem

mastodon@mastodon:~/live$ RAILS_ENV=production bin/tootctl accounts create USERNAME --email whoami@azeroth.website --reattach --force
/home/mastodon/.rbenv/versions/2.7.2/lib/ruby/2.7.0/net/protocol.rb:66: warning: already initialized constant Net::ProtocRetryError
/home/mastodon/live/vendor/bundle/ruby/2.7.0/gems/net-protocol-0.1.0/lib/net/protocol.rb:66: warning: previous definition of ProtocRetryError was here
/home/mastodon/.rbenv/versions/2.7.2/lib/ruby/2.7.0/net/protocol.rb:206: warning: already initialized constant Net::BufferedIO::BUFSIZE
/home/mastodon/live/vendor/bundle/ruby/2.7.0/gems/net-protocol-0.1.0/lib/net/protocol.rb:206: warning: previous definition of BUFSIZE was here
/home/mastodon/.rbenv/versions/2.7.2/lib/ruby/2.7.0/net/protocol.rb:503: warning: already initialized constant Net::NetPrivate::Socket
/home/mastodon/live/vendor/bundle/ruby/2.7.0/gems/net-protocol-0.1.0/lib/net/protocol.rb:503: warning: previous definition of Socket was here
Failure/Error: email
 has already been taken


I don't understand if the account was deleted or suspended? Does the account still show up in the admin interface?
Note that suspending an account also bans their email address.

It seems you're using a *different* username than that of the account which is to be re-used. If you want to re-use the email address but with a different name, you can delete the old account with `tootctl accounts delete USERNAME`.


### User data
Username: Skeep
mail: whoami@azeroth.website

### Deleting user

mastodon@mastodon:~/live$ RAILS_ENV=production bin/tootctl accounts delete Skeep
/home/mastodon/.rbenv/versions/2.7.2/lib/ruby/2.7.0/net/protocol.rb:66: warning: already initialized constant Net::ProtocRetryError
/home/mastodon/live/vendor/bundle/ruby/2.7.0/gems/net-protocol-0.1.0/lib/net/protocol.rb:66: warning: previous definition of ProtocRetryError was here
/home/mastodon/.rbenv/versions/2.7.2/lib/ruby/2.7.0/net/protocol.rb:206: warning: already initialized constant Net::BufferedIO::BUFSIZE
/home/mastodon/live/vendor/bundle/ruby/2.7.0/gems/net-protocol-0.1.0/lib/net/protocol.rb:206: warning: previous definition of BUFSIZE was here
/home/mastodon/.rbenv/versions/2.7.2/lib/ruby/2.7.0/net/protocol.rb:503: warning: already initialized constant Net::NetPrivate::Socket
/home/mastodon/live/vendor/bundle/ruby/2.7.0/gems/net-protocol-0.1.0/lib/net/protocol.rb:503: warning: previous definition of Socket was here
Deleting user with 0 statuses, this might take a while...
OK

Supposedly it was erased and everything ok. When I check the moderation, it keeps coming out, it never goes away.
I even try to register with his email and it goes out of use.
Captura de pantalla de 2021-08-22 15-11-42
Captura de pantalla de 2021-08-22 15-11-15
Captura de pantalla de 2021-08-22 15-10-51


Run, `User.where(email: 'whoami@azeroth.website')` in `RAILS_ENV=production bundle exec rails c`


@ClearlyClaire

mastodon@mastodon:~/live$ RAILS_ENV=production bundle exec rails c
/home/mastodon/.rbenv/versions/2.7.2/lib/ruby/2.7.0/net/protocol.rb:66: warning: already initialized constant Net::ProtocRetryError
/home/mastodon/live/vendor/bundle/ruby/2.7.0/gems/net-protocol-0.1.0/lib/net/protocol.rb:66: warning: previous definition of ProtocRetryError was here
/home/mastodon/.rbenv/versions/2.7.2/lib/ruby/2.7.0/net/protocol.rb:206: warning: already initialized constant Net::BufferedIO::BUFSIZE
/home/mastodon/live/vendor/bundle/ruby/2.7.0/gems/net-protocol-0.1.0/lib/net/protocol.rb:206: warning: previous definition of BUFSIZE was here
/home/mastodon/.rbenv/versions/2.7.2/lib/ruby/2.7.0/net/protocol.rb:503: warning: already initialized constant Net::NetPrivate::Socket
/home/mastodon/live/vendor/bundle/ruby/2.7.0/gems/net-protocol-0.1.0/lib/net/protocol.rb:503: warning: previous definition of Socket was here
UserChewy console strategy is `urgent`
Loading production environment (Rails 6.1.3.2)
irb(main):001:0> User.where(email: 'whoami@azeroth.website')
=> #

The promt was left waiting as another command, I close it with exit, did not work


Hm… alright, the email address has been blocked when you suspended it, then. Removing the block will be a bit annoying… open the Rails console (`RAILS_ENV=production bundle exec rails c`) and type the following:

ruby
class EmailBlockFinder
 include EmailHelper
 def find(email)
 CanonicalEmailBlock.where(canonical_email_hash: email_to_canonical_email_hash(email))
 end
end
EmailBlockFinder.new.find('whoami@azeroth.website').map(&:reference_account)
EmailBlockFinder.new.find('whoami@azeroth.website').destroy_all

(please copy the output, it will help me debug things)

This should be enough, but I'm surprised at a few things here:
- I would have expected the error not to be “has already been taken” (but that is what the code does, it's a bit confusing)
- I would have expected `tootctl accounts delete Skeep` to also remove the email block, but it does not… maybe it'd need an extra option
- I would have expected an easy way to remove the email block… but there is none


Oh, the root issue is #16498. I thought this would have been fixed in a release by now :grimacing:


Thanks for this nice hook. I observed a problem that I want to share, maybe it will help others too.

If you intend to use this hook like this for example:

js
function useSelectedArray(keys: string[]): string[] {
 return useSelectedContext(formStateContext,
 (state) => keys.map(key => state[key]),
 (prev, next) => deepCompare(prev, next))
}

The hook will never return the cached value but always a new value. The problem lies in the dependency of the `useMemo` hook which is: `[ctx, selector, eqlFn]`. In the above example, there is always passed a new selector and eqlFn.

To fix this, I edited the dependency array as follows `[]`. Because in my code I know, the dependencies will never change..

Another option would probably be to use a `useCallback` hook for the the `selector` and `eqlFn` of `useSelectedArray`. But somehow this felt weird to me. What are your thoughts on this?


@timbicker Hi, you understand it correctly. My expectation is to use `useCallback`, or what's better is to define those functions outside render whenever possible.
Now, I know this is controversial, but from library perspective, giving stable function from the library consumer is almost necessary.
We have a discussion thread about this for React 18: URL


I'd like to add that this is something I'd like to see resolved for a current client. While I can (barely) keep up with the subtle nuance and intricacies of things like this, clients/customers often times aren't paying as close attention. As a result those that have to build/deliver/transition solutions that require both Azure App Registration and the legacy ACS permissions have a hard time explaining this to customer teams. It also requires delivery of code that will be known to have a limited life span in that ACS will only likely be supported for some (unknown) period of time. I'd like to vote this up in priority / escalation such that administrators can have custom SPO user profile sync jobs that don't require ACS any longer.


@kwa20 Question please:
- By adding this search on the creation form, does it mean automatic duplicate person detection should be turned off? because this specification is exactly what duplicate detection does in an automatic way, or I did not understand it well?
- Currently we can search a person on person directory. In your initial specification of the person directory/ from, the next phase was to extend this form to be able to add entities to the person. Is your initial idea no longer valid?
- I would vote for the option to add entities through the person form.


@bernardsilenou no the duplicate detection should not turned off as they user might not know that person was in the system before. But if the user knows it, he/she must not enter all details which are required to save and start the duplicate detection.

I would vote to have both ways (person form and this option) to be more flexible for the user.


@bernardsilenou @Marko-ilmkreis I also think we should have both options because the creation option in person forms will e.g. not solve the problem of persons not being properly detected when processing lab messages. I also see advantages in flexibility of workflows.


I strongly support this feature request.

Being forced to re-enter a person's data and trust the system to find a "duplicate" even though you know exactly that the person is already in the system is not a very effective way and has a much higher potential for errors.


@All: I think there are some point that I still do not get it. I do not understand the main difference between user trigger (this issue) and automatic trigger person detection.
1. While creating a case, search a person and if person is
 1.1 found, should duplicate person detection be called? ( If yes, then this is double, right?)
 1.2 not found, should duplicate person detection be called? (If yes, then duplicate detection should also not find any person since the back-end methods should be the same )
2. While creating a case, and do not search for duplicate person , should duplicate person detection be called? (If yes, then what does manual trigger add in the workflow?)
3. Another point is the multiplicity of functions on each form. In most systems like sormas, then general rule is that users begin by searching a person on the person directory, if they find the person, add new entities to them, it not, create a new person and add entities to them.
4. Having two ways of doing the same thing in the system also comes with a cost (probability of having more bugs + maintenance). If this is a better way, then we can we drop the other option of going through the person form?


@Jan-Boehme
Please can you elaborate on this URL
If there any possibility to detect duplicate person without entering some of the person variables (, name, sex , ...) ?


- Another advantage to encourage user to first search through the person directory is that they can use more variables of the person (birth date, address, name, sex, ...) rather than just name, thus more sensitive.
- I have a feeling that the current duplicate person detection is not working as intended. Because this issue is describing how it should work, no matter if user search person or not. Maybe I am just missing something.
-


Sure.
At the moment there is no other way to get the system to find a potential duplicate person without at least entering first name, last name, birthdate and sex. And even if you enter all them there is still the possibility of the system not finding any duplicate (i.e. a typo in the birthdate). But when you realize that you made an error it is too late and there's no way to revert any of it.

General comment:
I agree with @bernardsilenou that, from an end user's perspective, everything should revolve around the person and it should be the first entry point for doing anything in SORMAS.
The question is how realistic is it to change that now?
Implementing this issue would help somewhat with that because you would be able to search the person directory and pick the correct one before committing to save date.

I think the confusion stems from the fact that searching the person directory and freely picking one is tied to the duplicate detection window at the moment when they really are two different things.

When clicking on the "looking glass" button the user is not forcefully triggering the duplicate detection code but just opening the window where he can search and pick any person from the person directory.
If the users does so, there is of course no need to do the automatic detection upon saving. That would mess with the whole point of the feature.


Hi,
I tried the workaround method suggested using SharePoint-App Online registration, and using this function of pnp powershell code : Set-PnPUserProfileProperty
I am now getting error 401, did i miss something ?


@Jan-Boehme
Thanks for the explanation URL
- `I think the confusion stems from the fact that searching the person directory and freely picking one is tied to the duplicate detection window at the moment when they really are two completely different things.` I think what you meant here is that the person directory filter case person by default, right? I think the default should be "All person", the current implementation can mislead users . Centralized systems like in France has many persons and this tab takes much time to load. I think this should not be a valid reason to limit the person directory only to cases by default. There should be a technical solution for this I suppose.
- @MateStrysewske what about creating a copy of the person table with only the columns used by filters: name, address, tel, age, dob, etc such that when we search for a person on the person directory, we do not do any merging of tables but use this one table only, this just a rough idea.
- If you have a difficult and easy task to do, always do the difficult one first (leads to higher increment), Suggest we work on #6053 and then work on this one later.


@jeffangama did you add an AppPermissionsRequest as described here

When using SharePoint App-Only, must add the scope /sharepoint/social/tenant. Update the Permission Request XML as follows, and it will permit writing user profile properties.


Hi Geoff, the name's Joshua from Indonesia. Been a fan of what Gitpod is working on for quite some time. All the best to the Gitpod team. Hope this helps.
image
image


Hi, it feels awesome to know that gitpod is finally going to have a Singaporean cluster! I'm from Bangladesh and I have been using gitpod for a 4G mobile network.
Thanks!

Screenshot_20210906-102807

Screenshot_20210906-103306


@bernardsilenou @MateStrysewske @Jan-Boehme In my opinion these are complete different ways to find the right person an open a case/contact/ep for them. The duplicate detection should be only used for the cases the user does not know that there is a duplicate.
The "looking glass" is importent for users which are creating a lot of contacts/cases/ep and dont want to switch between them and the person tab. They just want to work. With these function to search we must make sure that the user sees all persons (even in other jurisdictions), like in duplicate detection.
The #6053 should be also enabled because thats also a very usable way to create the c/c/ep.


From Perth, Western Australia

Wired VDSL (17/7 down/up Mbps)

Appears my traffic is being routed via East Coast AU instead of direct to Singapore. Rough speed test shows 53ms from me to NewMedia Express SG which is what I'd expect.

image


Melbourne fibre connection (not NBN).

Screen Shot 2021-09-06 at 3 28 31 pm


I second what @Marko-ilmkreis said. Those two issues are not interchangable and we can't implement one or the other as they both try to achieve different things.

@bernardsilenou At the moment I feel like we are talking about two different things.
This issue is just about providing the users with a "shortcut" to a functionality that we already have in the system.
Which is the possibility to search for any person and link it to a case/contact/lab message, etc. during creation in order to speed up the process and give the user more control over what is happening.
(The same thing that currently happens when the duplicate detection is triggered and the user selects "Select a person" in the popup window.
This has nothing to do with the person directory view that comes up when clicking on "Persons" in the main navigation or it's performance.


I think this feature makes sense because it allows users to use this functionality without having to navigate to the person directory if they're in a process of documenting several cases, or even when they've already filled in case details and only then realise that the person is probably already in the system. I don't think it should replace anything else (e.g. duplicate detection), and I also believe that having a full-fledged person directory copy would be overkill.


@Jan-Boehme @MateStrysewske @Marko-ilmkreis
- I also agree with you that users should not navigate to person directory all the time when creating entities.
- My main question has not still been answered. Sorry if i have not understood the request.
- @MateStrysewske How does this method differ from duplicate person detection please? When a user create a case, contact or any entity linked to a person, sormas should automatically search for all duplicate persons that the user has access to. Why does the user has to use the "looking glass" to search for the person when the idea of duplicate person detection is that this should always work irrespective of users choice in activating "looking glass".


@bernardsilenou Duplicate detection takes place AFTER the user clicks von "Save". This method here would be an option for the user to manually search for the person before, e.g. when they're not sure how exactly the person is called, or when they know for a fact that the person is in the system, but don't want to rely on duplicate detection.


@MateStrysewske @kwa20 Thanks
- So the main difference here is whether we click on "save" or "search" in order to trigger duplicate detection. Then that is fine, I though there was a difference in back-end method.
- So if user search and pick a match, then no need to call duplicate detection again, right? because users may get annoyed. Similarly to if they search, find no duplicate and when they save, calling duplicate detection again may annoy them.
- So if user trigger "looking glass" and either choose a person or create a new person, we do not call duplicate person detection, what do you think pls?


@bernardsilenou Almost. I think what you need to realize is that using the search function is totally different than triggering duplicate detection. The search will merely serve as a selection option of existing persons. Selecting a person will basically fill the person_id in the case table with an existing reference and therefore, duplicate detection would not be triggered, yes.

Think of converting contacts or ep's to cases, the person link is already there. It will work the same way when selecting existing persons.


Cool! thanks for all the comments. Let's do this!
@meysholdt can you take over and share a plan for rolling this out?


happy to do so. There are two possible setups for this:
a) setup a workspace-cluster in Singapore, hook it up to the us-meta-cluster and have have our server component route starting workspaces to the geographically closest workspace cluster (Singapore or US).
b) setup a workspace-clusters, a meta-clusters, and a database in Singapore and have the GCP LoadBalancer route users to the geographically closest region.

I'm in favour of (a) because it is the way to go if we want to support more than three regions: it has lower cloud costs, lower operational effort and more control over workspace-routing, etc.

However, our server (or bridge) component does not yet support geography(e.g. latency) based routing and we need to decide if that's a feature we we wan to implement now.


@meysholdt If that sounds difficult, it would be great to add a preference in user settings to choose the data center they want. WDYT?


Here is a proposal on how we could do automated latency-based workspace-cluster-selection: URL


Agree, this is something that would provide unnecessary complexity for the user. 🐼


There's nothing newer than what's on my branch right now that I'm aware of. But the main Parse SDK imports properly using SPM in that branch IIRC.

I do plan on getting it working, but I need to find time.

I'd welcome any help. PR is here.


For those wondering what gh template ended as. Here is an example:

gh issue list --milestone "GD 2.3.3" -s all --json number,title,url -t'{{range .}}{{tablerow .number .url .title}}{{end}}{{tablerender}}'

- "range ." loop over all elements of the collections.
- tablerow prepares the table using the element of each item of the collections (the names are the ones provided to --json option
- tablerender will render the final table
- any space between {{ }} will be used as is
- it is not possible to use anything outside {{}} as it will be interpreted as option for the cmd or error out (it would be nice to be able to pass a file btw)

Hope that helps.

PS: It would be awesome to add that to the doc here and there.


I did add that to the `formatting` help topic, though that page you reference doesn't seem to be rendering it correctly:

With `--template`, the provided Go template is rendered using the JSON data as input.
For the syntax of Go templates, see: URL

The following functions are available in templates:
- `autocolor`: like `color`, but only emits color to terminals
- `color `: colorize input using URL
- `join `: joins values in the list using a separator
- `pluck `: collects values of a field from all items in the input
- `tablerow ...`: aligns fields in output vertically as a table
- `tablerender`: renders fields added by tablerow in place
- `timeago `: renders a timestamp as relative to now
- `timefmt `: formats a timestamp using Go's Time.Format function
- `truncate `: ensures input fits within length

EXAMPLES
 # format issues as table
 $ gh issue list --json number,title --template \
 '{{range .}}{{tablerow (printf "#%v" .number | autocolor "green") .title}}{{end}}'

 # format a pull request using multiple tables with headers
 $ gh pr view 3519 --json number,title,body,reviews,assignees --template \
 '{{printf "#%v" .number}} {{.title}}

 {{.body}}

 {{tablerow "ASSIGNEE" "NAME"}}{{range .assignees}}{{tablerow .login .name}}{{end}}{{tablerender}}
 {{tablerow "REVIEWER" "STATE" "COMMENT"}}{{range .reviews}}{{tablerow .author.login .state .body}}{{end}}
 '

Also, you don't need `{{tablerender}}` unless you want to render any text - plain or even another table - after that. The table is automatically rendered after all records are processed if not rendered explicitly first.


We discussed that we would want to go with the solution outline in #5596. Give our priorities atm this will have to wait a few weeks. Let's aim at scheduling this by mid October.


I also just stumbled over this issue and as usual I find the justifications of "working as intended" as really questionable. There are various settings in the compiler which steer the module system. If I set `"module": "commonjs"` my typescript `import` statements are rewritten to `require`. There is also `esModuleInterop` which adds some extensions around the module imports.

While I agree that maybe the default behavior should be in the way that TypeScript leaves everything untouched, I also would say that it should/must be a TypeScript compiler setting to handle the mentioned use cases. I wanted to use TypeScript to create a small command line tool, which I can use in my GitHub Actions Workflow (without really making a reusable action) and it just does not work because the TypeScript output is not compatible with Node.js. Node.js seems to be usually a first class citizen in TS and here some very high level rules on the design goals (which IMO only partially apply here) prevent many people to use TS in such an obvious chain as running the compiled output in Node.js.

Maybe we have better chances with the Node.js guys to extend the module resolution algorithm.


Unbelievable how TS devs are stubborn on this.

On Tue, Sep 14, 2021, 11:33 Daniel Kuschny ***@***.***> wrote:


@Markarend thx for you contribution to this topic. Very helpfull ! I was using the SharePoint App-Only method already. It works at our test tenant, but at the customer it gives an error.

I used exactly the same XML as you do at /_layouts/15/appinv.aspx

I used this code:

$GLOBAL:spAppOnlyClientId = "XXXX"
$GLOBAL:spAppOnlyClientSecret = "XXXX"
$GLOBAL:connection = Connect-PnPOnline -url " URL -clientId $GLOBAL:spAppOnlyClientId -clientSecret $GLOBAL:spAppOnlyClientSecret
(Get-PnPUserProfileProperty -Account " " -Connection $GLOBAL:connection).UserProfileProperties

The error I receive is:
`The remote server returned an error: (401) Unauthorized.`

Do you have any clue why this isn't working?

As an alternative I tried the -UseWebLogin method, which works. But it should run in a Azure runbook, so this method is of no use to us.


I've opened URL in the repository for the official Java client for Prometheus to get some input from the Prometheus experts on this.


@MartijnMolegraaf Check if ACS auth is disabled on the tenant where it gives you the unauthorized.

powershell
Connect-SPOService -Url URL
Get-SPOTenant | select DisableCustomAppAuthentication

Ensure it reports back False. If not, you need to set it to false using:

powershell
Set-SPOTenant -DisableCustomAppAuthentication $false


As an update to this item. We have discussed the situation with engineering. They are aware of this situation and this GitHub thread and are evaluating their options.


Morning @KoenZomers . You made my day, that was indeed the cause and solution. Thank you !

In addition, it is appreciated that you have discussed this case and looked at possible options.


FYI, one more data point from @tnir in URL (from Japan, I believe) :


I would just like to be able to set an option for the numbered list to not at all increment the numbers, but just put 1., 1., 1.
This would solve all problems from above. It is also the standard accepted by GitLab.
It is also better for when you view diffs in version control.


@braykov Mh, in the Pandoc-context the equivalent would be `#.`. I'm not sure if the editor accepts this syntax, though …


@nathanlesage unfortunately that is not standard and not supported by GitLab.


The Angular version of news will only be supported until end of 2021.


Here is the typescript version:

export const useEqlContextSelector = (
 ctx: Context ,
 selector: (val: T) => R,
 isEql: (a: R | null, b: R) => boolean
) => {
 const patchedSelector = useMemo(() => {
 let prevValue: R | null = null;

 return (state: T) => {
 const nextValue: R = selector(state);

 if (isEql(prevValue, nextValue)) {
 return prevValue;
 }
 return (prevValue = nextValue);
 };
 }, [isEql, selector]);

 return useContextSelector(ctx, patchedSelector);
};


`MiroTalk P2P`: URL

Architecture: `WebRTC Mesh` (peer to peer between browsers)

image

`Unlimited rooms, no limit of time`, supports `5 users in the single room` To have a good video-audio quality. The quality of the call is inversely proportional to the number of people on the call.

Required: `Client PC` (peers) must have a `good Bandwith and CPU`.

Deploy: Any host that support `Node.js` like: railway or heroku (Free service) or DigitalOcean for personal vm server (for a fee) ...

Bonus: There are an option to use it directly from your `LOCAL PC` and thanks to Ngrok you will be able to have conference and will be reached outside your local network, no matter where you are!

`MiroTalk SFU` (This one): URL

Architecture: `WebRTC SFU` (Server with Selective Forwarding Unit) using mediasoup

image

`Unlimited rooms, no limit of time`, and in theory `no limit of users`. Routing is a multiparty topology, where each participant sends its media to this integrated server, and receives all other's media from it.

Required: `Server` must have a `very good Bandwidth`, and good RAM and CPU.

Deploy: `VM` that support `Node.js and other stuff` like: DigitalOcean or amazon-aws (paid service) ...

Bonus: There are an Option to use it directly from your `LOCAL PC` by some extra settings and thanks to Ngrok you will be able to have conference and will be reached outside your local network, no matter where you are!

Based on the amount of users you have, you can choose the right solution for you :)

I hope I have clarified your doubts about the difference of the two versions?

Thanks and have a nice day.

Regards


Thank you, could you give some example API requests and flows you have? I have a bit of a hard time following because I don’t know Centrifugo


api example.

We have next config structure:
match:
 url: URL

authorizer:
 handler: remote_json
 payload: {channels: "{{ .RegexpCaptureGroups 1 }}"}

And for request:
 URL channel2, channel3]

Authorizer gets object: {channels: "channel1, channel2, channel3"}


removing from Platform Inbox because this depends on URL See Sven's comment on how we should proceed.


This appears to have been resolved in VS2019 update 16.11.

On a side note: 16.11 was the first version to fully support C++20. In general, I would not expect `std:c++latest` to actually be stable or conformant, since it will often cover a not-yet-ratified standard (draft C++23 as of 16.11) with bugs of its own.


Expectedly I stumbled upon this when setting a simple Node.js module written in TypeScript and compiled to CommonJS and ES to cater for both cases. I agree with @ericmorand and other similar opinions that, given a valid TypeScript code and valid TS configuration to target ES, the compiler SHOULD generate valid ES code. Otherwise, it should be considered a BUG. If it's a design goal to not generate valid code from TS code, then the design is flawed and needs to be fixed too.


It allows you to specify a max size instead of a max age, which is pretty nice. Definitely users doing their own cleanup with random scripts is not ideal in general


Note that the observed behavior is that when adding new meters with the same name but differing in the _keys_ (number or name) of the Tags, the later registrations are ignored. When only the _value_ of the Tags are changed, it works correctly. Therefore, a "fix" is to make both sets of meters (having the same name) also have the same set of Tags, where the irrelevant tags of each subset having a fixed dummy value.


It seems that increasing the maximum stack size with `ulimit -s` can _solve_ the issue


@spapadop Not sure, to be honest. I know the team has been juggled a bit. Let me find out. Maybe @davidlago knows about the mysterious roadmap item?


@MichaelJJ the runner didn't call `git` directly, the `actions/checkout@v2` will call it.
the error seems related to the runner can't start the `actions/checkout@v2` actions.

Can your runner run step? only `actions/checkout@v2` fail or all kinds of steps in the job are failing?

Also, make sure you don't have a really big environment set on the environment or in your job since a huge environment variable block might block creating a new process on the OS.


It doesn't appear to be able to run any step, I've also tried actions/setup-python@v2.

I don't have any env variables set. This is the entire workflow:

name: Run

on:
 workflow_dispatch: {}

jobs:
 Test-Job:
 runs-on: self-hosted
 steps:
 - uses: actions/checkout@v2
``

I've also attached the dockerfile used to create the agent The entrypoint script simply starts the runner on container start.
Dockerfile-runner.txt


&& mv ./externals ./externalstmp \

☝ I assume that's the problem?


Yes, I copied the dockerfile from another project and missed that portion.


I ran into issues with partial cache content deletions, as we have potentially continuous use of the cache with no downtime. We now just rename the cache directory and then delete all of it. This is unfortunate.

See issues like
 URL and URL


Problem is, its currently missing a lot of features and because they renamed a bunch of methods new users may struggle to implement it until documentation is updated accordingly.


It's not difficult to implement. And what features are you missing?


A quick example would be say you have a new user starting with back4app and in the tutorial to confirm you set it up right they have this code:

var person = PFObject(className:"Person")
person["name"] = "John Snow"
person["age"] = 27
person.saveInBackground {
 (success: Bool, error: Error?) in
 if (success) {
 // The object has been saved.
 } else {
 // There was a problem, check error.description
 }
}

//Reading your First Data Object from Back4App
var query = PFQuery(className:"Person")
query.getObjectInBackgroundWithId("mhPFDlCahj") {
 (person: PFObject?, error: NSError?) -> Void in
 if error == nil && person != nil {
 print(person)
 } else {
 print(error)
 }
}

This will fail because IIRC Parse-Swift doesn't use PFObject. I am not saying ParseSwift is difficult to implement, in fact its easier given SPM. However renaming methods etc make it more difficult to follow older parse tutorials. I could be completely wrong here, I have limited parse experience personally.


Yes, that's correct, but it's more Back4App that needs to update their docs for ParseSwift also. I came from Parse for objective c, and then switched to ParseSwift.

There is a playground example in ParseSwift that show you how to use it. It's actually really easy. The documentation for ParseSwift is also well written.

I personally strongly advice to switch to ParseSwift. But that's my opinion.


That's not a bad idea ill give the playground a shot because I hate dealing with CocoaPods etc. I appreciate the offer and will give it a shot.


Our engineers in APAC would be your best friend if there was a Gitpod cluster local to them in either Singapore or Mumbai 😁

Here's the GCP Ping from one of our engineers in Hyderabad, India
image


I tried to use typescript@`^4.6.0-dev.20211110`and set `module: node12` in `tsconfig.json` but the compiled code still does not include `.js` file extension. @pwhissell could you give more hints?


In `:h map- `

Be very careful about side effects! The expression is evaluated while
obtaining characters, you may very well make the command dysfunctional.
Therefore the following is blocked for mappings:
- Changing the buffer text |textlock|.
- Editing another buffer.
- The |:normal| command.
- Moving the cursor is allowed, but it is restored afterwards.
- If the cmdline is changed, the old text and cursor position are restored.
If you want the mapping to do any of these let the returned characters do
that. (Or use a | | mapping instead.)


Can we pay extra to have a cluster get spun up in whatever GC supported area? Would love something in Sydney.


Can't speak for Gitpod's team, but I think the more realistic answer that is to self-host: URL

Maybe I'm wrong though and they'd be willing to explore bespoke regions if the price was right.


@zeertzjq Thanks for clarification.

I was actually trying to port an input method plugin ywvim's calling to vim's popup window to floating window. The plugin would use popup window to display the choices around the cursor, and popup window's APIs are called(and legitimate) in there `map-expr` functions. e.g.

image

Is there any workaround in neovim for implementing this?


It's a renderer/web/@chromium process but hard to say just by the screenshot which part of the functionality it's related to (@protonmail web clients or app's UI). I'm not seeing any intensive CPU load at my side (Linux).


I think the issue started after I enabled the "custom actions" menu, but that is blind speculation on my part as it could've been a coincidence.

I can help by debugging the code on my computer. I cloned the code and installed the dependencies, but I can't find a way to run the app without building it so that I can use debugger tools to profile the code.

$ npm run start:electron:dev

Error launching app
Unable to find Electron app at ./app-dev/electron-main.js

Can you guide me through the debug process? I have experience with JavaScript and NodeJS, but I am not really familiar with other tools, especially TypeScript.


I thought maybe I missed properly disconnection the `MutationObserver` thing which might potentially cause the issue. But I just debugged it and can confirm it gets well disconnected (here is the code line). The minor optimization I just pushed is 9af8f4c665d6eae57a4b0a2df7ef7ae73dd454b0.

It's the same build steps as listed in readme (excluding the packaging step), but at the end run `yarn assets:dev && yarn build:dev`. Then you start it by `yarn start:electron:dev`. There is at the moment no hot reload thing for the web stuff (dropped it long time ago and didn't get back yet).


Build command: `yarn && yarn assets:dev && yarn build:dev && yarn clean:prebuilds && npm exec --package=electron-builder -- electron-builder install-app-deps --arch=x64`


Thanks for the instructions, but for some reason yarn is giving me errors, I ran the command from your post as well as the one from README: URL (output is too long so I pasted on an external site)


I missed the fact that you will need to build @protonmail clients by running `yarn assets:dev`. Better download those clients by URL (taken from URL ie v4.13.0 release build jobs). Then unpack the archive to some place, rename the `app => app-dev` folder, and then copy to the project folder.


I did what you asked, and ran `yarn build:dev`, but it's still not working...

TheDcoder@arch /m/d/P/J/ElectronMail (master)> yarn start:electron:dev
yarn run v1.22.17
$ electron ./app-dev/electron-main.js
Error launching app
Unable to find Electron app at /mnt/data_partition/Projects/JavaScript/ElectronMail/app-dev/electron-main.js

Cannot find module '/mnt/data_partition/Projects/JavaScript/ElectronMail/app-dev/electron-main.js'
Require stack:
- /mnt/data_partition/Projects/JavaScript/ElectronMail/node_modules/electron/dist/resources/default_app.asar/main.js
-
error Command failed with exit code 1.
info Visit URL for documentation about this command.

TheDcoder@arch /m/d/P/J/ElectronMail (master)> ls app-dev
assets electron-main electron-preload web

I think we can debug this more efficiently if we can communicate in real-time, do you use IRC or Matrix?


My bad, I didn't update the `start:electron / start:electron:dev` npm scripts after recent `./app/electron-main.js => ./app/electron-main/index.cjs` rename. So use direct run, like `npx electron ./app-dev/electron-main/index.cjs`. Done now in 92a8834b7f5491a5bc639e96acb873eb5a09e086.


Direct run worked... but unfortunately the native build artifacts were compiled with an older version of node, so I can't use them:

Error: The module '/mnt/data_partition/Projects/JavaScript/ElectronMail/node_modules/spellchecker/build/Release/spellchecker.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 93. This version of Node.js requires
NODE_MODULE_VERSION 99. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
 at process.func [as dlopen] (node:electron/js2c/asar_bundle:5:1800)
 at Object.Module._extensions..node (node:internal/modules/cjs/loader:1199:18)
 at Object.func [as .node] (node:electron/js2c/asar_bundle:5:1800)
 at Module.load (node:internal/modules/cjs/loader:988:32)
 at Module._load (node:internal/modules/cjs/loader:829:12)
 at Function.c._load (node:electron/js2c/asar_bundle:5:13331)
 at Module.require (node:internal/modules/cjs/loader:1012:19)
 at require (node:internal/modules/cjs/helpers:94:18)
 at Object. (/mnt/data_partition/Projects/JavaScript/ElectronMail/node_modules/spellchecker/lib/spellchecker.js:3:16)
 at Module._compile (node:internal/modules/cjs/loader:1116:14) {
 code: 'ERR_DLOPEN_FAILED'
}

I will try building ProtonMail myself.


A native dependencies. You need to run `yarn clean:prebuilds && npm exec --package=electron-builder -- electron-builder install-app-deps --arch=x64` (listed above).


Oops, my bad, I missed that command. I ran it again and the app is running :+1:

I have encountered another issue though, I am getting this error while logging in;

Failed to resolve the "web-client" bundle location by " URL API entry point value

My fan is not spinning at full speed yet, so the resource-consuming loop isn't triggered at this point.


Make sure you properly unpacked the @protonmail web clients (see URL After doing that unpacking/renaming you need to run `yarn assets:dev` again so the script takes client from the ./output/git/backup and puts it into ./app-dev/webclient.

At this point it's only the app stuff is loaded, no @protonmail involving yet.


Awesome, thanks for assistance, I am able to run the app now.

But I couldn't reproduce the 100% CPU usage... so I tested with the pre-built release version and it still is eating up 100% of the CPU. It only happens once I load an email, so I guess it has to do something with the specific version/build of the ProtonMail stack?

@vladimiry Did you test the release build? Perhaps you might be able to reproduce it too.


Hi, ran into this issue while there was a permissions issue and create snapshot call has failed. Attached logs (enabled verbose logging in snapshotter) if they might help.

snapshotter_logs.txt

I see an `enqueued "snapcontent-c5a12581-b9c7-430e-9c61-9bcb576a60d4" for sync ` everytime as part of `setAnnVolumeSnapshotBeingCreated` method - Not sure if this is expected.

As there is a create snapshot call almost every 150ms, the underlying API is getting throttled. Also there are too many mutations to the snapshot object. As the API throttling is generally at a customer tenant level this might impact other customer scenarios as well. Any update on the issue/fix ?


Sorry for not explaining properly, I mean the exact binaries, I think a very specific version of ProtonMail stack might be responsible...


I too have high CPU usage since the update.
I'm on Windows 10 with a i7700k and ElectonMail is is using 13-17% CPU, even when its closed to the tray.


Can you test the build shared in URL (it's v4.13.0 but with downgraded @electron).


@vladimiry This build is working without performance issues! Hardly any CPU is being used during idle now :)


Great, so you have got a workaround for now. It means that the issue lies somewhere in @electron since 16.0.0-beta.8 => 15.3.1 downgrade did the trick.


Just confirming that the build is working for me too on Windows 10.


So it's not system-specific as the issue reported to be happening in Linux and Windows 10.

I will consider publishing a new release with downgraded @electron if more reports get posted here. But would prefer to first make a new build based on a stable @electron v16 (it's going to be released next week).


+1
The controller seems to be in a bad state, and can bring the cluster health by throttling the vendor APIs

@ggriffiths any update on this fix?


I am experiencing high cpu usage on Windows 11 as well since last update


Ok, I wait then for @electron v16 stable release which gets published this week. Then I ask to test the new build and then I release the v15 or v16 @electron-based version depending on the testing outcome.


Yes, that is the same issue @shrac. I'm looking into the root cause of this issue, no update yet.


I'm asking everyone affected by abnormal CPU load of v4.13.0 to test the build shared in URL


WIP version 4.13.1 from mega link still causing 10% (high) cpu usage all the time on Windows 10.


Thanks. So a stable/today's @electron v16 reelase is also affected. It's at the moment unclear what exactly causes the abnormally high CPU usage between different @electron versions and I was not able to locate related open issues in URL but since a renderer process is affected the cause is likely somewhere in @chromium integrant. So it looks like we had to stick to @electron v15 for now.


Hopefully, a final testing build is uploaded here. Going to publish it as v4.13.1 release when someone confirms that it doesn't cause an abnormally high CPU usage.


v4.13.1-wip-2 no more abnormal cpu usage for me on Windows 10.


@vladimiry I tested the 2nd wip and I see constant 2-3% usage by two of the processes, maybe this is an unrelated issue but it is there. It was not present in `v4.13.0` with downgraded electron, it had 0% usage during idle.


@TheDcoder the recent build I shared (v4.13.1-wip-2) is built on @electron 15.3.2. The previously shared was 15.3.1-based and verified as not causing the issue. I'm ok to wait for one/two days before publishing the recently shared build as a release so we could get additional feedback from you or someone else.


For me v4.13.1-wip-2 (built on @electron 15.3.2) works fine - i see no idle cpu usage


The `remote-dev-server.sh` seems to support a `warm-up` command (similar to `installPlugins`) which could be used.


well , I write a wepack plugin to transform async to es5
`class BabelTransformAsyncPlugin {
 apply(compiler) {
 compiler.hooks.compilation.tap(
 "BabelTransformAsyncPlugin",
 (compilation) => {
 compilation.hooks.optimizeChunkAssets.tapAsync(
 "BabelTransformAsyncPlugin",
 (chunks, done) => {
 chunks.forEach(function(chunk) {
 chunk.files.forEach(function(fileName) {
 var result = compilation.assets[fileName].source();
 console.log(fileName);
 if (fileName.endsWith(".js") && result.includes("async ")) {
 console.log("babel async trans", fileName);

 result = require("@babel/core").transformSync(result, {
 configFile: false,
 plugins: ["@babel/plugin-transform-async-to-generator"],
 }).code;
 // ...require("./babel.config"),

 compilation.assets[fileName] = new ConcatSource(result);
 }
 });
 });
 done();
 }
 );
 }
 );
 }
}`


Can confirm that v4.13.1-wip-2 also fixes the high CPU usage for me (Arch Linux).


The v4.13.1 RC build assembled from the `master` branch is uploaded here. Hope someone confirms that there is no issue. It should be fine as it's based on the same @electron v15.3.2 but comes with updated @protonmail web clients.


Any more feedbacks? I'm about to publish the recently shared build as a new release.


Not yet unfortunately. Its not getting priority yet to be looked at. We'll keep pushing.


@KoenZomers - When the problem is fixed from MSFT side, will it be automatically updated in the PnP module or will we have to also fix our code?


@veronicageek depends a bit on how they decide to fix it. Most probably it will not need code changes from our end.


@U1F984 yes, but there are several issues:
- desktop IDEs right now are not running in prebuilds
- index is not stored in /workspace folder, so it is not cached and does not survive restart


If it is unfeasible to store the system directory in /workspace maybe Shared project indexes could be used. However this is an ultimate edition feature.


Does this still happen with the latest code in the master branch?


Me too. I'm in Sydney [1] as well (and I work at Gitpod). I find the latency workable but indeed it could be better. All in good time. Gitpod is right now working on getting underlying primitives for architecture solid to make it possible to deploy anywhere and keep operational support costs (human time) scalable. Hold on. It'll be worth it.

[1] URL


What would currently be the best way to update SharePoint profile photos despite of this bug?


Utilising New-PnPUPABulkImportJob achieves the same result in a roundabout way


@Valentin-Seehausen hi there, I did a test clone + `npm i` on URL - assuming that that's the repository from where your issue originated - but I couldn't even find the dependency, `npm ls ethereumjs-abi` is giving me nothing.

Can you give a short context description where the `ethereumjs-abi` dependency is actually coming from in your context?


And for everyone reading along here: while we have deprecated this package if there is something with reasonable effort we can do here from our side we can very well do a bugfix release here.

It's generally helpful if you provide more context on where are you getting your errors. What Node version are you using? Are you using the `ethereumjs-abi` dependency directly or is it installed via another dependency? Optimally provide some reproduceable code example (or eventually some CLI command lineup in this context).

Thanks!

Will reopen this issue for now until this is settled in some way.


We also encountered this issue last week, it was a deprecated dependency from WalletConnect.
This was still the 1.0 version of WalletConnect.
We dropped support for WalletConnect for now.


Yes, it originated from the WalletConnect library. I solved the issue by deleting my yarn.lock and reinstall.
Sorry that I cannot help to reproduce it. Super service, thanks a lot!


@maartendamen have a look at the documentation: URL . The idea is that you write the updates you want to do in a JSON file, upload it somewhere to SharePoint Online and then call this cmdlet to ask to process it for you. Alternatively you can also directly connect Azure Active Directory with the SharePoint Online User Profile store using URL

Permissions wise you will not solve anything with this by the way.


Should we also tackle URL IMHO, it will reduce the number of requests to only 1 every 24h (no matter how many users the cluster has).


@anshulahuja98 The following error should not occur any more with the code in the master branch.

I1111 12:01:13.229378 1 snapshot_controller.go:167] updating VolumeSnapshotContent[snapcontent-c5a12581-b9c7-430e-9c61-9bcb576a60d4] error status failed Operation cannot be fulfilled on volumesnapshotcontents.snapshot.storage.k8s.io "snapcontent-c5a12581-b9c7-430e-9c61-9bcb576a60d4": the object has been modified; please apply your changes to the latest version and try again

@ggriffiths This should be fixed with the "patch" fix?


Can you point me to the PR that fixed it? I am not very clear as to what fixed it.
And when can we expect the new release with the required fix.
Current version is 4.2.1 from August


Hello

If you still search for this rule, just found URL

Not tested..


@anshulahuja98 This following PR changes "update" to "patch". That reduces the error "the object has been modified".
 URL


There are two issues being discussed here:
1. Object has been modified issue:

I1111 12:01:13.229378 1 snapshot_controller.go:167] updating VolumeSnapshotContent[snapcontent-c5a12581-b9c7-430e-9c61-9bcb576a60d4] error status failed Operation cannot be fulfilled on volumesnapshotcontents.snapshot.storage.k8s.io "snapcontent-c5a12581-b9c7-430e-9c61-9bcb576a60d4": the object has been modified; please apply your changes to the latest version and try again

This has been fixed for all common cases in snapshotter master, which will be in v5.0.0. The version v4.2.1 will not have this fix.

2. #533 - this issue is unrelated to the above error. I've reproduced it in master without the `object has been modified error`. The object are constantly being re-queued without backoff, even though backoff is configured. I'm still looking into why that is the case.

I've been busy the past few weeks, but I'm hoping to continue looking into this one again soon.


Hi, What is the advice for libraries that depend on this project? Can we expect 3.10 support in the near future of should people start looking for alternatives? It seems like Black has solved this with their lib2to3 fork.


I plan to release a version with opt-in 3.10 support by the end of the year. If that goes well, a new release in January will have 3.10 support by default.


Need this EHANCEMENT!!! The long numbering list makes me really annoyed when lots of numbering need rewriting.
recent numbering fixing dates back to 2018...
After you press enter and generate a new list item, rewrite all items' numbering after the new item.I guess it's not that hard but don't know why nobody fix it


@MediocrityXT The PR you referenced was about continuing the correct numbering, not when you delete an item. And yes, it is hard to fix it and that's why it has not yet been fixed.


And perhaps URL and/or URL ought to mention the different versions too?


I live in Seoul, but somehow Hong Kong wins with the least latency. I assume the actual DC isn't located in Seoul, as that wouldn't make much sense economically.

I have pretty good internet connectivity (~400mbps).

Screenshot_20211210-181713_Chrome

I would be satisfied with a Singapore cluster to be honest.


Joerg Wunsch
Fri 13 Sep 2013 02:16:15 PM UTC

After someone just got me an Xmega-A3BU Xplained board, I
gave it a try, and had no troubles (beyond the rather
complicated board setup) to talk PDI to it, using a JTAGICE3.


Great!
It is very exciting to explore OLAP integrate with ShardingSphere.


I'd like to join building this feature. But it's a big feature, can you guys help to split it into several tasks? So I can help to do these tasks step by step.


Some initial tasks:

1. SQL parser of HBase SQL dialect
2. Recognize HBase JDBC url and driver
3. Parse hint by `/+ hbase */` from SQL
4. Route hinted SQL to HBase cluster

We can complete the more tasks here.


ok, I will try the first task, but it's a hard job for me, so it will take some time.


Re-opening and using to track re-enabling of `ms_extensions` by default for Cygwin and MinGW.

We have some known bugs (internally: 1447675, 1450571) with `ms_extensions` on gcc, which we'd like to address before enabling this by default. Users can manually enable it by adding `-fms_extensions` as a compiler arg.


Indeed, Typescript is a "superset of Javascript". But what means to be a superset? It means:

1. you add more features to Javascript,
2. you compile those added features to be valid Javascript.

The most basic Typescript additional rule is: "you can type a variable". Like this:

ts
const value: string = "foo"

which will be *transformed* into `const value = "foo"`.

Okay. You add a feature. You compile to make the feature work with the language. A superset of Javascript.

Now there is another feature that is added by Typescript: the fact that the extension is optional.

You can write:

ts
import { imported } from "./my-module.js"

which is valid Javascript *and* valid Typescript. That's normal: Typescript is a superset.

But because of the Typescript-specific rule "make the file extension optional for ts/js files" (not a Javascript rule), you can also write (in Typescript only):

ts
import { imported } from "./my-module"

which is valid Typescript but **not valid Javascript**.

If you add a feature as a superset of a target language, then you ***must*** compile your feature into a valid output of yourtarget language.

And, yes, "make the file extension optional for ts/js files" is definitely a Typescript-specific feature.


I will add that I indeed created a library called `tsc-esm` as a workaround for this bug, and even though it works quite fine it has been a pain to develop and every time I use it (ie 100% of the times I need to create a library written in Typescript) I feel I should not have to patch the output of the Typescript compiler like I do.

I look forward the day when I can tag my library as "deprecated" :)


I'm glad you opened this @dandclark, as I was reading through #386 and noticed this hadn't been mentioned yet.

The APG isn't going to be what can be looked at here for the definitive behavior since the `select` behaves differently depending on the platform, and the APG pattern takes a bit of both, though leaning a bit more towards macOS behavior. On macOS, the listbox always popsup when using the up or down arrow keys. Firefox on macOS allows for left and right arrows to cycle through the select's options when in the collapsed state. Safari and Chromium don't seem to behave that way, though.

On Windows, the expectation is that up , down , left and right will cycle through the select element's options without opening the listbox (firefox, chrome, edge). To open the listbox with arrow keys, someone would also need to use the alt key, along with up or down to get the listbox to popup.

Per the discussion the other day about #429, these differences in the listbox popping up or not matter a bit less since the `change` event will fire the same either way.

I'd imagine that preference for behavior may be contingent on people's familiarity with their primary OS.


@akosyakov can you link to full workspace back-up issues, etc that might be blocking this issue?


This whole discussion is absurd. Valid typescript obviously transpiles to invalid ES6 code. I do not understand in which world this can be classified as "works as designed" behavior. Adding ".js" to import statements which actually refer to ".ts" files as workaround is too wild for me. For my current project I have free choice, therefore I'm gonna switch over to CommonJS target module code. CommonJS works without file extensions. In case one can live with CommonJS target module, this is an option to get around this problem.


Progress update: I have a working CI job that produces binary wheels for LibCST with the new rust-based parser for any combination of python (3.6, 3.7, 3.8, 3.9, 3.10) & (macos x86_64, macos arm64, 32bit linux, 64bit linux, 32bit windows, 64bit windows).

Example artifacts at URL (it's a zipfile with wheels in it).
You can `pip install` the relevant wheel from the zip on the above platforms and run

LIBCST_PARSER_TYPE=native python -c 'import libcst; print(libcst.parse_module("foo(a, b)"))'

To see the new parser in action. Note: match statement is not implemented yet in these.


#566 proposes to merge the Rust-based parser. After merging I'll follow up with (much simpler) PRs to implement match statement, and parenthesized context managers.


This is already underway internally, but it's a private repo.


# Change Scope
I check the documents and the source code, and I may miss something, feel free to let me know.
## Parser
### Add a new module shardingsphere-sql-parser-hbase
- antlr4: don't need to write all rules, can add more rules if needed
- hbase parser package:
 - `HBaseLexer`
 - `HBaseParser`
 - `HBaseParserFacade`
- hbase visitor package:
 - `HBaseDMLStatementSQLVisitor`: only support DML in phase1
 - `HBaseStatementSQLVisitorFacade`
- resources: HBase SPI config

### Add a new package in shardingsphere-sql-parser-statement
Parse statements and segments

## Add a new DataType
- Implement `DatabaseType`
- Implement `DialectTableMetaDataLoader`

## Proxy
- Implement `DatabaseProtocolFrontendEngine`
- Implement `JDBCDriverURLRecognizer`

# Questions
I don't know if we can use some frameworks like Apache Phoenix to help us convert the SQL to HBase queries. But if we choose to use Apache Phoenix, it looks like shardingsphere only need to do a few things. Or shardingsphere has to "compiles it into a series of HBase scans, and orchestrates the running of those scans to produce regular JDBC result sets"


help manage my disk space
Bazel workspaces can occupy a lot of space. `bazel clean` will fix that, but first you have to know that Bazel is the reason you're low on disk, and how big each Bazel workspace is.


Apple M1 doesn't work properly
Ver 1.5.6 (release version)

16:46:15.544 [main] DEBUG org.bytedeco.javacpp.Loader - Loading class org.bytedeco.javacpp.presets.javacpp
16:46:15.546 [main] DEBUG org.bytedeco.javacpp.Loader - Loading class org.bytedeco.javacpp.Loader
16:46:15.559 [main] DEBUG org.bytedeco.javacpp.Loader - Loading /Users/lubaba/.javacpp/cache/javacpp-macosx-arm64.jar/org/bytedeco/javacpp/macosx-arm64/libjnijavacpp.dylib
16:46:15.566 [main] DEBUG org.bytedeco.javacpp.Loader - Loading class org.bytedeco.javacpp.presets.javacpp
16:46:15.567 [main] DEBUG org.bytedeco.javacpp.Loader - Loading class org.bytedeco.javacpp.Pointer
16:46:15.571 [main] DEBUG org.bytedeco.javacpp.Loader - Loading class org.bytedeco.javacpp.presets.javacpp
16:46:15.571 [main] DEBUG org.bytedeco.javacpp.Loader - Loading class org.bytedeco.ffmpeg.global.avutil
16:46:15.573 [main] DEBUG org.bytedeco.javacpp.Loader - Loading class org.bytedeco.javacpp.presets.javacpp
16:46:15.573 [main] DEBUG org.bytedeco.javacpp.Loader - Loading class org.bytedeco.ffmpeg.global.avutil
16:46:15.606 [main] DEBUG org.bytedeco.javacpp.Loader - Loading library avutil
16:46:15.607 [main] DEBUG org.bytedeco.javacpp.Loader - Failed to load for avutil@.56: java.lang.UnsatisfiedLinkError: no avutil in java.library.path
16:46:15.643 [main] DEBUG org.bytedeco.javacpp.Loader - Loading library jniavutil
16:46:15.643 [main] DEBUG org.bytedeco.javacpp.Loader - Failed to load for jniavutil: java.lang.UnsatisfiedLinkError: no jniavutil in java.library.path
16:46:15.645 [main] DEBUG org.bytedeco.javacpp.Loader - Loading class org.bytedeco.javacpp.presets.javacpp
16:46:15.645 [main] DEBUG org.bytedeco.javacpp.Loader - Loading class org.bytedeco.ffmpeg.global.avutil
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.bytedeco.ffmpeg.global.avutil
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.bytedeco.javacpp.Loader.load(Loader.java:1212)
at org.bytedeco.javacpp.Loader.load(Loader.java:1157)
at org.bytedeco.javacpp.Loader.load(Loader.java:1133)
at org.bytedeco.ffmpeg.avformat.Read_packet_Pointer_BytePointer_int. (Read_packet_Pointer_BytePointer_int.java:45)
at org.bytedeco.javacv.FFmpegFrameGrabber. (FFmpegFrameGrabber.java:363)


Transaction execution listeners
**Affects:** 5.3.10

Please provide a method to register a listener to be notified when a transaction is created/committed/rolledback/finished.


Working with query parameters
** Is your feature request related to a problem? Please describe. **

We use the so called Centrifugo subscription server. It can authenticate socket or SSE subscription requests to a proxy such as this one. But it makes requests with a list of channels to subscribe only in parameters, not in path.

** Describe the solution you'd like **

So that the outkeeper accepts channel parameters from the request and can use them in the request to the authorizer.
For example, a GET request came / path / parameters (chanel1, chanel2). The outkeeper mutates such a request (if required) and you can or cannot contact the authorizer using the parameter values to obtain approval.

** Describe alternatives you've considered **

Define channels in the form of paths on the outkeeper, mutate them if the request passed the check, make the request further through the hydrator.


SFU implementation vs mesh Mirotalk
Hi. As ever, thanks for sharing your impressive work. I hope you take a breather sometime too heh.
In addition to your different hosting environments for the two (Railway won't suffice for mediasoup SFU?), I'm curious as to your experience with tangible differences in the two implementations. Specifically, if one has aspirations for clubhouse like audio-centric use, might that sans-video approach work upon the mesh version? Other comparisons, based on your experience would also be interesting to learn. Thanks!


P2321R2 `zip`
P2321R2 `zip`

Feature-test macro:

cpp
#define __cpp_lib_ranges_zip 202110L

Be sure to implement the resolutions of these LWG issues which patch this feature:

* LWG-3692 `zip_view::`_`iterator`_'s `operator ` is overconstrained
* LWG-3702 Should `zip_transform_view::`_`iterator`_ remove `operator<`?
* LWG-3773 `views::zip_transform` still requires `F` to be `copy_constructible` when empty pack
* LWG-3798 Rvalue reference and `iterator_category`
 + Affects `views::adjacent_transform`, see [\[range.adjacent.transform.iterator\]/1.1]( URL
* LWG-3848 `adjacent_view`, `adjacent_transform_view`, and `slide_view` missing `base` accessor

and the pertinent changes from P2165R4 and P2494R2.


INC0112560 - NR 3606562 showing as rejected and also "refund requested"
### Description

Got this report from Debbie today, Oct 6th (**INC0112560**). Don't think there is any ops work, but created a bug to prevent this from occurring again.

It seems that this NR was able to be cancelled even though it was rejected first.
OR
It was rejected, even though it was cancelled first?
I can't tell from the transaction history.

Also in the transaction history, it says that when the client went to edit their NR, the entity type is "N/A". That is kinda weird, is that related?

### Reproduce
Try rejecting a cancelled name
Also try "cancel and refund"ing a rejected name

### Expected behavior
* Clients **can't** see the "Cancel and refund" button, or use the feature, if the NR has already been approved OR rejected

* Staff **Can't** reject or approve an NR that has been "cancel and refund"ed

### Impact
Bad data, incorrect actions being taken, breaking business rules

### Chance of occurring
Unsure


Gitpod in Mumbai region
_Issue tracked as part of URL

The latency experienced by me in Rajkot, Gujarat, India is about 300ms. This leads to a subpar experience. I'm on an FTTH connection whose bandwidth is 80Mbps down and 40Mbps up. Please refer to the attached screenshots. I've also attached a screenshot showing the latency of various GCP regions from my location.

It would be nice to see Gitpod deploying a cluster in India as India houses a sizeable proportion of developers and is one of the largest markets for off-shore development.

Screenshot 2021-10-10 at 9 55 18 PM
gcp_latency
<img width="395" alt="Screenshot 2021-10-10 at 10 13 08 PM" src=" URL


Slightly blurry fonts
### Describe the bug

shell
I find the bold fonts in the tabs to be a bit difficult to read. I don't know if it's an anti-aliasing issue or something else but wanted to raise the issue in case there is a way to make the font rendering in Warp crisper overall!

### To Reproduce

Just opening the application.

### Expected behaviour

shell
I would love the fonts in Warp to be more legible by default.

### Screenshots

<img width="298" alt="image" src=" URL

### Operating System

MacOS

### OS Version

10.5.7

### Additional context

_No response_


Make Pro requests public by default
Currently there is a default position of a 3 month embargo on Pro requests.

I suggest making no embargo the default, and requiring the setting of an embargo to be something which needs to be done actively, this would promote the publication of requests and responses.

Issue raised having seen a Tweet by a Pro user who appears unsure about the embargo they have set:

 URL


docs: Add a mention for how to glob image files (frontend bundler)
Currently it seems that if you want to use `webpack_path` with an image in `frontend/images/`, it's not possible if the same image isn't used in a JS or CSS file (e.g. `import "../images/file.png"` in `frontend/javascript/index.js`).

This limitation isn't mentioned anywhere in the docs, as far as I can see.

**Bridgetown Version**: 0.21.5

**To Reproduce**

1. Create a fresh Bridgetown site
2. Add an image to `frontend/images/`
3. Try to use that file on a liquid page (e.g. ` `)

**Current behavior**

An opaque error is printed to the logs:

[Bridgetown] Webpack: There was an error parsing your images/favicon.png file. Please check your images/favicon.png file for any errors.
[Bridgetown] Webpack: There was an error parsing your images/favicon.png file. Please check your images/favicon.png file for any errors.
[Bridgetown] Webpack: There was an error parsing your images/favicon.png file. Please check your images/favicon.png file for any errors.
[Bridgetown] Webpack: There was an error parsing your images/favicon.png file. Please check your images/favicon.png file for any errors.
[Bridgetown] Webpack: There was an error parsing your images/favicon.png file. Please check your images/favicon.png file for any errors.
[Bridgetown] Webpack: There was an error parsing your images/favicon.png file. Please check your images/favicon.png file for any errors.

And the emitted mark-up is:

**Expected behavior**

I would expect, based on the documentation, to be able to use any image from `frontend/` with the `#webpack_path` helper to take advantage of file hashes etc…

**Screenshots**

—

**Computing environment (please complete the following information):**
 - OS: macOS Big Sur
 - Browser: any browser
 - Browser Version —
 - Ruby Version: 2.6.6

**Additional context**

—


Migrating/Integrating WebCrypto (possibly WASM) instead of Node Forge Crypto
### Specification

The work in #155 involving nativescript meant that we are starting to consider alternatives to Node forge crypto in order to standardise our crypto API and future proof to future JS-based platforms. There are number of reasons to look into webcrypto:

* WebCrypto is a standard across ES platforms, thus enabling more potential native-implementations which can improve performance and security (prevent timing attacks)
* WebCrypto API focuses on using ES-compliant buffers like `Uint8Array` and `ArrayBuffer` which can help us standardise our buffer usage across js-db, js-id, js-workers and more, especially as workers require `ArrayBuffer` to do zero-copy
* There is existing work with WebCrypto API involving WASM to plug in functionality that isn't supported by the standard, such as providing ed25519 keys, and this will help us resolve the usage of ed25519 #168
* The `node-forge` source code isn't well maintained and doesn't have as many eyes watching and evaluating its security

Now for some background:

This comment URL explains how we came to be using `node-forge` as opposed to other cryptographic libraries.

I know that when Polykey project first started, we initially were thinking of using PGP and thus the kbpgp.js library ( URL We ended up going away from PGP due to its limited usage in a number of scenarios that we want PK to deal with. Namely end to end encrypted network communication which is a TLS issue, that makes use of X.509 certificates rather than PGP certificates. Furthermore we also had symmetric encryption/decryption scenarios like js-encryptedfs that again would not make use of PGP standards. Therefore it just lacked interoperability with many other cryptographic scenarios, it seemed like its own island of standards, the library can still be brought back in in the future if we find usecases for PK using PGP.

However in choosing node-forge, we came across a few other problems. Mainly overall-cross platform compatibility planning for mobile devices. This is not just a problem with crypto, but also other libraries that are used in our `networking` domain such as utp-native.

Here are something I found that may be relevant to us proceeding here:

* The webcrypto standard ( URL is now the official standard for cryptographic operations in browser environments. It is now being supported by all major browsers and electron
* This webcrypto standard is now taking over other deployment platforms such as in Nodejs: URL & URL
* As a standardised API, switching over to this API gives us more cross-platform opportunity as the rest of the world's development ecosystem catches up and migrates over to webcrypto standard.
* In particular are nativescript and react-native ecosystems. Currently none of them have official crypto APIs, they expect the developer to use underlying native iOS or Android crypto APIs.
* However I found out that the GUN project URL claims to be able to use webcrypto on react-native and other platforms.
* It does this through a "webview" trick. Basically this hooks into the browser runtimes that are on iOS and Android to perform the actual crypto and then return the results back to the main application. I have no idea about the performance characteristics of this trick. This trick is described here: URL and URL
* The usage of webcrypto libraries is pioneered by "PeculiarVentures" which has these main libraries:
 - URL - this could be an alternative to node-forge for all of our PKI/X.509 and TLS related functionality (previously it was claimed this was overly complex compared to `node-forge`)
 - URL - this is a generic polyfill for webcrypto, not entirely sure how it wraps the native webcrypto inside nodejs or if smooths over the differences, there is a discussion about this library in relation to other webcrypto polyfills targeting nodejs URL because this is also mentioned with respect to the webview trick, there may also be a relationship between the webview trick and this polyfill
 - They have many other crypto related libraries that we should investigate

All of this will mean that we either replace node-forge, or end up creating a adapter pattern where we plugin different crypto implementions depending on our environment. At this point in time, the `keys` domain abstracts over most(all?) crypto operations for all other domains. Except in the case of EFS which is currently pinned to `node-forge` (it may be a good idea to abstract that and expect an interface of functions for EFS).

Cross platform compatibility here isn't just about the fundamental crypto library. It's also about other parts of PK. One closely related situation is the JOSE libraries. As they involve cryptographic operations, they currently seem to "fix" their underlying crypto library as well. It would be ideal that if we standardise on a crypto library for cross-platform deployment, that we can also ensure that our JOSE library is using the same crypto library to reduce our crypto attack surface. We are currently using URL which uses native crypto depending on the platform including webcrypto. Contenders include URL (which fixes on node-forge) and URL

### Additional context

* URL - js-id also should be using WebCrypto
* #155 - will impact NativeScript deployment
* URL - can help make use of the migration to `ArrayBuffer` and typed arrays
* WebAssembly resources
 - There are 2 well supported runtimes for WASM:
 * wasm3 - supports interpretation
 * wasmer - supports JIT and AOT compilation
 - URL
 - URL
 - URL
 - URL - This describes how to use webcrypto together with webassembly when you need a custom crytographic functionality not supported inside webcrypto.
 - URL
 - URL and URL

Wasmer can compile WASM code to native code. But wasm3 is for interpretation. Why use interpetation?

It appears that in some cases interpretation can be more widely deployed. There are examples of iOS apps using wasm3. URL

It's becoming fast a standard target for many languages. Even TypeScript when ported to AssemblyScript can be compiled to WASM.

Once it is WASM, the only thing missing is broad adoption of WASI. If WASI is broadly adopted like it is in nodejs ( URL then pretty much we have a universal portable binary capable of doing relevant system operations. WASI is like a universal standard of system calls. Like a whole new POSIX standard.

Then one would just use WASM and WASI for all platforms.

### Tasks

1. ...
2. ...
3. ...


Text Rendering / Line height weird
### Describe the bug

shell
Text rendering in Warp doesn't look great yet.

There is no emoji support yet (yeah, sorry 😄)

But especially the line height seems off. The line height is a lot higher than the text and the text is positioned at the top.

Same font, same font size in iTerm 2 looks more balanced.
Also there is sometimes a small gap between the lines, which doesn't look great when for example rendering tables

### To Reproduce

Steps to reproduce:
1. Use Font `FireCode NF` / medium / font-size 14
2. then you should be able see the issues

### Expected behaviour

shell
You should be able to draw beautiful UIs in your CLI

### Screenshots

### Warp:

Capture 2021-10-27_16-53-12

### iTerm 2:
Capture 2021-10-27_16-54-22

### Line height visualization in Warp:
Capture 2021-10-27_16-56-13

### Operating System

MacOS

### OS Version

11.6

### Additional context

_No response_


Fail to upload file in IOS
Hi , thanks for great work!
I use flutter_uploader 1.2.1 to upload file and photos to server, server code is asp.net core web api ,like following code:
public Response UploadFile(IFormFile file)
{
 /* code ...*/
}
everything is ok where in Android.
but in IOS device：iphone 7 plus. it is not work.
from log, file had been uploaded ,but in server file is null（as code above）.
log:
URLSessionDidCompleteWithError: upload completed
URLSessionDidCompleteWithError: response: {"returnValue":null,"isSuccess":false,"code":"0","description":"no file！"}, task: completed
URLSessionDidSendBodyData: taskId: chillisource.flutter_uploader.upload.background.13, byteSent: 390718, totalBytesSent: 390718, totalBytesExpectedToSend: 390718, progress:100.0
URLSessionDidReceiveData:
URLSessionDidCompleteWithError: chillisource.flutter_uploader.upload.background.13 with response: ...

would you please give some help?