feat: auto complete suggestions on search bar

Your checklist for this pull request
🚨Please review the guidelines for contributing to this repository.

[ ] Make sure you are requesting to pull a topic/feature/bugfix branch (right side). Don't request your default branch!
[ ] Make sure you are making a pull request against the default branch (left side). Also you should start your branch off default branch.
[ ] Check the commit's or even all commits' message styles matches our requested structure.
[ ] Check your code additions will fail neither code linting checks nor unit test.
[ ] I have added necessary documentation (if appropriate)

Linked Issues
Fixes
Description
Please describe your pull request.
❤Thank you!
Post merge checklist

[ ] Follow steps from the guidelines for contributing to this repository.
[ ] If you are a new contributor, ping in the thread and one of the maintainers will add you to all-contributors list.

@120EE0692 ensure this all works and then approve the PR.

@120EE0692 ensure this all works and then approve the PR.

@rutajdash to make this work in production first we need to deploy backend.

@rutajdash before merging this make sure the this PR is merged.

@120EE0692 is this ready for merge?

@120EE0692 is this ready for merge?

After merging this PR for sure.

@120EE0692 final review and approval please.


[Task] Make config validator

Extracted from https://github.com/open-truss/open-truss/pull/84

It would be nice if we had validation system for the config before rendering the component tree. That would let us "statically" check configs and surface errors before runtime. This separation makes it easy to create tests, but I'm going to try and see if this can be done primarily using zod's type system / validation engine. I'll try and slot a space for this when I re-organize the code structure.

@hktouw I just came across this awesome code:
https://github.com/open-truss/open-truss/blob/4069594f7bda2463439b24af1f7f50a8d1acbdfd/packages/open-truss/src/configuration/engine-v1/config-schemas.tsx#L56-L76
so rad! I think that where we're currently using it is too high up in the rendering process though:
https://github.com/open-truss/open-truss/blob/4069594f7bda2463439b24af1f7f50a8d1acbdfd/packages/open-truss/src/configuration/engine-v1/RenderConfig.tsx#L25-L30
Right now, it fails the entire workflow if any part of the config is invalid. For workflow-level failures this makes sense. But for things that are incorrect inside a frame, I think instead it'd be better if we validate at the frame level. This way, frames without issue could render and those with bad configuration could fail and be replaced with helpful error context UI. What do you think? At the frame level is likely also a good place for data errors to be caught.

@kmcq @jonmagic I think we pretty much have the config validator code in place. Now that is left is to better surface this validation in the UI. Perhaps we can add a step to the config builder that will run the zod parser. What do you all think?

I like that. But also what should happen if you try to render a bad config?

In the config builder, maybe we show the user any exceptions / zod parsing errors (but prettified to make it easier to read)? In production, perhaps the same?


Title bug fixes & minor improvements

Fixed series.id
Remove unnecessary characters in volume.title
Added countdown timer for rate limit

The default value of "specvol" flag changes to TRUE

lgtm


docs: add note about transparent_reconnection

Avatica 1.21.0 changed some default behavior that could lead to intermittent query failures.
This PR has:

[x] been self-reviewed.

This looks good am merging this


[Renderer] Crash with bindless-mode on AMD card

https://community.amd.com/t5/opengl-vulkan/opengl-user-mode-driver-crash-got-instant-crash-inside/td-p/556169

Adding -nobindless launch parameter should fix this?

Adding -nobindless launch parameter should fix this?

Maybe or maybe not, -nobindless worked for me until 3 weeks ago amd released another driver update which completely breaks everything. now even -nobindless don't for me.

Latest version that seems to be working is 22.6.1(2022.06.29). Any newer version crashes the game(with or without -nobindless).

waiting for AMD to fix then

Driver update 2023.02.14(23.2.1) seems to fix this issue. Waiting for confirmation.

but it seem the fps still really low

Driver update 2023.02.14(23.2.1) seems to fix this issue. Waiting for confirmation.

Fix confirmed

Could you open a seperate issue about the performance issue? and also with your GPU information


希望能保存转录文本

好用，感谢大佬开发
留子有救了

能实现，等我有空写吧（

Implemented function of saving translation history, but the UI doesn’t look very good as I don't know about C# and frontend... You can try at feat-history branch. If this seems fine I can make a PR?

简单实现了保存翻译记录功能，不过UI看着不是很行，因为我不懂C#我也不会前端......可以试试feat-history这个分支的代码。 @SakiRinn 如果你觉得行我就发个PR?

Implemented function of saving translation history, but the UI doesn’t look very good as I don't know about C# and frontend... You can try at feat-history branch. If this seems fine I can make a PR?
简单实现了保存翻译记录功能，不过UI看着不是很行，因为我不懂C#我也不会前端......可以试试feat-history这个分支的代码。 @SakiRinn 如果你觉得行我就发个PR?

感谢贡献！
你提个pr吧，我瞧瞧


Exclude OC-Agent exporter from this release for now.

Codecov Report

Merging #1541 into master will decrease coverage by 0.02%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #1541      +/-   ##
============================================
- Coverage     82.93%   82.91%   -0.03%
  Complexity     1658     1658
============================================
  Files           251      251
  Lines          7719     7719
  Branches        754      754
============================================
- Hits           6402     6400       -2
- Misses         1097     1098       +1
- Partials        220      221       +1

Impacted Files
Coverage Δ
Complexity Δ

...census/implcore/trace/export/SpanExporterImpl.java
90.41% <0%> (-2.74%)
8% <0%> (ø)

Continue to review full report at Codecov.

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


Add supcom.u-carthage.tn

@moncef007 Please provide us with:

the school official website URL
the school street address, including city and country
an URL of a page on the official website where the school offers an IT-related long-term (>1 year) course
a proof, which shows that the school recognizes the domain you are submitting as an official email domain for the students.

Please provide us with a proof, which shows that the school recognizes the domain you are submitting as an official email domain for the students.
You can provide us with any of the following:

A copy of instruction (a hard-copy or electronic one) given to you by the school that tells you to use an email address in this email domain
An URL of a page at the official school website that says that students use this email domain
A reference to a recognized journal where an article was published by someone from the school, with explicit affiliation to the school, and e-mail address from the email domain
A WHOIS data that link the email domain to the school somehow
A copy of official letter from the school representative saying that the school provides e-mail addresses in this domain to the students
Anything else that can prove this fact in similar way, i.e. can be verified independently.

@philipto, please find the requested informations :

The school official website URL : http://www.supcom.mincom.tn/Fr/accueil_46_3
The school street address, including city and country : Cité Technologique des Communications, Rte de Raoued Km 3,5 - 2083, Ariana Tunisie
An URL of a page on the official website where the school offers an IT-related long-term (>1 year) course : http://www.supcom.mincom.tn/Fr/cursus_11_362
A proof, which shows that the school recognizes the domain you are submitting as an official email domain for the students:

The Ministry of Higher Education and Scientific Research, in collaboration with Microsoft and its partners, provides all students in public higher education with an Office 365 pack : https://www.facebook.com/watch/?v=213257499427752
supcom is part of the Ministry of Higher Education and Scientific Research : http://www.supcom.mincom.tn/Fr/a-propos-de-l-ecole_11_13

@moncef007 Thank you very much for the clarification. Pull request merged.


Corrupted state when JSON write fails

I've encountered a tricky situation when a request result is not JSON serializable. While this is definitely a programmer's mistake, this unfortunately leads into a situation where the LSP server stops working.
I'm working with VS-Code as a Language Client. After a request, the client reported:

Connection to server got closed. Server will restart.

Then the client spun up a new server process. The old process was still alive, the JVM up, and my REPL connected. It was somewhat tricky to diagnose what happened.
I tracked this down to the lsp4clj.io-chan/output-stream->output-chan, which connects an async channel with a OutputStream like this:
(let [output (io/output-stream output)
        messages (async/chan 1)]
    (async/thread
      (with-open [writer output] ;; close output when channel closes
        (loop []
          (when-let [msg (async/<!! messages)]
            (write-message writer msg)
            (recur)))))
    messages)

When write-message fails, because the message is not serializable, an exception is thrown. This code then stops consuming the channel and closes the OutputStream through with-open. The client then assumes the server died, and will spin up a new one.
However, the messages channel will not be closed and will no longer be consumed. That means that the server process will continue to run, and probably hang very soon because of backpressure from the blocked output channel.

With the current design, there is not much we can do here. We could:

ignore the error and thus the outgoing message
transform it to an error message
walk the message and find out which value(s) are not serialisable
catch exceptions and close the output channel

To me, only the last option sounds feasible. Note that there could be other exceptions as well, most likely IOException.
We could also change the way the server puts messages on the channel. As far as I know we use >!! and ignore the result, so we would not notice when the output channel gets closed and continue to run. All sent messages would be dropped silently. However, we would only notice on the next send attempt, which might not happen.
I do expect though that when the client hangs up, we will either get an exit message, or at least the input channel would close, so the server should notice that something's going on. I have not debugged that yet, but I expect the server does not shut down because it will be blocked on the output channel. So closing it on error might unblock the server and allows it to shut down properly.

thanks for the detailed info!
Catch the exception, log it somehow as an critical error and close the channel seems the best indeed


Custom headers for different page templates.

I suspect that the answer will be in using content blocks, but I wanted to get an idea from your team first. We are currently evaluating moving to Timber as a plugin as we have too many theme files to migrate at this time. So we want to start on a template by template basis.
My question is about dynamic headers in Timber and in Wordpress. Normally, in the Wordpress template architecture, you can create many header.php files that follow the {slug}-header.php guideline. Then in your template file you would call get_header('slug') to load your specific header you want. While Timber allows me to call {{ wp_head }} and it works to pull the main header file, I am wondering if there is a good way to call dynamic header files in the same fashion without needing to rewrite these on a case by case situation, until we are fully integrated.
I think I have a good solution, but I feel like there might be a cleaner way that I am missing. In my twig file I call {{ function( 'get_header', 'slug' ) }}
This is only a question for clarification. So far, love the plugin and love the work and support your team have put into it.

What if you specify the header in the base.twig
{% block head %}
<title>general head</title>
{{wp_head}}
{% endblock %}

and in what ever template you want to overwrite the base header by new one, for example in the archive.twig you would do:
{% block head %}
<title>archive head</title>
{{wp_head}}
{% endblock %}

This will overwrote the block head with the newly specified header content.
http://twig.sensiolabs.org/doc/functions/index.html
this way you can define what ever head (any content part) you like in what ever situation you like.

Hey, awesome, that sorted out my issue too. Thanks a lot!

@squibbleFish I see that this issue is resolved - Is this still something you're actively working on or need addressed? Please respond in two weeks or we'll close this thread


Some scripts enhancement suggestions

For k8s_setup.sh,

When we only setup single node cluster, it is a MUST to run kubectl taint nodes --all node-role.kubernetes.io/control-plane-; when we setup multi-nodes cluster, it is best practice to prevent schedule pods on control-plane node, we'd better support both such scenarios.
Before setup the cluster, we'd better check if the node has joined other clusters before, or just simply run rm -rf $HOME/.kube

For helm_manager.sh,

It is not user-friendly that we only mention the image.registry and image.tag settings as deploy prerequisites in README.md, can we add check in scripts that if the two values above are still the default ones, throw out warning and exit the script?

What's more, I saw many blank contents in each chart's values.yaml, i.e. can we just remove words similar as here? I mean if the parameter in the yaml is not mandatory and never configured, can we just ignore it to make the config as simple as possible?

For the helm manager script, we have configured here, user can easily set the two values.
-i          Install specified chart(s), or all charts if no chart is specified.
            When using -i, you can optionally set the image repository and tag:
            -r <repository_url>   Set the image repository (only valid with -i).
            -g <image_tag>       Set the image tag (only valid with -i).

And for the mentioned fields in values.yaml, we leave these fields to make it can be configured by the developers. It won't influence the setup, and it will keep consistency with the deployment files.

Yes, I did see the "-r" and "-g" options, they're clear for users, what I mean is the error handling or something like robust design.
since they are optional, so when they are not configured, we at least throw out error and let user to configure again, otherwise the helm deployment continues and fails finally.


add a prop to n-upload to hide the file list

This function solves the problem (这个功能解决的问题)
makes n-upload more customizable
Expected API (期望的 API)
add a prop to hide the file list

If there is no list, how do users know the status?

I hid the list with css and displayed the progress with n-progress

I think we can add a show-file-list prop.


Add imath 3.1.11

Add imath 3.1.11

I removed centos7 from CI jobs - therefore CI needs to be unblocked again...


Error: Cannot find module '/node_modules/sqlite3/lib/binding/napi-v3-darwin-arm64/node_sqlite3.node'

Error: Cannot find module '/node_modules/sqlite3/lib/binding/napi-v3-darwin-arm64/node_sqlite3.node'

+1

@jialinghui did you got any solution for your issue ? Have exactly the same.

@jialinghui did you got any solution for your issue ? Have exactly the same.
You can try
npm install --target_arch=arm64

Thanks @jialinghui
After running npm install --target_arch=arm64 I went with a new error:
<EMAIL_ADDRESS>has bad ELF magic: cffaedfe
Let me know if you had this one as well and found any solution :)

I have the same problem in electron product
pageage.json
{
"sqlite3": "^5.0.2",
"electron": "^12.0.2",
"vue-cli-plugin-electron-builder": "^2.1.1"
}

I have the same issue. :(

same here

https://github.com/mapbox/node-sqlite3/issues/1538#issuecomment-1037839683

Same issue, i think in last day it work. May be by mac os update?

Same here

Same issue in vue electron project

Would you be able to try with sqlite3 v5.0.3? It should fix a lot of the build issues 🙂


New framework test not running

I added a new test in https://github.com/flutter/flutter/commit/e49cc81222cfc837e5066e3e9963c8ec7b382224, but it has not started running yet.
cc @sealesj

@keyonghan Do you know why this new test would not be found in the "available builder list" log for this PR, but in all other PRs around this time I can see the new test in new available builders?

Wait. In the Current PR if the builder is new it would not be there until after it gets merged so this makes sense why it is not seen here in presubmit. @keyonghan would the builder be available in postsubmit though?

There was another instance of https://github.com/flutter/flutter/issues/122117 happened early this morning. The hanging should be due to ci_yaml_rolelr not rolled yet.
As of now, there is a yellow box without being schedule (shown below), I guess this was done by a manual run? Since the ci_yaml roller was still not rolled, it just hangs due to no builder available. Now the above incident was resolved and I just clicked another rerun, it is running now.

Looks like the build has run, so closing. Please reopen if this issue shows up again.


Finalize project idea

I made the wireframe as a guessing game multiple-choice quiz. The object is to look at the four movies, you are given the rank of a movie and you have to guess which one it is. If there aren't any objections this seems like a straight-forward thing we could accomplish in the time allotted.

I agree with the wireframe and project idea, I think this seems like a good way for us to go forward

I absolutely agree; that was extremely intelligent; nonetheless, let us keep in mind the timeline required for completion and presentation.

The mockups look great general acceptance criteria below:
GIVEN I am playing the movie-quiz game
WHEN I load the homepage
THEN it loads properly
WHEN I press Start
THEN the game begins
AND the first question pops up
AND I am presented with a Rotten Tomatoes (or IMDB) score and a list of 4 movies that it could possibly be
WHEN I select an answer
AND press Submit
THEN a review page pops up with a link to the movie trailer, a fun fact about the movie and whether or not you got the question right
WHEN you hit Continue
THEN the next question loads
OR the end of the quiz if you are at the final question
WHEN the end page of the quiz loads
THEN I see a list of High scores from LocalStorage


Add MongoDB as a vector store

Adding MongoDB as a vector store.
Implemented using basically the same logic and math as InMemoryVectorStore so it's prob worth breaking some of those shared classes out.
Big thanks to @tzolov for the work on pgvector-store, I was able to use most of his tests as guidance

Thanks so much, will review!

This is a strange case.  All other vector stores that I'm aware of would implement the search inside the database, where as in this case is implementing a search as a linear in-memory scan.  I think we would violate the "Principle of least astonishment" with this implementation.  The implementation should be changed/updated to use AtlastVectorSearch from MongoDB.
I'll leave the PR open for a while to discuss.

Maybe contributing a MongoDB implementation of org.springframework.ai.loader.Loader would be a good reuse of this PR for another feature.   Thoughts?

@Kirbstomper,
For me would bring more value if the mongodb integration supports the Atlast VectorSearch.
Don't know how challenging this task might be but will appreciate if you can explore this direction.
The Loader is a good idea as well.

@markpollack @tzolov
Getting a MongoDB data loader together doesn't look like it will be too much trouble. I can explore that in a separate feature/PR.
As for better supporting the capabilities provided by Atlas I can start to explore that direction. For now I think we can close this PR until that gets to a more realized state.

Have a look at Spring AI Issue #48. MongoDB offers Atlas Vector Search, which might be a suitable way to go.

Have a look at Spring AI Issue #48. MongoDB offers Atlas Vector Search, which might be a suitable way to go.

So I was looking into this a bit last week. Using its built in similarity search seemed to be giving results I didn't expect, so need to take a deeper look on it

I'll close this PR for now and there can be a new one that includes support for mongodb's native capabilities.


user: Consistent Footer

References #14
As a User, I want a consistent footer, so I can navigate to more information.
Definition of Done

[x] Footer is persistent across all pages.
[x] SDP branding and extra information is properly displayed.

Tasks

[x] Create footer component
[x] Add SDP branding into the footer
[x] Correct information pops up when hovering
[ ] Add other helpful links to the footer as needed

Finished adding SDP logo and functionality
[t : 120]


MSSQL: Alpine image support

Hi,
Can we have MSSQL Alpine image support? We already have an alpine base image. We can use it to create an MSSQL image.
we can use Microsoft OBDC driver for alpine from here
#Download the desired package(s)
curl -O https://download.microsoft.com/download/1/f/f/1fffb537-26ab-4947-a46a-7a45c27f6f77/msodbcsql18_<IP_ADDRESS>-1_amd64.apk
curl -O https://download.microsoft.com/download/1/f/f/1fffb537-26ab-4947-a46a-7a45c27f6f77/mssql-tools18_<IP_ADDRESS>-1_amd64.apk

#(Optional) Verify signature, if 'gpg' is missing install it using 'apk add gnupg':
curl -O https://download.microsoft.com/download/1/f/f/1fffb537-26ab-4947-a46a-7a45c27f6f77/msodbcsql18_<IP_ADDRESS>-1_amd64.sig
curl -O https://download.microsoft.com/download/1/f/f/1fffb537-26ab-4947-a46a-7a45c27f6f77/mssql-tools18_<IP_ADDRESS>-1_amd64.sig

curl https://packages.microsoft.com/keys/microsoft.asc  | gpg --import -
gpg --verify msodbcsql18_<IP_ADDRESS>-1_amd64.sig msodbcsql18_<IP_ADDRESS>-1_amd64.apk
gpg --verify mssql-tools18_<IP_ADDRESS>-1_amd64.sig mssql-tools18_<IP_ADDRESS>-1_amd64.apk

#Install the package(s)
sudo apk add --allow-untrusted msodbcsql18_<IP_ADDRESS>-1_amd64.apk
sudo apk add --allow-untrusted mssql-tools18_<IP_ADDRESS>-1_amd64.apk

closing... template already exist here

Hi 👋
Thanks for the suggestion, we appreciate it. However, the devcontainers/images repo only accepts improvements and bug fixes for the current set of maintained Images.
We don't have any current plans of supporting a new image, feel free to look at https://github.com/devcontainers/images#how-can-i-contribute for more information.
// cc @bamurtaugh for any other thoughts.

Thanks so much for opening @thevedicdeveloper and for tagging me @samruddhikhandale!
@thevedicdeveloper we definitely welcome you to create and contribute your own images, Features, and Templates! If you have any questions, please let us know.

does it mean I can work on it and create a pull request for this feature? @bamurtaugh

We absolutely encourage you to create any additional resources, though you'd host it in your own repo rather than this repo, as @samruddhikhandale shared above (this repo is just for a small subset of possible images). There is more info on this process in our docs: https://github.com/devcontainers/images#how-can-i-contribute.
If you create and self-host Templates or Features, you can open a PR to contribute them to our community index! There's info on this in our docs too: https://containers.dev/collections, https://containers.dev/implementors/templates-distribution/, https://containers.dev/implementors/features-distribution/.

thanks for the detailed information @bamurtaugh


View restrictions for documents

Rebased and refactored from #3245, with the following changes:

Removed support for permission restrictions on images - universally changing images to be served through Django would have knock-on effects that we can't reasonably deal with at this time. This in turn cleans up a lot of the front-end code, since it can be tuned specifically for documents rather than trying to generically handle "things that exist in collections":

the before_serve_from_collection hook is now before_serve_document (and is documented)
the hook function and password-required view are now part of wagtaildocs rather than wagtailcore
documents now have their own password_required template (so it doesn't erroneously say "You need a password to access this page")

PageViewRestrictions and CollectionViewRestrictions now use distinct session keys (necessary to avoid ID collisions)
wagtailadmin/collections/edit.html inherits from wagtailadmin/generic/edit.html again

The code looks good to me, and it works pretty well. Just a few minor UI issues:

The privacy button is currently at the top of the form, I think it'll look better at the top right where it is on pages:

It's a little strange that you can make a whole collection "private" but that restriction doesn't apply to images. If we extend this to include images in the future, we could have a big backwards compatibility problem to deal with.

It would be nice to have padlock icons next to private collections and documents in listings, dropdowns and choosers so editors can see if the document they're adding onto a page has a restriction.

The privacy button is currently at the top of the form, I think it'll look better at the top right where it is on pages

Can't see a good way to do that without either refactoring wagtailadmin/shared/header.html (to allow it to be customised by overriding blocks in wagtailadmin/collections/edit.html) or creating new CSS styles (for a 'right justified but not part of the header' block). I'd rather like to do the former, but it's out of scope for this change.

It's strange that you can make a whole collection "private" but that restriction doesn't apply to images. If we extend this to include images in the future, we could have a big backwards compatibility problem to deal with.

As discussed in #3245, if we do implement image protection in future then it certainly won't be something that we unilaterally enable by default in a new Wagtail release, since it requires changing image serving to happen via Django (with "fun" implications for caching, cloud storage and so on).

It would be nice to have padlock icons next to private collections and documents in listings, dropdowns and choosers so editors can see if the document they're adding onto a page has a restriction.

I agree. Feel free to open a new ticket about that :-)

Merged in 4e5fff7e41a562438daf5ab9818d4ae1c9e420c6


More simplifications around view context objects

Motivation
Prepare future evolutions of the library where (most) backends are in a different crate
Continues #2436
Proposal

Stop defining context aliases (except MemoryContext and StorageViewContext) so that backends are independent from the Context trait.
Rename ContextFromStore into ViewContext
MemoryContext is now defined in context.rs and could be rename TestContext later.
Hide the notion of store from SDK users

Open question:

Should we rename ViewContext::create into create_root_context?
Should we rename SDK's alias ViewStorageContext (together with the method root_view_storage_context) into ViewContext -- or the opposite ?)

Not in this PR:

Split common.rs into common.rs + store.rs

Test Plan
CI
Release Plan
Some renaming

I don't think we should worry too much about Context naming right now as I think we'd like to remove it anyway: https://github.com/linera-io/linera-protocol/issues/1948

I don't think we should worry too much about Context naming right now as I think we'd like to remove it anyway: #1948

I'm talking about the implementation container here.

Adding @jvff for 5159fd639666c0d06aceb0ed6a2b64eee46f9c3b


Remove hopkins-isms from the locator id types

Replaces hopkinsid identifier type with unique-id.  Replaces jhed identifier type with eppn.
Users will get created with locator ids that no longer have types that refer to hopkins, e.g.:
{
  "@type" : "User",
  "username"<EMAIL_ADDRESS>  "firstName" : "Incomplete",
  "middleName" : null,
  "lastName" : "Nihuser",
  "displayName" : "Incomplete Nihuser",
  "email"<EMAIL_ADDRESS>  "affiliation" : null,
  "locatorIds" : [ "harvard.edu:eppn:incomplete-nih-user", "harvard.edu:employeeid:00023666", "harvard.edu:unique-id:SDH72F" ],
  "orcidId" : null,
  "roles" : [ "submitter" ],
  "@id" : "https://pass.local/fcrepo/rest/users/2e/67/a3/cb/2e67a3cb-1200-497b-ba0e-2c91a5d562a7",
  "@context" : "https://oa-pass.github.io/pass-data-model/src/main/resources/context-3.4.jsonld"
}

If JHU PASS is updated to include this PR in pass-authz-core, existing Users that lack an employeeid locator id will have to be found, and have their remaining legacy locatorids (the ones using hopkinsid and jhed) updated to use unique-id and eppn.

this change requires, for discovry purposes,  that Users stored in PASS have at least one type used by the  ShibAuthUserProvider - else duplicate user objects may result.  employeeid is going to be present on the vast majority of Users in pass.   this service should bot be used in an environment until all users lacking an employeeid type identifer on locatorIds have had their jhed and hopkinsid types changed to eppn and unique-id, respectively.
long-term, for the sake of clarity, it might make sense to make this type change for all existing users, and maybe also change the names of the string constant field names.


Address HTML Validation Errors

There are a number of HTML elements used incorrectly throughout the side navigation and theme that need to be addressed and fixed. Using div's instead of unordered lists for the side navigation is a good start to fixing this. Moving to the new layout from SB Admin will be a good start to this fix as well.

I have replaced the  and the  tags in the sidebar and topbar to  tags which have solved the HTML error that does not allow block elements inside inline elements for me


Test UIKit extensions

Is there any thoughts on this issue? How it needs to be done?
As I understand it could be comlpeted using functional testing. For example we want to test rex_action of the UIBarButton, so we create an UIBarButtonItem instance, then attach CocoaAction to this button. After that we check that target/action stored properly, and state changed to enabled, according to the behaviour of this function. Is it enough for such extensions tests?
Another option is to use Automation and perform tests that will check UI side als, not only property's changes.

@skyylex Functional/behavioral testing is what I was thinking. I don't want to enter the realm of UI automation testing.

@neilpa, I have one question related to the testing of the UIBarButtonItem rex_action:. To perform rex_action: internals UIBarButtonItem instance needs to be pressed. This press could be simulated programmatically, the only way I know that could be done is using the following line:
UIApplication.sharedApplication().sendAction(barButtonItem.action, to:barButtonItem.target, from:self, forEvent:nil)

And there is a problem here. To create .sharedApplication() test target needs to have filled Host Application setting. And this will affect the whole process of testing. Each test launch will rise iOS Simulator.
What do you think about it?

@skyylex Lets skip that one for now, I don't want to restart the simulator for each test.

@neilpa, I've added some of the UI tests in #59. Please review.


Fixes #31, allowing unpinning via the webui

There are few fixes in this, mostly though this is to allow users to
unpin from the webui. This commit includes a version bump of the
node-ipfs-api, as well as passing in the recursive flag.
An unexpected addition to this commit is due to a change in go-ipfs
passing back an object of keys instead of an array.

See https://github.com/ipfs/go-ipfs/commit/0a6b880bee0117f657aedbbd24bfc07a2361e3da for change to js/pages/file.jsx

@travisperson would love to be able to have some testing on these commits. they look good to me, but we dont have automated testing :(

Definitely, that is something we should focus on in the next sprint, would love to get @STRML in on the discussion as well.


Please document how files are compared for uniqueness

The readme says nothing about how files are checked for uniqueness.  I've looked through the source code and couldn't identify neither the usage of a cryptographic hash nor the comparison of actual contents byte-for-byte (although I might have missed any of that).
The only thing I found was the usage of CRC32 and the following comment in file_hash.go:
// GetDigest generates entity.FileDigest of the file provided, in an extremely fast manner
// without compromising the quality of file's uniqueness.
//
// When this function was called on approximately 172k files (mix of photos, videos, audio files, PDFs etc.), the
// uniqueness identified by this matched uniqueness identified by SHA-256 for *all* files

To me it seems that for any file the uniqueness is determined by a CRC32 based on 8 KiB of the file contents (for larger files taken from the beginning, middle and end).

If this is the case I personally find this very concerning...  It might work for high-entropy data formats (like the audio, video and other file formats you've tested against which employ some form of compression), but imagine using it for text files, say source code of the same code in multiple folders, then I think it is trivial to find "duplicates" which aren't actually duplicates.
I would dare to say that your statement on in the readme "blazingly-fast simple-to-use tool to find duplicate files" borderlines to false advertisement...  Yes, it is blazingly-fast because you don't actually read the whole file, nor do you compute any sort of cryptographic hash, and as a consequence you don't actually test for uniqueness...

However to be constructive, I do think that using CRC32 is a good start to find duplicate candidates (since two files with different CRC32 are certainly different), so after you cluster files with the same CRC32 (and I might add the same size) you could now compute a proper cryptographic hash (I recommend testing a few like SHA1, SHA512/256 and Blake3 to see which is faster on your architecture, I went with Blake3 in my own tests).

Check https://github.com/m-manu/go-find-duplicates/releases/tag/v1.1


Well-defined behaviors of WakeUpModeForceLock accompanied with other special usages in pessimistic locks

This document discusses and specifies how TiKV should handle pessimistic lock requests that has WakeUpModeForceLock and other special modes enabled simultaneously. The expected behavior in these cases is unclear or not supported before.  We'll have strictly defined behaviors in these cases upon this document.
When there's no WriteConflict, the behavior of using and not using WakeUpModeForceLock should be the same. So we only discuss how it should behave when WriteConflict occurs.
should_not_exist (insert)

If the key doesn't exist: Lock the key as it's very likely that we will still insert this key after statement-retry.
If the key already exists: There are several choices:

Lock the key. Provides stable latency for some rare cases. But it will be unlikely that the statement still need to lock this key after statement-retry (the most likely case is that the statement meets duplicate entry error after retrying). Locking the key might be a waste.
Do not lock the key and report WriteConflict error. Avoids keeping the lock for nonsense. But there exists cases that will still cause high tail latency.

Example case:
-- txn1
begin;
insert into t values (1 /* primary key */);
commit;

-- txn2
begin;
delete from t where id = 1;
commit;

lock_if_exists

If the key exists: Lock the key as normal.
If the key doesn't exist: Again, there are several choices:

Do not lock the key and return WriteConflict error. This makes it behaves like if WakeUpModeForceLock is not used, thus it's theoretically possible to lead to high tail latency in some cases.
Do not lock the key and return successful response with locked_with_conflict. Semantically, this is literally the simplest combination of the semantics of lock_if_exists and WakeUpModeForceLock. However it leads to extra work to record the keys' states in client-go, which may make the maintainability more terrible. Not suggested.
Lock the key. This causes the key that don't need to be lock at all be locked.

Personally I prefer returning WriteConflict for both of the above options, since I think it simplifies the problem and the cases that it leads to high-tail-latency problem should be rare. I want to see if there are other opinions.

@ekexium @cfzjywxk PTAL

My opinion is to choose the most simple solution for now, since we don't see any necessity to make it more complex.
If there is one in the future, then the concrete scenarios can guide us make the decision.

+1 for simple solutions by now, the above cases are rare and at least the WakeUpModeForceLock would not make it worse.
Our goal of WakeUpModeForceLock is to optimize the most commonly used case that the contention happens on a single row or key.

BTW I remember when RC is used with lock_if_exists, if the key does not exist no WriteConflict error would be returned.


GPU-less system: application / LLVMpipe crashes with SIGBUS (Bus error)

Are you using the latest driver? v<IP_ADDRESS>

Are you using the latest EVDI version? 1.14.1

If you are using a DisplayLink device, have you checked 'troubleshooting'
on DisplayLink's website? yes

Is this issue related to evdi/kernel? yes

Linux distribution and its version Ubuntu 23.10
Linux kernel version 6.5.0-14-generic x86_64
Xorg version (if used) -
Desktop environment in use gdm / gnome

System: Intel(R) Atom(TM) CPU C3758R @ 2.40GHz (8 cores)
GPU: no GPU of any sort present
Using Wayland.
Because of missing GPU, software rasterizer LLVMpipe is in use. If running multi-threaded (no LP_NUM_THREADS=1 env var is set), SIGBUS crash is observed.
Example gdm fails to start:
...
Dec 25 19:08:52 cordoba gnome-session[4977]: gnome-session-binary[4977]: WARNING: Application 'org.gnome.Shell.desktop' killed by signal 7
Dec 25 19:08:52 cordoba gnome-session-binary[4977]: WARNING: App 'org.gnome.SettingsDaemon.MediaKeys.desktop' exited with code 1
Dec 25 19:08:52 cordoba gnome-session-binary[4977]: WARNING: App 'org.gnome.SettingsDaemon.Power.desktop' exited with code 1
Dec 25 19:08:52 cordoba gnome-session-binary[4977]: WARNING: Application 'org.gnome.Shell.desktop' killed by signal 7
Dec 25 19:08:52 cordoba polkitd[873]: Unregistered Authentication Agent for unix-session:c2 (system bus name :1.90, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from bus)
Dec 25 19:08:52 cordoba gnome-session-binary[4977]: Unrecoverable failure in required component org.gnome.Shell.desktop

Example weston fails to start:
Date: 2023-12-25 CET
[19:18:40.828] weston 12.0.1
               https://wayland.freedesktop.org
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Build: 12.0.1
[19:18:40.828] Command line: weston
[19:18:40.828] OS: Linux, 6.5.0-14-generic, #14-Ubuntu SMP PREEMPT_DYNAMIC Tue Nov 14 14:59:49 UTC 2023, x86_64
[19:18:40.828] Flight recorder: enabled
[19:18:40.828] warning: XDG_RUNTIME_DIR "/run/user/1000" is not configured
correctly.  Unix access mode must be 0700 (current mode is 0700),
and must be owned by the user UID 0 (current owner is UID 1000).
Refer to your distribution on how to get it, or
http://www.freedesktop.org/wiki/Specifications/basedir-spec
on how to implement it.
[19:18:40.828] Using config file '/home/cordoba/.config/weston.ini'
[19:18:40.828] Output repaint window is 7 ms maximum.
[19:18:40.828] Loading module '/usr/lib/x86_64-linux-gnu/libweston-12/drm-backend.so'
[19:18:40.832] initializing drm backend
[19:18:40.832] Trying libseat launcher...
[19:18:40.832] [libseat/backend/seatd.c:64] Could not connect to socket /run/seatd.sock: No such file or directory
[19:18:40.832] [libseat/libseat.c:76] Backend 'seatd' failed to open seat, skipping
[19:18:40.832] [libseat/libseat.c:76] Backend 'logind' failed to open seat, skipping
[19:18:40.833] [seatd/seat.c:39] Created VT-bound seat seat0
[19:18:40.834] [seatd/server.c:145] New client connected (pid: 15432, uid: 0, gid: 0)
[19:18:40.834] [libseat/backend/seatd.c:633] Started embedded seatd
[19:18:40.834] [seatd/seat.c:170] Added client 1 to seat0
[19:18:40.834] [seatd/seat.c:480] Opened client 1 on seat0
[19:18:40.834] [libseat/libseat.c:73] Seat opened with backend 'builtin'
[19:18:40.834] [libseat/backend/seatd.c:212] Enabling seat
[19:18:40.834] libseat: session control granted
[19:18:40.841] using /dev/dri/card0
[19:18:40.841] DRM: supports atomic modesetting
[19:18:40.841] DRM: supports GBM modifiers
[19:18:40.841] DRM: supports picture aspect ratio
MESA-LOADER: failed to open evdi: /usr/lib/dri/evdi_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
kmsro: driver missing
[19:18:40.897] Loading module '/usr/lib/x86_64-linux-gnu/libweston-12/gl-renderer.so'
[19:18:40.901] warning: failed to query rendering device from EGL
[19:18:40.901] EGL version: 1.5
[19:18:40.901] EGL vendor: Mesa Project
[19:18:40.901] EGL client APIs: OpenGL OpenGL_ES
[19:18:40.901] warning: Disabling render GPU timeline and explicit synchronization due to missing EGL_ANDROID_native_fence_sync extension
[19:18:40.901] EGL features:
               EGL Wayland extension: no
               context priority: no
               buffer age: yes
               partial update: no
               swap buffers with damage: no
               configless context: yes
               surfaceless context: yes
               dmabuf support: modifiers
[19:18:40.912] GL version: OpenGL ES 3.2 Mesa 23.2.1-1ubuntu3.1
[19:18:40.912] GLSL version: OpenGL ES GLSL ES 3.20
[19:18:40.912] GL vendor: Mesa
[19:18:40.912] GL renderer: llvmpipe (LLVM 15.0.7, 128 bits)
[19:18:40.922] GL ES 3.2 - renderer features:
               read-back format: ARGB8888
               glReadPixels supports y-flip: yes
               wl_shm 10 bpc formats: yes
               wl_shm 16 bpc formats: yes
               wl_shm half-float formats: yes
               internal R and RG formats: yes
               OES_EGL_image_external: yes
[19:18:40.922] Using GL renderer
[19:18:40.931] event1  - Power Button: is tagged by udev as: Keyboard
[19:18:40.931] event1  - Power Button: device is a keyboard
[19:18:40.933] event0  - Power Button: is tagged by udev as: Keyboard
[19:18:40.933] event0  - Power Button: device is a keyboard
[19:18:40.936] event2  - Logitech M215: is tagged by udev as: Keyboard Mouse
[19:18:40.936] event2  - Logitech M215: device is a pointer
[19:18:40.936] event2  - Logitech M215: device is a keyboard
[19:18:40.939] event3  - Logitech K230: is tagged by udev as: Keyboard
[19:18:40.939] event3  - Logitech K230: device is a keyboard
[19:18:40.948] libinput: configuring device "Power Button".
[19:18:40.948] libinput: configuring device "Power Button".
[19:18:40.948] libinput: configuring device "Logitech M215".
[19:18:40.948] libinput: configuring device "Logitech K230".
[19:18:40.949] DRM: head 'DVI-I-1' found, connector 37 is connected, EDID make 'HPN', model 'HP 24fh', serial '3CM0300XC0  '
               Supported EOTF modes: SDR
[19:18:40.949] Registered plugin API 'weston_drm_output_api_v1' of size 40
[19:18:40.949] Registered plugin API 'weston_drm_virtual_output_api_v2' of size 48
[19:18:40.949] Color manager: no-op
[19:18:40.949] Output 'DVI-I-1' attempts EOTF mode: SDR
[19:18:40.949] Output 'DVI-I-1' using color profile: built-in default sRGB SDR profile
[19:18:40.949] Chosen EGL config details: id:  31 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[19:18:40.949] Output DVI-I-1 (crtc 35) video modes:
<EMAIL_ADDRESS>preferred, current, 148.5 MHz
<EMAIL_ADDRESS>16:9, 148.5 MHz
<EMAIL_ADDRESS>16:9, 148.4 MHz
<EMAIL_ADDRESS>16:9, 148.5 MHz
<EMAIL_ADDRESS>119.0 MHz
<EMAIL_ADDRESS>108.0 MHz
<EMAIL_ADDRESS>108.0 MHz
<EMAIL_ADDRESS>88.8 MHz
<EMAIL_ADDRESS>71.0 MHz
<EMAIL_ADDRESS>74.2 MHz
<EMAIL_ADDRESS>16:9, 74.2 MHz
<EMAIL_ADDRESS>16:9, 74.2 MHz
<EMAIL_ADDRESS>74.2 MHz
<EMAIL_ADDRESS>16:9, 74.2 MHz
<EMAIL_ADDRESS>65.0 MHz
<EMAIL_ADDRESS>40.0 MHz
<EMAIL_ADDRESS>16:9, 27.0 MHz
<EMAIL_ADDRESS>4:3, 27.0 MHz
<EMAIL_ADDRESS>4:3, 27.0 MHz
<EMAIL_ADDRESS>16:9, 27.0 MHz
<EMAIL_ADDRESS>27.0 MHz
<EMAIL_ADDRESS>16:9, 27.0 MHz
<EMAIL_ADDRESS>4:3, 27.0 MHz
<EMAIL_ADDRESS>4:3, 25.2 MHz
<EMAIL_ADDRESS>25.2 MHz
<EMAIL_ADDRESS>4:3, 25.2 MHz
<EMAIL_ADDRESS>28.3 MHz
[19:18:40.950] associating input device event1 with output DVI-I-1 (none by udev)
[19:18:40.950] associating input device event0 with output DVI-I-1 (none by udev)
[19:18:40.950] associating input device event2 with output DVI-I-1 (none by udev)
[19:18:40.950] associating input device event3 with output DVI-I-1 (none by udev)
[19:18:40.950] Output 'DVI-I-1' enabled with head(s) DVI-I-1
[19:18:40.950] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
               cursor planes: yes
               arbitrary resolutions: no
               view mask clipping: yes
               explicit sync: no
               color operations: yes
               presentation clock: CLOCK_MONOTONIC, id 1
               presentation clock resolution: 0.000000001 s
[19:18:40.950] Loading module '/usr/lib/x86_64-linux-gnu/weston/desktop-shell.so'
[19:18:40.950] Loading module '/usr/lib/x86_64-linux-gnu/libweston-12/xwayland.so'
[19:18:40.958] Registered plugin API 'weston_xwayland_v1' of size 32
[19:18:40.958] Registered plugin API 'weston_xwayland_surface_v1' of size 16
[19:18:40.958] unlinking stale lock file /tmp/.X0-lock
[19:18:40.959] xserver listening on display :0
[19:18:40.959] launching '/usr/lib/x86_64-linux-gnu/weston-keyboard'
[19:18:40.962] launching '/usr/lib/x86_64-linux-gnu/weston-desktop-shell'
Failed to process Wayland connection: Connection reset by peer
Failed to process Wayland connection: Connection reset by peer
failed to create display: Connection reset by peer
failed to create display: Connection reset by peer
[19:18:41.248] [seatd/client.c:471] Client disconnected
Bus error

Start weston in gdb with LP_NUM_THREADS=2:
...
Thread 3 "llvmpipe-1" received signal SIGBUS, Bus error.
[Switching to Thread 0x7ffff63aa6c0 (LWP 15510)]
0x00007ffff7f8e65b in ?? ()
(gdb) i threads
  Id   Target Id                                         Frame
  1    Thread 0x7ffff7788900 (LWP 15505) "weston"        0x00007ffff7c94076 in __futex_abstimed_wait_common64 (
    private=0, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0x55555612fce8) at ./nptl/futex-internal.c:57
  2    Thread 0x7ffff6bab6c0 (LWP 15509) "llvmpipe-0"    0x00007ffff7f8e549 in ?? ()
* 3    Thread 0x7ffff63aa6c0 (LWP 15510) "llvmpipe-1"    0x00007ffff7f8e65b in ?? ()
  4    Thread 0x7ffff5ba96c0 (LWP 15511) "weston"        0x00007ffff7c94076 in __futex_abstimed_wait_common64 (
    private=0, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0x55555561d5c0) at ./nptl/futex-internal.c:57
  5    Thread 0x7fffe91ff6c0 (LWP 15512) "weston"        0x00007ffff7c94076 in __futex_abstimed_wait_common64 (
    private=0, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0x55555561d5c0) at ./nptl/futex-internal.c:57
  6    Thread 0x7fffe89fe6c0 (LWP 15513) "weston:disk$0" 0x00007ffff7c94076 in __futex_abstimed_wait_common64 (
    private=0, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0x5555556202d0) at ./nptl/futex-internal.c:57
(gdb) disassemble $rip-0x10, +0x20
Dump of assembler code from 0x7ffff7f8e64b to 0x7ffff7f8e66b:
   0x00007ffff7f8e64b:	insl   (%dx),%es:(%rdi)
   0x00007ffff7f8e64c:	fbld   0x41(%rsi)
   0x00007ffff7f8e64f:	(bad)
   0x00007ffff7f8e651:	lock punpcklqdq %xmm7,%xmm5
   0x00007ffff7f8e656:	punpcklqdq %xmm8,%xmm4
=> 0x00007ffff7f8e65b:	movdqa %xmm5,(%rax)
   0x00007ffff7f8e65f:	movdqa %xmm3,(%rax,%rcx,1)
   0x00007ffff7f8e664:	movdqa %xmm4,(%rax,%rdx,1)
   0x00007ffff7f8e669:	movdqa %xmm6,(%rax,%rsi,1)
End of assembler dump.
(gdb) i reg rax
rax            0x7fffd2d06100<PHONE_NUMBER>59712
(gdb)

Further debugging showed that address 0x7fffd2d06100 is in the range of dumb buffer provided by evdi and mmap()-ed by LLVMpipe.
When running multi-threaded, accesses to dumb buffer trigger concurrent page faults - vm_insert_page() gets called from evdi_gem_fault(). Because of concurrent access, instances of vm_insert_page() call can return -EBUSY; evdi_gem_fault() returns VM_FAULT_SIGBUS.

Complaints about SIGBUS also here:
https://github.com/swaywm/wlroots/issues/1823
Possibly the same root cause?


[Feature Request] Adding ARM v6 common-type support

Clear and concise description of the problem
ARM has just released V6 common-type definition, we need to update TypeSpec ARM library before being widely adopted by specs.
Diff is small:

Added nextLink in PrivateEndpointConnectionListResult and PrivateLinkResourceListResult

Checklist

[X] Follow our Code of Conduct
[X] Check that this issue is about the Azure libraries for typespec. For feature request in the typespec language or core libraries file it in the TypeSpec repo
[X] Read the docs.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

@allenjzhang Currently there are only a small number of types in v6.  Need to understand why this is here and when it will be required.

Fixed this release


Update sk.json

When create a PR for new measurements to the library, please go the the Preview tab and select the power-profile template:
If you are issuing a new PR for other purpose you can remove all this text.

Power profile

thank you


Preview/thumbnail size

Describe the enhancement you'd like
Somewhere along the line, I suspect with the UI rework, the option to have BIG or SMALL thumbnails was lost. I know it's a personal choice, based on eyesight, monitor size, etc, but the current thumbnails are way too big. When before I could pick 'small' mode and see maybe 30 pictures on a page, I'm now stuck with 6 or 8.
Describe why this will benefit the LibrePhotos
More pictures on screen serves better the idea of a thumbnail, rather than a full-page review like the lightbox provides.
Additional context
Screenshots attached, it's a big picture. I have a 22" monitor so you can see how big each preview is. For reference, I've also attached what Google photos looks like on my monitor - much smaller previews, personally of a size I find good but I could see being small for some people. It looks like Librephotos are roughly twice as tall as Gphotos, which means they take 4x screen real estate...

If someone wants to implement it before me:
https://github.com/derneuere/react-pig/blob/8818ff625da16cade62733a4e9a3ad92ba0f3c16/src/utils/getMinAspectRatio.js#L15
You have to add a prop to react-pig for the setting "smaller thumbnails", and experiment with the minAspectRatio until you get a good-looking smaller setting.


Only count unique datasets when totalling input dataset sizes

@cat-bro Would this work to close: https://github.com/galaxyproject/total-perspective-vortex/issues/16?

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

3 of 3 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.03%) to 94.093%

Totals

Change from base Build<PHONE_NUMBER>:
0.03%

Covered Lines:
617

Relevant Lines:
647

💛  - Coveralls


"MapFrame.ViewExtents.SetCenter" don´t fire event "ViewExtentsChanged"

This issue was imported from CodePlex
Taber wrote 2011-05-16 at 13:09
If you try to center a map in a point with "Coordinate" object, it will not fire "ViewExtend" event from "Map" object.
Something like this:
this.mapPrincipal.MapFrame.ViewExtents.SetCenter(f.BasicGeometry.Coordinates[0]);
this.mapPrincipal.MapFrame.Invalidate();
This don´t raise the event.
"Possibly" a workaround:
this.mapPrincipal.ViewExtents.SetCenter(f.BasicGeometry.Coordinates[0]);
this.mapPrincipal_ViewExtentsChanged(this, new ExtentArgs(this.mapPrincipal.ViewExtents));
this.mapPrincipal.MapFrame.Invalidate();

This is not an issue. Close it.


chore(deps): update dependency @types/react-router to v2.0.57

This PR contains the following updates:

Package
Type
Update
Change

@types/react-router
devDependencies
patch
2.0.56 -> 2.0.57

Renovate configuration
:date: Schedule: At any time (no schedule defined).
:vertical_traffic_light: Automerge: Disabled by config. Please merge this manually once you are satisfied.
:recycle: Rebasing: Whenever PR becomes conflicted, or if you modify the PR title to begin with "rebase!".
:no_bell: Ignore: Close this PR and you won't be reminded about this update again.

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

Available now for Enterprise: Renovate Pro with real-time webhook handling and priority job queue.

:tada: This PR is included in version 5.0.43 :tada:
The release is available on:

v5.0.43
GitHub release

Your semantic-release bot :package::rocket:


Can one instance of program join multiple servers and rooms ?

If I run single instance of the program Can I use config something similar to :
config.json
{
    "nickname": "Cardinal321",
    "password": "",
    "network": "irc.spotchat.org",
    "server_password": "",
    "port": 6667,
    "ssl": false,
    "storage": "storage/",
    "channels": [
        "#test321","test4321"
    ]
},
{
    "nickname": "Cardinal321",
    "password": "",
    "network": "irc.freenode.net",
    "server_password": "",
    "port": 6667,
    "ssl": false,
    "storage": "storage/",
    "channels": [
        "#test3214"
    ]
}

Unfortunately no, you must use multiple instances of Cardinal. You can create multiple configs and use the --config option to point Cardinal at a file other than config.json. I'd suggest running Cardinal under something like supervisord anyway. :)
I have this pipe dream task, #93 that may result in something more similar to what you are looking for, depending on if it ever gets completed, and what the final result looks like. The only real advantage I see to having Cardinal connect to multiple servers is to allow the bot to relay messages from one server to another however. Maybe that is worth it -- maybe it makes more sense to use something like Redis PUB/SUB to communicate between two instances and do it that way. I'm hesitant to make the config more complex than it already is. When tackling #93, I ran into a lot of weird edge cases while trying to flesh out the config system more.


Adds the videos of the Montreal-Python 67 event

Adds the videos of http://montrealpython.org/en/2017/10/mp67,
Since those talks were in preparation of https://2017.pycon.ca/, we were waiting the conference was done before posting them online.

ping @redapple @Daniel-at-github for just a second 👀

I think it's all OK.
If you want to go full autonomous but you want to peer review you can ask anyone of Montreal-Python to give you a :+1:  here and merge it youself.
If you want to ultra polish it:

reserialize it with:python tools/reserialize.py --all .

Add tags
Add related_urls:

slides
repos
https://pypi.org/ url (if its a library involved)

Put recorded to the second (Like 2017-06-10T10:05:00+02:00) It will show it in descendant chronological order then.
See if the speakers are consistent with past commits (and fix whatever it's wrong).


Hop synonyms

Probably ought to support synonyms for hops that arise when new breeds finally get commercial names, such as hop 438 eventually becoming branded as Sabro.

Ekuanot, Equinox trademark lawsuit would be another.


Add contribution.md and code_of_conduct file.

it's not the best thing to leave both both files contribution.md and code_of_conduct  out of your root file.
Both help with rules on how to go about successfully pull request and also to maintain the community order.
Solution
There are famous written code_of_conducts that you might find matching and sane, you can just for them or just copy and implement them.

Thanks for the suggestion I'll be work on it soon.

You're welcome. I can also work on it


cel l内容标签里有“ ”等怎么没有过滤掉呢，看代码之过滤掉了，但是其他不需要处理？

cel l内容标签里有“ ”等怎么没有过滤掉呢，看代码之过滤掉了，但是其他不需要处理？
def remove_Bb(self, content):
"""
This function will remove the '' and '' of the content.
:param content: [list]. text content of each cell.
:return: text content without '' and ''.
"""
if '' in content:
content.remove('')
if '' in content:
content.remove('')
return content

In the competition, we tried to use all rules (we can figure out) to improve the performance,  some useful rules were missed due to that we only spent less than two months on this competition.

As we have seen, the content in thead will have , regardless of whether the image text is bold or not.  So we need to filter out the text-line images of the thead. If there is  in the remaining tbody content, the text of the picture is bold. The pattern you mentioned above may not cause ambiguity, so we do not filter. Of course，you can modify the post-processing rules to get a higher score.


Feat/add grid grouping

Description
added grouping in table view
Type of change
Remove options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration
Checklist

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code.
[ ] I have linked my DevOps task using the AB# tag.
[ ] My code is easy to read.
[ ] Documentation and comments is added where needed.
[ ] My code is covered by tests.
[ ] UX has reviewed relevant UI contributions.

shipit

Før du merger inn i main så kan du bumpe versjonen på de appene og legge inn changelog

Jeg tror du også vil ha gruppering i SWCR-appen


Add Timeout property to Web component (#1782)

Allows for users to handle Web request timeouts through two methods; a TimeOut block for each Web component, as well as through the Screen error handler.

Can one of the admins verify this patch?

Opened PR to incorrect branch


Added new GMO Sign connectors V2.0

When submitting a connector, please make sure that you follow the requirements below, otherwise your PR might be rejected. We want to make you have a well-built connector, a smooth certification experience, and your users are happy :)
If this is your first time submitting to GitHub and you need some help, please sign up for this session.

[ ] I attest that the connector doesn't exist on the Power Platform today. I've verified by checking the pull requests in GitHub and by searching for the connector on the platform or in the documentation.
[ x] I attest that the connector works and I verified by deploying and testing all the operations.
[ x] I attest that I have added detailed descriptions for all operations and parameters in the swagger file.
[ x] I attest that I have added response schemas to my actions, unless the response schema is dynamic.
[ x] I validated the swagger file, apiDefinition.swagger.json, by running paconn validate command.
[ x] If this is a certified connector, I confirm that apiProperties.json has a valid brand color and doesn't use an invalid brand color, #007ee5 or #ffffff. If this is an independent publisher connector, I confirm that I am not submitting a connector icon.

If you are an Independent Publisher, you must also attest to the following to ensure a smooth publishing process:

[ x] I have named this PR after the pattern of "Connector Name (Independent Publisher)" ex: HubSpot Marketing (Independent Publisher)
[ ] Within this PR markdown file, I have pasted screenshots that show: 3 unique operations (actions/triggers) working within a Flow. This can be in one flow or part of multiple flows. For each one of those flows, I have pasted in screenshots of the Flow succeeding.
[ ] Within this PR markdown file, I have pasted in a screenshot from the Test operations section within the Custom Connector UI.
[ ] If the connector uses OAuth, I have provided detailed steps on how to create an app in the readme.md.

Hello @arunnvel-srinivasan,
This is a verified publisher connector since you've placed your files within the certified-connector folder, however the heading of this PR includes Independent Publisher.  Can you please clarify this? please.

@vmanoharas
Thanks for pointing out, I mistook the heading terms.
Can I rename the heading without  Independent Publisher?

@vmanoharas Thanks for pointing out, I mistook the heading terms. Can I rename the heading without Independent Publisher?

Hi @arunnvel-srinivasan, Yes please go ahead and edit the header.

@vmanoharas
I hope you are doing well, when can we expect the review to be completed.
Thanks

Thanks @vmanoharas, I'll submit the connector for deployment.

Sure @arunnvel-srinivasan, thank you for working with us!


[FR] Part history

Please verify that this feature request has NOT been suggested before.

[X] I checked and didn't find a similar feature request

Problem statement
Stock items have a history, where all changes are stored.
it would be good to have a similar tracking for the parts, where it would be visible who last modified it, when, with a comment, e.g.
Suggested solution
Add similar functionality like the stock items have
Describe alternatives you've considered
No alternatives.
No information about when a part was changed and why.
Examples of other systems
No response
Do you want to develop this?

[ ] I want to develop this.

@rkalman this has been discussed before e.g. https://github.com/inventree/InvenTree/issues/377
An "audit log" would be a good idea, and I think the project has evolved and matured enough to warrant it.
We have discussed using something like django-auditlog to achieve this

Yes, in a multi user environment it would be a very good thing to track down all the important changes.
Now unfortunately there is no information about who was changed a part definition and when and why.

This feature would be very useful in a multi-user environment. Auditlog looks good.

We welcome PRs!

Still looking for a dev that wants to implement this

I think there is already a history if parts are changed in the admin interface. Anyhow changes from the normal UI are not tracked.

The tracking in admin is a default feature of Django and not scalable. We could expand what was built for the stock model or use some community package for this.
Having a verb-based system to create an activity stream and events would be pretty helpful, it could also be used to create triggers for federated systems.

I think it is still important

Not stale


Testing fails when removing file in watch mode

🐛 Bug Report
When I remove test file, I get following error:
  ● Test suite failed to run

    ENOENT: no such file or directory, open '/path/to/smth.spec.js'

      at Object.openSync (fs.js:448:3)
      at Object.readFileSync (fs.js:348:35)
          at Generator.next (<anonymous>)

To Reproduce
Steps to reproduce the behavior:

run jest --watch
remove any ran test file
see the issue

Expected behavior
Jest shouldn't try to run that test
Link to repl or repo (highly encouraged)
Sorry, but it looks like it's not related to tests itself, watch mode issue.

Run npx envinfo --preset jest
Paste the results here:
  System:
    OS: Linux 4.15 Ubuntu 18.04.2 LTS (Bionic Beaver)
    CPU: (4) x64 Intel(R) Core(TM) i5-7600K CPU @ 3.80GHz
  Binaries:
    Node: 11.1.0 - ~/.nvm/versions/node/v11.1.0/bin/node
    Yarn: 1.13.0 - ~/.nvm/versions/node/v11.1.0/bin/yarn
    npm: 6.8.0 - ~/.nvm/versions/node/v11.1.0/bin/npm

Note: when I remove snapshot for that test or restart Jest, it won't run it

@sh7dm  is this still a issue for you?
Before testing this myself I looked into [jest-changed-files] and thought maybe the git commands needed to be updated to exclude deleted files, (ei. 'git show|diff --diff-filter=d' & filtering unstaged modified files with results from git ls-files --deleted ) but after testing this without any modifications I could not reproduce issue.


add additional classes to SlateToolbar

When I try to embed <RichtextWidget /> in Sidebar (in general ImageSidebar), the inline Toolbar gets overflown out of the viewport and also positioning is not relevant when I scroll page. It'll be great if it can accept classes and gain more control on the user itself.

I also propose another solution which can be tweaking inline style which the toolbar uses here . Implement some method which helps find what part of element overflows and then adjust that.
what do you think @tiberiuichim ?

@nileshgulia1 We have some further enhancement plans for the toolbar, but they're a bit more complicated. I'd like to be able to group the buttons and be able to wrap the toolbar button groups, for cases like these where the text position is near the edge.


Code about point-text retrieval and zero-shot classification

Hi author,
Sorry to bother you. Can you release the code about point-text retrieval and zero-shot classification?

I will update it after neurips deadline.
On Thu, May 16, 2024 at 4:02 PM keycharon @.***> wrote:

Hi author,
Sorry to bother you. Can you release the code about point-text retrieval
and zero-shot classification?
—
Reply to this email directly, view it on GitHub
https://github.com/Pointcept/GPT4Point/issues/20, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AWVKZMPTIQZGNSFIIHHWVW3ZCRRZPAVCNFSM6AAAAABHZVI4HSVHI2DSMVQWIX3LMV43ASLTON2WKOZSGI4TSNRVGQ4TGOI
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>


Qualified/aliased/unqualified clojure.core = or == should produce the same rete network

I noticed a difference in the rete network made when using a qualified vs unqualified = or == in rules for fact bindings.  This was due the clara.rules.compiler only searching for the unqualified variety.
This came up due to generating rules via a macro and using the syntax-quote, which auto-qualifies symbols.  I think this may be a common thing that would be done, so I'm offering this PR to fix the issue.
The solution is to just resolve symbols to vars when possible, then see if they are clojure.core/= or == regardless of being qualified, aliased, or unqualified.
The assumption is that clojure.core/= and == are the symbols that clara intends to be used for fact bindings.
It would be an interesting case if someone had a definition of their own = or == in their namespace though.
I think there would be at least one more place in the compiler affected by that.
That's probably unlikely, but the case I found here is more likely.  So I'm just going with this for now.

Merged. Thanks Mike!


. /bin/deploy not working

When using the deploy command I my terminal window gets closed  and do not know what is happening. While using the AWS EC2 instance option my ssh connection gets closed.
Down below are my taken actions. Am I missing something?
Steps performed on the EC2-Instance:
    git clone https://github.com/awslabs/serverless-image-resizing/
    cd lambda
    npm install
    cd ../bin
    . deploy

Steps performed on my local machine:
    git clone https://github.com/awslabs/serverless-image-resizing/
    make all
     . deploy

Running ./deploy exits your shell session? I'm not sure what would be causing that. Perhaps try running the script via its full path?


Does not actually document how to enable table access control for a cluster, despite the name

Does not actually document how to enable table access control for a cluster, despite the name

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

ID: fe4ccafa-2d1b-1187-09c1-083e9c381e9d
Version Independent ID: fe4ccafa-2d1b-1187-09c1-083e9c381e9d
Content: Enable Hive metastore table access control on a cluster (legacy) - Azure Databricks
Content Source: databricks/data-governance/table-acls/table-acl.md
Service: azure-databricks
GitHub Login: @mssaperla
Microsoft Alias: saperla

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

@paulholmberg
Thanks for bringing this to our attention.
I'm going to assign this to the document author so they can take a look at it accordingly.

Thanks for providing feedback that helps improve our documentation. We've created an internal work item (DOC-13746) to address your feedback. The timeline for resolution varies based on resourcing.
#please-close

For more specificity: for an SQL cluster the variable to use is named but
for a python cluster the documentation only lists restrictions, not how to
enable access. Similarly in the section on how to enable for a cluster it
only states that it is already enabled for shared clusters, not how to
enable it for a personal cluster. If it is not possible to enable it for a
personal cluster this would be useful to document. Presently I can only
infer what is possible or not from the gaps in documentation.
On Thu, 25 Apr 2024, 12:56 am prmerger-automator[bot], <
@.***> wrote:

Closed #121706 https://github.com/MicrosoftDocs/azure-docs/issues/121706
as completed.
—
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/azure-docs/issues/121706#event-12593455750,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ANH6VEH72RAT2E65KI65GCDY67BZVAVCNFSM6AAAAABGKWT5GKVHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJSGU4TGNBVGU3TKMA
.
You are receiving this because you were mentioned.Message ID:
@.***>


CAMEL-15302: Remove duplicate pages under eip section

This PR removes all the xref errors faced in PR #4015 and the build is successful.

@oscerd Within the issue, dynamic-router.adoc as well as dynamicRouter-eip.adoc encompasses the same information. The same deal goes along with request-reply.adoc and requestReply-eip.adoc. Thus within the JIRA Issue, @davsclaus mentioned to include the -eip files. Thus I shifted all the necessary content to the -eip.adoc and removed the duplicates and also edited the links for it through various docs pages.


Lend some sunglasses to @gonuke for a new picture....

... and help him stage said picture :)

Sure! We have a little portrait studio set up in 434. You can swing by whenever you'd like.

closed via https://github.com/CNERG/cnerg.github.com/pull/54


Request - Pull Current Location

Request to add Auto Detect current location feature next to the Location Selection.  If you click this it will auto find your current GPS.
This will greatly help with a laptop or while sharing with a mobile device.


Observation: Exit code of the apt plugin when called with no arguments

Describe the bug
When the apt plugin is called with no arguments the exit code is 2. According to the spec the exit code is more related to the command arguments and should probably be 1.
Exit codes:
https://thin-edge.github.io/thin-edge.io/html/references/plugin-api.html
"1: usage. The command arguments cannot be interpreted, and the command has not been launched.
2: failure. The command failed and there is no point to retry."
/etc/tedge/sm-plugins/apt
To Reproduce
/etc/tedge/sm-plugins/apt
sudo -u tedge-agent sudo /etc/tedge/sm-plugins/apt
pysys.py run tedge_agent_user_sudo_access
Expected behavior
Exit code is according to spec
Screenshots

The apt plugin has been upgraded to use clap to parse the arguments from structopts
In structopts case the exit status was 1 on error.
But in case of claps the exit status is 2.
Clap::parse  parses from std::env::args_os(), exit on error
And the exit looks like below
clap::error::Error pub fn exit(&self) -> ! Prints the error and exits. Depending on the error kind, this either prints to stderr and exits with a status of 2 or prints to stdout and exits with a status of 0.
So,  I feel we should upgrade the exit status to 2 in the tests.


feat: update aio-lib-networking library

Description
Use new aio-lib-networking library:

HttpBackoffExponential is parsing Retry-After header
use new utility parseRetryAfterHeader provided by the library  and remove old parseRetryAfterHeader helper

Related Issue
https://github.com/adobe/aio-lib-core-networking/pull/31
https://github.com/adobe/aio-lib-core-networking/pull/22/files
Motivation and Context
Better handling of cases where the server specify a Retry-After header.
How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] I have signed the Adobe Open Source CLA.
[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

@sangeetha5491 I update lib-core-networking to the latest one and remove the temporary pointer to a local package in package.json


[Proposal] Optimize the disk selection strategy for tablet creation

When creating a tablet, it is necessary to select a disk from all disks that meet the requirements on the BE node to store the tablet. In doris, the current disk selection strategy is to randomly select a disk from all disks that meet the requirements for tablet creation.  After the cluster has been running for a long time, we found that  the distribution of the number of tablets on different disks in a BE node is severely unbalanced.
After analysis, we think the main reason for this problem is that the random disk selection strategy used in doris does not consider the problem of load balance between different disks on a BE node.  A good disk selection strategy should take into account both the randomness of selection and disk load. In order to solve this problem, we introduced the the  algorithm of "two random choices" for disk selection when creating the tablet:
(1) Select two disks from all disks that meet the requirements on the BE node randomly；
(2)  Choose the disk with a smaller number of  tablet from the two disks selected in (1) for tablet creation.
In the initial state, the distribution of tablets among different disks is balanced. The simulation  experiments show that the distribution of tablets on different disks in the BE node always remains relatively balanced with the creation of tablets after used the "two random choices" disk selection algorithm. (The top figure shows the range(极差) trend of tablet distribution on different disks in a BE node with the creation of tablets.  The bottom figure shows the standard deviation(标准差) trend of tablet distribution on different disks in a BE node with the creation of tablets. In these two figures, the red line indicates the random disk selection strategy used in doris for tablet creation and the blue line indicates "two random choices"  disk selection strategy we introduced for tablet creation )

In the initial state, the distribution of tablets among different disks is unbalanced. The simulation  experiments show that the "two random choice" disk selection algorithm can also gradually balance the load of different disks with the creation of tablets. (The top figure shows the range(极差) trend of tablet distribution on different disks in a BE node with the creation of tablets.  The bottom figure shows the standard deviation(标准差) trend of tablet distribution on different disks in a BE node with the creation of tablets. In these two figures, the red line indicates the random disk selection strategy used in doris for tablet creation and the blue line indicates "two random choices"  disk selection strategy we introduced for tablet creation )

In the simulation experiment, the number of disks on the BE node is set to 10, and the total number of tablets created after the initial state is 30000.
In the initial state, the distribution of tablets among different disks is balanced. When using different disk selection strategies, the number of tablets on different disks is distributed as shown in the figure below after all tablets are created.

In the initial state, the distribution of tablets among different disks is unbalanced. When using different disk selection strategies, the number of tablets on different disks is distributed as shown in the figure below after all tablets are created.

Doris BE节点中创建tablet时磁盘选择的策略是随机选择一个磁盘，具体实现方法是：首先，将所有满足要求(storage medium type)的磁盘存放在一个vector中；然后，使用random_shuffle()将vector中磁盘顺序打乱；最后，创建tablet时，从vector中的第一磁盘开始尝试，如果创建失败，换下一个磁盘，直到在某一个磁盘上成功创建tablet。这种随机的磁盘选择策略并没有考虑不同磁盘上tablet的分布问题，导致集群运行一段时间后，BE节点上不同磁盘上的tablet数量很可能分布不均衡。
如果采用“two random choices”策略进行tablet创建时的磁盘选择，则会有更好的效果。“two random choices”策略的核心思想是：首先，从所有满足要求(storage medium type)的磁盘中随机选择两个磁盘；然后，从随机选出的两个磁盘中选择tablet数量较少的磁盘用于tablet的创建。通过实验发现，“two random choices”策略能够更好地保证集群运行过程中，BE节点上不同磁盘上的tablet更均衡地分布；另外，当初始状态BE节点上不同磁盘的tablet分布不均衡时，two random choices”策略也能在后续随着tablet的创建而使得不同磁盘上的tablet分布逐渐趋于均衡。

I think this is a good way to improve.
In fact, there are currently two problems with disk balancing.
One, as you described, needs to consider the current disk load when creating a tablet.
The other is how to support tablet migration between disks on the same machine.
These are two independent problems. We can solve the first problem first.

I think this is a good way to improve.
In fact, there are currently two problems with disk balancing.
One, as you described, needs to consider the current disk load when creating a tablet.
The other is how to support tablet migration between disks on the same machine.
These are two independent problems. We can solve the first problem first.

@morningman
Thanks very much for your reply.  We are optimizing the disk selection strategy for tablet creation on BE nodes recently (PR #4373 ) .  As you mentioned, there is another problem that tablet migration between disks on the same machine is neccessary, and we will start related work next.


Deprecate TreeNode transform_xx_mut methods

Is your feature request related to a problem or challenge?
Part of #8913
While working on the documentation in  https://github.com/apache/arrow-datafusion/pull/10035, @peter-toth made the great observation  https://github.com/apache/arrow-datafusion/pull/10035#discussion_r1562648720 that:

I have no idea why we have the ..._mut() version, most likely for just convenience, but IMO one transform_down() with FnMut should be fair enough.

Specifically, these methods are basically the same, except that _mut takes a mutable reference to the closure

transform_down / transform_down_mut
transform_up / transform_up_mut

The current API is pretty confusing enough already (see discussion on https://github.com/apache/arrow-datafusion/pull/10035) so having redundant methods just makes it more confusing
Also, this terminology leaked into the LogicalPlan variants transform_down_with_subqueries_mut etc in https://github.com/apache/arrow-datafusion/pull/9913
Describe the solution you'd like
I would like to deprecate

transform_down_mut
transform_up_mut

And remove the (yet unreleased) logical plan variants transform_down_with_subqueries_mut and transform_up_with_subqueries_mut
Describe alternatives you've considered
No response
Additional context
No response

I'm happy to take this and file a PR.

Thanks @peter-toth 🙏
I had a short play with it as well and it may be slightly tricker to sort out than I had imagined. However, I am sure you'll figure it out


Optimise layout performance

Objective

Make layout faster.
Enable https://github.com/iced-rs/iced/issues/34 to be implemented with decent performance.

Context
https://github.com/iced-rs/iced/issues/34#issuecomment-1430373717
Changes made

Makes the layout method on the Widget trait take &mut self instead of &self (this enables caching the resultant layout)
Makes the draw method on the Widget trait take &mut self instead of &self (this was necessary because the tooltip component calls layout from draw)
Adds a measure method to the Widget trait which has the semantics "compute the size of this widget without performing a full recursive layout unless necessary". This method has a default implementation with just calls layout.
Implement optimised versions of measure for row, column, and `container.
Adds set_size (&mut self, size: Size) and into_children(self) -> Vec<Node> methods to layout::Node

This PR (along with associated changes in iced_taffy) improves the performance of an iced_taffy stress test of a 7000+ node nested grid by 20x (from 200ms for layout down to 12ms).
Further work
Further work will be needed to make things really fast for realistic layouts. Including:

Add optimised measure methods to other widgets where appropriate (esp. other container widgets if there are any)
Add layout caching to row/column/container and other widgets where appropriate
Add layout caching for text (at least caching the results of shaping)

Feedback wanted

In general, are the Iced maintainers amenable to accepting changes along these lines?
Is changing the layout method to take &mut self acceptable? Converting the widgets to work with this was fairly easy, and it seems like the cleanest solution to enabling caching to me. But caching could also be implemented using RefCell without this change.
Is changing the draw method to take &mut self acceptable? I didn't look into why tooltip is calling layout in draw, but it seems to me that it probably shouldn't be? If tooltip was modified to not do this then this change could be reverted.

Important changes to the library (like changes to the Widget API) need to go through the RFC process.

Ah right. I'll look into creating an RFC then.

That said, have you considered using an extension trait to add the measure method in your own crate?

That won't work unfortunately, because I need the measure method to be implemented by Iced's built-in types. Otherwise mixing and matching say an iced_taffy::Grid with an iced_native::Row would not benefit from the performance improvement. One alternative option could be to add a parameter to the layout trait instead of a separate method. I'll put details about that in the RFC.
Some quick responses, as it might take a while to write up an RFC:

There is a lot to unpack here. As far as I understand, the motivation behind these changes is an external crate that you are working on. If we are going to let an external crate drive further design of the library, we need to find an agreement on the use cases that this external crate is tackling and why it is the best approach for the library.

Yes. These changes are drive by the (performance) needs of iced_taffy, a library that implements Taffy's Flexbox and CSS Grid layout modes as Iced widgets. Not everyone likes CSS layout modes, but lots of people do, so it seems sensible to offer it as an external library that people can choose to use if they wish to. The Grid functionality would be particularly useful as Iced doesn't doesn't currently have a grid layout widget (and the one in iced_aw only allows evenly sized columns and gives no control over row size).

If the point being made is that these changes will benefit the library independently of the external crate, then we need to specify exactly how (e.g. listing use cases and examples, etc.) and consider any tradeoffs.

Indeed it is. Nothing in this PR is taffy-specific. It just contains performance optimisations for layout which allow the initial passes of multi-pass layout modes (which would include Iced's existing Row and Column widgets) to be computed more efficiently, and to be cached for subsequent relayouts. This benefits any user of Iced that has a large complex widget layout. It could also allow for things like addressing https://github.com/iced-rs/iced/pull/1569 without regressing performance.
The tradeoff is an extra method to implement (although it could be given a default implementation to avoid the need to implement it for widgets where full layout is fast (e.g. an image widget)).

Indeed it is. Nothing in this PR is taffy-specific. It just contains performance optimisations for layout which allow the initial passes of multi-pass layout modes (which would include Iced's existing Row and Column widgets) to be computed more efficiently, and to be cached for subsequent relayouts. This benefits any user of Iced that has a large complex widget layout by allowing their app to render more quickly. It could also allow for things like addressing https://github.com/iced-rs/iced/pull/1569 without regressing performance.

I'm not sure we want to invest effort in making multi-pass layout modes a thing. If anything, I'd prefer to see efforts that go in the opposite direction! The current layout engine is inspired by druid, which in turn was inspired by Flutter: "Constraints go down.  Parent sets position."
We should explore all of the possibilities of the single-pass approach and understand its limitations. Defaulting to support multi-pass because Flexbox and CSS Grid do it and lots of people like it isn't a good enough argument.
Caching also opens a brand new can of worms. We need to talk cache invalidation! How are layouts reused? How do we efficiently detect when to reuse them? We have changed layout to be mutable here, but there is no use of it as far as I can tell.

Defaulting to support multi-pass because Flexbox and CSS Grid do it and lots of people like it isn't a good enough argument.
Actually it is a great argument IMO. Flexbox/Grid, simplifies the layout a lot versus the 2000's era of aged system of constraints.

I disagree.
Web developers are so used to the pain, that they have become numb to the torture devices they use every day. I was one of them for 15 years. It wasn't until I tried Elm that I found how much happier I was with a better set of tools.
iced takes a lot of inspiration from elm-ui, which has the slogan: "What if you never had to write CSS again?". I recommend you to watch this amazing talk by the author of the library.

the 2000's era aged system of constraints.

I am not proposing we go back to using tables to layout your UI. The example I provided above is Flutter, which was originally released in 2017.

Web developers are so used to the pain that they have become numb to the torture devices they use every day.

😆😆
Funny, maybe true at times.
I think we are getting a little distracted with CSS here, what I meant is these days a good UI toolkit should support items wrapping on the next row and would be great if styles could conditionally apply at various view port sizes (similar to CSS @media). Any respectable UI needs to be responsive at any view port size, these days apps go in car dashboard screens and TVs and foldables and what not.
I've worked on web apps where things animated into place as you were resizing the browser window and have been easily ported to large number of platforms because of the doctrine, design once, run everywhere. Not having this feels like a step backward.

Funny, maybe true at times.

Hah, of course. I was being hyperbolic. Or was I? Most of the experienced web developers I know that have seen the grass on the other side would agree on the utter insanity of the web stack.
In any case, a Row that wraps elements should be possible to implement with the current layout architecture. We just don't have such a widget yet. We don't need a generic layout engine that can handle everything at once! Every widget has total control over the layout of its contents.
Responsiveness can also be achieved already with the Responsive widget.

I think fundamentally my point of view is: let people lay things out however they like. The framework doesn't need to be opinionated about layout, so why should it. If people want to use a less efficient method then they can. That's on them. Chances are it won't cause problems in practice, and if it does then they can optimise that code. If they want to use a more efficient method from the start then they also can.
It seems that your view is that Iced ought to pick One True Way to do layout. Which which I suppose fits given it's stated influence from Elm. What I would point out is that this is exactly why very few people use Elm these days: they were overly opinionated about their stack and refused to include escape hatches to allow people to deal with real-world constraints pragmatically. So people used something else that would let them do that.
Perhaps that will be less of an issue on Desktop where you have more control over the underlying platform. But it's definitely possible to create a framework that's both opinionated and flexible by exposing opinionated high-level APIs on top of less opinionated low-level APIs. Laravel is my favourite example of this. IMO it's the best of both worlds, and I would definitely encourage you to go down that route (while respecting that it's your framework, and you can choose whichever approach you want to).

Most of the experienced web developers I know that have seen the grass on the other side would agree on the utter insanity of the web stack.

I think I can somewhat agree that web layout is unnecessarily quirky. I would be pretty happy with Flutter style layout. However, Iced doesn't currently have that, and there are lots of things that can't currently be done with Iced's layout widgets. For example, percentage based sizing or complex grid layouts. I want these kind of things available ASAP so I can get on with laying out my app. And wiring up the web layout that already exists as a library is going to be by far the quickest way to get there.

It seems that your view is that Iced ought to pick One True Way to do layout.

Not at all. The current layout system isn't opinionated. This isn't why I have issues with the changes.
My first comment reflects my view:

If we are going to let an external crate drive further design of the library, we need to find an agreement on the use cases that this external crate is tackling and why it is the best approach for the library.
If the point being made is that these changes will benefit the library independently of the external crate, then we need to specify exactly how (e.g. listing use cases and examples, etc.) and consider any tradeoffs.

Before we write any code, we need to look at multiple use cases individually to evaluate if their similarities warrant a generic solution. Maybe the best approach is to tackle each specific use case directly instead of writing a generic solution!
Use cases come first, then specific solutions. A pattern may arise and a generic solution may be adequate, but it's not guaranteed.
You argued that nothing in this PR is specific to your use case. Therefore, it is supposed to be a generic change. In order to justify a generic solution, we need to justify it is arising somewhat organically from a bunch of use cases (not just one!).
Does that make sense?

@hecrj Still intending to submit an RFC, but see this benchmark which demonstrates the significant performance benefits from introducing caching with Iced's existing Row/Column widgets, the fact that Iced already uses multipass layout in some cases, and that Iced's existing Row/Column widget's layout currently has superlinear (exponential? quadratic?) time complexity with respect to the depth of the widget tree in these cases.
The benchmark measures a nested layout which alternates between Row / Column widgets at each level (until the bottom level which contains a custom fixed size (20px x 20px) rectangle widget) and uses width(Length::Shrink), height(Length::Shrink) and align_items(Alignment::Fill) on every row/column. The Alignment::Fill is important here as this is what triggers the multipass code path in Iced's flex layout. Timings and node counts are printed to the console.

With commit 28e26505f28867585f8b9bbd2ecb0bfdf7096665 a layout that is 12 layers deep with 2 child elements at each level (for a total of 8190 elements) takes over 500ms to compute layout. Similar slow behaviour (taking ~70ms) can be triggered by a layout that is 20 layers deep with 1 child element at each level (for a total of only 20 elements).
With commit 8165eb37f4678a9bbedc36270cc0cca414a4ea12 which updates to an iced revision that implements caching of measure child sizes on top of the changes that were already contained in this PR (see these two commits for implementation (https://github.com/nicoburns/iced/commit/486d1cb050f5d7101a79aadd7ac64472f2bb2169 and https://github.com/nicoburns/iced/commit/237db4977d64d2e54dc172cc8156abadbfee1e83) that is reduced to ~0.8ms

In a production-ready implementation you'd want to invalidate the cache based on the passed in Limits. I have logic for this, but I haven't included it here for demo purposes. I wouldn't expect that to significantly affect performance.

@nicoburns As I said, I just prefer to remove Alignment::Fill and explore other single-pass options. Why aren't our efforts in that direction? Why are we assuming multi-pass is necessary?

Just opened #1735 to remove Alignment::Fill.

@nicoburns As I said, I just prefer to remove Alignment::Fill and explore other single-pass options. Why aren't our efforts in that direction? Why are we assuming multi-pass is necessary?

I think it's fair to conclude based on the success of Flutter that multipass layout absolutely isn't necessary, even though it can be convenient at times. I guess I figured it was a pretty small change to support it, so why not. But if you'd rather not then I don't think I have a good argument against that.
I do disagree that it's a large effort to do so - I've spent maybe 4 hours on this and it's basically done (the only remaining change would be optimising/caching text layout, which shouldn't be too hard but I'm loathe to work on while the text implementation is otherwise in flux due to https://github.com/iced-rs/iced/tree/advanced-text). It does introduce caching (with an associated memory overhead) which wouldn't be necessary within a single frame for single-pass layout. If you ever wanted to introduce layout that is incremental between frames than that would require all that logic anyway, but I suppose if layout is fast enough then perhaps you don't need that.

@nicoburns It's not about the amount of work it takes to get there. A new design encourages certain new practices, new APIs need to be maintained, future ideas need to be reconsidered, etc.
There is a lot more to consider than the work needed for an implementation. Code is the easy part!


Installation Error OpenKeyReadOnly error (code 0)

I get this error when trying to install.
OpenKeyReadOnly error (code 0)
I have turned off BitDefender and run the bat with Admin privileges. I also tried adding exceptions to BitDefener, but that did not seem to help.
Suggestions?

Suggestions?

Solution here https://github.com/stascorp/rdpwrap/issues/1883

My issue does not match any of the above.

Try solution from problem 2

The reg entry for TermServices was damaged. I restored it and ran the installer again and got this result.

Rebooted PC (after restoring)?
RDPConf screenshot, please!

Here is the sequence of what I just did:

Restored Registry entry from the downloaded zip

Rebooted PC

Checked Services for Remote Desktop Services, It was stopped so I tried to start it and got this error.

Checked TermService in Registry

Checked RDPWConf

Ran Install.bat as administrator

Checked RDPWInst

I am an IT guy. It looks like it is not installing for some reason. I changed security on the directory to ensure R/W access. The only other different. I think it might be related to the fact that I am not able to start TermService from the services tab.
Thanks for your help.

see https://github.com/stascorp/rdpwrap/issues/1821

This is totally frustrating. I have RDS working on another Windows 11 machine, so I exported the registry entries for TermService.
Following the steps in #1821 on the problem machine i did the following:

I first totally uninstalled BitDefender.
Rebooted PC.
Imported the registry entries from the working machine.
From elevated cmd, ran SFC /scannow
Rebooted PC.
Used services to try to manually start TermService

And I still get the error that it will not start.

Other than reinstalling Windows, I am not sure where to go next. :-(

Other than reinstalling Windows, I am not sure where to go next. :-(

Restore point. Or no way

This is not my day. It is a new system and when they configured it, they did not turn on Restore Points.

This is not my day. It is a new system and when they configured it, they did not turn on Restore Points.

So... Don't use BitDefender and add exclusions for RDPWrapper

Acceptable to https://github.com/stascorp/rdpwrap/issues/1883


IpInFile Settings

Can I know that how is the IpInFile settings should looks like? Since if existing this might able to build a generator for it each time attacks are detected then block the attacker's ip to avoid future attacks or remove the old ones after some period?

Hmmm I feel dumb after found the code. So for future anyone who wants to create the IpInFile, just use new line to split the ips


Added try/catch block around file watch.

To alleviate error:
connect-assetmanager/node_modules/step/lib/step.js:39
throw arguments[0];
^
Error: watch ENOENT
at errnoException (fs.js:1019:11)
at FSWatcher.start (fs.js:1051:11)
at Object.fs.watch (fs.js:1076:11)
at connect-assetmanager/lib/assetmanager.js:115:24
at Array.forEach (native)
at connect-assetmanager/lib/assetmanager.js:105:17
at connect-assetmanager/lib/assetmanager.js:32:6
at Array.forEach (native)
at Object.settings.forEach (connect-assetmanager/lib/assetmanager.js:30:22)
at Function. (/connect-assetmanager/lib/assetmanager.js:103:12)

+1


Can't connect to secured networks

I can only connect to an open network, if I try connecting to my secured hotspot and type in my password it doesn't connect and if I click on on again it doesn't even ask for a password and nothing happens.

Same goes Bluetooth, can't connect anything but it discovers devices.

Ok found our that the wifi problem seems to be a problem with windows hotspot(?) And bluetooth probably can't connect to low energy devices like my mx master 3 since it seems to work with some other devices.

It takes a while for the network card to work normally after booting