Comment button positioning and style adjustments

Addresses #9025. This PR is to resolve the issues mentioned on 9025 as well as other small improvements.
General list of changes include:

Fixed issues with field rows fields overlapping the comment buttons
Changed fields with comments' hoverable area to include the comment Icon space, so it stays visible when hovering beside the field (instead of only focusing within)
Modified highlight colours for comments and overlapping comments in Drafttail to ensure colour contrast is accessible and matches Figma file.
Changed comment buttons from absolute positioning to flex box positioning in order to align items horizontally.
Ensured that all text fields with multiple lines will have the comment icon at the top of the field
Positioned the comment button to be beside the other actions for chooser widgets
Added aria-expanded variant in order to show active styling on side bar toggles when they are expanded
Updated the comment button svg positioning and sizing so they are consistent

Demonstration Video:
https://user-images.githubusercontent.com/25041665/186269455-13120f21-be7f-4b17-80b9-99da372e8f77.mp4
Browsers tested on
Chrome 104 , Safari 15.6, Firefox 103

A few issues after running this locally - looking much better though @stevedya  thanks for responding to all the feedback.
1 - add comment icon too large
Not sure if something is wrong with my local but the icon sizing seems to be a bit too 'big' now (the add comment is about 20% bigger than the existing comment button) and it looks out of place in the Draftail toolbar.

On mobile devices it cuts into the field a little bit (especially for nested inline panel / StreamField scenarios).

2 - inner comment highlight is missing
When you comment on a sentence but then add another comment on a word inside the sentence, if you click away the inner word highlight is missing.
The word truncated has the 'inner comment' in the screenshot below.

3 - Comments overlap the fields on small devices
On any viewport smaller than large, where there is no 'sidebar' room to the right, the comments completely cover the field.
I think this may be an improvement, previous versions would not show the comments at all and sometimes move the main content completely off screen, but maybe on small devices we can move things up/down by some fixed margin?

@lb- Thanks for going through and testing this 🙌 . It appears you might have to compile styles perhaps?
1 - This would be caused by the swapping of the svg path and I did have styling to accommodate the size change which should be reflected locally now.
2 - This also looks like it hasn't compiled as it should show the yellow highlighted colour for those inner comments.
3 - Nice catch, I believe this could be fixed with this PR #9090 as well as more refined when we work on the comments side panel #8147.  On another note I think even moving comments to sit on the bottom of the screen when on mobile might help. Similar to how google docs mobile app does it:
 This way the fields comment icons can always be visible. (then we would also have to accommodate if a field was at the bottom of the page and add some bottom margin of course). We might wanna tackle that with #8147 though

Thanks @stevedya  & @thibaudcolas  - sorry I did not get around to another review on this.
Not sure what happened with my icons locally - maybe some odd caching - glad it was not an issue.
As for mobile comments - I think that if they are functional - this is a huge improvement (Wagtail < 3.0 - you could not even add comments on a mobile device).


Runs fine locally, no data in PCF

I setup a Spring Boot application to start the dashboard. It works fine locally. However, when I start it up in PCF, the interface loads, but no data is ever shown. Inspecting the interface, the data seems to get a 200 back. Any advice on diagnosing this?

Hi @dmfrey
Thanks for trying out our dashboard!
You can always check the logs of the dashboard server.
Is the server pointing to the right registry server?
The dashboard server will almost always return a result to the dashboard.
However, if the server isn't able to collect data you'll end up with an empty json array, which in turn will result in an empty dashboard.
HTH.

Didn't catch these in the logs before, but every service registered in eureka is throwing one of these when it attempts to get the health endpoint
2016-12-15T09:56:34.74-0500 [APP/0]      OUT 2016-12-15 14:56:34.730 ERROR 10 --- [o-eventloop-3-1] b.o.m.nodes.aggregators.ErrorHandler     : Error retrieving node(s) for url https://[REDACTED]/health with headers [Host=[REDACTED], User-Agent=RxNetty Client]: java.io.IOException: Connection closed by peer before sending a response.
2016-12-15T09:56:34.74-0500 [APP/0]      OUT java.io.IOException: Connection closed by peer before sending a response.
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.reactivex.netty.protocol.http.client.ClientRequestResponseConverter.<clinit>(ClientRequestResponseConverter.java:91)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.reactivex.netty.protocol.http.client.ClientRequiredConfigurator.configureNewPipeline(ClientRequiredConfigurator.java:42)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.reactivex.netty.pipeline.PipelineConfiguratorComposite.configureNewPipeline(PipelineConfiguratorComposite.java:55)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.reactivex.netty.pipeline.PipelineConfiguratorComposite.configureNewPipeline(PipelineConfiguratorComposite.java:55)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.reactivex.netty.client.RxClientImpl$2.initChannel(RxClientImpl.java:127)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.netty.channel.ChannelInitializer.channelRegistered(ChannelInitializer.java:68)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelRegisteredNow(ChannelHandlerInvokerUtil.java:32)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRegistered(DefaultChannelHandlerInvoker.java:50)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRegistered(AbstractChannelHandlerContext.java:114)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.netty.channel.DefaultChannelPipeline.fireChannelRegistered(DefaultChannelPipeline.java:833)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:503)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.netty.channel.AbstractChannel$AbstractUnsafe.access$100(AbstractChannel.java:417)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:477)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:339)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:356)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:742)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
2016-12-15T09:56:34.74-0500 [APP/0]      OUT    at java.lang.Thread.run(Thread.java:745)
2016-12-15T09:56:34.87-0500 [APP/0]      OUT 2016-12-15 14:56:34.877  INFO 10 --- [o-eventloop-3-1] b.o.m.n.a.h.HealthIndicatorsAggregator   : Completed emission of a health node observable from url: https://[REDACTED]/health

I'm going to close this issue since we're working on a new version.
If you still have any questions, don't hesitate to reach out on Gitter or open a new issue!


Added compatibility with <input type="text" /> tags

This adds backwards compatibility with old <input type="text" /> tags.

[x] Basic decorator
[x] Tests still need to be added
[x] A warning needs to be added for hidden inputs
[x] Documentation

This will close #3022 when it is merged.

The title says <input />. Which I read as any <input />. Wouldn't it be better to explicitly say <input type="text" />? Because you (still) don't want to support <input type="hidden" />, right? Or does the title imply that things like <input type="tel" /> are supported?

I think this PR is set to go as it currently stands.

Wouldn't it be better to explicitly say ?

To avoid confusion in the future, I've adjusted the title (and documentation) to point out text inputs specifically.


svg_loader: class attribute added

It's the first step in introducing the css inline style sheets into tvg.
For now the class attribute is set only for SvgNodes (not for grads),
it's not used yet.

will be present in a cumulative css pr


Changing mask from dropdown menu

Hello,
I'm trying to change a mask on a text input field from a separate drop down menu selector. I'm using angular by referencing an object in the component that holds information regarding the mask. The selector changes the value of the object to one of several static constants, each representing a different mask.
When a selection is made the placeholder text in the input field changes, and logging has confirmed that the object has changed to the proper value, but the mask never changes. It always stays the same as when the page loaded, no mater what the default option is chosen as. The page functioned as desired in release 8.0.1 and before, but broke with 8.0.2.
Here is a snippet from the html code showing the selector and input field:

  <select id="lookupFilterSearchBy" [(ngModel)]="searchOption" formControlName="searchBy" class="form-control form-control-sm" (ngModelChange)="onChange()">
    <option *ngFor="let o of searchOptions" [ngValue]="o">{{o.name}}</option>
  </select>

    <input id="lookupFilterSearchText" type="text" class="form-control form-control-sm" formControlName="searchText" placeholder="{{this.searchOption.placeholder}}"[textMask]="this.searchOption.mask.length > 0 ? {mask: this.searchOption.mask, placeholderChar: this.searchOption.placeholderChar} : {mask: false}"/>

      <button id="lookupFilterSearchButton" class="btn btn-default btn-sm" [disabled]="!lookupFilterFormGroup.valid" title="Search" [class.disabled]="!lookupFilterFormGroup.valid" (click)="onSearch()">

      </button>

Thank for your assistance.

This is a known issue (#582), I did not get around fixing the issue yet.

Thank you, sorry for the duplicate.

No worries


docs: fixed broken links

Commit Message
docs: fixed broken links (#1639)
The folder structure has changed and these links pointed to the old location.
End Commit Message

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

AWS CodeBuild CI Report

CodeBuild project: AutoBuildProject6AEA49D1-Blkkw9bQFn8A
Commit ID: 24de722b0086870def18688928c2e221500870e0
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: AutoBuildProject6AEA49D1-Blkkw9bQFn8A
Commit ID: ab77894bfb9f4cf18393100485e94dc038101c21
Result: FAILED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

It happens there was an identical fix in another PR that has been merged now :) Thanks none the less !!

AWS CodeBuild CI Report

CodeBuild project: AutoBuildProject6AEA49D1-Blkkw9bQFn8A
Commit ID: bda977c2bf52ef5fa59cd9e4f782a360a15863d9
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository


IoT: Set Certificate ID to SHA256 hexdigest of DER.

Previous algorithm was based on the PEM format and produced an incorrect certificate ID.
Includes configurable certificate validity for backwards compatibility.

This is an spin of https://github.com/getmoto/moto/pull/6858 which was closed.  Make the default to generate the correct cert ID and allow tests to optionally configure to use previous algorithm which supported invalid certificates in the test.

Fixes https://github.com/getmoto/moto/issues/7866

Hi @mcli, thanks for picking this up. The change makes sense to me - but we would have to keep the current (incorrect) behaviour as the default, and make the DER calculation the opt-in behaviour. We don't want to introduce a breaking change for users.

Hi @bblommers , Ok.  Set the default to False.  Thanks for the comments and I agree with the approach.  Propose to change the default in the next major release.


Add support for specifying Quality-of-Service

Thanks for the very good changes!
However, I thought that qos:background would slow down the processing time too much.
So I added an option to specify QoS.

Close because it was applied to the fork source


GILL Image Retrieval Code on VIST

Hi! Great work.
I want to reproduce the GILL results in Table 5.

I'm wondering what code changes need to be done in eval_vist_retrieval.py from FROMAGe.
I've tried changing these lines(L135-L142 and L154-L159) but the results seem not quite right...
"""L135-142"""
all_input_ids = []
for i, c in enumerate(captions):
    if i == len(captions) - 1:
        c += '[IMG]'     # c += '[RET]'
    input_ids = model.model.tokenizer(c, add_special_tokens=True, return_tensors="pt").input_ids.to(emb_matrix.device)
    all_input_ids.append(input_ids)

input_embs = [model.model.input_embeddings(s)[0, ...] for s in all_input_ids]  # (N, T, D)

"""L154-159"""
output = model.model.lm(inputs_embeds=final_input_embs, labels=None, use_cache=False, output_hidden_states=True)
# last_hidden_state = model.model.text_hidden_fcs[0](output.hidden_states[-1])
last_hidden_state = model.model.ret_text_hidden_fcs[0](output.hidden_states[-1], None)
ret_emb = last_hidden_state[:, -1, :]

ret_emb = ret_emb / ret_emb.norm(dim=1, keepdim=True)
scores = ret_emb.squeeze() @ emb_matrix.squeeze().T

Looking forward to your reply.
Thanks.

Hi, it looks like the reason is that you're adding [IMG], but GILL expects [IMG0]...[IMGr]. You probably want to be adding [IMG0] instead of [IMG]. You can verify this by checking that it only adds a single token instead of multiple, since [IMG0] will be part of the vocab but [IMG] is not.
Since retrieval uses just the first IMG token, replacing [IMG] with [IMG0] in your code should be sufficient, I think.


fix(build): bundle pure esm package

Summary
When using the openapi-typescript-code-generator as CJS, the following error occurs.
❯ node --input-type=commonjs -e "require('./dist/index.cjs')"
/Users/kei_sakamoto/workspace/openapi-typescript-code-generator/dist/index.cjs:1377
var DotProp2 = __toESM(require("dot-prop"), 1);
                       ^

Error [ERR_REQUIRE_ESM]: require() of ES Module<EMAIL_ADDRESS>from /Users/kei_sakamoto/workspace/openapi-typescript-code-generator/dist/index.cjs not supported.
Instead change the require of index.js in /Users/kei_sakamoto/workspace/openapi-typescript-code-generator/dist/index.cjs to a dynamic import() which is available in all CommonJS modules.
    at Object.<anonymous> (/Users/kei_sakamoto/workspace/openapi-typescript-code-generator/dist/index.cjs:1377:24)
    at [eval]:1:1
    at Script.runInThisContext (node:vm:122:12)
    at Object.runInThisContext (node:vm:296:38)
    at [eval]-wrapper:6:24 {
  code: 'ERR_REQUIRE_ESM'
}

To resolve this issue, we need to bundle pure esm package.
However, tsup does not bundle packages that are listed in the dependencies.(see https://tsup.egoist.dev/#excluding-packages , https://github.com/egoist/tsup/issues/628#issuecomment-1159734075)
As a workaround, I moved the pure ESM package to devDependencies.
Test Plan
verify that the package can be loaded in both ESM and CJS with the following command.
node --input-type=module -e "import {CodeGenerator} from './dist/index.js'"
node --input-type=commonjs -e "require('./dist/index.cjs')"

Some tests are failing.I am investigating it.

Thank you for the pull request. Is there anything we should include in our README about this change?
@Thiry1

@Himenon

Is there anything we should include in our README about this change?

I believe there is no impact on users, so I think it is unnecessary to add anything to the README.

Yes, sir. Thank you!

This changes was included in v1.0.9


Lazily Fetch Supported TypeScript Code Actions

Delay fetching the supported code actions for TS/JS until we actually need them.
This will allow TSServer plugins time to register their supported code actions

Thanks @mjbvz.
@angelozerr fyi, this will enable removing the code that 'steals' a TS error code for tslint. Challenge will still be to find an unused one 😄


Version 2

Added a complete conversion label that appears when the save file is
complete. Changed a button and a scrollbar to ttk.

What version of tare you running this under?

Apparently python 2.X because the imports have to be updated to work in 3.  Are you going to upgrade to python 3 o are you bound by ESRI's python.

I wrote the program using python 2.7, but then I created the exe file with
py2exe. I originally learned python 3, but it seems like a lot of the
module/packages still don't support it. What are you trying to do? I have
the source code if you want it. There is also some program that will
convert 2.7 to 3.3.
On Wed, Mar 25, 2015 at 11:44 PM, Paul Brown<EMAIL_ADDRESS>wrote:

Apparently python 2.X because the imports have to be updated to work in 3.
Are you going to upgrade to python 3 o are you bound by ESRI's python.
—
Reply to this email directly or view it on GitHub
https://github.com/flynnpc/CSV-to-KML/pull/1#issuecomment-86340297.


Please call zle with --

Hello,
I have widgets named in "-a-widget" convention. Following error occurs:
_zsh_autosuggest_bind_widget:zle:47: bad option: -s
The function is -fast-highlight-check-path-async. I've checked with man and -fa are legitimate options that's why it complains about "-s". You need to add "--", example: zle -N -- -fast-process, etc.

Thanks for reporting. This should be fixed on develop and will go out with the next release.


Issue with docker.socket permissions on Oracle Linux

We have run into an issue with permissions to /var/run/docker.sock on VMs running Oracle Linux version 7.8.
After installing the latest version of docker from the centos repository and adding users to the docker group, users still get a "permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock" error.
The owners of /var/run/docker.sock are root:docker, and the permissions are 660. The user is a member of the docker group.
If the permissions on docker.sock are set to 770, the user is able to run docker commands without having to use sudo.
This appears to be an issue specific to Oracle Linux. We don't have this problem on VMs running Red Hat or Ubuntu.

Closing. This is the wrong repo to report this issue in. Please ask in https://github.com/moby/moby/


Userscript manager

Can someone name a userscript manager for safari a that u don’t have to download.

ya same


Resolved: USN-3455-1: wpa_supplicant and hostapd vulnerabilities https://www.krackattacks.com/ .... edit: looks good

Please paste the output of the following command here: sudo edit-chroot -all

chronos@localhost / $ sudo edit-chroot -all
name: trusty
encrypted: yes, locked
Unmounting /mnt/stateful_partition/crouton/chroots/trusty...

#### Please describe your issue:

How do we get upgrades/patches that take care of recent wpa2 vulnerability?

https://www.krackattacks.com/
https://usn.ubuntu.com/usn/usn-3455-1/

I can not seem to find my version of wpa_supplicant .

Whoops!  There it is:

(trusty)westmj@localhost:~$ sudo wpa_supplicant -v
wpa_supplicant v2.1
Copyright (c) 2003-2014, Jouni Malinen<EMAIL_ADDRESS>and contributors

Looks good!

#### If known, describe the steps to reproduce the issue:

@westmj chromeos will take care of that. Wifi or ethernet connection are handled by chromeos which is the host of your chroot.

Discussed here in Chromebook Central:

Ernest - Community Manager said:

Hi everyone,

We're aware of the issue, and a patch will be rolling out to any affected devices in the coming weeks

Thanks!

And fixes addressed here: Search for status:open krack
Hope this helps,
-DennisL


terminal prompts disabled

After Prompt not defined issue fixed I am now facing other issue related to "##[error]fatal: could not read Password for<EMAIL_ADDRESS>terminal prompts disabled"

@sarthakgupta005 , how did you fix this problem?  I'm seeing the same thing.

me too. how solved??? ;(

Add this to your code @dbwodlf3 @gbarrs-at-em

Wow So fast. Thanks good man.


Test replacing stat64 with stat

struct stat64 is not used in Cygwin, however struct stat is 64 bit aware so a simple find and replace may allow this to work under Cygwin.

Closing this as I'm afraid I haven't had time to work on this project for a long time and I don't want to give the impression that it's still actively maintained.


playtop command

&skipTo
jumps to a music on the queue

&playtop
play a song immediately, ignoring the queue


Qt runtime chrpath dependency on Linux

Seems that qt 5.6 now has a run time dependency chrpath on Linux. At least it is being pulled in by the package. However I'm not seeing any corresponding update in the recipe about adding chrpath. It seems a little strange to add chrpath as this is only used during a build to update the RPATH in libraries. Not really understanding the value of having it at run time unless it is being used by qmake. Any thoughts on this?

Related it seems ruby is getting pulled in too. I'm pretty sure that is only needed for the build and not needed at runtime unless I'm missing something.

qt 5.6 now has a run time dependency chrpath on Linux.

Why is that? I mean, who did that change?

I'm pretty sure that is only needed for the build

Correct. It's needed to build QtWebkit.

No clue. I can't find the corresponding recipe change ( https://github.com/conda-forge/qt-feedstock/issues/58 ). Presumably whoever built for Linux last.

As we now build on CI and have done a few builds since, this issue appears to have been resolved.


dns/ddclient: add dnsexit

Important notices
Before you add a new report, we ask you kindly to acknowledge the following:

[X] I have read the contributing guide lines at https://github.com/opnsense/plugins/blob/master/CONTRIBUTING.md
[X] I have searched the existing issues, open and closed, and I'm convinced that mine is new.
[X] When the request is meant for an existing plugin, I've added its name to the title.

Is your feature request related to a problem? Please describe.
Currently there is no configuration option for DNSEXIT
Describe the solution you'd like
Please add the option to use DNSEXIT
Describe alternatives you've considered

DYNDNS: Continue with dyndns until it breaks?
DOCKER: an dnsexit script which proved to be unreliable, also I cannot have dockers at all my locations
DNS-O-MATIC:  Does not work (Opnsense 22.1.2) GUI doesnt save the password input and gives auth errors in the debug log)

Additional context

DNSexit exists in the current dev branch of ddclient (bottom): https://github.com/ddclient/ddclient/blob/develop/ddclient.conf.in
DNSexit also supports simple HTTPS via APIKEY updates: curl https://api.dnsexit.com/dns/ud/?apikey=API-KEY -d host=host1.yourdomain.com,host2.yourdomain2.com (-d ip=xx.xx.xx.xx  is optional as their system will automatically detect the public IP)
DNSexit's update response uses codes:

code:0 indicates successful update   {"code" : 0, "message" : "Success - some details about the update"}
code:1 indicates IP address not changed.   {"code" : 1, "message" : "IP not changed - some details about the update"}
Other returning codes indicates errors.

Thank you,
I should learn to code and provide a working change instead of requesting

I'm using Dynamic DNS (Legacy) and I stopped updating because DNSExit support was gone. So a +1 for DNSExit Support.

I'm using Dynamic DNS (Legacy) and I stopped updating because DNSExit support was gone. So a +1 for DNSExit Support.

You can continue to update your OpnSense, although the legacy Dynamic DNS package is no longer supported it wont be removed from your system and will continue to function, but perhaps not indefinitely.
Until ddclient supports DNSexit, you may also setup a simple cronjob however that is not as nice as having it shown on the dashboard

The develop branch ddclient implementation is built on the legacy update method of dnsexit (using the url https://update.dnsexit.com/RemoteUpdate.sv with all the required information added in the url). Now they have a new and much safer update method on the new endpoint, as described here; https://dnsexit.com/dns/dns-api/#guide-to-use
However, I'm not aware of an implementation for this API in ddclient.

I guess this issue is rightfully closed, however I've made an effort upstream to get this moving forward. But it seems also ddclient is in maintenance mode with limited activity by the maintainers.

The time has come, dyndns is dropped from the repo, no ddclient update to support dnsexit in any manner..
This can be used to run off a spare vm or opnsense directly

#### let cron run the script, its set for every 4mins (shouldnt be more than 3x per 10mins or the api will cry)
crontab -e
*/4     *       *       *       *       (/usr/local/sbin/dnsexit.sh) > /dev/null

### copy the below script to your favorite editor, update the apikey and dnshosts
### cat it into the file, copy&paste the script, close with a ctrl-c

cat > /usr/local/sbin/dnsexit.sh

#!/bin/sh
apikey="enteryourkeyhere"
## use comma for multiple hosts
dnshosts="hostname.domain"
## if specific interface is needed add  --interface ovpnc1  as example, between curl and https:// curl.
curl https://api.dnsexit.com/dns/ud/?apikey=$apikey -d host=$dnshosts --no-progress-meter |grep code >/var/log/dnsexit.log
date >>/var/log/dnsexit.log
#

### make dnsexit.sh executable  and  touch the log file
chmod +x /usr/local/sbin/dnsexit.sh
touch /var/log/dnsexit.log

You can get your apikey from the dnsexit website, fyi https://dnsexit.com/dns/dns-api/#guide-to-use
try it out by running dnsexit.sh  and cat /var/log/dnsexit.log
its set & forget, it doesnt check if there are IP changes it simply updates every 4 mins.
If you dont know how to deal with the above, then you probably shouldnt..

I guess this issue is rightfully closed, however I've made an effort upstream to get this moving forward. But it seems also ddclient is in maintenance mode with limited activity by the maintainers.

your efforts were valiant, take care 👍🏻 lets hope something will get added in future

@DiSHTiX ; It seems like the new maintainer(s) have included dnsexit2 from my PR into the main (master) branch, which is good news. However, they have not (yet) made a new release (current 'latest' release is 3.10.0 from Oct 2022).
@fichtner ; That's a a bit harsh :stuck_out_tongue: , I've worked on getting this added to ddclient already in August 2022 :wink: . The main issue was/is the maintainer situation and getting a new release of ddclient that includes these features. If I understand correctly, opnsense follows the upstream 3.10.0 release of ddclient which is from Oct 2022. We could;

Wait until a new ddclient is released that includes the features (and adopt those).
Build it from the main branch instead.

@jortkoopmans sorry this was directed at @DiSHTiX
Should I add  ec4d83bc3f7 to our ddclient-devel port in order to get your change into OPNsense and/or is there another commit required?

@fichtner ; No worries, all good :wink:. I would recommend waiting just a little bit, as the new maintainers seem to be picking up the project quite quickly. There is a v3.11.0 release in the making which should include DNSExit. See tentative changelog here; https://github.com/ddclient/ddclient/blob/master/ChangeLog.md
However, if we don't feel like waiting, it is probably better to pin to a recent master commit, e.g. https://github.com/ddclient/ddclient/commit/ef496d108fea294ef83d7be6a6f9eb40ae3fc25c
Additionally, while I'm not familiar with the OPNsense plugin system, some changes may be needed here as well? (I don't see DNSexit here for example; https://github.com/opnsense/plugins/blob/master/dns/ddclient/src/opnsense/service/templates/OPNsense/ddclient/ddclient.conf)

Using an upstream state is risky. I've maintained a backport but in this case the dnsexit2 changes requires regfish (conflicting patch lines), and now also digitalocean/yandex/etc. due to the load_json_support line change. As said elsewhere I would have preferred a release tag since people started fixing things after 3.10.0

Ok it's in https://github.com/opnsense/ports/commit/e220eb52d for 23.7.1 but I will also post a test package in the next minutes

# opnsense-revert -z ddclient-devel

should install 3.10.0_6 which has regfish and dnsexit2 added. I'm unsure about the plugin requiring changes, but I think those changes would only be required on non-standard implementations.

@fichtner ; This is great, thank you! I think it "almost" works out of the box, except through the UI I can't configure the dnsexit2 protocol (it creates the dnsexit protocol config). But if I edit /usr/local/etc/ddclient.conf to (e.g.):
protocol=dnsexit2, \
login=bogus, \
password=REDACTEDMyAPIKey \
myredactedhost.example.com

then it works!
So basically I think the only minor thing needed is to adopt the dnsexit2 protocol (which is the only one remaining actually, as dnsexit was already removed). Of course some other settings are also not available on the UI, such as record type (ipv6) and TTL. But that's probably out of scope for now as you'd have to dynamically change the config form depending on the ddns provider.

Let me try to update the plugin tomorrow morning. This is very helpful, thanks!


Fix: Invalid date error on personal settings and team details page

Notion Card
Notion Card
Description

Fixed the issue where an invalid date text was being shown on the personal settings and the team details page.
It was caused due to the date again being converted even though the date already comes in as formatted from the backend.

Preview
P.S. - See the console in the image previews attached below.

@mayankagnihotri7 Please add before and after in preview

@prasanthchaduvula I cannot reproduce it locally, that's the reason I added these screenshots to show what the problem was.


replace buttons instead append (duplicated buttons)

When I have something like:
                 menu.dynamic((ctx, range) => {
                    test.map.forEach((t) => {
                      range
                        .text(t.desc, (ctx) => ctx.reply(t.desc))
                        .row();
                    });
                  });

ctx.reply("Select...", { reply_markup: menu });

executed everytime by a command it is appending new button to the menu, so I have it duplicated how can I replace all buttons instead add? Or maybe remove all buttons before add new one

This is caused by a misuse of the plugin.
You must build the menu once upfront. What you are doing is to add dynamic ranges every time your handler runs, which just makes the menu bigger and bigger.
You can fix it by moving the call to menu.dynamic outside of your middleware.

I must render the menu according the parameter passed to command ex:
/teste A
/teste B
/teste C
there is a lot of possible parameters, and buttons are different between themselves. I don't want to create a menu for each group of possibility.
Is there any workaround to delete buttons? When the user choose I don't need the menu anymore

buttons are different between themselves

This is what dynamic labels and dynamic ranges are for. They let you generate different buttons every time the menu is used.

When the user choose I don't need the menu anymore

This is an illusion. There will be a next user who wants to see the menu again, which means that you will have to recreate the menu at that point. However, menus cannot be created from handlers. You must create them upfront and install them. Then you can send them to as many users as you want.

So in principle, your structure should look something like this:
const menu = new Menu<MyContext>("test map")
menu.dynamic((ctx, range) => {
  ctx.session.test.map.forEach((t) => {
    range
      .text(t.desc, (ctx) => ctx.reply(t.desc))
      .row();
  });
});
bot.use(
  session({ initial: () => ({ test: { map: [] } }) }),
  menu,
)

bot.command("teste", async ctx => {
  ctx.session.test = test; // whatever test is for you right now
  await ctx.reply("there you go", { reply_markup: menu })
})


Mac OS can't install with package manager or manifest file on Unity 2022.3.13f1

An error occurred while resolving packages:
Project has invalid dependencies:
app.rive.rive-unity: Error when executing git command. Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

Drag and drop works but not above methods.

Sounds like something might be configured incorrectly with git on your system, the repository is public. Make sure you're pointing to the latest version (currently v0.1.16):
{
  "dependencies": {
    "app.rive.rive-unity": "git@github.com:rive-app/rive-unity.git?path=package#v0.1.16",
  }
}

If that still doesn't work, you can download a zip of the package and install it via "add package from disk".

Thanks, retried installing zip of the package  using Unity package manager and it worked, I was trying to add zip archive directly before, this time I extracted and added the package.json file, it worked like a charm.
git install still not working though, other git packages install without any problems.

Please make sure you have the correct access rights
and the repository exists.

Same problem with the same git error message on Windows.

@HayesGordon solved this.
Can you try adding the rive package from the HTTP URL instead:
https://github.com/rive-app/rive-unity.git?path=package#v0.1.29
Package installed with HTTP URL, I was entering URL into "add package by name" so it was't working before. Thanks.


Fix unable to build using Xcode Cloud

Fixes https://github.com/mac-cain13/R.swift/issues/862
The RswiftCore implementation can be found at try contents.write(to: outputURL, atomically: true, encoding: .utf8) is used to write the generated code; if atomically is true, the content is written to an intermediate file and then moved to the outputURL. However, XocdeCloud does not seem to allow writing outside of the pluginWorkDirectory, even for temporary files created by the Foundation framework.
The easiest way to make Build succeed on Xcode Cloud seems to be to change "atomically" to false.
What do you think about changing it?
References
https://github.com/liamnichols/xcstrings-tool/pull/36
https://zenn.dev/hiragram/articles/49f178b58a36bc
(Written in Japanese)

Hey @tomlokhorst is this something we could support? Would be great to have this working in Xcode cloud

@tomlokhorst can this be merged?

This is a great fix, thanks @Keitaro0226!
This is released in 7.5.0

i still get “RswiftGenerateInternalResources” is disabled even in release number 7.5.0

i still get “RswiftGenerateInternalResources” is disabled even in release number 7.5.0 @tomlokhorst

Have you found fix for this?


WP not working anymore, showing "Installing WordPress ... "

Full message is :
Installing WordPress ... This could be done in minutes. Please refresh your browser later.
Could not find any clue  but I am not used to wordpress.

Even for new web app...

We are also experiencing this issue. Entire sites are down and we are unable to access phpmyadmin or the database.

Docker image update definitely broken
Change the application settings as follows:
In case of WORDPRESS_DB_HOST you need to set DATABASE_HOST
In case of WORDPRESS_DB_NAME you need to set DATABASE_NAME
In case of WORDPRESS_DB_USERNAME you need to set DATABASE_USERNAME
In case of WORDPRESS_DB_PASSWORD you need to set DATABASE_PASSWORD
In case of WORDPRESS_DB_TABLE_NAME_PREFIX you need to set TABLE_NAME_PREFIX
This got me back to a default/blank install, but I'm still stuck on existing apps.

The issue workaround is as mentioned by @AdamBearWA . Please see workaround documented here


Publishing dev version of docker images

Motivation and context
What's new

This PR adds the ability to build a development version of CVAT without building local images (which takes ~15 minutes)
CVAT organization on DockerHub will contain another two tags for images cvat/server:dev and cvat/ui:dev
PR also adds possibility to run specific version of CVAT e.g v2.1.0
To install development version of CVAT users can run this commands

export CVAT_VERSION="dev"
docker-compose -f docker-compose.yml up -d

Limitations

Users can only run the latest development version, which means there is no way to pull CVAT images from a particular development branch commit.
Before pushing a development image to Docker Hub, we do not fully test them, we just run small sanity checks (main workflow), and only if these checks pass, we push the images.

How has this been tested?

Make sure the "classic" installation still works and make sure the pulled images are up to date with the latest CVAT.
Make sure the "development" install works and make sure the pulled images are up to date the the development version of CVAT

TO-DO

[x] Add publishing docker images step for main workflow
[x] Update docker-compose files
[ ] Update documentation

Checklist

[ ] I submit my changes into the develop branch
[ ] I have added a description of my changes into CHANGELOG file
[ ] I have updated the documentation accordingly
[ ] I have added tests to cover my changes -> tested this manually
- [ ] I have linked related issues (read github docs) -> I didn't find related issues
- [ ] I have increased versions of npm packages if it is necessary (cvat-canvas,
cvat-core, cvat-data and cvat-ui) -> there is no UI changes

License

[x] I submit my code changes under the same MIT License that covers the project.
Feel free to contact the maintainers if that's a concern.

@kirill-sizov , it looks great! Let's update the documentation and merge.


Solution for temporarily uploading DB so it can be built by docker

For the datasette publish command I ideally need a way of uploading the specified DB to somewhere temporary on the internet so that when the Dockerfile is built by the final hosting location it can download that database as part of the build process.

I don't think this is necessary.


"progressive" in what sense?

Does it depend on smaller versions of the images existing?
Are you just avoiding using the word "lazy"?
I am on mobile, so difficult to check, but think it should be part of the description.

Progressive rendering is different from lazy loading. In lazy loading you wait for the content to get fetched from the server and then display it. However in progressive loading, we render the image in stages, so that the user won't be seeing a blank screen or loader.
Progressively does this by requesting a smaller version of the image (which gets fetched quickly) and display it to the user while the original image is fetched asynchronously and then replaced with the smaller one using the progressive blur effect.

Closing the issue


Performance benchmark on RayDP v.s. Spark

Hi there,
In the talk "RayDP: Build Large-scale End-to-end Data Analytics and AI Pipelines Using Spark and Ray" https://youtu.be/ELSrR1Geqg4?t=819, @carsonwang mentioned that RayDP would have better performance.
We are curious which type of queries / workflows you run and your analysis on the performance differences.
Thanks a lot!

Hi @chenya-zhang , there is a plan to integrate RayDP with Gluten which offloads the sql operations to native engine such as Velox. For TPC-H or TPC-DS like benchmark, we observed more than 2x speedup. You can find more details from the Gluten project https://github.com/oap-project/gluten.
We are also running RayDP + XGBoost on Ray workflows and observed performance advantage over running XGBoost on Spark. We will share more once the data is ready to publish.

Hi @carsonwang, Can you please share the performance benchmark numbers for Ray + XGBoost vs XGboost on Spark.

@carsonwang Did the plan to integrate RayDP with Gluten materialize?


Bug: Can't turn off CriticalLogMiddleware

Describe the bug
There seems to be no official way to turn of this middleware by default. After looking through the code the only viable option would be to set the PYTEST_CURRENT_TEST env var even when I'm not running my tests...which just seems silly. Not being able to turn this off clutters the logs with unnecessary messages.
How to reproduce
Setup a FastStream broker and watch for "Recieved" and "Processed" messages all over the place.
Expected behavior
The ability to turn this off.
Environment
Running FastStream 0.5.23 with CPython 3.12.3 on Linux
https://github.com/airtai/faststream/blob/7c069db7ff28bb43451aaa4dbffd84e8c261567a/faststream/broker/core/usecase.py#L177-L182

@mdgilene you can't remove CriticalLogMiddleware, but you can set its' logging level to DEBUG or even lower to not to see annoying messages. This is the official way to hide them.

In my case I am trying to provide a custom logger to the broker so just setting the log level doesn't seem to be viable since it would suppress the rest of the logs I do want to see.

@mdgilene it doesn't set log level to whole logger. It is just log level for service message you mentioned. So, this option can be used with custom logger as well

I think changing the "Received" and "Processed" logs to use a static DEBUG level instead of the globally configured level would be more inline with their purpose.

I am not sure about API, but you are always welcome with any PR. Even you idea will not be merged to main, we can inspire by it and implement any decision as a part of next 0.6 major


sequence cannot be fetched with ?v=1

fetching a sequence throws an error when ?v=1 is specified (lots of info in this post).
Simplest way to reproduce the bug:
$ safe seq store "first value"
$ safe seq append "second value" <the xorurl>
$ safe cat <the xorurl>?v=1
# this will go into ~10s 100% cpu usage followed by this error:
sn_cli error: [Error] VersionNotFound - Version '1' is invalid for the Sequence found at "<the xorurl>?v=1"

This is because of a bug in in_range.
https://github.com/maidsafe/sn_data_types/blob/b0796d1a4baf9f53d68e07425eb20791651da382/src/sequence/seq_crdt.rs#L382-L395
L385 - num_items would have to be end-start, not just end, but there's no subtraction for Index type.
L389 and 391 - take and take_while don't communicate the underlying intention very clearly (in my opinion). I'm not up to speed on the most efficient way to extract a range of items in rust, but I replaced these two with a .filter with a single conditional that seemed to express the intention more clearly:
.filter(|(i, _)| i >= &start_index && i < &end_index)
but I'm not sure if this becomes inefficient for a large number of items (it has to iterate over all items).
My fix for this bug was to rename num_items to end_index and replace the two take* lines with a single .filter line, and this resolved the bug. But I have not submitted a PR because I feel the filter is too inefficient and am not sure what to use instead.
As a small additional detail, it would be handy to add documenting comments about the range, eg
/// Gets a list of items which are within the given indices.
/// Includes the item at `start`, excludes the item at `end`
/// for a total of `end-start` items. ie the range [start,end)
pub fn in_range(&self, start: Index, end: Index) -> Option<Entries> {
  ...

Closed by https://github.com/maidsafe/sn_data_types/pull/311
Also related to https://github.com/maidsafe/sn_data_types/pull/313


database helper ver 2.2

I had an issue when trying to use PDO::FETCH_ASSOC.  I had nothing in an array to pass so I tried
$stmt = $this->db->selectAssoc("SELECT * FROM checks ORDER BY checkid", "", PDO::FETCH_ASSO, "");

I figured I needed quotation marks where there for missing arguments.
I got various errors:
[Wed Feb 24 11:30:02.398273 2016] [:error] [pid 5964:tid 1184] [client ::1:55180] PHP Fatal error:  Cannot use object of type stdClass as array in C:\\BitNami\\wampstack-5.6.2-0\\apache2\\htdocs\\crudv22\\app\\Models\\CheckModel.php on line 61, referer: http://localhost/crudv22/check/index?page=2&osch=
[Wed Feb 24 11:43:45.260296 2016] [:error] [pid 5964:tid 1188] [client ::1:55452] PHP Fatal error:  Class 'Models\\PDO' not found in C:\\BitNami\\wampstack-5.6.2-0\\apache2\\htdocs\\crudv22\\app\\Models\\CheckModel.php on line 58, referer: http://localhost/crudv22/check/index?page=2&osch=
[Wed Feb 24 11:45:55.767313 2016] [:error] [pid 5964:tid 1176] [client ::1:55476] PHP Fatal error:  Class 'Models\\PDO' not found in C:\\BitNami\\wampstack-5.6.2-0\\apache2\\htdocs\\crudv22\\app\\Models\\CheckModel.php on line 58, referer: http://localhost/crudv22/check/index?page=2&osch=
[Wed Feb 24 11:56:44.976948 2016] [:error] [pid 5964:tid 1188] [client ::1:55511] PHP Fatal error:  Class 'Models\\PDO' not found in C:\\BitNami\\wampstack-5.6.2-0\\apache2\\htdocs\\crudv22\\app\\Models\\CheckModel.php on line 58, referer: http://localhost/crudv22/check/index

The only way to get it working is copy the select function like so:
public function selectAssoc($sql, $array = array(), $fetchMode = PDO::FETCH_ASSOC, $class = '')
    {
        $stmt = $this->prepare($sql);
        foreach ($array as $key => $value) {
            if (is_int($value)) {
                $stmt->bindValue("$key", $value, PDO::PARAM_INT);
            } else {
                $stmt->bindValue("$key", $value);
            }
        }

        $stmt->execute();

        if ($fetchMode === PDO::FETCH_CLASS) {
            return $stmt->fetchAll($fetchMode, $class);
        } else {
            return $stmt->fetchAll($fetchMode);
        }
    }

and in model I still got errors, til finally at top of model I put
use PDO;

So basically the select isn't working if you need to pass PDO::FETCH_ASSOC, and why didn't it work without use PDO; at top of model.
To recap what worked in model:
use PDO;
//other code
public function checkRecalc()
    {
        $k = 0;
        $vsum = 0;
        $stmt = $this->db->selectAssoc("SELECT * FROM checks ORDER BY checkid");
        foreach ($stmt as $row) {
            $k = $k + 1;
            $tid = (int) $row['checkid'];
            echo $tid . "===";
            if ($k == 1) {
                $vsum = $vsum + $row['deposit'];
            } else {
                $vsum = $vsum - $row['widthdraw'] + $row['deposit'];
            }
            $postdata = array(
                'runsum' => $vsum,
            );
            $where = array('checkid' => $tid);
            $this->db->update("checks", $postdata, $where);
        }
        return;
    }

And adding this in database helper
public function selectAssoc($sql, $array = array(), $fetchMode = PDO::FETCH_ASSOC, $class = '')
    {
        $stmt = $this->prepare($sql);
        foreach ($array as $key => $value) {
            if (is_int($value)) {
                $stmt->bindValue("$key", $value, PDO::PARAM_INT);
            } else {
                $stmt->bindValue("$key", $value);
            }
        }

        $stmt->execute();

        if ($fetchMode === PDO::FETCH_CLASS) {
            return $stmt->fetchAll($fetchMode, $class);
        } else {
            return $stmt->fetchAll($fetchMode);
        }
    }

Well, have you already tried to change your code:
$stmt = $this->db->selectAssoc("SELECT * FROM checks ORDER BY checkid", "", PDO::FETCH_ASSOC, "");

Into this one:
$stmt = $this->db->selectAssoc("SELECT * FROM checks ORDER BY checkid", "",  PDO::FETCH_ASSOC, "");

(See the \ before PDO, this means it will use PDO class on the root namespace).

@tomvlk it is the same statement repeated in you reply, except your bottom statement has an extra space.
$stmt = $this->db->selectAssoc("SELECT * FROM checks ORDER BY checkid", "", PDO::FETCH_ASSOC, "");
$stmt = $this->db->selectAssoc("SELECT * FROM checks ORDER BY checkid", "",  PDO::FETCH_ASSOC, "");

Sorry, see my edit :laughing:

@tomvlk I figured the editor just wasn,t showing the slash, I tried
$stmt = $this->db->select("SELECT * FROM checks ORDER BY checkid", "", \PDO::FETCH_ASSOC, "");

got this error
$stmt = $this->db->select("SELECT * FROM checks ORDER BY checkid", "", \PDO::FETCH_ASSOC, "");

@jimgwhit i see no error xD Also copy paste failure :laughing:

@jimgwhit Btw, look at your function declare and the call to it
$stmt = $this->db->selectAssoc("SELECT * FROM checks ORDER BY checkid", "", \PDO::FETCH_ASSOC, "");

Is not correct, you pass a string, where array is needed. Maybe this is not the main issue but will resolve in errors too.
$stmt = $this->db->selectAssoc("SELECT * FROM checks ORDER BY checkid", array(), \PDO::FETCH_ASSOC);

Should be better

@tomvlk
Invalid argument supplied for foreach() in C:\BitNami\wampstack-5.6.2-0\apache2\htdocs\crudv22\app\Helpers\Database.php on line 92

@jimgwhit Ye, try my last comment

@tomvlk ok I used your last statement with
$stmt = $this->db->select("SELECT * FROM checks ORDER BY checkid", array(), \PDO::FETCH_ASSOC);

It worked, but questions:
Why do you need to pass array() if using PDO::FETCH_ASSOC?
But if using PDO::FETCH_OBJ then this would work
$stmt = $this->db->select("SELECT * FROM checks ORDER BY checkid");

With PDO::FETCH_OBJ I don't need to pass array().
And why is a slash needed if using PDO::FETCH_ASSOC like
\PDO::FETCH_ASSOC

the array is a parameter in your function...

@tomvlk I know that, but if I had the same query
This wil work if using PDO::FETCH_OBJ
$stmt = $this->db->select("SELECT * FROM checks ORDER BY checkid");

But if using PDO::FETCH_ASSOC I have to
$stmt = $this->db->select("SELECT * FROM checks ORDER BY checkid", array(), \PDO::FETCH_ASSOC);

In other words I have to pass a dummy array and use a slash before PDO, why?

Because of the declaration of the select function......
You will less common change the default fetch mode then giving parameter array.. thats the whole story behind it I think. And I agree with the positions of the parameters.

ok, what is the last parameter ever used for
public function select($sql, $array = array(), $fetchMode = PDO::FETCH_OBJ, $class = '')

the $class parameter?

When you do a FETCH_CLASS in PDO you should give the full class name in the last parameter.

Ok so the last parameter is a special one, I will probably never need, thanks. Also, @daveismyname if you have any in-sight, let me know, I will leave this issue open for a while.
And thank you @tomvlk for your help.

By default the select uses:
$sql, $array = array(), $fetchMode = PDO::FETCH_OBJ, $class = ''
so you only need to pass in the sql and an array when using prepared statements this will return an object to return assoc you need to pass the sql and the 2nd param before you set the third.

@daveismyname and  @tomvlk All is working with that advice, but still puzzled on why a slash is needed if using assoc
\PDO::FETCH_ASSOC
```
The query will not work without the slash in front of PDO.

because when using inside a controller the system is looking for a class of pdo inside the current class but won't find it so it needs the \ to tell it to look in the global namespace.
Using an alias will stop the need of a \

@daveismyname thank's for the quick reply, I will close issue tomorrow, leave it for a bit maybe help someone else.


Adding Userstamp in mongoid 5

HI
Mongoid_userstamp Gem is not working with mongoid5. ( https://github.com/tbpro/mongoid_userstamp/issues/27) Do we have any alternative to store user_id when we create HistoryTracker object?
Thanks

I wound up rolling my own based on mongoid_userstamps. Added
class HistoryTracker
  include Mongoid::History::Tracker

  before_create :set_modifier

  protected

  def set_modifier
    self.modifier = Auditing.current_user
  end
end

class Auditing
  class << self
    def current_user
      Thread.current['auditing:current_user']
    end

    def current_user=(user)
      Thread.current['auditing:current_user'] = user
    end
  end
end

Then added a before_filter in my ApplicationController that set the Auditing.current_user to the current_user from devise.

We still recommend the userstamp gem while it hasn't been supported since mongoid 4. Maybe someone cares to remove it from the documentation altogether or suggest an alternative?

Any update on this? The documentation still suggests we use a gem that is no longer maintained or supported for over 5 years.

No updates @jclusso, want to help?


TypeError: Cannot read property 'rootURL' of undefined

The newest version breaks my build because I don't have a rootURL defined and it fails because the rootURL is directly access in the base loader (see this commit)
Is rootURL a required config property? Otherwise it could be checked first whether it is defined on the loader.
Edit: Also, it looks like the loader is accessed before it is initialized (later with var loader = this;

I created a pull request with a fix for the issue mentioned above.


New version: BartoszCichecki.LenovoLegionToolkit version 2.21.3

Created by 🥟 Dumplings in workflow run #5147.
Logs
Updated: 2.21.2 → 2.21.3
Submitting WinGet manifests

Microsoft Reviewers: Open in CodeFlow

Hi @SpecterShell,
The package didn't pass a Defender or similar security scan. This might be a false positive and we can rescan tomorrow.
(Automated response - build 881.)

Automatic Validation ended with:

Installation failed with exit code -1978335187
2024-05-15 12:26:04.765 [FAIL] Installer failed security check. Url: https://github.com/BartoszCichecki/LenovoLegionToolkit/releases/download/2.21.3/LenovoLegionToolkitSetup.exe Result: 0x80004005

Automated error analysis suggests -1978335187 may mean Installer failed security check. Another script should retry this every 18 hours.
(Automated response - build 881.)


pistache multi thread example

I was looking for a thread pistache example.
Could I get a multi thread example~?
i'd like to make a thread class to override an onRequest mothod.
Any suggestions on how I can work around this problem?
thank you!

The reason there is no dedicated multi-thread example is because Pistache is natively multi-threaded so all the examples are technically multi-threaded.
See https://github.com/oktal/pistache/blob/master/examples/http_server.cc and https://github.com/oktal/pistache/blob/master/examples/rest_server.cc for more detail.


Make ApiResource::postToActionEndpoint() public

Is it possible to make ApiResource::postToActionEndpoint() public?
Some post actions (like Delete list member) are not implemented in the lib and and its not possible to call that actions manually

We can definitely add any missing action endpoints to their respective resource. I can work on adding this one later today. What others have you noticed are missing?

Just did diff between implemented actions and mailchimp swagger json
Full list of missing actions seems to be following:
/lists/{list_id}/members/{subscriber_hash}/actions/delete-permanent
/campaigns/{campaign_id}/actions/create-resend
/customer-journeys/journeys/{journey_id}/steps/{step_id}/actions/trigger
/automations/{workflow_id}/actions/archive

Just did diff between implemented actions and mailchimp swagger json
Full list of missing actions seems to be following:
/lists/{list_id}/members/{subscriber_hash}/actions/delete-permanent
/campaigns/{campaign_id}/actions/create-resend
/customer-journeys/journeys/{journey_id}/steps/{step_id}/actions/trigger
/automations/{workflow_id}/actions/archive


Update public doc with information about CDS orgs limitation for mentions control

Closing as this is being handled in the private repo via https://github.com/MicrosoftDocs/powerapps-docs-pr/pull/8548


fix: FLAML catboost metrics arent reproducible

Note: Please don't merge without a discussion first
Why are these changes needed?
Currently it is impossible to reproduce the best_loss provided by FLAML, using the best model which FLAML provides - when that best model is a CatBoost model.

There are two important changes made in this PR:

Removal of self.params[self.ITER_HP] = self._model.tree_count_ line on model.py
Removal of this if statement from model.py:  if current_time + self._time_per_iter > self.deadline:          return False

The line highlighted in 1) is the cause of issue #1317. As I understand it, CatBoost estimators can be thought of as performing their own AutoML/optimisation process internally - they have early stopping, and when use_best_model = True they internally optimise the objective metric. The issue with the current code is that it overwrites the n_estimators value with the actual number of trees used, but doesn't switch off this AutoML functionality. Rather than providing the user with the correct model, we simply change the internal AutoML process. As such, we get different results when we retrain and test that model on the same folds.

is a little trickier, and needs some discussion. Essentially the callbacks change the behaviour of the models, when the time_budget remaining is less than the time which the model will take to train. This means that when we take the model FLAML provides, and refit it on the same folds but with no time budget involved, we get different behaviour and different results. I imagine that this callback was likely implemented as a means of ensuring that FLAML respects the time budget, but I personally think that results which aren't reproducible are not particularly useful.

My main issue with 2) is that the XGBoostEstimator also utilises this same check_resource_limits(), so this change could have unintended consequences. On a similar note, I've realised that XGBoostEstimator and CatBoostEstimators call  check_resource_limits differently i.e.:
class XGBoostResourceLimit(BaseResourceLimit, TrainingCallback):
    def after_iteration(self, model, epoch, evals_log) -> bool:
        now = time.time()
        return not self.check_resource_limits(now, epoch, "xgb")

class CatBoostResourceLimit(BaseResourceLimit):
    def after_iteration(self, info) -> bool:
        now = time.time()
        return self.check_resource_limits(now, info.iteration, "cat")

Could you please explain why XGBoostResourceLimit returns return not self.check_resource_limits(now, epoch, "xgb") whilst CatBoostResourceLimit returns self.check_resource_limits(now, info.iteration, "cat") please?
It's the not part which I'm interested in.
Also worth mentioning is that we still assign self._time_per_iter in check_resource_limits. Can this code also be deleted, or is it still of use somewhere?
I'm fairly confident now that CatBoost results are now reproducible, but please let me know if you have any issues with my code.
Related issue number
Closes #1317
Checks

[X] I've used pre-commit to lint the changes in this PR (note the same in integrated in our CI checks).
[X] I've included any doc changes needed for https://microsoft.github.io/FLAML/. See https://microsoft.github.io/FLAML/docs/Contribute#documentation to build and test documentation locally.
[X] I've added tests (if relevant) corresponding to the changes introduced in this PR.
[ ] I've made sure all auto checks have passed.

Hi @thinkall, thanks for the feedback!
I have added the deleted line back as a comment, with an explanatory line above it. However, I can still (in select cases) find errors with the reproducibility of CatBoostEstimators (even when the assigned n_estimators value is correct). I've made one such example into its own unit test - see my earlier comment. `
I should also add that removing the discussed if statement on check_resource_limits does fix this reproducibility issue, at least for the unit test I've written

Hi @thinkall, that does fix the issue! Thanks for the suggestion - I am happy to implement that change. I just want to raise a couple of things:

With your implementation, we lose the catboost callback entirely, including stopping training early when we don't have enough resources i.e. this code on check_resource_limits:

            mem = psutil.virtual_memory()
            if mem.available / mem.total < self.free_mem_ratio:
                return False

Personally I think this is fine, but thought I should double check that this isn't an issue.

This is more of a question. With your approach, we no longer have a need for the CatBoostResourceLimit. Can I delete this, to keep the code tidy?

Thanks again for any help :)

Hi @thinkall, that does fix the issue! Thanks for the suggestion - I am happy to implement that change. I just want to raise a couple of things:

With your implementation, we lose the catboost callback entirely, including stopping training early when we don't have enough resources i.e. this code on check_resource_limits:

            mem = psutil.virtual_memory()
            if mem.available / mem.total < self.free_mem_ratio:
                return False

Personally I think this is fine, but thought I should double check that this isn't an issue.

This is more of a question. With your approach, we no longer have a need for the CatBoostResourceLimit. Can I delete this, to keep the code tidy?

Thanks again for any help :)

Hi @dannycg1996 , thank you very much! I think we can just skip time budget for catboost:

Hi @thinkall, that does fix the issue! Thanks for the suggestion - I am happy to implement that change. I just want to raise a couple of things:

With your implementation, we lose the catboost callback entirely, including stopping training early when we don't have enough resources i.e. this code on check_resource_limits:

            mem = psutil.virtual_memory()
            if mem.available / mem.total < self.free_mem_ratio:
                return False

Personally I think this is fine, but thought I should double check that this isn't an issue.

This is more of a question. With your approach, we no longer have a need for the CatBoostResourceLimit. Can I delete this, to keep the code tidy?

Thanks again for any help :)

Hi @dannycg1996 , thank you very much! I think we can just skip time budget for catboost:

I've just made that change, thanks for the help!
I suspect that in some cases the callbacks in XGBoostEstimator will lead to similar issues with reproducibility. However, if I ever come across such issues, I'll tackle them in a separate PR :)
Thanks for the help - hopefully it's mergeable now!


Build out Pane API

About
The current API for pages and panes is pretty limited. The Pane component should be used without discrimination for:

Presenting content
Splitting child panes
Recursively managing panes in a tree-like manner

The I3 docs have a pretty nice summary of using a tree layout for reference.
Also see here for an example of nested panes in the repo.
Example
Open to suggestions if this doesn't work but off the top of my head, something like this should work:
<Pane split="horizontal">
  <Pane split="vertical">
    <Pane>A</Pane>
    <Pane>B</Pane>
  </Pane>
  <Pane>C</Pane>
</Pane>

Screenshot

Context bar
We would also benefit from a context bar which can be used in any pane.
Top level
<Pane split="horizontal">
  <ContextBar>X</ContextBar>
  <Pane split="vertical">
    <Pane>A</Pane>
    <Pane>B</Pane>
  </Pane>
  <Pane>C</Pane>
</Pane>

Screenshot

Nested
<Pane split="horizontal">
  <Pane split="vertical">
    <Pane>A</Pane>
    <Pane>
      <ContextBar>X</ContextBar>
      B
    </Pane>
  </Pane>
  <Pane>C</Pane>
</Pane>

Screenshot

Update to this!

Tree view is incorrect - should not be limited to a tree structure (i.e 3 panes is allowed)
we might not need to nest panes - either works


let DOCKER_TLS_VERIFY=0 disable TLS

It's somewhat surprising that we cannot explicitly disable TLS connectivity. The docs state that the existence of DOCKER_TLS_VERIFY already enables TLS. It's actual value is ignored.
Would it be possible to change that behaviour to handle falsy values (0, false, no) like expected? If so, I'd be happy to provide a PR.
related: https://github.com/docker/docker/issues/14129

My own $0.02:
While I think empty is an acceptable method of turning TLS off, I don't think "off" should disable TLS, just the verification of the cert.
I think DOCKER_TLS_VERIFY should behave similar to the TLS verification settings of other software. For example, OpenLDAP's TLS verification settings:

TLSVerifyClient { never | allow | try | demand }
This directive specifies what checks to perform on client certificates in an incoming TLS session, if any. This option is set to never by default, in which case the server never asks the client for a certificate. With a setting of allow the server will ask for a client certificate; if none is provided the session proceeds normally. If a certificate is provided but the server is unable to verify it, the certificate is ignored and the session proceeds normally, as if no certificate had been provided. With a setting of try the certificate is requested, and if none is provided, the session proceeds normally. If a certificate is provided and it cannot be verified, the session is immediately terminated. With a setting of demand the certificate is requested and a valid certificate must be provided, otherwise the session is immediately terminated.

(Principle of least astonishment)
So I think it should either remain as is (empty turns TLS off), or we get a new variable, such as $DOCKER_TLS.

@phemmer Where do you read that an empty setting leads to actually verify anything? For me it still reads as DOCKER_TLS_VERIFY=0 is similar to TLSVerifyClient=never, with both settings having exactly those values as defaults when not set.
I'm with you that it's better to distinguish between TLS-verification and TLS-toggling, though. Yet, disabling verification leads effectively to a non-secured connection, doesn't it?

So much about least astonishment - I needed to edit my last comment. I hope I got it right now.

Where do you read that an empty setting leads to actually verify anything?

It doesn't verify anything. It disables the feature.
https://docs.docker.com/engine/reference/commandline/daemon/

Setting the DOCKER_TLS_VERIFY environment variable to any value other than the empty string is equivalent to setting the --tlsverify flag.

Alright, the surprise lies in the enabled verification when the setting is "0". "Empty" is disabling.
So this is wrong on my side:

It's somewhat surprising that we cannot explicitly disable TLS connectivity.

But again, it's at least surprising to me that it's no actual toggle and only works on presence. Compared to OpenLDAP I only miss the possibility to set a value more explicit - or "readable" - instead of relying on existence.
I'm going to close this issue now, because:

most people seem to be used to it
we have the chance to disable the feature
I'm going to think about it and maybe come up with a clearer approach

Thanks for the discussion and correcting my wrong impression!

Current behaviour is extremely annoying and is the show stopper in several environments.

Even if keeping DOCKER_TLS_VERIFY=0 meaning verify, the following should disable it, but doesn't:
DOCKER_TLS_VERIFY=

You actually have to use unset or similar which makes it immediately much more difficult to have a semi portable environment file.

I was surprised to see that explicitly setting
DOCKER_TLS_VERIFY=0

still performs the tls checking.  The meaning of an explicit 0 value should be no surprise.


import problem

Hey!
Thanks for all your hard work on this open project!
I have a problem with importing proplot on my Ubuntu 18. In README you mentioned that cartopy is used for optional geographic mapping features so I am assuming cartopy is an optional dependency. However, I have a problem with import proplot and this is the error ModuleNotFoundError: No module named 'cartopy' also I have matplotlib and numpy installed. Is this behavior a bug or am I missing something?
Here is the results of import:
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-1-41f69010d0c1> in <module>()
----> 1 import proplot as plot

/home/vezeli/.local/lib/python3.6/site-packages/proplot/__init__.py in <module>()
     10 from .rcmod import *      # custom configuration implementation
     11 from .utils import *      # misc stuffimport cartopy
---> 12 from .axes import *       # everything, axes definitions
     13 from .subplots import *
     14 from .gridspec import *

/home/vezeli/.local/lib/python3.6/site-packages/proplot/axes.py in <module>()
     81 # TODO: Import matplotlib docstring func, use it?
     82 from .rcmod import rc, _rc_names_nodots
---> 83 from . import utils, projs, colortools, fonttools, axistools
     84 from .utils import _default, _timer, _counter, ic, units
     85 from .gridspec import FlexibleGridSpec, FlexibleGridSpecFromSubplotSpec

/home/vezeli/.local/lib/python3.6/site-packages/proplot/projs.py in <module>()
     77 import matplotlib.path as mpath
     78 import warnings
---> 79 import cartopy
     80 from .rcmod import rc
     81 try:

ModuleNotFoundError: No module named 'cartopy'

Since the problem is in line #79 import cartopy in projs.py I tried moving this line inside the try environment in #81 but this didn't solve my problem. Any suggestions on how to import proplot successfully?

...wow I have no idea why/when I added that line. Whoops. Does the latest commit (2ae8fe5) fix it?

Patch 2ae8fe5 fixed it. I tested import proplot as plot in the regular jupyter notbook and it runs smoothly but when I tested in Ipython there is an issue with the %autosave since I have an old version of Ipython 5.5.0 installed and it does not support %autosave magic function. However, I could solve the problem by changing the nbsetup variable in .proplotrc to False.
Thanks for the help @lukelbd !


Updated maintainers; removed duplicate source code link

Coverage remained the same at 37.042% when pulling d7b7ae505ab55101368536420757606fe702da69 on andy/update-maintainers into 331fa210131319b62a60df5a5543dde09e996da4 on master.


DropdownButton very slow on first opening

When using a DropdownButton for the first time, it is very slow, the opening of list takes around 3 seconds.
After that the dropdown opens immediately every time I try.
I think it takes very long to layout the items and later on they are cached? But it's only 30 items in my list? Even with 3000 items the delay seems to be the same, so not sure where it might come from.
Here's a minimal example, I just created a fresh flutter project with Android Studio and put this in the children array.
DropdownButton(
  hint: Text("XYZ"),
  value: 0,
  items: List<DropdownMenuItem>.generate(3000, (int index) => DropdownMenuItem(
    value: index,
    child: Text("Item "+index.toString()),
  )),
  onChanged: (value) {
    log(value.toString());
  },
),

Is that delay expected? Any solution like pre-rendering or loading the DropdownMenuItems on the fly instead of using toList()?

Sure, upgraded yesterday in master branch. I'm testing on iOS 14 iPads (simulator and device) right now, not sure if other versions are affected.
> flutter doctor -v
[✓] Flutter (Channel master, 1.23.0-14.0.pre.111, on Mac OS X 10.15.7 19H2 x86_64, locale de)
    • Flutter version 1.23.0-14.0.pre.111 at /Users/pete/.fluttersdk
    • Framework revision 8211aaa2ae (vor 29 Stunden), 2020-10-12 17:25:38 +0800
    • Engine revision 11d756a62e
    • Dart version 2.11.0 (build 2.11.0-207.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/pete/Library/Android/sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.0.1, Build version 12A7300
    • CocoaPods version 1.9.3

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 50.0.1
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

• No issues found!

Have added a better example in the question. Thanks for looking into it!

I'm able to able to reproduce this issue Android 10 device, although the lag is about 2 seconds long.

I'm able to reproduce as well. There is a considerable delay on first opening.

This is the onTap method being called:
https://github.com/flutter/flutter/blob/66cf8d47a398e205c63f2cc5ef7c1ee46fb5efaf/packages/flutter/lib/src/material/dropdown.dart#L1181-L1235
Complete code sample
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

/// This is the main application widget.
class MyApp extends StatelessWidget {
  static const String _title = 'Flutter Code Sample';

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: _title,
      home: Scaffold(
        appBar: AppBar(title: const Text(_title)),
        body: Center(
          child: DropdownButton<String>(
            value: 'One',
            onChanged: (String? newValue) {
            },
            items: <String>['One', 'Two', 'tree', 'Four']
                .map<DropdownMenuItem<String>>((String value) {
              return DropdownMenuItem<String>(
                value: value,
                child: Text(value),
              );
            }).toList(),
          ), //MyStatefulWidget(),
        ),
      ),
    );
  }
}

flutter doctor -v
[✓] Flutter (Channel master, 1.23.0-19.0.pre.20, on Mac OS X 10.15.7 19H2 darwin-x64, locale en)
    • Flutter version 1.23.0-19.0.pre.20 at /Users/pedromassango/dev/SDKs/flutter_master
    • Framework revision 66cf8d47a3 (88 minutes ago), 2020-10-14 14:47:28 +0900
    • Engine revision adf5b59485
    • Dart version 2.11.0 (build 2.11.0-217.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.1)
    • Android SDK at /Users/pedromassango/Library/Android/sdk
    • Platform android-30, build-tools 30.0.1
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.0.1, Build version 12A7300
    • CocoaPods version 1.9.3

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

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] IntelliJ IDEA Community Edition (version 2020.2.3)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin installed
    • Dart plugin version 202.7319.5

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

[✓] Connected device (4 available)
    • Android SDK built for x86 (mobile) • emulator-5554 • android-x86    • Android 10 (API 29)
      (emulator)
    • macOS (desktop)                    • macos         • darwin-x64     • Mac OS X 10.15.7 19H2
      darwin-x64
    • Web Server (web)                   • web-server    • web-javascript • Flutter Tools
    • Chrome (web)                       • chrome        • web-javascript • Google Chrome
      86.0.4240.80

• No issues found!

Yeah so this is still observable in chrome and linux versions.

@Hixie this is another case of early-onset jank. You should consider adding this to the list.

Three static items in the list and first opening is lagging. It's not a 3 seconds. It's about one extra second on first opening.

Same issue , any alternative or work around for this .

Looks like it's shader jank; two frames back to back when opening the dropdown each have a bunch of shader compilations happening. (You can see this by running flutter run --profile and then opening the devtools; the frames with shader jank are marked in red.)
I recommend trying shader warm-up for now; since there's no subsequent frames with jank, it looks like we get all of the shaders in those two frames. Long term, https://github.com/flutter/flutter/issues/77412 is intended to be our permanent solution to this, but that'll take some time yet.

+1

I verified the issue on stable and master channels and it seems to render the list almost instantly. Incase anyone still encounters the issue.
https://user-images.githubusercontent.com/31410839/209897617-791e5b03-34e7-4fa0-bd1a-c2689f1e6796.mov

flutter doctor -v (mac)
[✓] Flutter (Channel master, 3.7.0-3.0.pre.33, on macOS 12.6 21G115 darwin-arm64, locale en-IN)
    • Flutter version 3.7.0-3.0.pre.33 on channel master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision<PHONE_NUMBER> (38 minutes ago), 2022-12-05 18:27:21 -0800
    • Engine revision a309d239c4
    • Dart version 2.19.0 (build 2.19.0-463.0.dev)
    • DevTools version 2.20.0
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly
      to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc4)
    • Android SDK at /Users/mahesh/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0-rc4
    • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14A400
    • CocoaPods version 1.11.3

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

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

[✓] IntelliJ IDEA Community Edition (version 2021.2.1)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 61.2.4
    • Dart plugin version 212.5080.8

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

[✓] Connected device (3 available)
    • iPhone 12 Pro (mobile) • 026D5789-9E78-4AD5-B1B2-3F8D4E7F65E4 • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
    • macOS (desktop)        • macos                                • darwin-arm64   • macOS 12.6 21G115 darwin-arm64
    • Chrome (web)           • chrome                               • web-javascript • Google Chrome 108.0.5359.94

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

[✓] Flutter (Channel stable, 3.3.9, on macOS 12.6 21G115 darwin-arm, locale en-IN)
    • Flutter version 3.3.9 on channel stable at /Users/mahesh/Development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b8f7f1f986 (24 hours ago), 2022-11-23 06:43:51 +0900
    • Engine revision 8f2221fbef
    • Dart version 2.18.5
    • DevTools version 2.15.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc4)
    • Android SDK at /Users/mahesh/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0-rc4
    • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14A400
    • CocoaPods version 1.11.3

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

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

[✓] IntelliJ IDEA Community Edition (version 2021.2.1)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 61.2.4
    • Dart plugin version 212.5080.8

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

[✓] Connected device (3 available)
    • iPhone 12 Pro (mobile) • 026D5789-9E78-4AD5-B1B2-3F8D4E7F65E4 • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
    • macOS (desktop)        • macos                                • darwin-arm64   • macOS 12.6 21G115 darwin-arm
    • Chrome (web)           • chrome                               • web-javascript • Google Chrome 107.0.5304.110

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

Closing this issue for now. In case anyone is still encountering the issue, Please feel free to write in the comments and we will reopen it.

Are you sure this is fixed? I am still having the issue with 4000 items. But soon I will test again and inform you.

@maheshmnj I experienced the problem with responsiveness on Android and an Android emulator. In your video it looks like Web.
Also, I'd like to remind you that this problem occurred the first time the list was expanded. Subsequent expansions worked correctly.
@mgazisalik Please let us know.

I do see a little lag though when opening DropDown items for the first time, verified with 6000 items in the list.
Reopening!
https://user-images.githubusercontent.com/31410839/210285108-3404d0ed-7438-4656-8d2b-a58c3f7b7f17.mov

code sample
import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

/// This is the main application widget.
class MyApp extends StatelessWidget {
  static const String _title = 'Flutter Code Sample';

  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    final list = List.generate(1000, (index) => 'Item $index').toList();
    return MaterialApp(
      title: _title,
      home: Scaffold(
        appBar: AppBar(title: const Text(_title)),
        body: Center(
          child: DropdownButton<String>(
            value: 'Item 1',
            onChanged: (String? newValue) {},
            items: List.generate(6000, (index) => 'Item $index')
                .toList()
                .map<DropdownMenuItem<String>>((String value) {
              return DropdownMenuItem<String>(
                value: value,
                child: Text(value),
              );
            }).toList(),
          ), //MyStatefulWidget(),
        ),
      ),
    );
  }
}

flutter doctor -v (mac)
[✓] Flutter (Channel master, 3.7.0-13.0.pre.131, on macOS 13.1 22C65 darwin-arm64, locale en-IN)
    • Flutter version 3.7.0-13.0.pre.131 on channel master at /Users/mahesh/Development/flutter_master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 0196e6050b (2 days ago), 2022-12-31 11:10:23 -0500
    • Engine revision 932591ec04
    • Dart version 3.0.0 (build 3.0.0-76.0.dev)
    • DevTools version 2.20.0
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks
      and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc4)
    • Android SDK at /Users/mahesh/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0-rc4
    • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14A400
    • CocoaPods version 1.11.3

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

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

[✓] IntelliJ IDEA Community Edition (version 2021.2.1)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 61.2.4
    • Dart plugin version 212.5080.8

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

[✓] Connected device (3 available)
    • iPhone 12 Pro (mobile) • 026D5789-9E78-4AD5-B1B2-3F8D4E7F65E4 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
    • macOS (desktop)        • macos                                • darwin-arm64   • macOS 13.1 22C65 darwin-arm64
    • Chrome (web)           • chrome                               • web-javascript • Google Chrome 108.0.5359.124

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

[✓] Flutter (Channel stable, 3.3.9, on macOS 12.6 21G115 darwin-arm, locale en-IN)
    • Flutter version 3.3.9 on channel stable at /Users/mahesh/Development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b8f7f1f986 (24 hours ago), 2022-11-23 06:43:51 +0900
    • Engine revision 8f2221fbef
    • Dart version 2.18.5
    • DevTools version 2.15.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc4)
    • Android SDK at /Users/mahesh/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0-rc4
    • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14A400
    • CocoaPods version 1.11.3

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

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

[✓] IntelliJ IDEA Community Edition (version 2021.2.1)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 61.2.4
    • Dart plugin version 212.5080.8

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

[✓] Connected device (3 available)
    • iPhone 12 Pro (mobile) • 026D5789-9E78-4AD5-B1B2-3F8D4E7F65E4 • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
    • macOS (desktop)        • macos                                • darwin-arm64   • macOS 12.6 21G115 darwin-arm
    • Chrome (web)           • chrome                               • web-javascript • Google Chrome 107.0.5304.110

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

I do see a little lag though when opening DropDown items for the first time, verified with 6000 items in the list. Reopening!
Screen.Recording.2023-01-02.at.6.36.59.PM.mov
code sample
flutter doctor -v (mac)

Well, now I understand how you look at the issue. You are using just one screen and when you open the app, the dropdown is already rendered. How about creating two screens A and B and putting the dropdown widget on the B screen? In this case, if you are using page transition animation, when you try to go from A to B, you will see there will be a lag in the animation.

Well, now I understand how you look at the issue. You are using just one screen and when you open the app, the dropdown is already rendered. How about creating two screens A and B and putting the dropdown widget on the B screen? In this case, if you are using page transition animation, when you try to go from A to B, you will see there will be a lag in the animation.

Yes @mgazisalik,  I do see a significant lag in this case
https://user-images.githubusercontent.com/31410839/210445398-a7f6f835-d0e8-4102-9516-50bbafb0dd94.mov

code sample
import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

/// This is the main application widget.
class MyApp extends StatelessWidget {
  static const String _title = 'Flutter Code Sample';

  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(title: _title, home: HomePage());
  }
}

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

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Center(
            child: ElevatedButton(
                onPressed: () {
                  Navigator.of(context).push(
                      MaterialPageRoute(builder: (context) => const NewPage()));
                },
                child: const Text('tap me'))));
  }
}

class NewPage extends StatefulWidget {
  const NewPage({Key? key}) : super(key: key);

  @override
  State<NewPage> createState() => _NewPageState();
}

class _NewPageState extends State<NewPage> {
  @override
  Widget build(BuildContext context) {
    final list = List.generate(6000, (index) => 'Item $index').toList();
    return Scaffold(
      appBar: AppBar(title: const Text('title')),
      body: Center(
        child: DropdownButton<String>(
          value: 'Item 1',
          onChanged: (String? newValue) {},
          items: List.generate(6000, (index) => 'Item $index')
              .toList()
              .map<DropdownMenuItem<String>>((String value) {
            return DropdownMenuItem<String>(
              value: value,
              child: Text(value),
            );
          }).toList(),
        ), //MyStatefulWidget(),
      ),
    );
  }
}

I can confirm that this issue still persists on Flutter 3.13 as well.

The issue still persists
Flutter 3.16.7 • channel stable • https://github.com/flutter/flutter.git
Framework • revision ef1af02aea (3 months ago) • 2024-01-11 15:19:26 -0600
Engine • revision 4a585b7929
Tools • Dart 3.2.4 • DevTools 2.28.5


did:peer:3 optional implementation, DIDDoc -> DIDDocument migration.

Backwards compatible with older agents and existing unqualified dids.
Added flows that accept and send did:peer:2 within DIDExchange protocol, however sends by default.
Custom DIDDoc class from acapy exists, however upon deserialization will converted into a pydid DIDDocument instance. the existing Custom DIDDoc class is not compliant with the CONTEXT attribute it provides.
Remaining work:

[ ] Clean up debugging and WIP shrapnel.
[ ] promote pydid and peer-did-python alpha changes to actual releases.
[x] Ensure it will work with upgrading acapy when the agent already has an existing connection
[x] Ability to promote/convert existing connections' did documents to did:peer:3 (see https://github.com/hyperledger/aries-cloudagent-python/issues/2345)
[ ] Tests

Is there a start up flag that controls what kind of DID (unqualified, did:peer:2/3) is used when preparing an OOB invitation or sending an unsolicited (implict invitation) DID Exchange “Request” message to another agent?  I think there should be, and we’ll need to document that in the release notes, and perhaps elsewhere in the documentation.

From discussions in the last couple of days on this, the scope of this work will be:

For DID Exchange, enable receiving an unqualified DID or did:peer:2 in the "request" message.
When receiving a did:peer:2 in the "request" message, send a did:peer:2 in the "response" message.
Add a flag (suggest --use-did-peer-23 such that when it is true (default: false), send a did:peer:2 in the "request" message.
When receiving a did:peer:2:

Add an ability to create the did:peer:3 identifier for the DID from the did:peer:2 value.
Resolve the did:peer:2 to its DIDDoc.

In doing that, extend the resolution to include an "AlsoKnownAs" field that is the "did:peer:3" value.

Convert the did:peer:2 DIDDoc to be a "did:peer:3" DIDDoc

In doing that -- swap the places where the DID identifiers are used -- did:peer:3 is the primary, did:peer:2 is the AlsoKnownAs.

Store the DIDDoc
In the connections object, set the "their_did" and "my_did" (as needed) to the "did:peer:3" identifier.

Extend the general "store DIDDoc" capability to detect and use the "AlsoKnownAs" identifier.

Presumably that means enabling finding a DIDDoc by either name.

Note what is not being done here. For now, we won't touch the "RFC 0160 Connections" protocol, and we won't do a conversion of existing unqualified DIDs to be did:peer:3 DIDs.  For now...  :-)
It seems to me that some of this might best be done in the PyDID and DIDPeer libraries. I leave it to you to decide where to put the functionality.  Perhaps in both -- a PR to the appropriate libraries, implemented in ACA-Py with a note to update when the PRs are accepted in the libraries.
In all of this, try to align with the use of a generalized DID Resolver functionality.
@Jsyro @dbluhm -- sound good?

I'd like to make a proposal that I hope will help to make this change more digestible and reviewable. I think I'd like to see this work split into at least three separate chunks:

Add Peer DID Resolution
Add optionally sending Peer DIDs
Eliminate DIDDoc class

As it stands, these changes mix these three things together. I think they are actually orthogonal changes (albeit all related in the sense that they build toward our desired end state).
Splitting it down this way will reduce the volume of code that needs to be considered while reviewing each PR. I think that is particularly important for this change given how fundamental a change it is and the fact that some of those chunks of changes will span many modules that are quite sensitive to changes. As it stands, I'm having a hard time detecting what changes are related to which of these chunks. Some of the changes that have been made I think are actually not strictly necessary. That's fine -- all part of the process -- it's just hard to tell what's what in it's current state.

I'd like to make a proposal that I hope will help to make this change more digestible and reviewable. I think I'd like to see this work split into at least three separate chunks:

Add Peer DID Resolution
Add optionally sending Peer DIDs
Eliminate DIDDoc class

As it stands, these changes mix these three things together. I think they are actually orthogonal changes (albeit all related in the sense that they build toward our desired end state).
Splitting it down this way will reduce the volume of code that needs to be considered while reviewing each PR. I think that is particularly important for this change given how fundamental a change it is and the fact that some of those chunks of changes will span many modules that are quite sensitive to changes. As it stands, I'm having a hard time detecting what changes are related to which of these chunks. Some of the changes that have been made I think are actually not strictly necessary. That's fine -- all part of the process -- it's just hard to tell what's what in it's current state.

I'm not opposed to this decomposition of the changes I'm exploring here and agree this PR is larger than ideal. However I would propose decommissioning the old DIDDoc class as the first step. Then peer-did-resolution, then the handling and integrations. Thoughts?

However I would propose decommissioning the old DIDDoc class as the first step. Then peer-did-resolution, then the handling and integrations.

I think that's fair -- I suggested the order I did because I think the DID resolution is the smallest, adding the integration is more complicated, and then decommissioning DIDDoc feels like we could take it or leave it, to be honest. I agree it needs to be done eventually but I don't think it necessarily has to be tied to the implementation of DID Peer. I can be convinced otherwise on that though :slightly_smiling_face:

won't merge this, work to be decomposed into smaller PR's. https://github.com/hyperledger/aries-cloudagent-python/pull/2472
is the first component.
Expect at least one follow up that modifies the managers to utilize the resolution capabilities

Won't merge this, work to be decomposed into smaller PR's. https://github.com/hyperledger/aries-cloudagent-python/pull/2472
is the first component.
Expect at least one follow up that modifies the managers to utilize the resolution capabilities


General Ledger

Add Basic Double entry Accounting.
Details
Models
Following models are required for basic GL entries:

[ ] General ledger
The Financial Data

Date
Account
Reference
Description
Debit
Credit
Reconciled

[ ] Chart Of Accounts
Available Accounts

Name
Account Number
Parent
Category (Asset/liability/equity/income/expense)
Sub-Category (Bank/Cash etc)
Type (debit/credit)

[ ] Cost Centers
Cost Center Codes

Requirements

[ ] ALL entries must ensure debit + credit = 0

marked this issue as related to #88

marked this issue as blocking #96


Support Bouncycastle 1.5x

There are an increasing number of libraries that depend on Bouncycastle 1.5x which, unfortunately, breaks backwards compatibility. Crashub recently made a change to support both 1.47 and 1.5x. It'd be useful if spring-security-jwt could do the same as it would reduce the chances of classpath conflicts.

Thanks for the heads up @vkennke. We're actually on 1.60 now via 5d806e1 so this issue has been invalidated as a result.