Vue: implement 'Detect and Select' component(s)

This issue will remain open until all the checkboxes are checked! PRs can reference this issue and will get credit even if the whole issue is not yet closed :+1:
Note: split off from #110

Design doc reference here: http://concept-to-clinic.readthedocs.io/en/latest/design-doc.html#detect-and-select
Mock-up:

Expected Behavior
Users should be able to view predictions of nodule centroids and mark whether they are concerning or not:

[ ] List all available predicted candidate sites. Allow each to be selected to view details.
[ ] When a candidate is selected, show a detail view in an image viewer control. By default, show the slice containing the predicted centroid and a marker clearly indicating where the predicted centroid occurs.
[ ] Allow the user to zoom, pan, and navigate through slices in the image viewer.
[ ] Allow the user to window grayscale levels.
[ ] Allow the user to toggle the candidate centroid marker’s visibility.
[ ] Allow the user to mark any predicted candidate for further analysis.
[ ] Allow the user to navigate through the imagery freestyle and mark other locations which the models missed.
[ ] When the user has finished marking candidates, send all of this labeled data to the backend in the format specified above.

Possible Implementation
Basic Django templates were created for this in #88 - that is probably a good place to start.
Mocking data
Feel free to mock data for state if it is not yet implemented in the backend API, and feel free to POST to API endpoints that don't exist yet :sparkles:

Hi. I love what the project is looking to achieve and am a great supporter of the cause. I've done a lot of Vue.js, so I'm going to try and start building some of the UI related issues.

@lmiller Glad to have you on board! :boat:

Thanks. I'll see if I can get something done in the next few days, got everything up and running plus created some fake data.
Project is still early days - there aren't any models or much else in terms of data set up yet, should I just fake/make it up for now?

@lmiller1990 I think you should just fake it, at least that is from what I understand from the 'Mocking data' section.

@lmiller1990 @stranger26 New info on getting test data [here] - I also opened #153 to publicize this more.

Cool project! Looks like you guys could build this piece with Cornerstone pretty easily. Here are some links that might help:
Image tools: https://rawgit.com/chafey/cornerstoneTools/master/examples/allImageTools/index.html
Stack Scroll tool: https://rawgit.com/chafey/cornerstoneTools/master/examples/stackScroll/index.html
Crosshairs: https://rawgit.com/chafey/cornerstoneTools/master/examples/crosshairs/index.html
DICOM Web access: https://rawgit.com/chafey/cornerstoneWADOImageLoader/master/examples/wadouri/index.html

Is this issue being worked on? If not I will be looking at implementing it next week.

Where can we find some sample DICOM image data? I didn't see anything in the developer documentation. Should we just pull from the internet for now?

@antonow are you working on this component?

@antonow Check out the /tests/assets directory for example imagery.

@louisgv I was thinking about it, but no I am not currently working on this.

@antonow I will be tackling #182 then, since you probably got a plan to get this done. (I've not give it any thought yet :p )

I'm taking this issue, if nobody minds.

Fixed in https://github.com/concept-to-clinic/concept-to-clinic/commit/093b06ffddf7a38b73a703ac2ecd28c33db386a3

Merged in https://github.com/concept-to-clinic/concept-to-clinic/commit/c4db12ee26b004f1c7466fb879bfe36ea6135048: )

@lamby this can be closed, right?


Update deps (minor) on eslint-config-fluid in all packages and releas…

…e groups
Updated the following:
azure (release group)
build-tools (release group)
server (release group)
client (release group)
@fluidframework/common-definitions
@fluidframework/common-utils
@fluidframework/protocol-definitions
@fluid-tools/api-markdown-documenter
@fluid-tools/benchmark
@fluidframework/test-tools
tinylicious
Dependencies on @fluidframework/eslint-config-fluid updated:
@fluidframework/eslint-config-fluid: ^1.1.0
For more information about how to contribute to this repo, visit this page.
For specific guidelines for Pull Requests in this repo, visit this wiki page.
The sections included below are suggestions for what you may want to include.
Feel free to remove or alter parts of this template that do not offer value for your specific change.
Description

A concise description of the changes (bug or feature) and their impact/motivation.
If this description is short enough to be used as the title, delete this section and just use the title.

For bug fixes, also include specifics of how to reproduce it / confirm it is fixed.

If this Pull Request should close/resolve any issues when merged, use the special syntax for that here.

Reviewer Guidance

List any specific things you want to get reviewer opinions on, and anything a reviewer would need to know to review this PR effectively.
Things you might want to include:

Questions about how to properly make automated tests for your changes.
Questions about design choices you made.
Descriptions of how to manually test the changes (and how much of that you have done).
etc.

If you have any questions in this section, consider making the PR a draft until all questions have been resolved.

Does this introduce a breaking change?

If this introduces a breaking change, please describe the impact and migration path for existing applications below.
See Breaking-vs-Non-breaking-Changes for details.
If there are no breaking changes, delete this section.

Any relevant logs or outputs

Use this section to provide either screenshots or output of logs as code snippets

Other information or known dependencies

Any other information or known dependencies that is important to this PR.
Links to internal bug/work tracker items.
TODO that are to be done after this PR.

You may want to upgrade a release group at a time to make the code reviews easier.

You may want to upgrade a release group at a time to make the code reviews easier.

@tylerbutler I will try on that, thank you for your feedback! 👍


ENH: C extension: use const GEOSGeometry pointers instead of plain GEOSGeometry pointers where appropriate

Internal functions like GeometryObject_FromGEOS should accept const pointers instead of plain pointers, since those functions should not modify the GEOS Geometry.
Originally detected in #225 since we are getting const pointers back from GEOS functions but these were getting discarded on call to the PyGEOS C API.

I opened https://github.com/shapely/shapely/issues/1664 as copy of this issue on the shapely side.


Add detailed temperature chart for all sites

We would like to change the site page by:

Replace the featured image by the daily temperature chart, renamed "Heat Stress Analysis". Make it a bit similar to the screenshot below with the following changes:

only display the last 2 months of data
have the title a bit higher, aligned with LAT/LNG maybe?

Display the detailed temperature chart for all sites, renamed "Temperature Analysis"

the title can be removed from the stats box
there should be at most 3 columns in the analysis box (SST is has the lowest priority)

So for the temp analysis card, the priority is spotter > hobo > sst?

Also, should the chart next to the map have a tooltip?


MAINT: fix deprecated use of numpy.issubdtype

Numpy f307cec3 requires the following changes to not emit warnings:
np.issubdtype(X, int) -> np.issubdtype(X, np.signedinteger)
np.issubdtype(X, float) -> np.issubdtype(X, np.floating)
np.issubdtype(X, complex) -> np.issubdtype(X, np.complexfloating)
One case in test_matfuncs.py also had np.inexact on the rhs.
This fixes current travis failures.

Thanks!


[Question] Next steps about vtable and mmap?

I have been looking for a zero-copy way of sharing mmap content via Bytes. I noticed the vtable feature added by #294 and didn't find follow-ups.
I wonder if bytes is interested in getting a Arc<memmap::Mmap> version implemented (probably gated by a mmap feature that is default off). Or if other approaches are preferred (ex. expose the vtable interface and implement the mmap support in other crates).
I personally think there are very limited types that meaningfully fit the vtable interface (I can hardly think of another aside from the mmap one). So it seems easier for end-users if bytes just implements them all (use features to keep the default deps slim). But I can see concerns about memmap being unmaintained.
If the next steps are clear, I can help implementing them.

For what it's worth, I'm also interested in a Bytes-like interface to a memory-mapped region.

Hi @spl, FYI I ended up reinventing it. It's not a lot of code if Arc<dyn Trait> is used.

@quark-zju Nice! Your BytesOwner is a neat approach. I drafted something using the following:
enum Buf {
    Mmap(Mmap),
    Static(&'static [u8]),
    Vec(Vec<u8>),
}

pub struct SharedBuf {
    buf: Arc<Buf>,
    offset: usize,
    len: usize,
}

Of course, this wasn't intended for general-purpose use as a library.

Could bytes provide something like the following from @quark-zju's library?
impl Bytes {
    pub fn from_owner(value: impl BytesOwner) -> Self { ... }
}

pub trait BytesOwner: AsRef<[u8]> + Send + Sync + 'static {}

I personally think there are very limited types that meaningfully fit the vtable interface (I can hardly think of another aside from the mmap one).

Here's some food for thought. Moonfire NVR currently uses a bytes::Buf implementation that's a wrapper around reffers::ARefss<'static, [u8]>. It puts these into a hyper::body::HttpBody implementation and sends them to hyper. It does two things with this:
1. mmap
It does this today, but I'm not really sure it's a good idea because of the page fault problem. As lucio-rs suggested here, it might be better to simply copy stuff from the mmaped region to a "normal" bytes rather than having a mmap-backed bytes. My current approach of not dealing with this at all means that the tokio threads may stall on page faults, which is not so great. It's really not good enough to have a bytes object for a mmap()ed region which is only special for loading and unloading, not also when reading from it.
2. more complex shared ownership / minimizing allocations
tl;dr version: there's one large object moonfire_nvr::mp4::File which lives for the entire response, is reference-counted all together via struct File(Arc<FileInner>), and has a small number of Vecs which turn into a larger number of HTTP response chunks. I'd need more allocations (bytes::bytes::Shared ones) to duplicate what it does with bytes::Bytes as it exists today.
Some detail, in case you're curious:
mp4.rs constructs a .mp4 file on-the-fly, including:

chunks from a "global" buf: Vec<u8> which has a bunch of dynamic file metadata (including stuff like length of structures, timestamps, etc) that gets stuffed between other parts of the file. It's nice to have that backed by the overall mp4::File rather than have a separate bytes::bytes::Shared allocation.
actual chunks of video frame data. Each segment comes from a different file with ~1 minute of H.264-encoded video frames in it.
indexes for the segment. There are three kinds of index needed for each segment. (stts = sample time table, stsz = sample size table, stss sync sample table) It's most efficient to all the indexes for a segment at once (but only if the HTTP request actually asks for a byte range that overlaps with at least one of them) and stuff them into one Vec. It's nice to not need another per-segment allocation for a bytes::bytes::Shared.

Here's the Debug output on a typical mp4::File. This structure gets generated on every HTTP request, then chunks may or may not actually get generated and served depending on the byte range the browser asked for.

My current approach of not dealing with this at all means that the tokio threads may stall on page faults, which is not so great.

This effect may honestly not be horrible, if you're on modern hardware it should be somewhat fast. Really prolonged blocking is the issue.

By modern hardware I assume you mean SSD? Maybe so in that case. I have terabytes of files on cheap hardware, so I use spinning disk instead. I typically assume a seek takes about 10 ms but I just benchmarked it on this system at closer to 20 ms. wikipedia says a seek took 20 ms in the 1980s so basically on this metric I might as well be using 40-year-old hardware. And even the fastest modern hard drives can't do an order of magnitude better. The physics are prohibitive.

wikipedia says a seek took 20 ms in the 1980s so basically on this metric I might as well be using 40-year-old hardware.

Haha, taking commodity hardware to a new level!
You are right, you can't assume what those times might be.
cc @seanmonstar on this issue since he wrote most of the vtable stuff.

@scottlamb I have some questions about the mp4::File use-case.
When constructing the Bytes backed by mp4::File, would it read the entire content (i.e. as an ordinary Bytes backed by Vec<u8>) of the file immediately or lazily?
If immediately, what is the benefit of not closing the File after reading? If the File is closed, it seems the ordinary Bytes fits the use-case.
If lazily, how would it actually implement the vtable interface? The current vtable struct needs plain ptr: *const u8 and len: usize. What's their values?

When constructing the Bytes backed by mp4::File, would it read the entire content of the file as an ordinary Bytes backed by Vec immediately or lazily?

Neither. There's not a single chunk (~ Bytes struct) for the whole file. A mp4::File produces a stream of many chunks. In the debug output I linked above, that file had 95 slices. When a HTTP request comes in, my code examines the requested byte range; there's a chunk for the portion of each slice that overlaps with that request, so up to 95 chunks in the stream. Chunks are created on demand via a bounded channel as hyper consumes previous chunks.  Each is immediately usable once created.
"Immediately usable"...except for the problem of file-backed chunks causing major page faults that wait for a disk seek. Unless folks have a better idea, I plan to either abandon mmap entirely or copy from a mmaped region to a heap-backed Bytes instead to avoid this. I once was thinking of having a Bytes to represent a mlocked chunk of a mmaped file, but having a bunch of mlock/munlock calls doesn't seem like a good idea at all post-Meltdown.
The best thing long-term IMHO would be passing around something to cause a IORING_OP_SPLICE to happen from the file to the HTTP stream (with KTLS for https). With some fallback for older Linux kernels and non-Linux OSs. But I assume that's out of scope for the bytes crate, and the ecosystem as a whole needs a lot of work before it's possible...

Thanks for explanation. I think the Bytes::as_ref(&self) -> &[u8] API makes it unsuitable for non-continuous buffers and it is hard to change the API now. For complex backend that are backed by many chunks, perhaps it might use other abstractions like io::Seek + io::Read or their async versions.

Buf is a trait in this crate that has fine support non-contiguous buffers. The Bytes type is meant to be an API to allow easy sharing and slicing of a single contiguous buffer.

I don't think Bytes being contiguous is a problem for me.
I built Entity::get_range on top of streams of chunks. While I'm using Buf today, it's a simple implementation with contiguous buffers like Bytes has as you can see here:
https://github.com/scottlamb/moonfire-nvr/blob/6b5359b7cb1502c4e24f9ae7fa81a2ceac9a4f23/src/body.rs#L69-L75
hyper often will batch up my chunks into a single syscall, as you can see from strace output:
8638  writev(42, [{iov_base="HTTP/1.1 206 Partial Content\r\nac"..., iov_len=449}, {iov_base="\0\0\0 ftypisom\0\0\2\0isomiso2avc1mp41", iov_len=32}, {iov_base="\0\24\r,moov\0\0\0xmvhd\1\0\0\0\0\0\0\0\333\23\270\225\0\0\0\0"..., iov_len=48}, {iov_base="\0\1\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=76}, {iov_base="\0\0\0\3\0\24\5[trak\0\0\0\\tkhd\0\0\0\7\333\23\270\225\333\23\270\225"..., iov_len=44}, {iov_base="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=52}, {iov_base="\7\200\0\0\48\0\0\0\24\4\367mdia\0\0\0,mdhd\1\0\0\0\0\0\0\0"..., iov_len=60}, {iov_base="\0\0\0!hdlr\0\0\0\0\0\0\0\0vide\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=33}, {iov_base="\0\24\4\242", iov_len=4}, {iov_base="minf\0\0\0\24vmhd\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0$dinf"..., iov_len=60}, {iov_base="\0\24\4bstbl\0\0\0\226stsd\0\0\0\0\0\0\0\1", iov_len=24}, {iov_base="\0\0\0\206avc1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=134}, {iov_base="\0\r/\20stts\0\0\0\0\0\1\245\340", iov_len=16}, {iov_base="\0\0\0\1\0\0\7\10\0\0\0\1\0\0\16N\0\0\0\1\0\0\16\n\0\0\0\1\0\0\7,"..., iov_len=14400}, {iov_base="\0\0\0\1\0\0\7\24\0\0\0\1\0\0\16x\0\0\0\1\0\0\r\240\0\0\0\1\0\0\16\n"..., iov_len=14400}, {iov_base="\0\0\0\1\0\0\10r\0\0\0\1\0\0\r\34\0\0\0\1\0\0\r\220\0\0\0\1\0\0\6\362"..., iov_len=14400}, {iov_base="\0\0\0\1\0\0\6\370\0\0\0\1\0\0\168\0\0\0\1\0\0\r\374\0\0\0\1\0\0\6\374"..., iov_len=14400}], 17) = 58632

Buf's additional flexibility wouldn't help me in any significant way that I can see. I can't represent the whole response with a single Buf because there's the possibility of error while reading from a file. Buf::bytes_vectored doesn't return a Result so it can't be lazy when the reading is fallible.

[Moonfire NVR passes mmap-backed chunks to hyper] today, but I'm not really sure it's a good idea because of the page fault problem.

FYI, I stopped for this reason (see scottlamb/moonfire-nvr#88). Moonfire still uses mmap, but now only within a dedicated per-disk thread. That thread does a memcpy into chunks backed by the global allocator. I did not find using all of (Bytes, mmap, spinning disks, tokio) in one place to be a winning combo.
I still do the "more complex shared ownership / minimizing allocations" thing a little but wouldn't have bothered if I had started with this mmap design from the start. I don't have numbers on how much it's saving me, but probably not that much, especially given that the portions I read from HDD have per-read chunk allocations now anyway.

That thread does a memcpy into chunks backed by the global allocator.

I think you could ask the kernel to load everything at once, to avoid page fault?
Copying mmap into memory sounds worse than just reading

I think you could ask the kernel to load everything at once, to avoid page fault?

MAP_POPULATE? Yes, but there's no guarantee it won't fault it back out again unless you also mlock.

Copying mmap into memory sounds worse than just reading

It was faster for me. YMMV. There are several factors. One somewhat surprising one was discussed in this article a while ago: userspace memcpy can be faster than the in-kernel memcpy because it uses SIMD registers.

Closing as solved by #742.


[Question] Package for MongoDB Atlas seems missing from nuget, Did I miss something in the PR?

Context / Scenario
I want to try new MongoDb Atlas support from nuget.
Question
I've tried to search for the package for MongoDb ATlas in nuget but I did not found it. Did I miss something in the Pull Request to have it published in nuget?

hi @alkampfergit we haven't published the nuget yet, there's some testing we need to do, stay tuned :-)

Ok thanks :), I just want to be sure that I've done everything from my part :).

Fixed: https://www.nuget.org/packages/Microsoft.KernelMemory.MongoDbAtlas


Invalid Crc and broken chunks in SharpNBT on .NET 6

In .NET 6 there was a breaking change with crypto streams like DeflateStream and GZipStream: https://docs.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/6.0/partial-byte-reads-in-streams
With this Stream.Read can - and will - returns less bytes than requested by the count parameter. You have to call the Read method multiple times until the required number of bytes is read or the stream reads 0 (end of base stream).

I added a workaround by creating the DotNet6CompressionStreamFix class and pass it to SharpNBT. This will read the base streams as in previous .NET versions.
But the actual root cause has to be fixed in SharpNBT.


External Authentication to support Oracle Wallet

First and foremost thanks for supporting oracledb. I can finally start migrating our code to using master rather using forks.
But I cannot see oracledb dialect supporting external authentication given in https://github.com/oracle/node-oracledb/blob/master/src/dpi/src/dpiEnvImpl.cpp#L398 (Mentioned in https://github.com/oracle/node-oracledb/blob/master/doc/api.md#extauth)
As it is current implementation always expects username/password. When using the oracle wallet we should be using external authentication.
I'm happy to raise a PR for this.

Raised #1716

Closing issue as the PR has been approved and released to the wild.


Downgrade SLF4J to 1.7.x

Fixes https://github.com/wiremock/wiremock/issues/1964
Versions 1.8.x and 2.x are incompatible with older versions. The vast majority of Java libraries are still using 1.7.x.
This PR downgrades SLF4J to the latest 1.7.x and updates the dependabot configuration to prevent upgrades to the 1.8.x and 2.x versions.

Dropped the version and relocated in 1f43b2794ca301a8504851b90d23522193bec5b1


Participants can start, prolong and end timers

I've just noticed that participants are able to start, prolong and end timers via API request (e.g. with Postman). In the frontend, the respective buttons are hidden from participants without moderation permissions, so it's just a problem in the backend.

Fixed by #3974


Compose Multiplatform Support

First run so still have some stuff to clean up
Migrates minabox to a compose multiplatform library with JVM and Android targets
Migrates demo module to a multiplatform library with JVM and Android targets
Moves old demo to androiddemo and creates desktopdemo. Both demos call the App composable from demo so they share a lot of code. There are specific items related to android that needed to remain there such as status bar padding and RoundedPolygon
Note that this also required a downgrade of kotlin and compose
Still to do
[X] Clean up code and run linters
[X] Convert new dependencies and plugins to use the toml file
[X] Ensure publishing works with multi-module

A lot of thx for your time and this PR 🤗
As I have almost zero experience with Compose multiplatform I would like to ask a few dummy questions:

Compose version is still driven by BOM?
Is it possible to move M3 dependency from minabox to demo? I would like to not force M2 or M3 from minabox
Why do you need to change java-sourceCompatibility / java-targetCompatibility? Will 17 be OK for older Android versions?
Does release artifact must / should be changed? Or current "io.github.oleksandrbalan:minabox" will work fine for both targets?

A lot of thx for your time and this PR 🤗
As I have almost zero experience with Compose multiplatform I would like to ask a few dummy questions:

Compose version is still driven by BOM?

No, it doesn't appear that Compose Multiplatform uses the BOM

Is it possible to move M3 dependency from minabox to demo? I would like to not force M2 or M3 from minabox

Done

Why do you need to change java-sourceCompatibility / java-targetCompatibility? Will 17 be OK for older Android versions?

Turns out I didn't, I just needed to manually set the JVM target for the projects back to 1.8

Does release artifact must / should be changed? Or current "io.github.oleksandrbalan:minabox" will work fine for both targets?

It will work fine, behind the scenes it actually deploys four packages, minabox, minabox-android, minabox-android-debug, and minabox-jvm. Gradle will auto-resolve to whichever one is needed


Cant read InputStream

First of thanks for this extension I am able to read files but I am required to read from inputStream coming from Amazon S3.
I didnt find any builder method which accepts inputStreams is it possible to read input stream ?

Hi @ccleva Thanks for the response ! Can we use InputFile instead files as source as I can see a Builder method which accepts InputFile . But I am just way too junior to under stand how to implement it .
https://stackoverflow.com/questions/58141248/read-parquet-data-from-bytearrayoutputstream-instead-of-file
found this thing where we can convert stream into InputFile . Do you think such approach can work here ?

Hi @Ranjanshivam9. A custom InputFile would work, similar to the example you provided (thanks for the link !). The implementation shown there loads the whole InputStream in memory, so it will require additional work to make it scale for very large file.
The focus of the next version will be to provide proper support for remote files. I will include support for user provided InputStream too, now that there is a need for it. I just need to find a solution suitable regardless of stream size.
Keep watching this issue, but don't worry if it takes me longer than you would like ...

Hi @Ranjanshivam9. Support for remote files, including on AWS, was added in version 0.10.0 - available for tablesaw 0.42.0 and up. See the updated README for details. This new version also supports using a tablesaw Source created from an InputStream.
I hope this fits your needs. Feel free to reopen this issue or create a new one if you still have troubles with the library.


client createAccountAddress should return a Resource\Address

fix for issue https://github.com/coinbase/coinbase-php/issues/82
best,
FA

This would be inconsistent with the rest of the library (createCheckout, createOrder, etc.)

This would be inconsistent with the rest of the library (createCheckout, createOrder, etc.)

Maybe all create's should return the created object.
Anyway, i have already an workaround to make this work.. as expected (at least to me).


Support faster playback rates in paella video player

Depending on your lecturer, 1.5x can really be way to slow.
Please review, this is my first contribution to this repository!
Your pull request should:

[x] have a concise title
close an accompanying issue if one exists
[x] be against the correct branch (features can only go into develop)
include migration scripts and documentation, if appropriate
[ ] pass automated tests
[x] have a clean commit history
[x] have proper commit messages (title and body) for all commits

Hi @LinqLover, thanks for the patch and welcome to the community. We are happy to see you here.
The patch looks good and works as expected although I'm not sure if speed > 2× is really still useful. Do you think people will actually use those?
Could you maybe submit an ICLA to Apereo Foundation (I'm assuming you have none filed yet) that gives us a bit of legal protection. Essentially, you are declaring that you cannot make claims to your contributions later on, causing trouble for the project. That's probably not strictly necessary for this kind of patch but itstill makes things easier for us if you don't mind.
Finally, I'm wondering if you want this to go into older versions of Opencast. This would probably also be valid for 9.x at least. The develop branch is what will become Opencast 10 around July next year. On the other hand, if you target r/9.x that will be released in ~3 weeks.
Finally, feel free if you have any questions.

I'm not sure if speed > 2× is really still useful. Do you think people will actually use those?

2.5× can definitively be useful if someone is speaking slowly), 3× was rather intended for fast-forwarding (for instance, you can still watch all slides or screencast activities). Personally, I'd rather like to support as much speed as possible because it does not harm, but it is a pity even if only a single student is getting bored because a video is going on too slow ...

Could you maybe submit an ICLA to Apereo Foundation (I'm assuming you have none filed yet) that gives us a bit of legal protection.

Done.

Finally, I'm wondering if you want this to go into older versions of Opencast.

Oh, I did not notice this, thanks for the pointer! What's the backport process for this repository? Should I simply open another PR against the r/8.x branch to cherry-pick 997e9fe or would you recommend something else?

If you are a bit familiar with git, you can just update this branch (e.g. rebase to a release branch and then force-push to your GitHub repo). That will automatically update this pull request. Then hit the edit button at the top -right of this pull request and update the target branch.
If you don't feel comfortable doing that, closing this and just opening a new pull request against the release branch will work just fine.

2.5× can definitively be useful…

Fair enough.

Thank you, I'm trying that. How can I find out as a student which version of opencast my university is using?

Hm ... What did I do wrong? :-(

Hi @LinqLover, you probably rebased while including a few too many commits.
I've just rebased this for you, recording what I did:

https://asciinema.org/a/375081

I've set this to r/8.x since r/7.x is more or less and of life and while there will be a last release there shouldn't be any changes without a very good reason. I would probably have gone for r/9.x but I've set this to r/8.x instead since you seem to want it in older releases.
If you are okay with my update, we can merge this.

Wow, thanks a lot for the extra tutorial! :-) I did not know the interactive option for rebase, this was exactly what I was looking for. The patch looks good to me, ready to merge. :-)


[Proposal] Log for botman

It would be great for botman to have it's own error logger for better debugging.

This will be possible with the new middleware system as proposed in #338


Warning on line 121 of GeofenceTransitionsIntentService.java

Unchecked call to 'add(E)' as a member of raw type 'java.util.ArrayList'
I am using Android Studi0 <IP_ADDRESS>, what's the best way to fix this?

The warning triggers because triggeringGeofencesIdsList is not defined with a parameter.
Changing
ArrayList triggeringGeofencesIdsList = new ArrayList();
to
ArrayList triggeringGeofencesIdsList = new ArrayList<>();
gets rid of the warning.
I'll submit a patch to fix this.

I made the following changes and I am still getting the warning.
ArrayList triggeringGeofencesIdsList = new ArrayList<>();
or
ArrayList triggeringGeofencesIdsList = new ArrayList();
Please double check and let me know what you come up with.

Changing
ArrayList triggeringGeofencesIdsList = new ArrayList();
to
ArrayList triggeringGeofencesIdsList = new ArrayList<>();
fixes the warning.
We are using triggeringGeofencesIdsList to add only String, so it is safer to specify the ArrayList as ArrayList.

I think @shailen was suggesting the same solution but had problem with markdown.
We have to type \<String> to get <String>


[BUG] Setting the pitch value to float will not process the audio

Describe the bug
In the TTS tab, if you set the pitch value to float numbers, it will not run the conversion.
For example, setting the pitch value to 10 works, but 10.2 does not.
Desktop (please complete the following information):

OS: Windows 11
Browser Edge

It's not a bug, pitch must be an integer


Grouping items not only by first letter

I'm submitting a ...

[ ] bug report
[x] feature request
[ ] support request

What is the current behavior?
Grouping items with GroupColumn and GroupOrder groups items only by first character.

What is the expected behavior?

Grouping items by full content of a column.

If you are submitting a feature request, what is the motivation / use case for changing the behavior?

Example grouping by foldername:
++P
Party Saturday - File 1
Party Saturday - File 2
Party Friday - File 1
Party Friday - File 2
The grouping in this case is useless. Better:
++Party Saturday
Party Saturday - File 1
Party Saturday - File 2
++Party Friday
Party Friday - File 1
Party Friday - File 2

Other information (e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, etc)

Maybe its possible to add custom groups like the normal Listview Control
Thanks a lot for your great control!

I just added a Grouper property to column headers which should be an implementation of ImageListView.IGrouper. For example:
private class MyGrouper : ImageListView.IGrouper
{
    public ImageListView.GroupInfo GetGroupInfo(ImageListViewItem item)
    {
        string str = item.Text;
        while (str.Length < 3) str = "_" + str;
        str = str.Substring(0, 3);

        int hash = 0;
        int order = hash ^ str[0] ^ str[1] ^ str[2];

        return new ImageListView.GroupInfo(str, hash);
    }
}

and used like:
myImageListView.Columns[0].Grouper = new MyGrouper();


Automate dev process

Use npm to make SCSS and TS compiling more automatic.

@dgendill
Probably overkill for this project but I wanted some Node practice 😉
Try this when you get a chance:
npm install
npm start

Let me know if anything catches on fire.

Also not sure I did things in the right order because I wanted to include your package.json update so I started a branch from there and now it looks like there are a lot of commits unrelated to this PR:

Nice!  Install and build work for me, and it did the compilation afterwords.  The only thing I ran into is npm install on it's own didn't install the typescript and browsersync devDependencies. I think that might be specific to my system because I have the NODE_ENV environment variable set to "production".  So I had to run NODE_ENV=development; npm install instead.  I don't think npm has a build in way to distinguish between development postinstall and production postinstall, so maybe we should move the devDependencies to regular dependencies just to simplify things - At least right now, we probably don't need to distinguish between the two environments.

Done and done: #17


Make it easier to add hosting services

Fixes https://github.com/aspnet/Hosting/issues/145

Hosting.Create() basically is the new fallback service provider method with this change...
/cc @davidfowl @lodejard @Tratcher

Question, do we want to allow the additional services to override the fallback ones?  Currently we add the fallback services after the additional, so I'd just have to flip the order we add the services when Importing if we want to enable overriding behavior...

@HaoK what about making this Action<IServiceCollection> ?

Updated with Action

This makes me wonder if things would be simpler if we just queried for IEnumerable in the Import method instead.

Good call on moving the bookkeeping to Import, makes the code quite compact now.
Also found a few minor issues (missing null guard in ConfigureHostingEnvironment, and fixed an issue with the TestServer unit test using the wrong overload of TestServer.Create

Updated PR removing optional parameters, and moving IConfiguration last for Create

Reverted since 3 MVC functionals failed from this, need to investigate

:shipit: When @HaoK figures out the bug

@HaoK I want one more overload:
HostingServices.Create(Action<IServiceCollection> configureHostServices)

We should also look at cleaning up the API a bit. What purpose does the returned IServiceCollection serve if you can't add anything to it.

Well, we use it to create the service collection, so we pass it around like in StartupLoader, and it seems nicer to let Create new up the Collection than require all callers to pass in the service collection they want to import into.  The first iteration of this looked more like that, where it was Import instead of Create and took the collection as a parameter.

Overload added 28cc37de96d8593e81ba5666db546ede764196f5


add link to CMake's prebuilt binaries for Linux

Add link to the CMake's Microsoft variant prebuild binaries for Linux.

@lukka : Thanks for your contribution! The author, @corob-msft, has been notified to review your proposed change.

@lukka : Thanks for your contribution! The author, @corob-msft, has been notified to review your proposed change.


Initial setup window is to narrow

It should always have been OK, because of layout management... re-open, if it still isn't OK (maybe add a screenshot).


Twig: Update Getting Started Docs

It seems like there are two ways of using the DS in Drupal projects.

You can use the new ILO Base Theme. This is the recommended approach.
You can use our components to roll your own theme, which is what ILO-org is currently doing

We need to correctly document both approaches in the Storybook Docs. I'd suggest reformulating the Getting Started section and adding two new sections for each approach.
Getting started

General Introduction to the Design System
Key links to designer and branding documentation
Explanation of the two recommended usage approaches

ILO Base Theme

Instructions for installing and using the Base Theme

Custom Theme

Recommendations for usage in a custom theme

Does that sound like a good approach to you @ademarco?

Sorry, this is a duplicate of #979


[SKiDL BUG] asked for LM393, netlist and schematic shows LM2903

Kicad v5, macOS 10.14.6
#!/opt/local/bin/python3.12

import os

os.environ['KICAD_SYMBOL_DIR'] = '/Library/Application Support/kicad/library'

from skidl import *

u1 = Part('Comparator', 'LM393', ref='U1', footprint='Package_DIP:DIP-8_W7.62mm')

print(generate_netlist())
generate_schematic()

(export (version D)
  (design
    (source "sk2.py")
    (date "10/26/2024 11:05 AM")
    (tool "SKiDL (1.2.3)"))
  (components
    (comp (ref U1)
      (value LM2903)
      (footprint Package_DIP:DIP-8_W7.62mm)
      (fields
        (field (name F0) U)
        (field (name F1) LM2903))
      (libsource (lib Comparator) (part LM2903))
      (sheetpath (names /top/8858243136256944579) (tstamps /top/8858243136256944579))))
  (nets)
)

I looked into the Comparator.lib file for KiCad 5 and it appears that LM393 is an alias for the LM2903, so the schematic is showing the main part identifier instead of the alias. Is this a mistake? If you drop an LM393 into the schematic, does it show LM393 as the part name or LM2903?
#
# LM2903
#
DEF LM2903 U 0 5 Y Y 3 L N
F0 "U" 150 150 50 H V C CNN
F1 "LM2903" 250 -150 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
ALIAS LM393

Thanks for looking into this. I created a new schematic in v5, and pressed A for add, and typed in LM393.  The description says it's an alias to LM2903.  The part it added is labelled LM393.  I was playing with chatgpt4o, and the netlist it generated included an LM393.  I hadn't considered that it may be an alias.  No matter, the circuit chatgpt4o generated was nonsense, so I'm not pursuing it.  Hopefully a future version of chatgpt will generate a .kicad_sch directly with no mistakes.

I created a new schematic in v5, and pressed A for add, and typed in LM393. The description says it's an alias to LM2903. The part it added is labelled LM393.

OK, it sounds like SKiDL should generate the netlist using LM393 instead of using the LM2903 base part. I'll create an issue for this.

Hopefully a future version of chatgpt will generate a .kicad_sch directly with no mistakes.

That may be a long time coming. Creating a schematic in a .kicad_sch file requires things like placing the part symbols and then routing the wires that connect the symbol pins (it's more complicated than making a netlist). I doubt there's enough examples to train chatgpt so that it can do this based only on statistics (chatgpt has a hard enough time doing arithmetic without using external tools). However, I would love to be wrong about this.
Having chatgpt write SKiDL (or something like it) and then generating the schematic using dedicated tools is probably going to be more feasible in the short term. chatgpt can already write Python and the entire SKiDL manual could be loaded into its context window to guide what it generates.
I'd be interested in hearing about any future experiments you do regarding circuit synthesis using AI tools. Just open a discussion thead.

Thank you!


The cluster_name label on alloy_config_hash has extra quotes around it

What's wrong?
I give the alloy cluster a name with the Helm chart:
  alloy:
    clustering:
      name: alloy
      enabled: true

Which sets it as a command line arg:
spec:
  containers:
  - args:
    - run
    - /etc/alloy/config.alloy
    - --storage.path=/tmp/alloy
    - --server.http.listen-addr=<IP_ADDRESS>:12345
    - --server.http.ui-path-prefix=/
    - --cluster.enabled=true
    - --cluster.join-addresses=k8smon-alloy-cluster
    - --cluster.name="alloy"
    - --stability.level=generally-available

But the metric actually includes the quotes:
alloy_config_hash{
  cluster="test-cluster",
  cluster_name=""alloy"",         <--- extra quotes in the label value
  container="alloy",
  instance="<IP_ADDRESS>:12345",
  job="integrations/alloy",
  namespace="default",
  pod="k8smon-alloy-0",
  sha256="6afb9ff264d967bb48eec54fe76a63723c643f3eeb45b6dc532ecf8bb4e4fae7"
}

Steps to reproduce
Use the Alloy Helm chart to deploy Alloy with clustering and a cluster name.
System information
No response
Software version
No response
Configuration

Logs

Just tested this locally in a non-clustered, run from local build on osx and it doesn't occur, looks like it's the helm chart.
I went and looked at the containers/_agent.yaml file and saw that it was quoting the value
- --cluster.name={{ $values.clustering.name | quote }}

I changed it to not | quote and the quotes were gone. Tested with value with spaces, value with an attempt to break parsing, and it all worked, but I'm very very far from a k8s or helm expert. Does this make sense to you that it would work without | quote?
alloy:
    clustering:
      name: alloy cluster --cluster.name=fred
      enabled: true

alloy_config_hash{cluster_name="alloy cluster --cluster.name=fred",sha256="fbc28486b565e334d139908df7e3b9244f3c8de221d76cb3b489f38411825eeb"} 1

The PR was merged, can we close the issue?

Nope I don't think that it's in it: https://github.com/grafana/alloy/pull/2207/files, you can check with @ptodev if there is still time to squeeze this in

Gotcha. I'm fine to wait until 1.5.2.


Workflows Nolana QA on Dev

For LDP table changes (various reporting workflows)
For coral extract inventory creation
For purchase order marc ingest

2023-02-09 Workflows QA Results


Comments on the main branch code and files

The code as you will see is pretty rough. My main idea was to set a draft as follows:

Use different tabs for each step (8 tabs)
The first tab is just the description of the protocol and link to the (future) paper
Each tab has checkboxes for the user to check what has done or not (along headings briefly explaining what the step refers to).
I thought to develop steps 5 and 6 a bit more to include data summaries, plots, FD metrics, etc. I'm not sure if the remaining steps are worth to include anything useful, but ideas are welcome.
The text throughout the app is intended to be just a draft, we can refine it when the app comes to an end.

I've also uploaded two datasets, one is the classical "Iris" data and the other belongs to one of my publications. I included Iris because it has several measurements per species, so it can be thought as a trait dataset accounting for intraspecific variation.
Awaiting for your comments!

Hi Facundo,
This is a great start! I think making use of Iris data is a great idea. I only made a few small grammatical changes to the code in a branch. For me, the check boxes disappear when I click them, but I assume this is a work in progress.
I'd suggest we make this repo consistent with the reproducible code+data box I started drafting for part 8 (but you can edit this box to conform to whatever you think the minimum requirements are). https://docs.google.com/document/d/1tq-VYz9vNxLWMBkaoWyX8xfO9yqo1cK8IARNZnq_GRI/edit
If you agree, you could set up the file structure to include an 'data', 'output', and 'R' subfolder, and we can detail the steps required to use all of the files in the readme. I can do a first pass at this if you'd like.
@graco-roza might know whether keeping the shiny app in one script vs. separating ui and server components is best (I've seen arguments for the latter but the app is fairly simple so it might be ok).
I think it could be nice to convert parts of this checklist to a fillable form that people can download from the shiny app, and then upload to their own repos as proof they followed the steps. I am not skilled enough in shiny at this point to immediately know how to do this yet, but I can try to learn! This looks like a good starting point https://deanattali.com/2015/06/14/mimicking-google-form-shiny/
We could examples to the fillable form for steps 1-2 based on the iris or bird data. The iris/bird answers could be shown in the form before it gets filled as default answers.
For step 1: The current MS draft actually makes having a specific research question optional, so it could be good to have an initial decision tree where people decide if they're going exploratory or question-driven. I think it could be cool to show examples of each type of question with iris and bird data.
step2: people could fill in their preregistration doi/other identifier if they check yes and provide the location of the power analysis (maybe in the focal repo).
step 3-4

Could we have people upload their files at these stages rather than step 5?
Could we make some dummy community data here? And then we could show the output of 'head' on the resulting data frames n both steps.
The fillable form could include file paths to these data sources

step 4

should we ask about accounting for phylogenetic structure here too?
I think brief definitions of things like soft/hard traits could mean that people don't have to keep referring to the MS.

step5

This one is super impressive!!!
maybe we can reorder the left panel so that the things that happen before plotting are listed first (e.g. accounting for missingness/bias).
The need to deal with multicollinearity and the need for transformation requirements could be shown visually - maybe we can have a tab for transformations that replot the histograms after some standard transformations. Maybe we can also discuss outliers here? e.g. having another tab for outlier detection?
It also seems like the collinearity box is being printed far down the page
people could fill in any transformations/outliers/multicollinearity fixes they had to do in the fillable form

step6

again, here I think we can have some example answers from the example dataset in a fillable form
i'm not sure what the subetting is in "Did you subset your trait data?" - maybe give a few examples

step 7 - could we provide examples of some validation types in tabs using the iris or bird data? e.g. jackknifing and permutation tests? I can help with this
step 8 - maybe we can integrate the reproducible code box into this step more fully
Let me know if you want me to expand on anything!
Emma

Hi Emma, thank you so much for your nice feedback, you've made me think about manys stuffs!
I'll do my best to follow your box on reproducible code+data, but feel free to indicate if I'm getting this wrong or missing something.
It is weird that check boxes disappear when you click them, it shouldn't happen, or at least, this never has happened to me. We should check this out.
As the app is pretty simple right now, I don't think we need to separate the ui and the server.
Step 1:

Sounds good. Do you have an idea of what kind of input should we use? You can take a look at the available inputs in the shiny cheatsheet https://shiny.rstudio.com/images/shiny-cheatsheet.pdf

Step 2:

Mmmh, I should figure out how to do this! Could we simulate this with fake data or something similar?

Step 3:

I try to imagine how I'd use the app for my own analyses. Steps 3 and 4 are intended to check whether you collected, and how you collected the data. Some information could be directly retrieved when uploading a file (e.g. number of traits, types of traits), but this may become tricky as people upload their data in multiple forms with columns that may have nothing to do with the analysis. Besides, I think it would be best for the user to upload their files and see the dataset in the same output, rather than switching between files and output tabs.
Thinking in your comment on a final report (which is a very cool idea), then we should move to textInput so that people can fill entries that will appear in the report. Or should se keep both, so people can check the boxes and add their own info?
I agree to include a community matrix to the "data" subfolder ( I was going to include the corresponding bird community dataset). Indeed, I 've included a new file browser in Step 5, as well as a heading output.

Step 4

If we include an entry for phylogenetic information, we should add it to the manuscript.

Step 5

OK, I'll add your changes. This step and Step 6 are maybe the harder ones (but also the funniest)t o code, as they have many reactive programming.

Step 6

Good. Subsetting means to group set of traits based on their ecological meaning (e.g., you have 10 traits but you compute FD using 3 only traits accounting for pollen dispersal).

Step 7

Sure! It would be great if you can take on this.

Step 8

I agree to include the reproducible code box here.

To summarize, Emma could you take on:

@emmajhudgins I've created a data folder. Before going on, I've got a few questions:

Should I upload the app.R file in the R folder? If so, does the main branch remain unaltered?
What should I put in the the output folder? If I understand correctly, I cannot create an empty folder.

Thanks in advance
Facu

@emmajhudgins maybe you're right to upload the community and trait datasets in Steps 3 and 4, respectively. I've put two file browsers in the "Dataset tab" in Step 5, and it looks a bit overloaded once both datasets appear.


Ability to close the menus instantly without animation.

When using SwipeMenu in RecyclerView we need to have the ability to instantly close the menus without animation, because when the views are recycled there could be a possibility, that a new item will have an open menu, because the view is recycled. To solve this we need to set the menu closed once the view binds to the new item.

Release new version 5.4.7
Thanks


Display datetime64 arrays without showing local timezones

NumPy has an unfortunate way of adding local timezone offsets when printing datetime64 arrays:
<xray.DataArray 'time' (time: 4000)>
array(['1999-12-31T16:00:00.000000000-0800',
       '2000-01-01T16:00:00.000000000-0800',
       '2000-01-02T16:00:00.000000000-0800', ...,
       '2010-12-10T16:00:00.000000000-0800',
       '2010-12-11T16:00:00.000000000-0800',
       '2010-12-12T16:00:00.000000000-0800'], dtype='datetime64[ns]')
Coordinates:
  * time       (time) datetime64[ns] 2000-01-01 2000-01-02 2000-01-03 ...

We should use custom formatting code to remove the local timezone (to encourage folks just to use naive timezones/UTC).

can you give a pointer to where this would need to be done in the code?

https://github.com/xray/xray/blob/v0.5.2/xray/core/formatting.py#L250
The repr call on this line would need to be replaced with another function that checks the dtype of the numpy array and uses custom handling for datetime64.

Would it not make sense to use a pandas.DatetimeIndex instead of pure-numpy datetimes? It seems that DatetimeIndex already solves lots of the weirdness in the underlying numpy datetime objects and adds a bunch of useful functionality for things like groupby operations.

sounds good to me, @sjpfenninger, but I don't know the internals ...

The good news is that I fixed this display bug upstream in NumPy 1.11, which came out last month. If you upgrade to NumPy 1.11, datetimes are always treated as timezone naive. So I think we can actually consider this issue fixed.


Add separate metrics matcher to stat sinks

Title: Add separate metrics matcher to stat sinks
Description:
Currently, as far as I'm aware, there is a single metrics matcher configuration:
https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/metrics/v3/stats.proto#config-metrics-v3-statsconfig
I would like to propose adding a separate metrics matcher configuration option for each available stat sink.
This would be useful, if two or more stat sinks are used, that require different metrics subsets.
If there is actually a way to achieve this with envoy configuration, please let me know.

I don't think this is supported today but it's something that could be added.

I don't think this is supported today but it's something that could be added.

so, at first glance it appears to be a major feature.
are there any plans to take this into work from the team?


Add Ability to run rootless Docker Container with custom UID and GUID

Is your feature request related to a problem? Please describe.
When mounting the document volume for document scan, the documents and folders are owned by root. This can be problematic when I want to delete scanned documents within the Docker volume itself. Having root ownership restricts the ability to manage these files easily and can lead to permission issues.
Describe the solution you'd like
I would suggest running the Docker container with a custom User ID and Group ID. By specifying a non-root user, it will ensure that the files and folders created within the volume are owned by this user, thus avoiding permission issues and making it easier to manage the scanned documents directly from the host.
Additional context
To implement this feature, the Dockerfile should be modified to accept custom User ID and Group ID as build arguments, and the container should run with these IDs. Additionally, the Docker run command or script should be adjusted to use these custom IDs. This will improve security and ease of file management within the mounted volume.
Example Dockerfile changes:
ARG USER_ID=1001
ARG GROUP_ID=1001

RUN groupadd -g ${GROUP_ID} custom_user && \
    useradd -m -u ${USER_ID} -g ${GROUP_ID} custom_user

USER custom_user

Implementing this feature will greatly enhance the usability and security of the Docker setup for document scanning processes. Thank you for considering this request.

I use podman rootless and I never had an issue.
Could you explain how you start your container ?

Hi @damajor,
We start it within a custom docker compose file, where we added multiple services
(including openwebui, pipelines ollama and so on)
and mount the /documents dir
So by this method the /volumne dir by default is root owned

Well I switched to podman to replace docker everywhere so I dont have to mess with such thing and I can run any stack as a user, nothing is running as root.
In case of escape, the container root is mapped to the running local user.
Sorry I cant help more.


Breakpoint observer switches to desktop mode on <600px

While navigating the client on small screens, 599px or less are interpreted as desktop resolution rather than smartphone resolution.
Seen on nightly

Cannot reproduce anymore. Apparently that was a bug on nightly that was not updating as it should


Animater Hamburger Menu Icon to back Arrow

I want Paper Animation like thing to achieve animation of Hamburger Menu icon to Back Arrow instead of Cross button.

I'm sorry, but I will not add new animations to this project, since I'm currently more focused on Swift.
But maybe this will help you: https://github.com/fastred/HamburgerButton


NEP #20: Newton Encoded Asset Transaction (NEAT)

Checklist:

[x] I have read the NEP Guideline document.
[x] I have checked my NEP Draft is ready.

Changes

Added a number of Newton Encoded Asset Transaction definitions.

@benkoo following changes are required before we can move your NEPs to the Board Review stage:
NEP numbers

NEAT - #20
NPA - #21
NCA - #22
NBC - #23
NPC - #24

NEP File Naming
N is to be replaced by the NEP Number
NEP file name: /NEPS/nep-N.md
Assets directory: /assets/nep-N/asset-name.extension
NEP Repo Contents

Please remove any file not used in NEP doc file from the repo.
For PDF files for reference purpose, it is recommended to use URL to link that file from it's origin since we don't actually own those files.
Please use #20 #21 #22 #23 #24 for individual NEP Discussion Link.

For Assitance
If you need NEP Editors to assist on the formatting works above, please add the NEP Editors as collaborators to your repo

Link to your repo access settings - https://github.com/toyhouse/NEPs/settings/access
NEP Editors Usernames - @arisac @liuyong5653 @weixuefeng @zhouxiqiao ref

Qu Jianwei @i29 has accepted this NEP on NewChain: 0xb1da5722965b02c3669073fec1daa2e4bb5b562bdd5eed2d3c4277d9148c3936

Evan Liu @evanliuchina has accepted this NEP on NewChain: 0xe31a5161e27951cb22100ccbef46a55dc412b19e21aca8558e084cb6e70efa94

zqy15789 @zqy15789 has accepted this NEP on NewChain: 0xafe304c44d23eadabcab56d3610fee271f89406f77ca5df124acda12d35a63db

Lee Willson @leewillson has accepted this NEP on NewChain: 0x16e86fe7202e6bd000743d61e42828275858c94fe28a8b441d27fbc1757d42b2

VieYang @VieYang has accepted this NEP on NewChain: 0xb2dfba133125296e6d298e1617bbe56c7150c6a0a1ac4f7deef91a09f6ce40d2

Mr. Koo @benkoo has accepted this NEP on NewChain: 0xaff33f8b5430c70d4bf9d42bf0444554e5b1c4627e1af899af291c7483c8398e

Jiang Tao @jiangtao-tang has accepted this NEP on NewChain: 0xca994f80c67c4dee3ccf6c85fc4fa2679ebf42f7dee82ffdcd56ec9bf3d99113


Send welcome email when an account is created

Otherwise they won't know the slug.

Closed in 4eb2c916337cc2c79192f8fd69d635e29b37bfe1


EOF while parsing a value when watching a release mode

When I execute cargo lambda watch --release, the error below occurred after processing.
ERROR Lambda runtime invoke{requestId="b59bac63-6570-4f70-97d1-4563c0db7935"}: Error("EOF while parsing a value", line: 1, column: 0)
When I execute cargo lambda watch, the error didn't occur.
Here's how to reproduce it.
async fn function_handler(event: Request) -> Result<Response<Body>, Error> {
    Ok(Response::builder()
        .status(200)
        .body(Body::Text("".to_string()))?)
}

#[tokio::main]
async fn main() -> Result<(), Error> {
    tracing_subscriber::fmt()
        .with_max_level(tracing::Level::INFO)
        // disable printing the name of the module in every log line.
        .with_target(false)
        // disabling time is handy because CloudWatch will add the ingestion time.
        .without_time()
        .init();

    run(service_fn(function_handler)).await
}

Hi @saito-kosuke I'm getting the same issue...did you manage to find a fix?

@davehorner
I'm using Mac so this issue is not specific to windows.
@Christof23
I couldn't fix it yet, but the issue didn't occur in a real lambda environment, so I tested in the real environment rather than my local machine, unfortunately.

Hi both, I'm using Mac M1. The only problem is that I seem to be getting the same issue in the real lambda environment..

@Christof23 You'd be better off pasting the error log of lambda.


[Accessibility, UX] New WCAG target size accessibility requirements

Hello dear VS Code people!
There's a new WCAG accessibility requirement to make targets have 24px area:
https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html
To clarify, this doesn't mean hit area, so it doesn't mean that icons have to be 24×24px big, because margins count as well.
So for example, these icons are OK because it's 20×20 icon, but it has 4px margin on the right, and that makes the whole space actually have 24px "safe" area.

However, there are some places in VS Code that are just a little bit shy of 24px.
For example, this is 23px tall.

File browser is 22px.

The question is: are you investing some effort into bumping up these sizes so that they meet the 24px target size requirement?
The main reason I am asking is that we build products inside VS Code, and these products follow strictly what the parent design system is doing (so what VS Code designers are doing). And we have a slight conflict here, because from SAP's side we would like to follow WCAG guidelines in order to be accessibility compliant, however, we would also like that our products feel like they belong into VS Code environment and not look like Frankenstein monster stapled together. 🧟♂

We are thinking about this. Our understanding that this requirement is still not "active" which gives us more time to tackle it.
Having said that, it would still help if you have already identified all the places where we are not respecting this requirement.
fyi @daviddossett

Regarding the "active" requirement. The standard itself is live. It's active. It's just a decision by the various companies now how to implement it and on which timeline. From our side (SAP) we have one year to implement the changes brought to us by the WCAG 2.2 standard. Of course, I don't know Microsoft's inner workings and what are your decisions on how to implement the changes or are you even aiming to implement them.
At the moment, the places where I found this 24px standard not met are various line items that are stacked vertically one on top of another. So Command Palette, File Browser, regular Dropdowns, vertical menus, and so on.

No action items planned, thus closing this one for now


Added card

#3

You have to run npm run format and npm run test:js before making a commit. I will add the same info in the README soon.

Can we add these two in a scripts in package.json as pre-commit command

I already have the required scripts in the pre-commit command. For these the README is now updated.


How to implement zoom?

I just noticed that stuff shows up a bit small on linux... any way to zoom?

https://css-tricks.com/almanac/properties/z/zoom/

While that is a valid solution for some cases, it doesn't resize the viewport height (at least on windows). If you have some CSS that depends on vh or vw units, this may lead to other issues, like scrollbars appearing where you didn't intend for them to be.

I reckon we'd have to hope for either @zserge (or other C/cgo guru reading this :grin: ) to extend webview with a wrapper/binding to this WebKitWebView API call:
https://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebView.html#webkit-web-view-set-zoom-level


add REUSE tool compliance badge

Adding REUSE tool compliance bade
See more at https://api.reuse.software/info/github.com/SAP/project-odense

 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.


Remake PR: Uninstall CTT PowerShell Profile

Type of Change

[x] New feature
[ ] Bug fix
[ ] Documentation update
[ ] Refactoring
[ ] Hotfix
[ ] Security patch
[x] UI/UX improvement

Description
Implements the ability to uninstall the CTT PowerShell Profile and all its related dependencies.
Testing
I have tested the profile uninstallation functionality by running it in the following test scenarios:

Baseline: Installing the CTT PowerShell Profile
Test 1: Uninstallation of OhMyPosh dependency: [✅] Successful
Test 2: Uninstallation of Nerd Fonts dependency: [❓] Conditional

Additional Context: See Notes for Test 2 in Additional Information.

Test 3: Uninstallation of Terminal-Icons dependency: [✅] Successful
Test 4: Uninstallation of Zoxide dependency: [✅] Successful
Test 5: Skipping uninstallation of in-use dependencies: [✅] Successful
Test 6: Uninstallation of CTT PowerShell Profile: [✅] Successful

Impact

Covered by ## Description, ## Testing, and ## Additional Information.

Issue related to PR
Resolves #2836
Additional Information
New Files Created

$PSProfile.hash: A file that stores the hash of the CTT PowerShell Profile; this is used to check if the profile is installed on the system.

Additional Context:

The path is derived from the $PSProfile variable with .hash being appended to the end of the file path.
Example Hash File Path: C:\Users\<user>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1.hash.
This file will be cleaned up and removed when the CTT PowerShell Profile is uninstalled from the system.
$PSProfile.bak: A file that is used as a backup of the PowerShell profile prior to the CTT PowerShell Profile being installed on the system.

Additional Context:

The path is derived from the $PSProfile variable with .bak being appended to the end of the file path.
Example Backup File Path: C:\Users\<user>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1.bak.
This file will be moved back to the original PowerShell profile's location when the CTT PowerShell Profile is uninstalled from the system.

Notes For Test 2

Note 1: Nerd Fonts won't always be installed due to an issue with the setup script for the PowerShell profile.
Note 2: If the font is not installed, the user will see the message: ===> Already Uninstalled: Nerd Fonts. <===.

Possible Change
I'm not sure if the documentation files in ./docs/dev/features/PowerShell-Profile are necessary, I added them for completeness but if they aren't needed please let me know so I can remove them.
Checklist

[x] My code adheres to the coding and style guidelines of the project.
[x] I have performed a self-review of my own code.
[ ] I have commented my code, particularly in hard-to-understand areas.
[x] I have made corresponding changes to the documentation.
[x] My changes generate no errors/warnings/merge conflicts.

Thanks for the uninstall addition and the fix for updating powershell on setup.

First off: Thanks for merging the new feature, and please let me know if any issues come up with it.
Secondly: I did check and this appears to be a known issue, but I want to query about it regardless:
Just to get your input: Should I remove the documentation files I added through a new PR? I noticed most of the documentation links do not work at the moment, presumably because they are being refactored. Here is a list of broken links, for reference:

https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/Powershell7.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/RestorePoint.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/EdgeDebloat.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/DeleteTempFiles.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/AH.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/ConsumerFeatures.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/DVR.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/Hiber.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/Home.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/Loc.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/Powershell7Tele.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/Storage.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/Tele.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/Wifi.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/EndTaskOnTaskbar.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/IPv46.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/DiskCleanup.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/LaptopHibernation.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Essential-Tweaks/Services.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Shortcuts/Shortcut.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/DebloatAdobe.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/BlockAdobeNet.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableBGapps.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableFSO.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableLMS1.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/Disableipsix.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveCopilot.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableNotifications.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/Teredo.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/changedns.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/DeBloat.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveHomeGallery.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveEdge.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveOnedrive.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/OOSUbutton.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/RightClickMenu.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/Display.md
https://christitustech.github.io/winutil/docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/UTC.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Customize-Preferences/BingSearch.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Customize-Preferences/TaskbarAlignment.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Customize-Preferences/DarkMode.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Customize-Preferences/DetailedBSoD.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Customize-Preferences/MouseAcceleration.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Customize-Preferences/NumLock.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Customize-Preferences/TaskbarSearch.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Customize-Preferences/ShowExt.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Customize-Preferences/HiddenFiles.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Customize-Preferences/SnapFlyout.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Customize-Preferences/SnapSuggestion.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Customize-Preferences/SnapWindow.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Customize-Preferences/StickyKeys.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Customize-Preferences/TaskView.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Customize-Preferences/VerboseLogon.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Customize-Preferences/TaskbarWidgets.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Performance-Plans/AddUltPerf.md
https://christitustech.github.io/winutil/docs/dev/tweaks/Performance-Plans/RemoveUltPerf.md
https://christitustech.github.io/winutil/docs/dev/features/Fixes/RunAdobeCCCleanerTool.md
https://christitustech.github.io/winutil/docs/dev/features/Fixes/Network.md
https://christitustech.github.io/winutil/docs/dev/features/Fixes/Update.md
https://christitustech.github.io/winutil/docs/dev/features/Fixes/Autologin.md
https://christitustech.github.io/winutil/docs/dev/features/Fixes/DISM.md
https://christitustech.github.io/winutil/docs/dev/features/Fixes/Winget.md
https://christitustech.github.io/winutil/docs/dev/features/Legacy-Windows-Panels/control.md
https://christitustech.github.io/winutil/docs/dev/features/Legacy-Windows-Panels/network.md
https://christitustech.github.io/winutil/docs/dev/features/Legacy-Windows-Panels/power.md
https://christitustech.github.io/winutil/docs/dev/features/Legacy-Windows-Panels/printer.md
https://christitustech.github.io/winutil/docs/dev/features/Legacy-Windows-Panels/region.md
https://christitustech.github.io/winutil/docs/dev/features/Legacy-Windows-Panels/sound.md
https://christitustech.github.io/winutil/docs/dev/features/Legacy-Windows-Panels/system.md
https://christitustech.github.io/winutil/docs/dev/features/Legacy-Windows-Panels/user.md
https://christitustech.github.io/winutil/docs/dev/features/Features/dotnet.md
https://christitustech.github.io/winutil/docs/dev/features/Features/DisableLegacyRecovery.md
https://christitustech.github.io/winutil/docs/dev/features/Features/DisableSearchSuggestions.md
https://christitustech.github.io/winutil/docs/dev/features/Features/RegBackup.md
https://christitustech.github.io/winutil/docs/dev/features/Features/EnableLegacyRecovery.md
https://christitustech.github.io/winutil/docs/dev/features/Features/EnableSearchSuggestions.md
https://christitustech.github.io/winutil/docs/dev/features/Features/hyperv.md
https://christitustech.github.io/winutil/docs/dev/features/Features/Install.md
https://christitustech.github.io/winutil/docs/dev/features/Features/legacymedia.md
https://christitustech.github.io/winutil/docs/dev/features/Features/nfs.md
https://christitustech.github.io/winutil/docs/dev/features/Features/Sandbox.md
https://christitustech.github.io/winutil/docs/dev/features/Features/wsl.md

Apologies in advance for derailing this a bit, I just wanted to confirm it as the links I added don't work either.


Disallow empty cubic and rational curves

Objective
Previously, our cubic spline constructors would produce CubicCurve/RationalCurve output with no data when they themselves didn't hold enough control points to produce a well-formed curve. Attempting to sample the resulting empty "curves" (e.g. by calling CubicCurve::position) would crash the program (😓).
The objectives of this PR are:

Ensure that the curve output of bevy_math's spline constructions are never invalid as data.
Provide a type-level guarantee that CubicCurve and RationalCurve actually function as curves.

Solution
This has a few pieces. Firstly, the curve generator traits CubicGenerator, CyclicCubicGenerator, and RationalGenerator are now fallible — they have associated error types, and the curve-generation functions are allowed to fail:
/// Implement this on cubic splines that can generate a cubic curve from their spline parameters.
pub trait CubicGenerator<P: VectorSpace> {
    /// An error type indicating why construction might fail.
    type Error;

    /// Build a [`CubicCurve`] by computing the interpolation coefficients for each curve segment.
    fn to_curve(&self) -> Result<CubicCurve<P>, Self::Error>;
}

All existing spline constructions use this together with errors that indicate when they didn't have the right control data and provide curves which have at least one segment whenever they return an Ok variant.
Next, CubicCurve and RationalCurve have been blessed with a guarantee that their internal array of segments (segments) is never empty. In particular, this field is no longer public, so that invalid curves cannot be built using struct instantiation syntax. To compensate for this shortfall for users (in particular library authors who might want to implement their own generators), there is a new method from_segments on these for constructing a curve from a list of segments, failing if the list is empty:
/// Create a new curve from a collection of segments. If the collection of segments is empty,
/// a curve cannot be built and `None` will be returned instead.
pub fn from_segments(segments: impl Into<Vec<CubicSegment<P>>>) -> Option<Self> { //... }

All existing methods on CyclicCurve and CubicCurve maintain the invariant, so the direct construction of invalid values by users is impossible.
Testing
Run unit tests from bevy_math::cubic_splines. Additionally, run the cubic_splines example and try to get it to crash using small numbers of control points: it uses the fallible constructors directly, so if invalid data is ever constructed, it is basically guaranteed to crash.

Migration Guide
The to_curve method on Bevy's cubic splines is now fallible (returning a Result), meaning that any existing calls will need to be updated by handling the possibility of an error variant.
Similarly, any custom implementation of CubicGenerator or RationalGenerator will need to be amended to include an Error type and be made fallible itself.
Finally, the fields of CubicCurve and RationalCurve are now private, so any direct constructions of these structs from segments will need to be replaced with the new CubicCurve::from_segments and RationalCurve::from_segments methods.

Design
The main thing to justify here is the choice for the curve internals to remain the same. After all, if they were able to cause crashes in the first place, it's worth wondering why safeguards weren't put in place on the types themselves to prevent that.
My view on this is that the problem was really that the internals of these methods implicitly relied on the assumption that the value they were operating on was actually a curve, when this wasn't actually guaranteed. Now, it's possible to make a bunch of small changes inside the curve struct methods to account for that, but I think that's worse than just guaranteeing that the data is valid upstream — sampling is about as hot a code path as we're going to get in this area, and hitting an additional branch every time it happens just to check that the struct contains valid data is probably a waste of resources.
Another way of phrasing this is that even if we're only interested in solving the crashes, the curve's validity needs to be checked at some point, and it's almost certainly better to do this once at the point of construction than every time the curve is sampled.
In cases where the control data is supplied dynamically, users would already have to deal with empty curve outputs basically not working. Anecdotally, I ran into this while writing the cubic_splines example, and I think the diff illustrates the improvement pretty nicely — the code no longer has to anticipate whether the output will be good or not; it just has to handle the Result.
The cost of all this, of course, is that we have to guarantee that the new invariant is actually maintained whenever we extend the API. However, for the most part, I don't expect users to want to do much surgery on the internals of their curves anyway.

Does this supersede https://github.com/bevyengine/bevy/pull/13805?

Does this supersede #13805?

I don't think so; that one is solving #13726, which is mostly orthogonal to this.


No such file or directory: './3dmatch/test/7-scenes-redkitchen/cloud_bin_1.pth'

Thank you for sharing your work.
When performing the test procedure on 3dmatch dataset，I got error
FileNotFoundError: [Errno 2] No such file or directory: './3dmatch/test/7-scenes-redkitchen/cloud_bin_1.pth'
There are only *.ply and *.txt in 3dmatch dataset, not *.pth. what should I do

Thank you for your interest.
Because we conducted experiments on both 3DMatch and 3DLoMatch, we utilized 3DMatch and 3DLoMatch dataset which was provided by PREDATOR. And I just confirmed that *.pth and *.txt are involved, not *.ply.
And did you use the same 3DMatch dataset ?
Best regards.

Thank you for your response. This is a screenshot of the prs-eth/OverlapPredator README.

I've downloaded 3dmatch.zip from https://share.phys.ethz.ch/~gsg/pairwise_reg/3dmatch.zip.  I got the same result as the screenshot.

Yes, this is the raw dense 3DMatch data.
Please download the processed 3DMatch data from https://share.phys.ethz.ch/~gsg/Predator/data.zip. More details can be seen here.
Thank you for you to point out this mistake about dataset url. I'll update the url link in README.md as soon as possible.
Best regards.

Thanks for solving my question.
Best regards.


Different response models

Hi. I was wondering if there was support to dynamically return either of two response models similar to how FastAPI allows. I checked the docs and issues and couldn't find it documented. I tried using Union shown by the example below but am given: RuntimeError: Use params or add_pagination.
@router.get("/all")
async def get_all(user: User) -> Union[Page[AdminResponseModel], Page[UserResponseModel]]:
    if user.role == "admin":
        return AdminResponseModel
    else:
        return UserResponseModel

Hi @visuxls,
You need to add pagination_ctx:
from fastapi import APIRouter, Depends

from fastapi_pagination import pagination_ctx, Page

router = APIRouter()

@router.get(
    "/all",
    dependencies=[Depends(pagination_ctx(Page))],
)
async def get_all(user: User) -> Union[Page[AdminResponseModel], Page[UserResponseModel]]:
    if user.role == "admin":
        return AdminResponseModel
    else:
        return UserResponseModel

Hi @visuxls,
I am closing this issue. Please, reopen it, in case of any questions.


Update free-courses-ko.md

Added
Django and Flask

Added Django and Flask

Please Update Tamil , Malayalam , English , Korean


Refactor incremental code generation feature with valyala/quicktemplate instead of text/template

When appending new code to the two files handlerimpl.go and svcimpl.go, there is performance issue. I want to refactor this feature using valyala/quicktemplate instead, but I should confirm the posibility.
https://github.com/valyala/quicktemplate/issues/92#issue-1257727260

Fixed. The bottleneck isn't text/template, is golang.org/x/tools. You can refer to https://github.com/golang/go/issues/32750 and https://github.com/golang/go/issues/36034. Incremental generation of handlerimpl.go, svcimpl.go and clientproxy.go are optimized 100x. Before 1s, now 10ms.


[FEAT]: Create HOWTO Install MicroPython on Arduino Nano 33 BLE

📑 Description

Closes #361

✅ Checks

[x] My pull request adheres to the code style of this project
[x] My code requires changes to the documentation
[x] I have updated the documentation as required
[x] All the tests have passed

ℹ Additional Information

@alv67 kindly please review


[Toolchain] Use installed toolchain functions

This commit uses installed toolchain getter function.
ONE-vscode-DCO-1.0-Signed-off-by: Jiyoung Yun<EMAIL_ADDRESS>

This fails Toolchian.listAvailable test. I think you need to add a change to the test code, too (maybe?).

FYI,
@jyoungyun Later, we may need to show toolchain information (e.g., dependent package list) when user clocks or hovers mouse over a toolchain node in the view.
One approach we could consider might be markdown tooltip.
tooltip?: string | MarkdownString | undefined;

example:

https://github.com/microsoft/vscode/issues/100741#issuecomment-668642462

/cc @dayo09 @struss

/cc @hyunsik-yoon

One approach we could consider might be markdown tooltip.

Oh, I already used tooltip for dependency information.
Here is draft PR(#688).


Add process-level parallelism to uvicorn.run

Enable multiple worker processes when running the app in normal mode (not --dev) and add test verifying that database reads and writes behave as expected under these conditions.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 96.92%. Comparing base (a3b7745) to head (f7a4c54).

Additional details and impacted files
@@           Coverage Diff           @@
##            trunk     #103   +/-   ##
=======================================
  Coverage   96.92%   96.92%
=======================================
  Files          34       34
  Lines        1465     1465
=======================================
  Hits         1420     1420
  Misses         45       45

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


[4.17] OCPBUGS-44363: add WIF support

cc @openshift/storage

/hold

/jira refresh

/jira refresh

/label backport-risk-assessed

/label qe-approved
/label cherry-pick-approved

/unhold

/hold

@chao007  Putting it on hold for now - what's the status of 4.18 testing? Are we done or close to done with testing?

Regression testing on 418 is passed. Prefer to merge it first and track back port by bug OCPBUG 44363.

/unhold

/retest

/lgtm


Update Android appCompatVersion

currently used version is 1.0.2
https://github.com/MohGovIL/hamagen-react-native/blob/9e70e2784d24d54a8b28f0a0d0c20f2f6562b982/android/build.gradle#L10
latest stable version is 1.1.0
https://developer.android.com/jetpack/androidx/releases/appcompat#version_110_3

Latest stable version is 1.2.0 now, which was released at: August 5, 2020, more details:
https://developer.android.com/jetpack/androidx/releases/appcompat#1.2.0


heading 2 becomes heading 1

While writing unit tests, I noticed that:
# one
### two
## three

Will lead to ## three becoming a <h1>. (see screenshot below).
Is that intended behaviour? I have not enabled strict_mode.

Thinking about this a bit more. Does it actually make sense to have two modes:

strict_mode: When set to True it will follow the headings order strictly. You must start writing documents from h1, and cannot skip headings (such as # title1\n### title2\n).

As in:
# title
### title 2
## title 3

Should always produce:
# 1. title
### 1.1.1 title 2
## 1.2 title 3

Or am I missing something?

   When I was writing the code, I didn't expect this to happen. This is indeed a bug.Please help me fix it.
   As for Strict Mode, my idea is that once the above happens, the number will stop from where the disorder has occurred. This applies to situations where you write something like something at the end of the article, rather than want to number.


Update README.md

Concisely describe what has been changed/addressed in the pull request.

Fix readme from when rebase duplicated lines

What tests have been done?
Where are the relevant files?

[x] No test files are required for this pull request. -->

What tests/review still need to be done?

None.
Is there an input change for users to Stock Synthesis?

[x] No, there was no input change. -->

Additional information (optional).

@Rick-Methot-NOAA Do you want changes now, or would you like to wait until the new website is published? Right now that section has all of the available information that we have published on the current github.io site.


Jest Error

(updated with more backtrace)\
After adding cable_ready package to my project, I can no longer run tests using jest.  I get:
 .../node_modules/cable_ready/javascript/cable_ready.js:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import morphdom from 'morphdom'
                                                                                ^^^^^^

    SyntaxError: Cannot use import statement outside a module

      at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:537:17)
      at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:579:25)
      at Object.<anonymous> (node_modules/stimulus_reflex/dist/stimulus_reflex.js:1:123)

Code works when using it, I just can't run javascript tests anymore.
cable_ready 4.4.4

It looks like this might be related to StimulusReflex rather than CableReady.

A standard practice for node package is to include both ESM and CommonJS in the same package.  Many put the ESM in a source directory and the CommonJS in a dist directory, with the details in package.json.  Doing this would make it easy to run a test suite like Jest while still including the ESM package for more fine grain builds.

Agreed - didn't realize we weren't. Are you interested in taking a shot at it?

We did that in the past with micrbundle in StimulusReflex but reverted the change because it didn't work when you tried to link the package locally or wanted to use sourcemaps. I also reverted this change in #77 for CableReady.
Now if I'm thinking about it: we don't need the CommonJS version during development would just need to build the CommonJS version as soon as we release a new version so it would be included in the released version.

It looks like StimulusReflex does this in it's package.
package.json
{
  "source": "./stimulus_reflex.js",
  "main": "./dist/stimulus_reflex.js",
  "module": "./dist/stimulus_reflex.module.js",
  "esmodule": "./dist/stimulus_reflex.modern.js",
}

source tree
.
├── dist
│   └── stimulus_reflex.js
├── package.json
└── stimulus_reflex.js

Which version is that @tleish?
The current master looks different: https://github.com/hopsoft/stimulus_reflex/blob/master/package.json#L31
Or is npm doing some magic processing when the package is released?

Looks like it's 3.4.0-pre4.

After upgrading StimulusReflex to the latest, I now get the same error... just on stimulus_reflex (before it imports cable_ready):
So, both packages now have similar challenges when testing a project which imports them as modules.
node_modules/stimulus_reflex/javascript/stimulus_reflex.js:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import { Controller } from 'stimulus'
                                                                                ^^^^^^

    SyntaxError: Cannot use import statement outside a module

    > 1 | import { Controller } from 'stimulus'
        | ^

Ok, I have a workaround that I believe it working now.  It took a bit to get to the resolution.  I still think both stimulus_reflex and cable_ready should distribute a CommonJS, but I'll give a bit of history how I got there.
Running test through jest with stimulus_reflex 3.4.0-pre4 and cable_ready (latest)
Pointed the error to cable_ready.
I updated the jest framework configuration (jest.config.js) with:
{
-   transformIgnorePatterns: ['<rootDir>/node_modules/(?!(@babel))'],
+   transformIgnorePatterns: ['<rootDir>/node_modules/(?!(@babel|cable_ready))'],
}

see: Configuring Jest > transformIgnorePatterns
This basically tells jest to transpile libraries loaded in cable_ready.  Doing this spewed thousands of lines of error code in the console.  My guess now is stimulus_reflex 3.4.0-pre4 (CommonJS) importing module cable_ready (ESM) caused this error.
Upgrading to stimulus_reflex (latest)
Pointed the error to stimulus_reflex.
I updated the jest framework configuration to:
{
-   transformIgnorePatterns: ['<rootDir>/node_modules/(?!(@babel))'],
+   transformIgnorePatterns: ['<rootDir>/node_modules/(?!(@babel|stimulus_reflex))'],
}

This now pointed the error to cable_ready, so I updated the jest framework configuration to:
{
-   transformIgnorePatterns: ['<rootDir>/node_modules/(?!(@babel|stimulus_reflex))'],
+   transformIgnorePatterns: ['<rootDir>/node_modules/(?!(@babel|stimulus_reflex|cable_ready))'],
}

No more errors 🎉 !!!
I'll point out I've been using jest testing with lots of node modules for a while, and this is the first time I've had to tell jest to include node modules when transpiling.  I have multiple node dependencies in this project, and do not need to add this for the other libraries.

Thanks @tleish for digging into this! Awesome that you found a workaround that works for now.
It's definitely not setup correctly so let's fix this for everyone 😊 I guess the problem is, that the main field in the package.json points to an es module.

Hey @tleish I'm going to close this because the docs are a better place for this kind of project wisdom.
Feel free to jump on Discord and hit #docs if you'd like to help me translate what you're doing to something generally applicable. Thanks for sharing!


Render HTML from String

Is there a convenient way to pass a html string to htmlunit and get back the rendered pagesource?
i am currently working around this by passing html string in data uri scheme as an url, which is working but not really convenient.
here is a little example test that on the one hand illustrates the described workaround:
    @Test
    fun `can render html string`() {
        val someHtmlIncludingEs6Script = """
            <!DOCTYPE html>

                    <title>i'm the title</title>

                    i'm the body

i'm the headline

i'm a paragraph

i'm a second paragraph

        """.trimIndent()

        val dataUriMimeType = "data:text/html;charset=UTF-8;"
        val base64encoded = Base64.getEncoder().encodeToString(someHtmlIncludingEs6Script.toByteArray())
        val dataUri = "${dataUriMimeType}base64,$base64encoded"

        val client = WebClient(BrowserVersion.BEST_SUPPORTED)
        val page: Page = client.getPage(dataUri)
        val httpResponse = page.webResponse
        val document = when {
            page.isHtmlPage -> (page as HtmlPage).asXml()
            else -> httpResponse.contentAsString
        }

        expectThat(document).isEqualTo("""
            |<?xml version="1.0" encoding="UTF-8"?>
            |
            |
            |    <title>
            |      i'm the title
            |    </title>
            |
            |
            |
            |        i'm the body
            |
            |

            |      i'm the headline
            |

            |

            |
            |        dynamically added
            |
            |

            |

            |
            |        dynamically added
            |
            |

            |
            |
            |
            |
        """.trimMargin())
    }

as you can see all p-tags text has been overwritten by javascript. great, exactly what i want.
❓  so whats my issue with this? --> an url will have a max length and if you can imagine a more complex html converted to a base64 data uri string can easily exceed this limit, thereby this solutions only works for "simple" websites.
💡 would you mind to add a feature that allows it to pass an html string to htmlunit and get rendered?
maybe it is even already there and i just didn't found it?

Hi Christian,
you should be able to get that behavior by using the WebConnectionWrapper and overwriting the response (copy it from a file, from a string, whatever).
Just a quick example to illustrate how to get there:
@Test
    public void simpleShowCase() throws Exception {
        final WebClient webClient = new WebClient(BrowserVersion.BEST_SUPPORTED);
        new WebConnectionWrapper(webClient) {
            @Override
            public WebResponse getResponse(final WebRequest request) throws IOException {
                final String body = "

";

                List<NameValuePair> responseHeaders = new ArrayList<>();
                final WebResponseData responseData = new WebResponseData(body.getBytes(), 200, "OK", responseHeaders);
                final WebResponse response = new WebResponse(responseData, request, 0);

                return response;
            }
        };

        HtmlPage page = webClient.getPage("http://doesntreallymatter.com");
        Assert.assertEquals(2, StringUtils.countMatches(page.asXml(), "works"));
    }

Nice this looks really promising. I'll give it a try as soon as I am back to keyboard 🙂 awesome

Maybe these methods (new in 2.48.0) are your friends
WebClient.loadHtmlCodeIntoCurrentWindow(String)
WebClient.loadXHtmlCodeIntoCurrentWindow(String).

@rbri it's working like a charm.
again an kotlin example:
    @Test
    fun `can render html string`() {
        val someHtmlIncludingEs6Script = """
            <!DOCTYPE html>

                    <title>i'm the title</title>

                    i'm the body

i'm the headline

i'm a paragraph

i'm a second paragraph

        """.trimIndent()

        val page = WebClient(BrowserVersion.BEST_SUPPORTED).loadHtmlCodeIntoCurrentWindow(someHtmlIncludingEs6Script)
        val renderedHtmlString = page.asXml()
        println(renderedHtmlString)

    }

/* prints :

        <?xml version="1.0" encoding="UTF-8"?>

            <title>
              i'm the title
            </title>

                            i'm the body

              i'm the headline

                dynamically added

                dynamically added

*/

which leads me to my last question :D
whats the "most correct way" to consume the rendered html as string?
what i am currently doing is calling asXml() on an HtmlPage, which is more or less correct since theoretically every XML is also a valid HTML. but on the other hand i am having things like <?xml version="1.0" encoding="UTF-8"?> and CDATA-wrapper in my "renderedHtmlString".

From my point of view asXml() is the normalized complete view of the current page; asNormalizedText() is the text only view.

great. then i will continue that way.
already changed to your approach and everything works smooth https://github.com/skrapeit/skrape.it/commit/d9bd8ce3576b19a23f83f3e046599d5382274b1f

Thanks, will close this.

thanks,sovle my problem:)