High RAM usage in the analysis of COSMX data

Hi, I have a COSMX 1K-panel dataset with around 26M transcripts in total. I have run this dataset just fine through FICTURE analysis in my local machine (M1 Max chip, 64GB RAM). I am testing SAINSC and I can see peaking at almost 500GB of RAM usage during calculate_total_mRNA() or calculate_total_mRNA_KDE(), then ofc the kernel breaks. I will run it on a HPC, but I wanted to ask if there is something wrong I am doing, or if there is something that could be done to reduce RAM usage during those calculations, as one of the premises of SAINSC is to be scalable and less resource hungry than other tools, such as FICTURE.
A second question is related to plotting cell types, what is the basis of this plot, I mean, is it plotting at pixel level, transcript level, bin size (500nm) level or at the bandwidth of the gaussian kernel, in pixels or um? In your example, are those dots in the stereoseq cell type plots at the 4um level (bandwidth) or bin size (500nm) level?
Thank you and great tool!

Thanks for the interest!
Based on transcript and gene count, I can't think of an obvious reason for your high memory usage. We certainly want to get to the bottom of this...
Someone more qualified than me will soon consider your problem, but perhaps in the meantime, can you please post the exact commands you are using (ideally all code from loading the data, to the point where you see 500 GB RAM usage) and some more details about your data (e.g., size of tissue section, predicted transcripts per cell)?

Hi,
let's first tackle the second question as this is a bit easier to answer.
The celltype map is assigned and "plotted" at the pixel-level i.e. bin-size (usually 500 nm but this can also be modified by you). This does not mean that this is rendered on your computer at this resolution though. This depends on your matplotlib settings etc. But that is the theoretical resolution you get if you zoom in enough.
Regarding your first question; this does seem to be odd. We definitely have seen much lower memory usage with more transcripts. In this case it would be helpful to see the exact code you are using to see if I can spot any obvious issues. It also does depend a bit on the size of your sample (in terms of pixels; you can get this by just printing your LazyKDE or GridCounts object). But with this large memory usage I would assume that sth else is going on. Can you maybe also provide the versio of Sainsc you are using?

Hi,
See answers below:

exact commands you are using (ideally all code from loading the data, to the point where you see 500 GB RAM usage) and some more details about your data (e.g., size of tissue section, predicted transcripts per cell)?

For the codes, I am following the exact codes described in the ReadTheDocs page.
Predicted transcripts per cell ~ 100
import polars as pl
cosmx_file = Path("/data") / "BMN100424_tx_filtered_transcripts.csv"
n_threads = 16
transcripts = (
pl.read_csv(
cosmx_file,
columns=["target", "x_global_px", "y_global_px"],
schema_overrides={"target": pl.Categorical},
n_threads=n_threads,
)
.rename({"target": "gene", "x_global_px": "x", "y_global_px": "y"})
.filter(~pl.col("gene").cast(pl.Utf8).str.contains("(BLANK|NegControl)"))
)
from sainsc import GridCounts
from sainsc import LazyKDE
cosmx = LazyKDE.from_dataframe(transcripts, resolution=1000, binsize=0.5, n_threads=n_threads)
cosmx.calculate_total_mRNA() >>> # peaks at 500GB RAM usage here
cosmx.gaussian_kernel(4, unit="um")
cosmx.calculate_total_mRNA_KDE() >>> # peaks at almost 260GB of RAM...

It also does depend a bit on the size of your sample (in terms of pixels; you can get this by just printing your LazyKDE or GridCounts object).
LazyKDE (16 threads)
genes: 1000
shape: (203295, 294620)
resolution: 500.0 nm / px

Can you maybe also provide the versio of Sainsc you are using?
I am using sainsc v0.2.1.

Could the issue be because there are 3 tissue sections across a large area? Should I subset the transcript by each  tissue section first or crop the area in the LazyKDE object?
Thank you!
Joao
From: niklasmueboe @.>
Date: Wednesday, 18 December 2024 at 6:56 pm
To: HiDiHlabs/sainsc @.>
Cc: Dr Joao Luiz @.>, Author @.>
Subject: Re: [HiDiHlabs/sainsc] High RAM usage in the analysis of COSMX data (Issue #25)
Hi,
let's first tackle the second question as this is a bit easier to answer.
The celltype map is assigned and "plotted" at the pixel-level i.e. bin-size (usually 500 nm but this can also be modified by you). This does not mean that this is rendered on your computer at this resolution though. This depends on your matplotlib settings etc. But that is the theoretical resolution you get if you zoom in enough.
Regarding your first question; this does seem to be odd. We definitely have seen much lower memory usage with more transcripts. In this case it would be helpful to see the exact code you are using to see if I can spot any obvious issues. It also does depend a bit on the size of your sample (in terms of pixels; you can get this by just printing your LazyKDE or GridCounts object). But with this large memory usage I would assume that sth else is going on. Can you maybe also provide the versio of Sainsc you are using?
—
Reply to this email directly, view it on GitHubhttps://github.com/HiDiHlabs/sainsc/issues/25#issuecomment-2552053163, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ARJO2O73YUCYFJTAL3BQ36L2GHAPVAVCNFSM6AAAAABT3HIYI2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKNJSGA2TGMJWGM.
You are receiving this because you authored the thread.Message ID: @.***>

Could the issue be because there are 3 tissue sections across a large area? Should I subset the transcript by each  tissue section first or crop the area in the LazyKDE object?

Yes, the issue is that the total area is enormous but there is probably a lot of empty space in between. I'd recommend splitting it into the 3 sections and process them separately.
As a further comment; regarding the loading of your data you are following example code that was written for Xenium. You adjusted it mostly but this specific line
.filter(~pl.col("gene").cast(pl.Utf8).str.contains("(BLANK|NegControl)"))
is also technology dependent. These are the names/prefixes that Xenium is using for their control probes. You might need to adjust them to filter out the control probes in COSMX.

Hi,
The transcript file I’m loading is already filtered so that specific line of code is probably not doing anything, hence I didn’t adjust.
Ok, I’ll try with splitting the file across the 3 tissue sections and process them separately. You are right, there’ll be lots of empty space, still I didn’t have this issue when running Ficture. It ran in the exact big space just fine, and quickly, in my local machine.
Thank you!
Joao
Sent from Outlook for iOShttps://aka.ms/o0ukef

From: niklasmueboe @.>
Sent: Wednesday, December 18, 2024 7:47:31 PM
To: HiDiHlabs/sainsc @.>
Cc: Dr Joao Luiz @.>; Author @.>
Subject: Re: [HiDiHlabs/sainsc] High RAM usage in the analysis of COSMX data (Issue #25)
Could the issue be because there are 3 tissue sections across a large area? Should I subset the transcript by each tissue section first or crop the area in the LazyKDE object?
Yes, the issue is that the total area is enormous but there is probably a lot of empty space in between. I'd recommend splitting it into the 3 sections and process them separately.
As a further comment; regarding the loading of your data you are following example code that was written for Xenium. You adjusted it mostly but this specific line
.filter(~pl.col("gene").cast(pl.Utf8).str.contains("(BLANK|NegControl)"))
is also technology dependent. These are the names/prefixes that Xenium is using for their control probes. You might need to adjust them to filter out the control probes in COSMX.
—
Reply to this email directly, view it on GitHubhttps://github.com/HiDiHlabs/sainsc/issues/25#issuecomment-2552140306, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ARJO2O4BV2NJHXFQCXVTKMD2GHGNHAVCNFSM6AAAAABT3HIYI2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKNJSGE2DAMZQGY.
You are receiving this because you authored the thread.Message ID: @.***>

So to the best of my knowledge, Ficture should basically only scale with the number of transcripts. Sainsc on the other hand does depend o the analysed area as well, as you have just witnessed. So yes in the case where most of the sample is empty space ficture will be much more efficient.
But just as a reference, with the size of the sample you had the RGB image of the celltype map at full resolution would already be ~200GB

Hi,
Thanks for the quick support and I’ll test again with the transcript files by sample.
From: niklasmueboe @.>
Date: Wednesday, 18 December 2024 at 8:27 pm
To: HiDiHlabs/sainsc @.>
Cc: Dr Joao Luiz @.>, Author @.>
Subject: Re: [HiDiHlabs/sainsc] High RAM usage in the analysis of COSMX data (Issue #25)
So to the best of my knowledge, Ficture should basically only scale with the number of transcripts. Sainsc on the other hand does depend on the analysed area as well, as you have just witnessed. So yes in the case where most of the sample is empty space ficture will be much more efficient.
But just as a reference, with the size of the sample you had the RGB image of the celltype map at full resolution would already be ~200GB
—
Reply to this email directly, view it on GitHubhttps://github.com/HiDiHlabs/sainsc/issues/25#issuecomment-2552208482, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ARJO2OZHHLPQJLGYUMJ62P32GHLEFAVCNFSM6AAAAABT3HIYI2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKNJSGIYDQNBYGI.
You are receiving this because you authored the thread.Message ID: @.***>


Problems with postField params

Hey,
I'm using Guzzle 5.3 and guzzle-services 0.5. When I describe a service with POST method and postField params it generates a 400 bad request error. It works well when I use "query" params instead.
Here is my code (description):
$description = new Description([
                'operations' => [
                	'createUser' => [
                	    'httpMethod' => 'POST',
                	    'uri' => 'users',
                	    'responseModel' => 'jsonResponse',
                	    'parameters' => [
                	        'first_name' => [
                	            'type' => 'string',
                	            'location' => 'postField',
                	            'required' => true
                	        ],
                	        'last_name' => [
                	            'type' => 'string',
                	            'location' => 'postField',
                	            'required' => true
                	        ],
                	        'email' => [
                	            'type' => 'string',
                	            'location' => 'postField',
                	            'required' => true
                	        ],
                	        'password' => [
                	            'type' => 'string',
                	            'location' => 'postField',
                	            'required' => true
                	        ]
                	    ]
                	]
                  ]
            ]);

And this is how I use that service:
$r = $client->createUser(array("first_name" => "toto", "last_name" => "titi", "email" => "tata", "password" => "tutu"));

As I said, it works when I change 'location' to 'query' instead of 'postField' (but I have to use post params).
Thanks for your helm.

Can you open this issue on the guzzle-services github repo please? It helps to better organize issues.

On Dec 3, 2015, at 4:37 AM, michelt<EMAIL_ADDRESS>wrote:
Hey,
I'm using Guzzle 5.3 and guzzle-services 0.5. When I describe a service with POST method and postField params it generates a 400 bad request error. It works well when I use "query" params instead.
Here is my code (description):
$description = new Description([
'operations' => [
'createUser' => [
'httpMethod' => 'POST',
'uri' => 'users',
'responseModel' => 'jsonResponse',
'parameters' => [
'first_name' => [
'type' => 'string',
'location' => 'postField',
'required' => true
],
'last_name' => [
'type' => 'string',
'location' => 'postField',
'required' => true
],
'email' => [
'type' => 'string',
'location' => 'postField',
'required' => true
],
'password' => [
'type' => 'string',
'location' => 'postField',
'required' => true
]
]
]
]
]);
And this is how I use that service:
$r = $client->createUser(array("first_name" => "toto", "last_name" => "titi", "email" => "tata", "password" => "tutu"));
As I said, it works when I change 'location' to 'query' instead of 'postField' (but I have to use post params).
Thanks for your helm.
—
Reply to this email directly or view it on GitHub.

Done.
https://github.com/guzzle/guzzle-services/issues/98


chore: Removes unused vars

SUMMARY
Removes unused vars to get rid of no-unused-vars warnings.
TESTING INSTRUCTIONS
1 - Execute all tests
2 - All tests should pass
ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Required feature flags:
[ ] Changes UI
[ ] Includes DB Migration (follow approval process in SIP-59)

[ ] Migration is atomic, supports rollback & is backwards-compatible
[ ] Confirm DB migration upgrade and downgrade tested
[ ] Runtime estimates and downtime expectations provided

[ ] Introduces new feature or API
[ ] Removes existing feature or API

@zhaoyongjie I prefer to omit the parameters here just like any other function. Especially because it's clearly typed as PostProcessingFactory which allows the developer to easily check the available parameters. It's the same as a forEach where you have access to the element and index but often the index is omitted because it's not used.
Prettier will reformat the code the same way as it would for any other function. I don't think adding eslint ignores here is the way to go but curious to hear other opinions as well. @villebro @rusackas

I really like the idea of reducing unnecessary changes but I don't think it's the case here. The variables are not being used, I don't think we should keep them to avoid a bigger diff during PR reviews. In fact, if one of these operators starts to use the arguments, then I would really like to see the signature change because it will clearly show that the variable is now being used.

@zhaoyongjie @villebro I disabled the no-unused-vars lint rules for the operators to keep the interface as requested.


SUGGESTION: Map Editor

Create a fork that is a map editor. Basically allows someone to create their own map for the program. It will be really awesome if it used the mouse with "brushes" and stuff.
This would of course only be useful when we implement map loading. It is also a Dream Goal.

In progress here


Let userguide be able to reference samples

With this change, we can now reference code bits from the samples directory. Here's how one can do it:
Include an entire file:
====
include::sample[dir="samples/gradle-plugin/groovy",files="build.gradle"]
include::sample[dir="samples/gradle-plugin/kotlin",files="build.gradle.kts"]
====

Include part of a file:
====
include::sample[dir="samples/gradle-plugin/groovy",files="build.gradle[tags=plugin]"]
include::sample[dir="samples/gradle-plugin/kotlin",files="build.gradle.kts[tags=plugin]"]
====

Include output file:
----
> gradle runTasks
include::{samplesPath}/java/application/tests/runTask.out[]
----

The samples are not assembled, only the sources are copied to the build folder (without the .adoc file) when creating the user guide.
This PR also updates the samplesPath asciidoctor attribute, pointing to the samples. The snippets can be referenced via the new snippetsPath attribute.

CI passed but I need a rebase. Running CI again.


fix: network display name

Discribe
Repair the network name displayed when prompted to switch network
Related problem

fix https://github.com/godwokenrises/light-godwoken/pull/260#issuecomment-1423857524

Switch to godwatch v0. and then refresh the page. There is no network mismatch prompt
@GitOfJason please take a look

Switch to godwoken v0. and then refresh the page. There is no network mismatch prompt @GitOfJason please take a look

if (lightGodwoken instanceof LightGodwokenV1) {
...
}

@ShookLyngs
I see that in the previous code, when the network changes, only the LightGodwayenV1 version is processed.   I don't know whether this is just an unfinished feature, or is it the case

I see that in the previous code, when the network changes, only the LightGodwayenV1 version is processed. I don't know whether this is just an unfinished feature, or is it the case

@Dawn-githup @GitOfJason This is on purpose. You can find that in v0 bridge, you can deposit/withdraw/transfer without issues. But in v1 bridge, the L2 balance could be wrong if your provider is not at the right network. That's where I made a mistake back in the #261, I said that v0 bridge needs v1 networks, the fact is v0 bridge only needs to sign messages with the provider.
So why v1 bridge needs to add/switch network of the provider? Because there's a method called getL2CkbBalance in LightGodwoken, in LightGodwokenV0 the method just simply requests the balance from L2 RPC, but in LightGodwokenV1 it requests it from the provider.
This single difference between LightGodwokenV0 and LightGodwokenV1 can be erased if we can just request the L2 balance from L2 RPC directly in LightGodwokenV1, instead of requesting from the provider. But there might be other methods with the same issue tho. So I think we can pass the issue for now, and then deal with it after a deep review?
Related segments:

LightGodwokenV0 - https://github.com/godwokenrises/light-godwoken/blob/develop/packages/light-godwoken/src/LightGodwokenV0.ts#L100-L104
LightGodwokenV1 - https://github.com/godwokenrises/light-godwoken/blob/develop/packages/light-godwoken/src/LightGodwokenV1.ts#L98-L101


Move to a more appropriate language

This is a thought that's been popping up in my mind time and again. I seem to forget half my arguments by the time I think of this again, so let me write this down and let's discuss it.
This is not a plan, and I definitely don't want to rewrite anything until I understood the limitations behind a few of the big problems that Newsboat faces: long startup, memory consumption, and how keys work.
Why rewrite
For Newsboat, I think C++ is a death by a thousand cuts:

too low-level for the task at hand. Manual memory management (reference counting helps, but still is suboptimal), unsafe things like pointer aliasing, weak typing, inexpressive type system—this doesn't help us write robust software at all.
lacks convenient build system. GNU Make doesn't understand dependencies between C++ compilation units; Makefiles are all custom and common things (like builds with profiling) have to be implemented all over again.
lacks convenient package management. (But this can also be an advantage—we would've had more dependencies if we had a package manager).

Why not rewrite

It takes time and effort that could have been spent on fixing bugs and implementing features. Counterargument: C++ might limit or undermine our ability to fix and improve.
C++ is supported on pretty much any platform. We will definitely stop supporting some platforms if we choose another language.
C++ is one of the most popular languages, thus the pool of potential contributors is large
TUI applications never resulted in a rich ecosystem of frameworks. ncurses is pretty much all we have. There is nothing better, and there are no alternatives. STFL hides this from us at the moment, but as we move to another language, STFL will definitely be gone, and we'll have to confront horrors of zillion terminal emulators, each with its own warts. We will definitely stop supporting some platforms if we choose another language.

Picking a language
Most requirements for a replacement language obviously and directly follow from "Why rewrite" points, so I won't list them here. Characteristics of C++ that I'd like to retain are compilation to native binaries.
Haskell
Been toying with it for, um, 7 years now.
Pros:

more expressiveness than we could possibly use
uses garbage collection
purity and controlled side effects give strong memory safety guarantees

Cons:

small number of potential contributors
like in C++, have to choose a subset of language that we're going to use, and stick to it
overall, the language is so different from mainstream that it'll be nigh to impossible to lure a passerby to contribute something

Rust
I read "The Rust Programming Book",  contributed to coreutils, wrote a small project.
Pros:

strong safety guarantees
relatively similar to C and C++

Cons:

the killer feature (ownership model) will deter potential contributors
looks like there are a lot of ritual even around the simplest of operations. String handling is a bright example (but need to take a look at the results of 2017 ergonomics improvements)

Go
Wrote a simple short program about a year ago.
Pros:

impressive garbage collector with very brief pauses

Cons:

lack of generics
weak protection against data races and such

Regarding current build system challenges, did You consider using CMake or Meson?

I often play with the idea of rewriting this in Rust (though lack the chops to do so) ^^. Was toying with rewrite names just yesterday, and @gnubeest bested me with "oxynews".

You should also take into a consideration that you'll need to interoperate with your existing code, i.e. cheap interop with your C++ code will be required. I doubt that it'll be possible to rewrite any project in a new language at once, so you'll need a gradual approach when old and new code will coexist in the project for some time.

Also, I have some questions about your arguments in the section "Why rewrite".
It looks like two of your arguments are directed not to the language itself, but to the ecosystem: you have complaints about your current build system and (lack of?) package management system. And, guess what, there're some modern open-source build systems and package management systems for C++ (I won't advertise any of them here, but I could give an advice if you need).
And the first argument ("too low-level") isn't about the language, it's about your code. C++ allows to write high-level applications, it's just the current newsboat code base is written in a low-level manner.
I think that with such an argument set, any rewrite will solve the stated problems, even if you're rewriting the program in the same language. And, possibly, that approach will be the most appropriate one, because it won't have any interoperability troubles and allow to port the code to the new base gradually.
Note: I'm not telling whether you should or should not rewrite the project in another language, I'm just commenting on your arguments.

@carno, I did try CMake, see #14 for results. I'll add this to the top post.
I never heard about Meson, thanks for mentioning it. Its design goals seem very fitting, but I'm put off by dependency on Python. Newsboat used to depend on Perl, which led to some complaints from people who tried to cross-compile it. I'm pretty sure Python will get us the same. But I'll try it out the next time I get fed up with status quo :)

@polyzen, I myself am considering only gradual rewrite that doesn't change the name. Newsboat contains quite a number of little gnarly details, I'd rather port them than try to recreate them from ground up.
OTOH, if you do start a rewrite, I might just steal some code from you (license permitting)… Looks like it's in my best interests not to dissuade you :D

@ForNeVeR, good point re C++ interop—I'll mention it explicitly in the requirements list. Thanks!
"Why rewrite" is indeed quite weak, mainly because I don't see a single core problem. As I said, it's a death by a thousand cuts.
Re build systems: apart from CMake, I also looked at waf, which didn't impress me at all. IIRC it didn't offer much improvement over Makefiles, so I gave up without even pushing the code to the repo. Anything else I should try (not counting Meson that's been mentioned above)?
I think I'll do some research on package managers now. I've heard of Conan, but I never tried it. I'm a bit put off by necessity to choose, though. With more modern languages, I just get a package manager and can be sure any dependency can be installed through it; not so with C++, apparently. I admit that's more of an emotion than a rational response :)
Re "C++ allows to write high-level applications", in short I want a language that not just allows, but also helps.
I'm using boyscout rule to gradually drag the code towards more high-level C++, but it's too slow to my taste. It's 2017 and we're still using C++11 because that's what majority of compilers support. We could probably move to C++14 already, but it was a minor release from my POV, so no hurry. A lot of useful stuff isn't even in C++17, so won't become available till 2020. And then it'll be what, 3 to 5 years to get the compilers? So by 2023-2025, I probably will be able to use cutting-edge technologies like modules and such. But I'll still have to be aware of weak typing, still put my signatures in both .h and .cpp, and so on.
And then some things will never be fixed because the Committee doesn't like to break existing code. I am just re-evaluating how relevant this stance is to me.

A few more package managers to look at: Build2, Conan, Mason, pacm (seems abandoned), Yotta.

I agree with points of @ForNeVeR.

too low-level for the task at hand

I disagree, but I think I know what you mean by writing so.
It feels kind of low-level in some parts of the code, yes, but it doesn't have to be like that. I saw programs written in C that read like some 'high' level language and you didn't feel encumbered by lack of abstractions (built into language) at all. I believe that it comes more from programming skill level (and I don't mean by saying so that I have achieved some high level!) and experience rather than by chosen language. Yes, C++ allows you to fiddle with bits, but it also allows you to build many high-level concepts (generating some problems in the process, for which it is hated by many). That's why it's sometimes called "a flexible shotgun".

lacks convenient build system
lacks convenient package management

It's not a language problem per se, but I understand that it is a strong point of concern for you as a maintainer.
I'm a little scared by Makefiles myself, but on the other hand they are venerable in the UNIX world and many people had to fight with them (for a long time), so they are pretty stable and many people can offer a hand. For an open-source project I guess it's not so bad.
I also have to say that I don't believe in silver bullets, and the package managers from the languages you mentioned probably have problems on their own (and maybe they are a moving target in terms of rules/stability). The bright side might be that they have more active/welcoming community that can offer help.
As for the languages you mentioned, I wouldn't be able to help in any of them.

Haskell

I sadly don't know it yet. It's definitely on my to-meet list, but not now, and even if, I don't think I will be able to express myself freely in it for some time. I think you will probably loose most of C++ devs (maybe even start from scratch?), but I don't know how about attracting new ones interested in Haskell? Hard to tell. Change of programming paradigm seems like a big deal to me.
On the other hand, you seem pretty in love with it, and your happiness as a maintainer should be a top priority for all of us. :)

Rust

I haven't tried it. I didn't jump on the "rewrite World in Rust" bandwagon (yet). It's just my opinion, but it also seem to come with a specific political baggage. This can paradoxically broaden the contribution range.

Go

Interesting language, also want to try it out, but I have the same problems as with Haskell. Most of the folks writing in it are developing some kind of "servlets", I don't know how it is like in utility apps.
I would like to say that there is a D programming language which seemed interesting, but I don't think it has any big-player backup like the others do, so contribution factor will probably be very low (in the near future). Mentioning it more for the love for the concepts than anything else.
 I would vote for refactoring the most offending (in terms of code cleanliness/libraries used) parts of Newsboat and put it in C++ 11/14 range which is pretty nice in terms of standard library. The more code is easier to maintain/extend, the more fun it is to work on it (IMO), which can lead to more contributions and easier development.

Thank you, @kmws! I've heard of D before, but haven't tried it yet. I'll mull over your technical points for a while, but there's one thing I want to point out right now:

On the other hand, you seem pretty in love with [Haskell], and your happiness as a maintainer should be a top priority for all of us. :)

That would be true if I wanted to be the sole developer, but I don't. So it would be nice if more people were happy, and thus felt motivated to contribute.

Thanks!

On the other hand, that's a sad decision for me, because I can't join this boat (:-)) and contribute further

Well, if you're into refactoring and figuring out other's code, there's still plenty of work to do. Documentation needs attention, too—it has been gradually extended for years, and might benefit from restructuring and streamlining.

Hmm, might be a reason to start learning rust as I have meant to for quite a while :) (Not that I'll have a lot of time to contribute huge chunks of code I guess)

I vote for Haskell, if only because it's the only language out of the three that I actually know :wink: :joy:

This thread was linked here: https://groups.google.com/forum/#!topic/newsboat/y3cylBEiDhI
Are there any other resources, like a meta thread for the port? For example a discussion how the transition phase would look like, especially if a release is published during that time. I'm involved with rust on debian so I might be able to help with some of the issues.


Model Server header

This is a model for the Server header as for #2011. User-Agent and Server parse the same way so I unified the parsers and component classes:
AgentProduct -> HeaderProduct
AgentToken -> HeaderToken
AgentComment -> HeaderComment
I'm not sure if this is the right approach an it breaks mima. Feel free to comment
Should Blaze return a server header like
Server: blaze-http4s/0.21.0?

We're calling it HeaderProduct to avoid a clash with scala.Product?  I kind of just want to call it Product to maintain correspondence with the RFCs, but I'm not sure about unintended consequences.  The Token type appears frequently in the spec and could be used in a lot of places.
We haven't been very principled about when these model types are in org.http4s or org.http4s.headers.  For example, MediaRange and TransferCoding and LanguageTag are all things that appear in headers but are in the base package.  Why not these?
We could add deprecated type aliases and vals to help people move.
There should be a Server header option on BlazeServerBuilder.  Whether it defaults to Some(http4s-blaze/0.21.0) (accurate! branding!) or None (security by default!) is an open question.

Yes, Product sounds too generic and AgentProduct is (I think) too close to User-Agent. Same with Token I think it is too generic

Should we move them to the root package?  I think probably yes.  Most of the "values" are in the root.
Http might be a good prefix as well for things that are too generic without.

Rebased and updated as suggested

Bump

I'm converging to this encoding. WDYT?
final case class ProductIdentifier(value: String, version: Option[String] = None)

final case class ProductOrComment(value: Either[ProductIdentifier, String]) extends Renderable {

final case class `User-Agent`(product: List[ProductOrComment])

I like your ProductIdentifier idea to disambiguate from a scala.Product. I think making the sum type an Either in a unary case class is odd, and a User-Agent must start with one ProductId.
sealed trait ProductIdOrComment
final case class ProductId(value: String, version: Option[String] = None) extends ProductIdOrComment
final case class ProductComment(value: String) extends ProductIdOrComment
final case class `User-Agent`(product: ProductId, rest: List[ProductIdOrComment])

That User-Agent could nearly be a NonEmptyList[ProductOrComment], but the head must be a ProductId.

I rebased and squashed to make it easier to review. It seems there is a flaky test on blaze client?

I added the suggested comments

Finally 😉


with_timeout does not work as expected with search

The with_timeout method should cause the next operation to run with the specified timeout. When that operation is a call to search this does not work as expected. Specifically, because internally search is implemented as a wrapper around streaming_search_with, it seems only a part of the required operations are actually executed with the specified timeout.
If I use iptables to DROP packets to the LDAP port before running the search operation, the search will block forever, despite being ostensibly run with a timeout.
The stream.ldap.timeout field gets reset to None by the take in Ldap::op_call (line 121 in ldap.rs), called from SearchSteam::start_inner, called from SearchStream::start. Then, SearchStream::next_inner executes an operation using the timeout from self.ldap.timeout, which is now None.
I suspect the bug is that SearchStream::next_inner should be using self.timeout, and not self.ldap.timeout, but I don't understand the code enough and would need some confirmation.

You're right, ldap.timeout isn't re-initialized and the connection hangs. Try this patch:
--- a/src/search.rs
+++ b/src/search.rs
@@ -663,6 +663,7 @@ where
         }
         self.ldap.op_call(LdapOp::Search(tx), req).await.map(|_| {
             self.state = StreamState::Active;
+            self.ldap.timeout = self.timeout;
         })
     }

I'll have to re-analyze adapter chaining, but the purpose of setting self.ldap.timeout to the initial value is to preserve that value for use by adapters. Using self.timeout in next_inner() may well be correct, regardless.

I went with using self.timeout (the value from the stream instance) in next_inner(), since it works as well.

Awesome, thank you!


FT-5: add endpoint to calculate currency rate

Details
We need to provide a way to get not exchange rate, but actual currency conversion
Technical Details
Required API:

GET /restapi/v1/exchange/

Requirements: currencies should exist, negative value is valid
Query parameters:
from (String) - currency short name.
to (String) - currency short name
amount (Float) - from amount to be converted
Response: 200 OK, json - everything is OK

{
    "<from>_<to>": "<rate (Float as String)>",
    "toAmount": "<amount of "to" currency (Float as String)"
}

Response 404 Bad Request, json - currency not exists

{
    "message": "Parameter [<parameter name>] is invalid"
}

Approved for 21.4


NSC_NextJS_Sprint_7_357_Change_Edit_to_Done

Change the "Edit" button to "Done" when finish selecting role

Hi @MuhammadNSC ,
I have not seen any changed from edit to done yet. Am I missing something? Thank you
https://github.com/SeattleColleges/nsc-events-nextjs/assets/91504156/cffa726c-508d-4b21-81c3-d1450609767b

Hi @MuhammadNSC ,
I have not seen any changed from edit to done yet. Am I missing something? Thank you
https://github.com/SeattleColleges/nsc-events-nextjs/assets/91504156/cffa726c-508d-4b21-81c3-d1450609767b

Yeah that's odd, it's working for me. There was another commit made so it might work now

Working well on my end! I changed from admin to creator and saw the button text change to Done

I think it would also be nice to change the icon to a checkmark in a future PR!


Visual issue after compile the GIT version

Hi
Issue
When compile the decorator everything seems to go fine but when i'm trying to use the tab title and the edge of the window are in blue, regardless of what they have configured in the appearance menu.
Replicated in haiku_x86 hrev57377 and HAIKU X86_64 hrev57367 by the User Nexus6h in the Telegram Group today.
Screenshots of the issue

Regards :-)

Sama issue here on beta4, when compiling using "make", the Decorator is blue. Also ControlLook doesn't work at all in beta4.


Fix condition that is always false due to a typo

If a float is undefined, its comparison with zero does not produce meaningful result.
The intended behavior is to check for zero only if the value is NOT undefined, because the comment states the scenario of "no children" which matches with the value being equal to zero, and that contradicts "&& IsUndefined" part of the condition.

Hi @Hexlord!
Thank you for your pull request and welcome to our community.
Action Required
In order to merge any pull request (code, docs, etc.), we require contributors to sign our Contributor License Agreement, and we don't seem to have one on file for you.
Process
In order for us to review and merge your suggested changes, please sign at https://code.facebook.com/cla. If you are contributing on behalf of someone else (eg your employer), the individual CLA may not be sufficient and your employer may need to sign the corporate CLA.
Once the CLA is signed, our tooling will perform checks and validations. Afterwards, the pull request will be tagged with CLA signed. The tagging process may take up to 1 hour after signing. Please give it that time before contacting us about it.
If you have received this in error or have any questions, please contact us at<EMAIL_ADDRESS>Thanks!

I don't care about this particular PR being merged, so I won't sign anything, I am just sharing my note on the code.


Fix use after free in CRYPTO_mem_debug_malloc

If the internal malloc fails, the allocation was
passed to OPENSSL_free, although the OPENSSL_malloc
does not know about that error and returns the
pointer anyway.
This is 1.1.1 only, that feature seems to be removed on other branches

This PR is in a state where it requires action by @openssl/committers but the last update was 30 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 61 days ago


Fix Docker image ID changelog typo

Current dependencies on/for this PR:

main

PR #114   👈

This stack of pull requests is managed by Graphite.

Merge activity

Dec 17, 5:22 PM: @@NathanFlurry merged this pull request with Graphite.


Change modal ifdeletable

changed modal
1 - cancel was changed to close on both sides
2 - add to routine was taken off on the builder side
removed a couple of imports that were not being used
removed the infoDialog.js file that is NOT being used

merged this one myself because there are no conflicts


better navigation & management for (complete) recipe-list

[ ] usually the view is limited to 12 recipes and you can just click older (or newer), but there is no way to go to the first/last site with one click or even to one particular in between.

[ ] and when you start browsing with the normal view (or use the text-filter), you have no clue how much recipes/sites you can browse.

[ ] an option for different sortieing (like mentioned @ https://github.com/RyanNoelk/OpenEats/issues/195#issuecomment-318370346) would be nice.

and when you start browsing with the normal view, you have no clue how much recipes/sites you can browse.

this also occurs when you use the text-filter.
maybe just add to the left or right of the text-filter a counter like recipes_filtered/total_recipes, or just the recipes_filtered, since at the beginning the both numbers are equal.

additionally the ability (at least for the admin) to sort the recipes not just by date (is it the creation or the last edit?) may be a nice feature. thinking of some options like sorting by:

creation date
last edit
rating
difficulty level (when implemented)
time consumption (overall)
alphabetically

closing this in favor of https://github.com/RyanNoelk/OpenEats/issues/287


How do I improve the resolution of Realsense Viewer?

I am imaging Lego bricks at about 200-300mm.  I want to get more resolution from the viewer.  I want to get sum-mm resolution (e.g., .1 or .01mm).
I have Controls->Depth units set to 0.0001 (i.e., 0.1mm).  I have Depth Table ->Depth units set to 1000.
When I hover the cursor over the depth map, it only shows 3 digits and the color map is very broad.  I want to visualize the bumps on the Lego bricks but don't know how to do it.

You are adjusting the depth setting. You should be adjusting the “visualization” instead. There are adjustments for that in the viewer. You can set colors and ranges.
Returning to the depth settings, I do want to add some comments. When viewing something near with the D415 (I presume that is what you have) you will benefit from reducing the depth units from default 1mm (1000um) to 0.1mm (setting of 100). And in order to get to this near distance you also need to do one or both of the following 1. Reduce resolution from 1280x720 to 480x240 which will reduce the MinZ from about 46cm to about 15cm. 2. Under advanced mode you change the disparity shift from zero to higher number.

Regarding the on-screen readout in lower left of your image, the precision of that number is not adjustable in the app.

Thanks for all your tips and information.  Regarding the visualization, this is how I have it set.  As far as I can tell, min/max only clips data but doesn't affect color ranges.  Do I have that correct?

Yes, I have a D415 camera.  If I set the Depth units to 100, then I get 0.1mm resolution, so if I set it to 10, then I get 0.01mm resolution?  Yes, I have been adjusting the disparity shift.
Also, why does reducing the resolution affect the MinZ?  What is the physics behind this?  I don't understand that part.  I would think that reducing the resolution would affect other things like spatial resolution, FOV, image transfer rate, etc.  So I don't understand how it would affect MinZ.

The reason the resolution affects the MinZ is that we have a hard limit on the number pixels we search when compare left and right images. This limit is 126 pixels. But if there are fewer pixels in the image it means that you can effective search a  longer in terms of fraction of image.
Yes the visualization knobs are the right ones. To see the effect you may have to change the color scheme.
Regarding depth units, yes the smaller the number the smaller the depth steps that get reported. This is explained in more detail in the white paper talking about the best known methods for tuning performance. The paper also explains the MinZ.

Thanks for explaining about MinZ and depth units.  I will review the tuning methods paper again on these points.

Hi @nbonwit, do you have a chance to try agrunnet's suggestion and review the white paper? Do you need further help on this?
If we don't hear from you in 7 days, this issues will be closed.


Set up R/RStudio on GCP

Since many members of the Analysis team will be using R/RStudio, it'd be good to figure out an efficient way to set those up on GCP.
Some walkthroughs that I'll check out in the coming days:

https://medium.com/analytics-vidhya/running-r-rstudio-in-a-gcp-vm-21a8458ef086
https://towardsdatascience.com/r-studio-server-on-google-cloud-dd69b8bff80b
https://code.markedmondson.me/r-at-scale-on-google-cloud-platform/

We should also consider https://terra.bio/try-rstudio-in-terra/.

The first walkthrough above worked fine after a couple tweaks.
Basically spin up a VM, add a firewall rule, install R, RStudio Server and their dependencies, add user and that's all.
Bucket mounting with gcsfuse also works nicely, though need to figure out some permissions.
Nice GCP learning exercise overall.


HTTP Error 403: Forbidden

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm asking a question and not reporting a bug or requesting a feature
[X] I've looked through the README
[X] I've verified that I'm running yt-dlp version 2023.03.04 (update instructions) or later (specify commit)
[X] I've searched known issues and the bugtracker for similar questions including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Please make sure the question is worded well enough to be understood
I am not able to download this video: https://vz-c8dfe676-56e.b-cdn.net/ad337427-4965-4842-8fe1-ca6d53520722/1920x1080/video.m3u8
Is there any solution to download it?
Thank you in advance.
Provide verbose output that clearly demonstrates the problem

[ ] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] If using API, add 'verbose': True to YoutubeDL params instead
[ ] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
No response

Add correct referrer to b-cdn urls and it will work. for yours following will work.
--add-header 'Referer: https://b-cdn.net/'

Add correct referrer to b-cdn urls and it will work. for yours following will work.
--add-header 'Referer: https://b-cdn.net/'

It works! Thank you very very very much! You saved my life! I was trying to solve it almost a year.


Conflict with default scene.

Godot version:
3.2 ( from 3.1)
OS/device including version:
Windows 10
Issue description:
Play scene - buttons do not work as intended (F5 and F6, and Ctrl+Shift+F5)
Our project runs flawlessly in 3.1. However by clicking any of those, the latest 3.2 will always play the default scene (in the config) .
Removed the path in default scene setting, F6 and Ctrl+Shift+F5 will launch the default Godot project manager (list of launchable projects). F5 will ask for scene.
Changing the default scene with another scene will temporarily fix the issue. But it will repeat again as you want to F6 one another scene.
Steps to reproduce:
I am not sure how to reproduce this. A new project will not show this issue. But our project has already reached a big scale. There must be some conflicts in one of the conflig files. Please help :(
You would reproduce the bug like this : Create 2 scenes, A and B, make A default scene, close A, and F6 with B. if the game runs with A, it is the bug.

I tried, and it still shows the same issue. The empty project just lets me reset the default scene. As I repeated all steps mentioned above, It still does not change.

This issue occures when you have main scenes as .res, changing them to .tscn will solve the problem.  Most of my assets are saved as .res, they still run properly.

Why close it? It seems you found a workaround/explanation but the bug is still present, no?

Why close it? It seems you found a workaround/explanation but the bug is still present, no?

i thought it was a mistake on my end -.- So do you think it is a bug?

Ok, I managed to confirm the issue. The problem is that you can't run scenes with .res extension (unless it's a main scene).
.res do appear as one of the extensions when saving scene

so either the bug should be fixed or the extension removed from the list.

While .res and .scn are exactly the same thing, I think it's likely fine to remove .res from the allowed extensions to reduce confusion. .tres is already missing even though it's also equivalent to .tscn.
On the other hand the engine itself should still be able to run scenes using .tres or .res if users do happen to force using these extensions for some reason. But if it works already with the main scene, I guess it's just the Play Scene code which adds this restriction.

This is likely a regression from #33149. I guess I should allow using .res and .tres to run scenes as well.


M3-5912: Vite

Description 📝

Use Vite instead of Webpack

ugh, node version needs to be changed for internal CI


Drawing Texture from C++ Causes SIGSEGV

I'm not sure if this is an issue here or in Godot, but any attempt to draw a Ref will cause a segfault. Neither owner->draw_texture nor Ref<Texture>::draw will work.  However, all other draw calls work fine (e.g: owner->draw_rect).

Never mind this.  owner->draw_texture requires all four arguments to be called.


STM32 DAC: update to new PAC, combine ch1/ch2, fix trigger selection

To be considered alongside https://github.com/embassy-rs/stm32-data/pull/306
The current trigger selection is wrong for almost all STM32s and needlessly splits into TSEL1/2 even though no chips make a distinction based on channel (!). However, there is significant difference in the TSEL enum between chips, so it's very burdensome to define it in the PAC. The PAC PR above reworks DAC support to improve accuracy and compatibility between all STM32s, and changes TSEL to always take an integer instead of an enum.
This PR adds an enum of trigger sources for every STM32, accurate except for where triggers differ between DAC1/2 and where triggers can be remapped in SYSCFG (indicated with doc comments), and updates the current driver to use it.
There's a few other changes:

The existing mode: u8 is changed to a Mode enum, since it's now common across supported DAC versions
build.rs was cleaned up and some new configs added for flashsize_X, package_X, stm32l4_nonplus, stm32l4_plus, needed for the new trigger selection enums

Still to-do:

[x] Test on hardware
[x] Look for opportunities to refactor the two channel structs into one now that tsel is common
[x] The driver needs to enable the now-available HFSEL when required (peripheral clock above some threshold on some chips)

It looks like the CI is still using the old PAC (references to set_tsel1() which doesn't exist in https://github.com/embassy-rs/stm32-data/pull/306), despite changing embassy-stm32's Cargo.toml. Did I miss something?

change it in dependencies and build-dependencies. patch only applies if you build embassy-stm32 as the root crate, which breaks when building the examples because it's a dep there, not a root crate.

The latest (WIP) commit is a fairly major rework of the DAC driver: there's now just one DacChannel type, instead of separate channel 1/2 structs, which is possible now there's just one TSEL and it reduces code duplication.

I've added critical sections where the previous driver didn't have them; I think they're necessary since the control registers are shared between channels 1 and 2
I've retained enabling the channel on creation. Ideally we wouldn't, so it's possible for users to configure a channel without causing it to drive its output (because DACs can be set to internal-output-only), but right now we require the output pin in new(), so it's OK. I think ideally I would change this so the pin is only required when enabling an external output mode, but that will require rethinking the mode enum a bit too.
I've disabled trigger mode by default, because as it stands you don't know what the default trigger source is (it's different between DAC versions). We could default to software trigger, but that seems pointless for the default case because you might as well just have triggering off and update the DAC as soon as you call set(). Using software triggering is a fairly niche case, I think, and for the rest of the triggering use cases I think it makes sense to select a trigger source before enabling triggering.

I'm not sure about the T::enable_and_reset() reference counting; is it correct to call it twice, since each channel will then call disable on drop? The old driver didn't call it twice or ever call disable. It also seems like the old driver has to work around the "DAC12EN" bit in H7, but its implementation of enable_and_reset_with_cs() and disable_with_cs() doesn't touch the reference count.
Finally, the DMA trait business seems a bit unsatisfying as-is. If I just have one DmaChannel trait, I can put the fn write() inside the general impl block with a bound on DMA: DmaChannel, and everything works for most devices, but for some reason on H7 (and maybe others), implementing the DMA trait for both DAC CH1 and CH2 causes a conflicting implementations error. Instead, I kept a DMA trait per channel, then duplicate the impl for either concrete N=1 or N=2 with different DMA trait bounds each time. I think this works, and it's better than the total duplication we had before, but I wonder if there's a nicer way to do it.
Still to-do:

[ ] Write HFSEL as required
[ ] Test on hardware
[ ] Document Dac methods, add methods for using both DACs together (simultaneous data updates, DMA into shared data register, etc)

This is tested on F4 and H7 successfully, which covers the two main variants of the DAC peripheral at least.

I've implemented all the features I wanted to. Someone could add DMA into the dual registers but perhaps it can wait until someone needs it.
I added type aliases for DacCh1/DacCh2 which match the old type names, which makes updating code a bit easier.
I'm not sure about the H7 RccPeripheral refcounting business that I mentioned above.
I added new_internal() to support creating without an output pin, which then sets the DAC to a mode where only the internal peripherals are driven. However, a user could manually change the mode back to one where the output pin is driven. Since we allow safe writing to the PAC registers anyway I'm not sure there's really much to be done about this; I think only a "sophisticated" user is likely to use it, and for them it's useful as otherwise there's no way to have ch1 be external and ch2 be internal, for example. Still, it is a potential footgun. As it stands we don't support setting the sample-and-hold times or other configuration needed for it, so they'd be using the PAC directly anyway.

I haven't changed the Value enum; it's a little awkward but probably still better than having separate methods for each type of data alignment.

bender run

bender run


bug: unable to find shadow.pb.h Even though including it in various places

various places include:
SDK hidden files
src folder
include folder
This WLED application has stable support for PlatformIO SDK so we proceeded with it.
The application has compiled normally before adding golain funcs.
We are planning to use golain shadows to call the LED functions. We are facing few errors.
I've modified platformio.ini as mentioned in the golain-platformio-sdk, but it didn't work.
Once these errors are resolved, we will be able to proceed with testing and development of application.

I should be able to compile it after adding golain func, without any errors.
Yes device name and root topic was added and removed with
build_flags = -D "MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED"
this is preview of the .ini file

This is preview of main.cpp

Is the platformIO sdk stable and on latest changes?

To Resolve this issue, I added the header files in include folder
For refrence:

and used this parameter in platformio.ini
build_flags = -I include
for frefrence:

It detected the header files and was able to compile and move further.


OFFLINE www.react-toolbox.com

Yeah, the site being down and the lack of commits in October make me afraid this repo is losing momentum... I hope not because it's an awesome resource!!

Please don't make us move out of the framework. I am already in search of other solutions.

@chadfawcett host a temporary version on https://peddler-jam-26368.netlify.com.

Has anyone tried contacting @javivelasco directly via email/twitter? Wonder if he's still planning on maintaining this.

The react-toolbox.com domain is blocked inside Netflix and this is the feedback from our DNS team at Netflix:
"Our research team got back to us about the domain you sent us and stated that the domain is being blocked currently due to it's IP address (198.54.117[.]212).
Currently 198.54.117[.]212 is hosting more than 1000 malicious domains and will be remaining blocked for now.
If and when react-toolbox[.]com changes its hosting IP, it will no longer be blocked.
For more details on why we block these types of IP addresses, please check out our block entries regarding bad neighbours located at https://blog.opendns.com/2014/08/21/websites-and-bad-neighbors/."
Do you guys need any help with this?

why not to use the github pages for this? :meat_on_bone:

@pablolmiranda well the domain expired, so dns does actually point to a bad host. Seems like the only help they could use is with renewing the domain, which I'm guessing is financially constrained.
Until then everyone should just browse the cached version: https://web.archive.org/web/20171020084703/https://react-toolbox.com#/

I get the impression Javi is working on a big update, extracting style-agnostic components & HOCs separately and maybe removing css-modules in favour of styled-components.  He talks about it here: https://www.youtube.com/watch?v=uFkyn9cFkO8

Hi guys, an update:
Last two weeks were super crazy.  I'm working on a different approach that I'm pushing very soon as @dan-kwiat told in the previous comment.
The domain issue is not actually related. Currently @soyjavi owns react-toolbox.com and he has been completely unreachable to renew the domain. I didn't wanted to change the domain name at first but I have no other choice. From now own you can access www.react-toolbox.io.
Thank you for your patience guys


Add pow documentation (#210)

Do the checklist before submitting the PR:

[:heavy_check_mark:] Have you read the guidelines mentioned in CONTRIBUTING.md?
[:heavy_check_mark:] Have you squashed your commits?

Q: What version of Node.js you've used in the project? (e.g. Node v10.11.0)
A:v11.10.1
Q: Mention the Issue Number! (e.g. Fixed #8)
A:#210

Give additional information regarding the PR below:

Codecov Report

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

@@          Coverage Diff          @@
##           master   #211   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files          80     80
  Lines        1451   1451
=====================================
  Hits         1451   1451

Continue to review full report at Codecov.

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


Fate-Grand-Order_JS

202/5000
good sorry for bother but they can do the lua script to js is for robotmon I'm new in this programming nose how to do it for a bot that I found but does not run files lua sorry for the inconvenience caused

I'm really sorry, but I don't understand what you're trying to say. @_@

I'm really sorry, but I don't understand what you're trying to say. @_@

was that if someone helped to make a script in robotmon for farm like the Japanese and Chinese do https://sites.google.com/view/fgoautoscript?fbclid=IwAR2MEF_bi9HkaJg5nVJy4QTJaztWBr75CYht1oCf4V9kf9uI1aRzCT8RTZw

@29988122
wow a competitor XD
@potchy
https://sites.google.com/view/fgoautoscript/擷取好友從者禮裝?authuser=0
This crop support servant/CE feature not bad (if you need "human" translation let me know)

I would do it for na but nose for programming so I came to ask for help here t---t

I doubt we will move to JS, and @29988122 knew about it few months ago (sorry wasn't aware of it). It will be a duplication of effort for both us and that JS script owner. But still it's up to @29988122 to decide.
So as a contributor all I can suggest is to use Ankulua to run our script, or make a request to the JS script owner to support EN server.

I think the competition between Robomon and Ankulua is somewhat healthy XD
Cheaper and better product is always welcome in the b2c field.

Besides that, I tend to make things "as-is" - we maintain ours in Lua, they maintain theirs in js. (As discussed before with you guys, this is a small project, so XD)
And the EN server support..Since this repo's MIT license, I don't mind if they use our cropped images..XD
Maybe @fauricio9656 can ask them for help I guess?

Why do you want us to port it to Robotmon though?  I wouldn't do it just because.

I doubt we will move to JS, and @29988122 knew about it few months ago (sorry wasn't aware of it). It will be a duplication of effort for both us and that JS script owner. But still it's up to @29988122 to decide.
So as a contributor all I can suggest is to use Ankulua to run our script, or make a request to the JS script owner to support EN server.

ok I understand sorry for the inconvenience

I think the competition between Robomon and Ankulua is somewhat healthy XD
Cheaper and better product is always welcome in the b2c field.
Besides that, I tend to make things "as-is" - we maintain ours in Lua, they maintain theirs in js. (As discussed before with you guys, this is a small project, so XD)
And the EN server support..Since this repo's MIT license, I don't mind if they use our cropped images..XD
Maybe @fauricio9656 can ask them for help I guess?
I said it because some of us can not pay the license for any reason and sometimes I would like to farm all night because in the day I can not do programming to do all the robotmon said they will not do it for na (sure they hate us for the massive troll the pillars of solomon) if someone helps me in this miniproject I would be grateful because it would help  ; _;

Why do you want us to port it to Robotmon though? I mean, how is it better than AnkuLua? I'm talking about features, not price. I wouldn't do it just because.

of course it is better AnkuLua but the bad is the trial version of farmear 30 mints some have the slow internet that in 30 minutes farmean 1 map I do not complain about the price if I had the money I would pay the pro version but I come to ask for help because it is easier for some leave all night farmeando I try to get up every 30 mints at night to wait to activate again while in robotmon one can leave normally all night but all robotmon is for Japanese and Chinese server hopefully not bother my message for my post to ask for help t---t  I just want to make everything easier for those of us who have to get up at dawn to farm bound or ce and have to study or get up early and do not have time for anything

I suggest you to instead of trying to get up every 30 min at night to rerun the script, you are better off spending 3 sleepless night to learn JS and how to code in Robotman, or get a freelance or something to have the money.
There is no such thing as "cannot" in learning, you are either lazy or the end goal not important for you. Even @29988122 managed to wrote the initial script before I came, and he did it without prior experience in coding in uni (correct me if I'm wrong).
And some facts about me. My "formal" education on coding was until pointers in C++, and at that time I did not even managed understand what that "monster" is. What I know about coding today was countless nights of minimum sleep!
Sorry if I sounded harsh, but it just triggers me when someone say he/she can't learn/do something, due to time/money/age/whatever. I have no knowledge of how your life is currently, but I'm sure everyone here does not have an easy life.
If you want something, you'll have to pay a price.

Robotman's API seems to be fairly solid and the UI looks nice, but it would be too troublesome to port everything we already have to it. You can probably get that one running by replacing all images with ones from the EN server. Here's the project's repository: https://github.com/r2-studio/robotmon-scripts/tree/master/scripts/com.cooper.FGO
But honestly, it's just easier to drop US$3.5 for AnkuLua's monthly license. When there aren't any events going on or you have the time to farm manually, just don't buy another license until you need it again. I'm cheap, so I do that pretty often. 😄

sure they hate us for the massive troll the pillars of solomon

LOL

hello sorry for disturbing change the images but I have an error comes in and do not choose the friends then it stays so do not choose anything @potchy would help me pick it up if you can t--t
image_jp.zip


support startOffset and endOffset in file listing

Similar case found in java as well see  https://github.com/googleapis/java-storage/issues/424
check the JSON API for more info.

Let me know if I'm mistaken, but we do actually support the user passing startOffset and endOffset, but TypeScript users don't see it as an accepted parameter because it's not listed in the GetFilesOptions interface. This is an unfortunate thing about TypeScript compliance-- we designed the API to be as transparent as possible, in that we will accept anything the upstream API does, but TypeScript kind of forces us into a whitelist model where we have to be explicit about each property. There are probably many cases of leaks like this across our APIs, where we're not listing 1:1 parameters that are accepted. And I don't think that should be the goal, as we'd eventually go stale and list a property that has been deprecated or overlook a property that was recently added, either misleading or blocking the user, as we are in this case.
Anyway 😄  I don't think there's much we can do about this. Please let me know if I'm incorrect about any of that, or if there's another way to solve the problem.
P.S. I found we're missing includeTrailingDelimiter as well. While you're in there, want to add that in as well?

@stephenplusplus you are right. I fully agree with you Thanks 👍


fix(client): hide no file or content error when file is uploaded

Currently typing in the box is the only way to hide the error message, uploading a file does not.
This PR fixes it
Current:

Fixed:

One day I'll remember to lint first time xD

LGTM, thank you :pray:


[Run] Ability to pin first result for query

Summary of the new feature/enhancement
Wox has the ability to set a first result for a specific query to improve the search results.
E.g. when often using visual studio, typing "vis" brings up VS Code first and then VS. I want to have VS as a first result (
Proposed technical implementation details (optional)
Wox has this, as I see an attribution in the Settings I imagine there is already some sort of cooperation, so might be worth taking a deeper look!

From the launcher spec, this is in P2:

26
Users can pin selected application/file/folder at the top of the search result which ties to the search term they input in the search box
2

Highly doubt it will be included in v1 but we'll keep this issue open to track it.

If I may add a suggestion to this suggestion - along with allowing the user manually pin (that would be an excellent feature on its own), please also allow for automatic sorting based on use. If I type "note" and click on the "Notepad++" option every time, that should become the first result quickly - even after the first click of it.


Introduce react-native example

Checked example on with both android (10 on simulator, 11 on real device) and ios (14.5 on simulator, 14.7.1 on real device) builds and works well!
Though still, there is the same question, discussed for as long, as RN exists: what is recommended way to work with Meteor backend from RN client. There are strong pros and cons about the way @TheRealNate made it in this PR. In many cases, it would be preferred to use client-bundler by @Urigo just because it could bundle additional libraries from the atmosphere which in many cases are required for the proper functioning of backend with a client without undefined behavior.

@TheRealNate also please add a description of the repo to README as described in How to add your example? section.
Those points:

Create a PR including it in this README
Make sure you are using the latest Meteor
Required fields: Repository, Why, Stack, Last Updated At, and Meteor Version.

It will be important and useful for anyone who will be researching examples of Meteor usage


Help replacing spawn eggs with their correct colors.

The question
Hey, so I've been at work trying to port a CIT Hypixel Skyblock texture pack over to 1.21.1, and I've came across an issue I can't seem to find a solution for.
For some strange reason, when I try to replace any spawn eggs, their color overlay is still intact and messes with the image blend of the original image.
The Original Texture:

The Result in-game:

(Note: The shown item is supposed to replace the mooshroom spawn egg)
Checklist

[X] I checked the issues(both open and closed) and could not find a duplicate of my question

See how Spawned Eggs does that, it should be helpful. Looks like u need to override default spawn egg's item model


both examples (sync and async) doesn't run

Hello,
ex-sync.R : the console.log command returns "null".
It isn't the expected result (cf. README.md)
ex-async.R : in console, returns :
events.js:174
      throw er; // Unhandled 'error' event
      ^

Error: spawn Rscript ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:240:19)
    at onErrorNT (internal/child_process.js:415:16)
    at process._tickCallback (internal/process/next_tick.js:63:19)
Emitted 'error' event at:
    at Process.ChildProcess._handle.onexit (internal/child_process.js:246:12)
    at onErrorNT (internal/child_process.js:415:16)
    at process._tickCallback (internal/process/next_tick.js:63:19)

It isn't the expected result (cf. README.md)
What solution do i have ?
Is the project still maintained ?
Thanks in advance.

I had the same issue using windows. After digging and understand the code, I notice that the error shows that Rscript is not recognize as a command. So check if your path is set up to use R.
Add R binaries to my path solve the issue to me.

@esvanegas could you explain further what the R binaries folder path is?
I added both
C:\Program Files\R\R-4.3.1\bin\x64
C:\Program Files\R\R-4.3.1\bin
to my Path. I'm able to run R in the command prompt.
Still when I test Synchronous example code. I got NULL.


[llm]support long sequence training

PR types
New features
PR changes
Others
Description
新增支持llama 128k训练

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Add deployment repo doc

Fixes #2381
What is being addressed
Add a documentation regarding AzureTRE deployment repository

/test

/help

/test-force-approve

/test-force-approve


Performance improvement for CryptoPrimitives

Every request required a creation of a new BouncyCastleProvider which is a very expensive operation.
Furthermore, certificates were re-parsed and their chains re-validated on every reques. Again this is a very expensive operation.
Taken together these factors caused excessive delays in interacting with the Fabric block chain.

I would like to get this PR in as-is. In my environment the changes improved a two second block chain query to a 20 millisecond query, so I strongly believe this will have widespread benefit. The configuration is a nice-to-have but not crucial.

GitHub is flagging that the PR is out of date with the base branch. Could you rebase on main and re-push to make it ready to merge?

If you get a chance to try the new Fabric Gateway client API with Fabric v2.4+, I would be very interested in any feedback on comparative performance in your environment.

Thank you for the contribution!

@Mergifyio backport release-2.2


Failures on Change VM DateTime to-local-time computation to not fail for <1h changes.

There are new test failures on Change VM DateTime to-local-time computation to not fail for <1h changes..
The tests
corelib_2/local_date_time_test RuntimeError (expected Pass)

are failing on configurations
dart2js-mac-safari

/cc @lrhn new test fails on Safari but not other browsers.


Emit hex bitfield masks

r? @fitzgen

:pushpin: Commit cb7495d has been approved by fitzgen

@bors-servo r+

:hourglass: Testing commit cb7495d2b318d0986229e53c04a2e975f9ec8f15 with merge bd5f92867805fa4992b145ef4d820e28f3132ca7...

:sunny: Test successful - status-travis
Approved by: fitzgen
Pushing bd5f92867805fa4992b145ef4d820e28f3132ca7 to master...


refac: Remove Actors column from user overview.

Codecov Report

Merging #2180 (b0edd59) into main (112707b) will decrease coverage by 1.65%.
Report is 4 commits behind head on main.
The diff coverage is 50.00%.

@@            Coverage Diff             @@
##             main    #2180      +/-   ##
==========================================
- Coverage   19.92%   18.28%   -1.65%
==========================================
  Files          81       99      +18
  Lines        2073     4168    +2095
  Branches      279        0     -279
==========================================
+ Hits          413      762     +349
- Misses       1650     3390    +1740
- Partials       10       16       +6

Files
Coverage Δ

...ts/MarketParticipant/V1/MarketParticipantClient.cs
0.00% <ø> (ø)

...ebApi/Registration/DomainRegistrationExtensions.cs
65.11% <50.00%> (-32.19%)
:arrow_down:

... and 24 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Bug: All broadcast Should show approved broadcast only

Describe the bug
All broadcast displays both approved and unapproved broadcasts
To Reproduce
Steps to reproduce the behavior:

Go to 'https://hitk-tech-community.netlify.app/all-broadcasts'
It shows both approved and unapproved broadcasts

Expected behavior
All broadcast should show approved broadcast only.

Hello @Kajol-Kumari
Please assign it to me

https://github.com/HITK-TECH-Community/Community-Website/issues/1080 this issue should have covered it, not sure how it got missed


Add endpoint for getting a user's pushers

Also add profile_tag to the set docs as it was missing

looks ok otherwise

good point, ptal

could do with some words in the changelog.
minor tweaks, lgtm otherwise


[Task]: Junit Test cases

Is there an existing issue for this?

[X] I have searched the existing issues

SubTasks
No response

Hi @sneha122 , Can you please provide more insights on this issue? Will like to pick it up.

Hi @TanyaAgarwal28 This task is to write JUnit test cases for an ongoing feature of Rate limit, This may a little complex to pick it up as feature is not complete yet, meanwhile please feel free to check out the Good first issues

Oh okay thanks


Check whether the path given is absent in the PATH

Should generate something like that
# DO NOT EDIT: installed by update-golang.sh

if ! echo "$PATH" | grep -Eq "(^|:)/usr/local/go/bin($|:)"
then
    export PATH=$PATH:/usr/local/go/bin
fi

if ! echo "$PATH" | grep -Eq "(^|:)$HOME/go/bin($|:)"
then
    export PATH=$PATH:$HOME/go/bin
fi

# update-golang.sh: end

@udhos Could you please take a look

As it is now, this change breaks profile_path_remove().

Hi, do you intend to modify the change to support profile_path_remove() ?

@udhos I'll try in next days. Do you want to do it yourself?

Great, please feel free to modify the change if you can. I won't be able to look into it myself in the next days.

@udhos I hope it is ok now

@udhos It is weird. I remember writing it. Probably I lost at the rebase time. I apologize for the inconvenience.

Merged, thanks!

You're welcome


Code

When will the code released?  I'm looking forward to it!

Next week~

The source code is now available.

邮件已收到！！


chore(deps): :arrow_up: update all non-major dev dependencies

This PR contains the following updates:

Package
Change
Age
Adoption
Passing
Confidence

assemblyscript (source)
0.27.15 -> 0.27.16

aws-sdk
2.1491.0 -> 2.1492.0

Release Notes

AssemblyScript/assemblyscript (assemblyscript)
v0.27.16
Compare Source
Bug fixes

Return the assigned value in assignments (#2773) (94fa207)
Fixes #2770.

Other

General cleanup (#2757) (a7e168b)
deps: Update binaryen to 116.0.0-nightly.20231102 (#2777) (af2a250)
ci: Build action-node to install nodejs (#2779) (cdb39db)

aws/aws-sdk-js (aws-sdk)
v2.1492.0
Compare Source

feature: SQS: This release enables customers to call SQS using AWS JSON-1.0 protocol and bug fix.

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

⚠ Artifact update problem
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

any of the package files in this branch needs updating, or
the branch becomes conflicted, or
you click the rebase/retry checkbox if found above, or
you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:
File name: package-lock.json
npm WARN cli npm v10.2.3 does not support Node.js v20.2.0. This version of npm supports the following node versions: `^18.17.0 || >=20.5.0`.  A complete log of this run can be found in: /tmp/renovate/cache/others/npm/_logs/2023-11-12T16_34_20_203Z-debug-0.log

⚠ Artifact update problem
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

any of the package files in this branch needs updating, or
the branch becomes conflicted, or
you click the rebase/retry checkbox if found above, or
you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:
File name: package-lock.json
npm WARN cli npm v10.2.3 does not support Node.js v20.2.0. This version of npm supports the following node versions: `^18.17.0 || >=20.5.0`. You can find the latest version at https://nodejs.org/.
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving<EMAIL_ADDRESS>npm ERR! Found<EMAIL_ADDRESS>npm ERR! node_modules/@angular/core
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer<EMAIL_ADDRESS>from<EMAIL_ADDRESS>npm ERR! node_modules/@angular/animations
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR!
npm ERR! For a full report see:
npm ERR! /tmp/renovate/cache/others/npm/_logs/2023-11-12T18_06_15_520Z-eresolve-report.txt

npm ERR!


[WIP] Improving errors on pkgtree.ListPackages.

What does this do / why do we need it?
Make the output of 'dep' more useful.
What should your reviewer look out for in this PR?
Correctness.
Do you need help or clarification on anything?
It lacks test code.
There is pr #844 which seems to solve the same sorts of issues, but is better because it has test code on it. I am pushing this pr here anyways just because there might be something useful (/cc @grepory).
I don't know if the way I did it is appropriate, but what do you guys think of moving some parts of the ensure pkg code to pkgtree's ListPackages logic?
Which issue(s) does this PR fix?
fixes #814 (see also pr #844)

since we've merged #844, i'm gonna close this, as i think we have the basic case covered. if you feel strongly about pursuing this refactor, though, then feel free to reopen and address the comments. thanks! 🎉


Test views

Codecov Report

Merging #13 (81f28e9) into main (7265a5a) will increase coverage by 5.83%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main      #13      +/-   ##
==========================================
+ Coverage   64.97%   70.80%   +5.83%
==========================================
  Files          82       84       +2
  Lines        2164     2288     +124
==========================================
+ Hits         1406     1620     +214
+ Misses        758      668      -90

Flag
Coverage Δ

unittests
70.80% <100.00%> (+5.83%)
:arrow_up:

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

Impacted Files
Coverage Δ

vanir/core/exchange/models.py
100.00% <ø> (+11.11%)
:arrow_up:

vanir/core/token/models.py
46.51% <ø> (+4.65%)
:arrow_up:

vanir/order/models.py
66.38% <ø> (ø)

vanir/plugins/new_coin_bot/scrappers.py
34.61% <ø> (ø)

vanir/utils/datasource/coingecko.py
89.47% <ø> (+7.89%)
:arrow_up:

vanir/utils/helpers.py
54.16% <ø> (ø)

vanir/utils/templatetags/buttons.py
86.84% <ø> (+86.84%)
:arrow_up:

vanir/utils/templatetags/filtertemplates.py
51.28% <ø> (+20.51%)
:arrow_up:

vanir/core/account/tests.py
100.00% <100.00%> (ø)

vanir/core/account/views.py
64.58% <100.00%> (+9.02%)
:arrow_up:

... and 13 more

Continue to review full report at Codecov.

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


NPC Quest Line

closes #119
Adding example NPC quest line for MVP.
Added a dialogue box for NPCs to interact with the player and are entity-specific.

Please resolve merge conflicts with main

@KungKemi Can you please clarify which file didn't have any tests ? I aimed for mostly over 90% coverage :) with the exception of NPCFactory but thats due to the GhostKing and Ghost entities which aren't base tested.

There's a lot here and I don't fully understand it all just from reading and trying to run it. Firstly button press O crashes the game which is probably the biggest problem. Secondly it seems strange to me that there is a global event handler which many different (seemingly unrelated) classes have access to and seems to increase coupling massively - seems like there should be a better way to handle events being sent non-player specific places (although quests seems like a player specific thing?). As I've said in comments though, I may not understand the point of this GlobalEventHandler so please feel free to correct me and mark those where I've just asked how something works as resolved. There were one or two comments where I just made suggestions that can be resolved immediately if you don't think they should be implemented.
Aside from all this though, it just seems like this is an enormous pull request with a number of different features being added in simultaneously (edits to NPC's, basic quests, different types of screens, global event handlers, a pausing feature etc.). It does seem like this should be broken down into multiple pull requests since it seems like multiple major features are being added at once. Tbh it's kind of just too big for me to look through the whole thing at 11pm tho, so maybe I'll understand it more in the morning.

There's a lot here and I don't fully understand it all just from reading and trying to run it. Firstly button press O crashes the game which is probably the biggest problem. Secondly it seems strange to me that there is a global event handler which many different (seemingly unrelated) classes have access to and seems to increase coupling massively - seems like there should be a better way to handle events being sent non-player specific places (although quests seems like a player specific thing?). As I've said in comments though, I may not understand the point of this GlobalEventHandler so please feel free to correct me and mark those where I've just asked how something works as resolved. There were one or two comments where I just made suggestions that can be resolved immediately if you don't think they should be implemented.
Aside from all this though, it just seems like this is an enormous pull request with a number of different features being added in simultaneously (edits to NPC's, basic quests, different types of screens, global event handlers, a pausing feature etc.). It does seem like this should be broken down into multiple pull requests since it seems like multiple major features are being added at once. Tbh it's kind of just too big for me to look through the whole thing at 11pm tho, so maybe I'll understand it more in the morning.

The global service handler was something from the given code, and was required for several things to function. While It isnt the best solution to have anything interact globally, it is often required without passing around references to the screen and game to almost every class. Do note that the service locator has 7 different services, with only event service having the globaleventhandler, which is currently only being used to change screens, and for quests. So yes it is something we shouldn't abuse, it doesn't cover very much code right now.

Hey Lucas, I'm not talking about the Service Locator, but rather specifically the global event handler. Is there a reason for quests (which conceptually should be attached to the player) to be passed around via a global event handler? I get why this might be useful in certain contexts for switching screens/adding overlays, although it seems a bit overused since it's also being used to handle the player movement and attack. Again I might just not fully understand the necessity of it (feel free to mark as resolved comments about this you disagree with from the review).

Hey Lucas, I'm not talking about the Service Locator, but rather specifically the global event handler. Is there a reason for quests (which conceptually should be attached to the player) to be passed around via a global event handler? I get why this might be useful in certain contexts for switching screens/adding overlays, although it seems a bit overused since it's also being used to handle the player movement and attack. Again I might just not fully understand the necessity of it (feel free to mark as resolved comments about this you disagree with from the review).

Apologies I think I had misunderstood some of your comments. That is a valid criticism of the implementation of quests, I had thought you didn't understand the purpose of the entire GlobalEventHandler. As stated in some of my replies to your comments I have written some of the code (the specifically interacts with the GobalEventHandler and greater ServiceLocater and Container classes, much of which I didn't intend to ever reach main) which is why I replied.

Hey Lucas, I'm not talking about the Service Locator, but rather specifically the global event handler. Is there a reason for quests (which conceptually should be attached to the player) to be passed around via a global event handler? I get why this might be useful in certain contexts for switching screens/adding overlays, although it seems a bit overused since it's also being used to handle the player movement and attack. Again I might just not fully understand the necessity of it (feel free to mark as resolved comments about this you disagree with from the review).

This decision was made in the initial stages of the sprint where it was thought that all entities not just players may hold a questManager and track their own quests based on other entities actions. Even so it is better practice to subscribe to specific entities events and this I gather was the reason eventHandlers are gated to be attached to entities. QuestManager and the quests systems will not use this system any longer and only Overlays and Screen switching will use it until it is addressed in sprint 2. They were hacked together anyway in order to help other teams blocked by this issue.

There's a lot here and I don't fully understand it all just from reading and trying to run it. Firstly button press O crashes the game which is probably the biggest problem. Secondly it seems strange to me that there is a global event handler which many different (seemingly unrelated) classes have access to and seems to increase coupling massively - seems like there should be a better way to handle events being sent non-player specific places (although quests seems like a player specific thing?). As I've said in comments though, I may not understand the point of this GlobalEventHandler so please feel free to correct me and mark those where I've just asked how something works as resolved. There were one or two comments where I just made suggestions that can be resolved immediately if you don't think they should be implemented.
Aside from all this though, it just seems like this is an enormous pull request with a number of different features being added in simultaneously (edits to NPC's, basic quests, different types of screens, global event handlers, a pausing feature etc.). It does seem like this should be broken down into multiple pull requests since it seems like multiple major features are being added at once. Tbh it's kind of just too big for me to look through the whole thing at 11pm tho, so maybe I'll understand it more in the morning.

Received verbal approval regarding changes