Failing integrate AWSPCA - CSR must mark the SAN extension critical when it has an empty subject

CSR must mark the SAN extension critical when it has an empty subject
cert-manager and awspca issuer work without any issue, I can create certs via kind: certificate
I've installed istio csr and configure it like this:
  certmanager:
    # -- Namespace to create CertificateRequests for both istio-csr's serving
    # certificate and incoming gRPC CSRs.
    namespace: istio-system
    # -- Don't delete created CertificateRequests once they have been signed.
    preserveCertificateRequests: false
    issuer:
      # -- Issuer name set on created CertificateRequests for both istio-csr's
      # serving certificate and incoming gRPC CSRs.
      name: istio-ca
      # -- Issuer kind set on created CertificateRequests for both istio-csr's
      # serving certificate and incoming gRPC CSRs.
      kind: AWSPCAClusterIssuer
      # -- Issuer group name set on created CertificateRequests for both
      # istio-csr's serving certificate and incoming gRPC CSRs.
      group: awspca.cert-manager.io
  tls:
    # -- The Istio cluster's trust domain.
    trustDomain: "cluster.local"
    # -- An optional file location to a PEM encoded root CA that the root CA
    # ConfigMap in all namespaces will be populated with. If empty, the CA
    # returned from cert-manager for the serving certificate will be used.
    rootCAFile: # /var/certs/ca.pem
    # -- The DNS names to request for the server's serving certificate which is
    # presented to istio-agents. istio-agents must route to istio-csr using one
    # of these DNS names.
    certificateDNSNames:
    - cert-manager-istio-csr.cert-manager.svc
    - istiod.istio-system.svc
    # -- Requested duration of gRPC serving certificate. Will be automatically
    # renewed.
    # Based on NIST 800-204A recommendations (SM-DR13).
    # https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-204A.pdf
    certificateDuration: 2160h
    # -- Requested duration of istio's Certificate. Will be automatically
    # renewed.
    # Based on NIST 800-204A recommendations (SM-DR13).
    # https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-204A.pdf
    # Warning: cert-manager does not allow a duration on Certificates less than
    # 1 hour.
    istiodCertificateDuration: 2160h

when the istio-csr starts it create csr via the istio-csr and get approved and ready, but then it's create one more csr for istiod certificate and fail with this:
{"level":"error","ts":1629914189.9197729,"logger":"controllers.CertificateRequest","msg":"failed to request certificate from PCA","certificaterequest":"istio-system/istiod-xdqrc","error":"operation error ACM PCA: IssueCertificate, https response error StatusCode: 400, RequestID: 79b97ccc-8bb2-410f-8b98-072bb2174d5f, MalformedCSRException: CSR must mark the SAN extension critical when it has an empty subject.","stacktrace":"github.com/go-logr/zapr.(*zapLogger).Error\n\t/go/pkg/mod/github.com/go-logr/zapr@v0.2.0/zapr.go:132\ngithub.com/cert-manager/aws-privateca-issuer/pkg/controllers.(*CertificateRequestR
istio-system        istiod-xdqrc                                True                False   istio-ca           system:serviceaccount:cert-manager:cert-manager             0s
istio-system        istio-csr-8fq8r                             True                True    istio-ca           system:serviceaccount:cert-manager:cert-manager-istio-csr   4s
istio-system        istio-csr-8fq8r                             True                True    istio-ca           system:serviceaccount:cert-manager:cert-manager-istio-csr   4s

❯ k get cert                                                                                ─╯
NAME       READY   SECRET       AGE
istio-ca   True    istiod-ca    36m
istiod     False   istiod-tls   26m

istio-ca was created via a certificate.yaml
Any idea what went wrong? maybe I'm missing something with the basic integration.
Help Please 🤞🏽 🙏🏽

@JoshVanL any idea? am I missing something?


Unable to edit colors manually.

I am unable to edit the color text field anymore. I was able to do it a few hours back but not any more.

Maybe related to https://github.com/excalidraw/excalidraw/commit/71e7f130bc6ff2fa06ad9bf9702d4cbe353a2e7f?


Apps don't have access to facts/conversations (and they should have)

Describe the bug
A clear and concise description of what the bug is.
when im chatting with omi, it's smart. when im chatting with an app, it's dumb (doesn't have access to facts)

Current behavior
apps don't have access to conversations/facts
Expected behavior
apps should have same access as default omi's chat persona

seems to be working now but not sure

yes it works :)


Fixed issue with dedent utility function when building with python win10

Fix for build issue in dedent utility function when building with python
https://github.com/caffe2/caffe2/issues/2151
It isn't entirely clear to me why we would need to pipe that through std in via the command line vs using the first arg.  Please review and let me know if this can cause any side effects.  Thank you for the review.

Thanks for doing this. Can you rebase off of master to remove all the changes in caffe2/operators/conv_op_cudnn.cc  , which have been checked in in #2222 ?
We don't have CI set up yet to test this, but I'll validate that this works tomorrow morning when I'm back at my Windows desktop.

I think you'll have to add https://github.com/caffe2/caffe2.git as an upstream remote of your fork and then fetch that and rebase off of it's master in order to update this diff's base commit. I think it
git remote add upstream https://github.com/caffe2/caffe2.git
git fetch upstream
git rebase upstream/master

Sorry about the mess, first PR.  The diff should only be my change at this point.  Going forward I will be sure  to isolate the PR changes into a separate branch away from my other changes.  Thanks for helping me learn this process.

@caffe2bot test this please

@bengaspar as the original comment indicates, the use of stdin/stdout was to prevent needing to escape special characters if you were to place the text directly in the command. However, I think your solution also addresses those issues. So, it shouldn't cause any side effects. I simply didn't consider using sys.argv. I think your solution is cleaner better than my original code. Thanks for submitting the patch.
I still would like to know what the actual issue was. I was never able to reproduce it on my windows box. Under what circumstances does windows have trouble piping stdout?

@caffe2bot retest this please

Thank you for your contribution! PyTorch and Caffe2 are now officially merged with the PyTorch 1.0 prerelease. Please submit on https://github.com/pytorch/pytorch if this is still an issue over there.


Feature 48607 policies

This feature branch is the merge of all the following branches following completion of their PR reviews:

48607-policies-1-replicator-id (PR #196): Adding an ID to replicators so we can easily identify which replicators are completed or have errored in subsequent callbacks.
48607-policies-2-java (PR #197): Adding replication policies for Java.
48607-policies-3-android-service (PR #198):Adding basic replication policies for Android.
48607-policies-4-android-periodic (PR #199): Adding replication at regular intervals for Android.
48607-policies-5-android-wifi (PR #200): Adding replication only when on Wifi.
48607-policies-6-docs (PR #201): Documentation updates.

What?
Add mechanism to enable users to more easily specify the circumstances under which they want replication to occur. This allows relatively simple definition of policies such as:
Do a pull replication every 2 hours;
Do a full sync every hour, but only when we have a Wifi connection;
Sync whenever we connect to Wifi.
Why?
Prior to this PR, it was very difficult to implement such policies, particularly on Android where many aspects of the way the Android operating system works would need to be taken into account in order for such policies to work reliably.
How?
On Android we want the replication policy management to be reliable, battery efficient and not hog system resources unnecessarily. To achieve this we typically might trigger our replications from a BroadcastReceiver. This allows our code to be completely inactive on the device and be started when events of interest are broadcast. We can also use a BroadcastReceiver to trigger periodic replications via the AlarmManager mechanism in an efficient way. However, a BroadcastReceiver is intended to only run for a short time in response to receiving a broadcast, so the replication is carried on inside a Service that may be started from a BroadcastReceiver.
Running replications in a Service allows them to run independently of the lifecycle of other application components and be started easily via other application components. We must also handle the fact that when we wish replication to occur, the device may be asleep, so we need to hold a WakeLock for the duration of the replication to prevent the device going back to sleep once the onReceive() method of the BroadcastReceiver triggering the replications has completed. Also, if our replications are over Wifi, we need to hold a Wifi lock to keep the Wifi radio awake.
On Java, replication policies are much simpler than on Android. The new ReplicationPolicyManager class takes care of ensuring that if replications are in progress they are not restarted.
See the Replication Policies User Guide for further information on how replication policies are implemented on Android and on Java.
reviewer @mikerhodes
reviewer @ricellis

+1

+1


[DOC] finefoods-mui example installation

Documentation issue
I copied and run the command to install finefoods-mui example. It threw an error which is error: unknown option '--example'.
The command I run:
npm create refine-app@latest -- --example finefoods-mui
Describe the thing to improve
The command below solves the problem
npm create refine-app@latest --example finefoods-mui
Describe the solution (optional)
No response

Hey @rasitcolakel
I think without -- the parameter (--example) will not pass. What is your node and npm version?

Thanks @yildirayunlu, It was about the node version.


Add support for intent expiration

See https://github.com/ripio/marmo-contracts/pull/2

https://github.com/ripio/marmoj-sdk/commit/aa996ab66b21f8630dffe589a113c140d52cb65f


[Package Issue]: tailscale.tailscale fails to upgrade due to MSI package missing error

Please confirm these before moving forward

[X] I have searched for my issue and not found a work-in-progress/duplicate/resolved issue.
[X] I have not been informed if the issue is resolved in a preview version of the winget client.

Category of the issue
Other
Brief description of your issue
Upgrading Tailscape 1.48.1 to 1.48.2 with winget upgrade -h --all fails with the error:
Installer failed with exit code: 2

Steps to reproduce
Run on PowerShell as Administrator:
winget upgrade -h --all

Actual behavior
The upgrade fails with the following error:
This installer cannot be used to update an existing MSI-based Tailscale installation. Please use the Tailscale MSI package instead.

shown on the following dialog:

Expected behavior
The upgrade succeeds without errors.
Environment
Windows Package Manager v1.5.2201
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.22621.2215
System Architecture: X64
Package: Microsoft.DesktopAppInstaller v1.20.2201.0

Screenshots and Logs
WinGet-2023-09-14-11-08-31.556.log

Thanks for reporting this. Our validation currently only verifies fresh install, not upgrades, repairs, or uninstalls.

I experienced the same. I noticed that https://github.com/microsoft/winget-pkgs/blob/c20ab7b8581cc121d69eb02ce5e02f752bb9995c/manifests/t/tailscale/tailscale/1.48.2/tailscale.tailscale.installer.yaml points to this installerUrl: https://pkgs.tailscale.com/stable/tailscale-ipn-setup-1.48.2.exe, and I think the installerUrl should be this: https://pkgs.tailscale.com/stable/tailscale-setup-1.48.2.exe
I've tried creating a new manifest with wingetcreate to submit a PR, but then I get a error message: The number of new installer packages must match the number of existing installer packages

Winget always used the tailscale-ipn-setup.exe version, but I'm not sure where they got it from as the official download site only advertises tailscale-setup.exe and msi.
https://pkgs.tailscale.com/stable/#windows
Not sure what's the difference between them, maybe the ipn one is a legacy installer while the public version is a wrapper for the msi.
They install the same binaries, although the ipn is using Program Files (x86), while the public selects Program Files.
But the public version is able to overwrite the ipn version. And so is the architecture specific msi versions.
It might worth replacing the existing manifest with the architecture specific msi installers to reduce download size, and also to support arm64 as requested in #119103

I am still having this problem when upgrading from 1.48.2 to 1.50.0:
Found Tailscale [tailscale.tailscale] Version 1.50.0
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://pkgs.tailscale.com/stable/tailscale-ipn-setup-1.50.0.exe
  ██████████████████████████████  40.7 MB / 40.7 MB
Successfully verified installer hash
Starting package install...
Installer failed with exit code: 1620
Installer log is available at: C:\Users\Marco\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir\WinGet-tailscale.tailscale.1.50.0-2023-09-28-10-00-17.797.log

The installer log mentioned in the output is actually empty. From the main log file WinGet-2023-09-28-09-58-13.418.log I see the following:
2023-09-28 09:58:23.522 [REPO] Downloading manifest
2023-09-28 09:58:23.522 [CORE] WinINet downloading from url: https://cdn.winget.microsoft.com/cache/manifests/t/tailscale/tailscale/1.50.0/e17f
2023-09-28 09:58:23.696 [CORE] Download hash: 96def4d62a5eb9a940ea3456d119000b282cd58bd4dbd33731bf8f364b4ca360
2023-09-28 09:58:23.696 [CORE] Download completed.
2023-09-28 09:58:23.697 [CLI ] Starting installer selection.
2023-09-28 09:58:23.697 [CLI ] Installer [X86,nullsoft,Machine,en-US] not applicable: Installed package type 'msi' is not compatible with installer type nullsoft
2023-09-28 09:58:23.697 [CLI ] Completed installer selection.
2023-09-28 09:58:23.697 [CLI ] Manifest fields: Name [Tailscale], Version [1.50.0]
2023-09-28 09:58:23.698 [CLI ] Terminating context: 0x8a15002b at D:\a\_work\1\s\external\pkg\src\AppInstallerCLICore\Workflows\UpdateFlow.cpp:b8
2023-09-28 09:58:23.701 [CLI ] Terminating context: 0x8a15002b at D:\a\_work\1\s\external\pkg\src\AppInstallerCLICore\Workflows\UpdateFlow.cpp:b8
2023-09-28 09:58:23.701 [CLI ] Terminating context: 0x8a15002b at D:\a\_work\1\s\external\pkg\src\AppInstallerCLICore\Workflows\UpdateFlow.cpp:b8
2023-09-28 09:58:23.702 [CLI ] Terminating context: 0x8a15002b at D:\a\_work\1\s\external\pkg\src\AppInstallerCLICore\Workflows\UpdateFlow.cpp:b8
2023-09-28 09:58:23.702 [CLI ] Terminating context: 0x8a15002b at D:\a\_work\1\s\external\pkg\src\AppInstallerCLICore\Workflows\UpdateFlow.cpp:b8
2023-09-28 09:58:23.703 [CLI ] Terminating context: 0x8a15002b at D:\a\_work\1\s\external\pkg\src\AppInstallerCLICore\Workflows\UpdateFlow.cpp:b8
2023-09-28 09:58:23.703 [CLI ] Terminating context: 0x8a15002b at D:\a\_work\1\s\external\pkg\src\AppInstallerCLICore\Workflows\UpdateFlow.cpp:b8
2023-09-28 09:58:23.703 [CLI ] Terminating context: 0x8a15002b at D:\a\_work\1\s\external\pkg\src\AppInstallerCLICore\Workflows\UpdateFlow.cpp:b8
2023-09-28 09:58:23.704 [CLI ] Terminating context: 0x8a15002b at D:\a\_work\1\s\external\pkg\src\AppInstallerCLICore\Workflows\UpdateFlow.cpp:b8

1.50.0 and 1.50.1 has been updated to use tailscale-setup-full-1.50.1.exe, but only defined for Architecture: x86, so if tailscale-setup-1.50.0-arm64.msi is installed first then winget update will say A newer version was found, but the install technology is different from the current version installed. Please uninstall the package and install the newer version..
Strangely enough uninstalling, installing 1.50.0 via winget and then updating with winget works, I assumed setup-full installs the x64 version, or I'm not sure what's going on here.


Add 'version' sort and 'registry' filter to both images tables

https://issues.redhat.com/browse/RHINENG-8259

/retest


"rendersize" changed to "tilerendersize" in TmxReaderBase.Tileset.cs

To match XML property. Seems to be correct elsewhere. I'm not a big PR'er, so unsure if I've done it correctly. Thanks for the awesome library!

Added a CustomEnumStorageType to the FromEnum method. Defaulting to .Int here tripped me up pretty good. Parametrizing this here will make people's lives easier. I think defaulting to string is a good idea also since that is the default in the Tiled Custom Types Editor for enums, but I will leave this to your discretion.


AudioDevice

Cannot find type 'AudioDevice' in scope
I am using this and last night i reclone it and getting above error .

That portion of SFBAudioEngine was refactored into CAAudioHardware.

@CHETANSINHZALA is this issue resolved?

yes
Thank you.
On Sat, Jan 20, 2024 at 7:19 PM Stephen Booth @.***>
wrote:

@CHETANSINHZALA https://github.com/CHETANSINHZALA is this issue
resolved?
—
Reply to this email directly, view it on GitHub
https://github.com/sbooth/SFBAudioEngine/issues/282#issuecomment-1902098342,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AE2RMZGI2DO553USL7DW6ODYPPDOXAVCNFSM6AAAAABBFZKX26VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMBSGA4TQMZUGI
.
You are receiving this because you were mentioned.Message ID:
@.***>


[FIX]Typo Ahmadabad to proper name Ahmedabad

This is generated from the sheet. No point in manually updating this file.
https://github.com/covid19india/api/issues/51#issuecomment-607166974


mv-apply example added

Added a new example for using 2 columns in mv-apply.
This example will help user to do operations that involves two arrays.

@microsoft-github-policy-service agree [company="{Microsoft}"]

#sign-off


flutter-dashboard bot should remove "work in progress" label if PR is marked as ready for review

When a draft PR is opened, the "flutter-dashboard" bot labels it with "work in progress; do not review". However, when the author marks the PR as ready for review (i.e. it is no longer a draft) the label is not automatically removed.

"This problem no longer persists. Shall we close this issue?


"--" not present in c.Args() between v1.22.5 & v1.22.6

My urfave/cli version is
v1.22.5
Checklist

[x] Are you running the latest v1 release? The list of releases is here.
[x] Did you check the manual for your release? The v1 manual is here.
[x] Did you perform a search about this problem? Here's the Github guide about searching.

Dependency Management

My project is using go modules.

Describe the bug
./cmd arg1 -- foo & ./cmd arg1 -- foo do different things between the two versions.
in .5 c.Args() is [arg1 -- foo] and in .6 it is [arg1 foo].
To reproduce
Switch between versions, pass -- to the command, check c.Args().
Observed behavior
-- is not parsed and it was before.
Expected behavior
-- is parsed correctly and handed to c.Args().
Additional context
Another report: https://git.coopcloud.tech/coop-cloud/organising/issues/336
Run go version and paste its output here
go version go1.18.3 linux/amd64

@decentral1se I believe this was intentional. @meatballhat should be able to provide more info

Thanks @dearchap! It would then be definitely good to hear from @meatballhat about this. Currently pinning to v1.22.5 as my code attempts to detect if the -- was present, so this broke it :sweat_smile:

Hey @decentral1se sorry for my delay. @dearchap is right: this behavior change was intentional and considered a bug fix.
Are you able to upgrade to the latest in the 1.22.x series (currently 1.22.9) knowing that this behavior is correct/expected and won't revert to including the "--" delimiter?

Yebbo, will figure something out, thanks for the updates!


Denial feature branch

Change description
Denial upload, matching denials, displaying matching denials on the case details page and option to delete the selected ones.

Oh nice 👍
On Fri, 15 Jan 2021, 13:50 Richard Tier<EMAIL_ADDRESS>wrote:

@richtier commented on this pull request.
In caseworker/external_data/views.py
https://github.com/uktrade/lite-frontend/pull/110#discussion_r558318453:

+from django.conf import settings
+from django.contrib import messages
+from django.contrib.messages.views import SuccessMessageMixin
+from django.urls import reverse
+from django.shortcuts import redirect
+from django.views.generic import TemplateView
+from django.views.generic.edit import FormView, CreateView
+
+from core.auth.views import LoginRequiredMixin
+
+from caseworker.external_data import forms, services
+
+
+with open(settings.BASE_DIR + "/caseworker/external_data/example.csv", "rb") as f:

base_64_csv = base64.b64encode(f.read()).decode()

the view exposes it to the template, so the template can do this:
Download an example .csv file
this is instead of serving the example csv via a /media/ or /static/ url.
motivation was less moving parts
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHub
https://github.com/uktrade/lite-frontend/pull/110#discussion_r558318453,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAEKC7D2GXVII6PHHIMLLGTS2BB25ANCNFSM4VZGHVSA
.

Oh nice 👍
On Fri, 15 Jan 2021, 13:50 Richard Tier<EMAIL_ADDRESS>wrote:

@richtier commented on this pull request.
In caseworker/external_data/views.py
https://github.com/uktrade/lite-frontend/pull/110#discussion_r558318453:

+from django.conf import settings
+from django.contrib import messages
+from django.contrib.messages.views import SuccessMessageMixin
+from django.urls import reverse
+from django.shortcuts import redirect
+from django.views.generic import TemplateView
+from django.views.generic.edit import FormView, CreateView
+
+from core.auth.views import LoginRequiredMixin
+
+from caseworker.external_data import forms, services
+
+
+with open(settings.BASE_DIR + "/caseworker/external_data/example.csv", "rb") as f:

base_64_csv = base64.b64encode(f.read()).decode()

the view exposes it to the template, so the template can do this:
Download an example .csv file
this is instead of serving the example csv via a /media/ or /static/ url.
motivation was less moving parts
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHub
https://github.com/uktrade/lite-frontend/pull/110#discussion_r558318453,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAEKC7D2GXVII6PHHIMLLGTS2BB25ANCNFSM4VZGHVSA
.


asp.net problem

Type of issue
Typo
Description
[Enter feedback here]
Page URL
https://learn.microsoft.com/en-us/dotnet/csharp/misc/cs0102?f1url=%3FappId%3Droslyn%26k%3Dk(CS0102)
Content source URL
https://github.com/dotnet/docs/blob/main/docs/csharp/misc/cs0102.md
Document Version Independent Id
594c625e-c6da-38d1-ba16-cd4d9e3e9dcd
Article author
BillWagner

Hi @Shikha4554
Can you add some details regarding what you we're looking for in this article?
Thanks


Misc sprite changes

About the PR

Grey mice no longer turn brown on death
Fax machine resprite
Livestock crate resprite
T-ray scanner resprite
Remote signaller resprite
Cell recharger resprite

Media

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog

:cl: Potato1234_x

tweak: Changed sprites of the livestock crate, t-ray, fax machine, remote signaller and cell rechargers.
fix: Fixed grey mice changing colors on death.

please, take fax sprites from TGstation, they a lot better

Like all of them except the fax and tray sprites, fax looks really weird from this perspective and tray doesn’t fit with the visual style of the other tools anymore

done

the cell recharger tower might look better if its a bit shorter so it fits the lower profile of the other sprite

The tg fax machine is super blueshifted, more than I'd consider comfortable for metal.

fax machine looks angry

The remote signaler resprite is a little confusing to me. Comparing the two sprites side-by-side, it seems like it'd be a lot better to just give the old sprite a darker edge on the bottom to convey depth.
The new one is standing upright (which doesn't make any sense for a small object like it,) and the strong hueshift applied to it makes it feel a lot shinier than it should probably be IMO.

Also the /tg/ fax machine is basically as blue as an eris sprite, it's probably going to stick out like a sore thumb ingame. I think the one you had before was a lot better in that regard, if you want to update the fax machine you should probably use it instead (or at least repalette the /tg/ one.)

i agree, fax has been reverted


sync openthread

We are using openthread based on the commit (https://github.com/junyong-sim/openthread/commit/bdb938297630578c1393d297b0ee0495a4a3ecdd)
So, we have to sync latest code to apply known patches and some bug fixes.

https://github.com/Samsung/ioter/pull/39


Reset error message on frontend

The game shows the error message after a fail. But it does not reset after working event

This is implemented


Keyed widget values are lost when switching the pages

I have a two page application where in one of them I have a few widgets like text box which is connected to a session state variable via the key. It works fine until I am in this page but if I open the other page and comeback again then the widget values and their session state values are lost. I tried this solution https://gist.github.com/okld/8ca97ba892a7c20298fd099b196a8b4d
but it fails and shows the error:
Error details: Values for st.button, st.download_button, st.file_uploader, and st.form cannot be set using st.session_state.
Any suggestion?

I have a similar issue too. I do not understand the difference between hydralit and streamlit-multipage https://docs.streamlit.io/library/get-started/multipage-apps/create-a-multipage-appe
Streamlit multipage is much easier to create. However when changing between pages(i.e apps) the apps loose the previous set values/work/graphs etc... This is of no use to create a multipage app if all the apps need to be restarted again.


Trying to get to the bottom of why Qwen1.5-110B-Chat scores so much higher than the command-r models

https://github.com/EQ-bench/EQ-Bench/blob/main_v2_4/instruction-templates/Cohere.yaml
user: "<|USER_TOKEN|>"
bot: "<|CHATBOT_TOKEN|>"
turn_template: "<|START_OF_TURN_TOKEN|><|user|><|user-message|><|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|bot|><|bot-message|>"
context: "<BOS_TOKEN>"
system_message: ""

Is there a chance that the "<BOS_TOKEN>  was getting added twice during the tests:
https://huggingface.co/CohereForAI/c4ai-command-r-plus/discussions/22#66179da37ed574892089967c
Not sure which backend was used to test against, but some will add is automatically and the HF config looks to have it both:
  "add_bos_token": true

and:
"chat_template": [
    {
      "name": "default",
      "template": "{{ bos_token }}{% if messages[0]['role'] == 'system' %}{% set loop_messages = messages[1:] %}{% set system_message = messages[0]['content'] %}{% elif false == true %}{% set loop_messages = messages %}{% set system_message = 'You are Command-R, a brilliant, sophisticated, AI-assistant trained to assist human users by providing thorough responses. You are trained by Cohere.' %}{% else %}{% set loop_messages = messages %}{% set system_message = false %}{% endif %}{% if system_message != false %}{{ '<|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>' + system_message + '<|END_OF_TURN_TOKEN|>' }}{% endif %}{% for message in loop_messages %}{% if (message['role'] == 'user') != (loop.index0 % 2 == 0) %}{{ raise_exception('Conversation roles must alternate user/assistant/user/assistant/...') }}{% endif %}{% set content = message['content'] %}{% if message['role'] == 'user' %}{{ '<|START_OF_TURN_TOKEN|><|USER_TOKEN|>' + content.strip() + '<|END_OF_TURN_TOKEN|>' }}{% elif message['role'] == 'assistant' %}{{ '<|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>'  + content.strip() + '<|END_OF_TURN_TOKEN|>' }}{% endif %}{% endfor %}{% if add_generation_prompt %}{{ '<|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>' }}{% endif %}"
    },
    {
      "name": "tool_use",
      "template": "\n{%- macro json_to_python_type(json_spec) %}\n{%- set basic_type_map = {\n    \"string\": \"str\",\n    \"number\": \"float\",\n    \"integer\": \"int\",\n    \"boolean\": \"bool\"\n} %}\n\n{%- if basic_type_map[json_spec.type] is defined %}\n    {{- basic_type_map[json_spec.type] }}\n{%- elif json_spec.type == \"array\" %}\n    {{- \"List[\" +  json_to_python_type(json_spec.items) + \"]\"}}\n{%- elif json_spec.type == \"object\" %}\n    {{- \"Dict[str, \" + json_to_python_type(json_spec.additionalProperties) + ']'}}\n{%- elif json_spec.type is iterable %}\n    {{- \"Union[\" }}\n    {%- for t in json_spec.type %}\n      {{- json_to_python_type({\"type\": t}) }}\n      {%- if not loop.last %}\n        {{- \",\" }} \n    {%- endif %}\n    {%- endfor %}\n    {{- \"]\" }}\n{%- else %}\n    {{- \"Any\" }}\n{%- endif %}\n{%- endmacro %}\n\n{%- macro old_tool_parser(tools) %}\n{%- for tool in tools %}\n    {%- if loop.index0 != 0 %}\n        {{- '\\n\\n' }}\n    {%- endif %}\n    {{- '```python\\ndef ' + tool.name + '(' }}\n    {%- for param_name, param_fields in tool.parameter_definitions|items %}\n        {%- if loop.index0 != 0 %}\n            {{- ', '}}\n        {%- endif %}\n        {{- param_name + ': ' }}\n        {%- if not param_fields.required %}\n            {{- 'Optional[' + param_fields.type + '] = None'}}\n        {%- else %}\n            {{- param_fields.type }}\n        {%- endif %}\n    {%- endfor %}\n    {{- ') -> List[Dict]:\\n    \"\"\"'}}\n    {{- tool.description }}\n    {%- if tool.parameter_definitions|length != 0 %}\n        {{- '\\n\\n    Args:\\n        '}}\n        {%- for param_name, param_fields in tool.parameter_definitions|items %}\n            {%- if loop.index0 != 0 %}\n                {{- '\\n        ' }}\n            {%- endif %}\n            {{- param_name + ' ('}}\n            {%- if not param_fields.required %}\n                {{- 'Optional[' + param_fields.type + ']'}}\n            {%- else %}\n                {{- param_fields.type }}\n            {%- endif %}\n            {{- '): ' + param_fields.description }}\n        {%- endfor %}\n    {%- endif %}\n    {{- '\\n    \"\"\"\\n    pass\\n```' }}\n{%- endfor %}\n{%- endmacro %}\n\n{%- macro new_tool_parser(tools) %}\n{%- for tool in tools %}\n  {%- if loop.index0 != 0 %}\n    {{- '\\n\\n'}}\n  {%- endif %}\n  {%- if tool.function is defined %}\n    {%- set tool = tool.function %}\n  {%- endif %}\n  {{-'```python\ndef ' + tool.name + '('}}\n  {%- for param_name, param_fields in tool.parameters.properties|items %}\n    {%- if loop.index0 != 0 %}\n      {{- ', '}}\n    {%- endif %}\n    {{-param_name + \": \"}} \n    {%- if not param_name in tool.parameters.required %}\n      {{-'Optional[' + json_to_python_type(param_fields) + '] = None'}}\n    {%- else %}\n      {{- json_to_python_type(param_fields) }}\n    {%- endif %}\n  {%- endfor %}\n  {{- ') -> List[Dict]:\n    \"\"\"'}}\n  {{- tool.description }}\n  {%- if tool.parameters.properties|length != 0 %}\n    {{- '\\n\\n    Args:\\n        '}}\n    {%- for param_name, param_fields in tool.parameters.properties|items %}\n      {%- if loop.index0 != 0 %}\n        {{- '\\n        ' }}\n      {%- endif %}\n      {{- param_name + ' ('}}\n      {%- if not param_name in tool.parameters.required %}\n        {{-'Optional[' + json_to_python_type(param_fields) + ']'}}\n      {%- else %}\n        {{- json_to_python_type(param_fields) }}\n      {%- endif %}\n      {{- '): ' + param_fields.description }}\n    {%- endfor %}\n    {%- endif %}\n    {{- '\\n    \"\"\"\\n    pass\\n```' }}\n{%- endfor %}\n{%- endmacro %}\n\n{{- bos_token }}\n{%- if messages[0]['role'] == 'system' %}\n  {%- set loop_messages = messages[1:] %}\n  {%- set system_message = messages[0]['content'] %}\n{%- else %}\n  {%- set loop_messages = messages %}\n  {%- set system_message = '## Task and Context\\nYou help people answer their questions and other requests interactively. You will be asked a very wide array of requests on all kinds of topics. You will be equipped with a wide range of search engines or similar tools to help you, which you use to research your answer. You should focus on serving the user\\'s needs as best you can, which will be wide-ranging.\\n\\n## Style Guide\\nUnless the user asks for a different style of answer, you should answer in full sentences, using proper grammar and spelling.' %}\n{%- endif %}\n{{- '<|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>' }}\n{{- '# Safety Preamble' }}\n{{- '\nThe instructions in this section override those in the task description and style guide sections. Don\\'t answer questions that are harmful or immoral.' }}\n{{- '\n\n# System Preamble' }}\n{{- '\n## Basic Rules' }}\n{{- '\nYou are a powerful conversational AI trained by Cohere to help people. You are augmented by a number of tools, and your job is to use and consume the output of these tools to best help the user. You will see a conversation history between yourself and a user, ending with an utterance from the user. You will then see a specific instruction instructing you what kind of response to generate. When you answer the user\\'s requests, you cite your sources in your answers, according to those instructions.' }}\n{{- '\n\n# User Preamble' }}\n{{- '\n' + system_message }}\n{{-'\n\n## Available Tools\nHere is a list of tools that you have available to you:\n\n'}}\n{%- set ns = namespace(new_tools=true) %}\n{%- for tool in tools %}\n    {%- if tool.parameter_definitions is defined %}\n        {%- set ns.new_tools = false %}\n    {%- endif %}\n{%- endfor %}\n{%- if ns.new_tools %}\n    {{- new_tool_parser(tools) }}\n{%- else %}\n    {{- old_tool_parser(tools) }}\n{%- endif %}\n{{- '<|END_OF_TURN_TOKEN|>'}}\n{%- for message in loop_messages %}\n  {%- set content = message['content'] %}\n  {%- if message.role == 'user' %}\n    {{- '<|START_OF_TURN_TOKEN|><|USER_TOKEN|>' + content|trim + '<|END_OF_TURN_TOKEN|>' }}\n  {%- elif message.role == 'system' %}\n    {{- '<|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>' + content|trim + '<|END_OF_TURN_TOKEN|>' }}\n  {%- elif message.role == 'assistant' and message.tool_calls is defined %}\n    {{- '<|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>' }}\n    {%- if message.content is defined %}\n        {{- message.content|trim }}\n    {%- endif %}\n    {{- '\\nAction:\\n```json\\n[\\n' }}\n    {%- for tool_call in message.tool_calls %}\n        {%- if tool_call.function is defined %}\n            {%- set tool_call = tool_call.function %}\n        {%- endif %}\n        {{- '{\\n'|indent(4, first=true) }}\n        {{- '\"tool_name\": \"'|indent(8, first=true) + tool_call.name + '\",\\n' }}\n        {{- '\"parameters\": '|indent(8, first=true) }}\n        {%- if tool_call.arguments is defined and tool_call.arguments|length > 0 %}    \n            {{- tool_call.arguments|tojson(indent=4)|indent(8) }}\n            {{- '\\n' }}\n        {%- else %}\n            {{- '{}\\n' }}\n        {%- endif %}\n        {{- '}'|indent(4, first=true) }}\n        {%- if not loop.last %}\n            {{- ',\\n' }}\n        {%- endif %}\n    {%- endfor %}\n    {{- \"\\n]```\\n\" }}\n  {%- elif message.role == 'assistant' %}\n    {{- '<|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>'  + content|trim + '<|END_OF_TURN_TOKEN|>' }}\n  {%- elif message.role == 'tool' %}\n    {{- '<|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|><results>\\n' }}\n    {{- message.content|trim }}\n    {{- '</results><|END_OF_TURN_TOKEN|>' }}\n  {%- endif %}\n{%- endfor %}\n{{-'<|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>Write \\'Action:\\' followed by a json-formatted list of actions that you want to perform in order to produce a good response to the user\\'s last input. You can use any of the supplied tools any number of times, but you should aim to execute the minimum number of necessary actions for the input. You should use the `directly-answer` tool if calling the other tools is unnecessary. The list of actions you want to call should be formatted as a list of json objects, for example:\n```json\n[\n    {\n        \"tool_name\": title of the tool in the specification,\n        \"parameters\": a dict of parameters to input into the tool as they are defined in the specs, or {} if it takes no parameters\n    }\n]```<|END_OF_TURN_TOKEN|>'}}\n{%- if add_generation_prompt %}\n  {{- '<|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>' }}\n{%- endif %}\n"
    },
    {
      "name": "rag",
      "template": "{{ bos_token }}{% if messages[0]['role'] == 'system' %}{% set loop_messages = messages[1:] %}{% set system_message = messages[0]['content'] %}{% else %}{% set loop_messages = messages %}{% set system_message = '## Task and Context\\nYou help people answer their questions and other requests interactively. You will be asked a very wide array of requests on all kinds of topics. You will be equipped with a wide range of search engines or similar tools to help you, which you use to research your answer. You should focus on serving the user\\'s needs as best you can, which will be wide-ranging.\\n\\n## Style Guide\\nUnless the user asks for a different style of answer, you should answer in full sentences, using proper grammar and spelling.' %}{% endif %}{{ '<|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>' }}{{ '# Safety Preamble' }}{{ '\nThe instructions in this section override those in the task description and style guide sections. Don\\'t answer questions that are harmful or immoral.' }}{{ '\n\n# System Preamble' }}{{ '\n## Basic Rules' }}{{ '\nYou are a powerful conversational AI trained by Cohere to help people. You are augmented by a number of tools, and your job is to use and consume the output of these tools to best help the user. You will see a conversation history between yourself and a user, ending with an utterance from the user. You will then see a specific instruction instructing you what kind of response to generate. When you answer the user\\'s requests, you cite your sources in your answers, according to those instructions.' }}{{ '\n\n# User Preamble' }}{{ '\n' + system_message }}{{ '<|END_OF_TURN_TOKEN|>'}}{% for message in loop_messages %}{% set content = message['content'] %}{% if message['role'] == 'user' %}{{ '<|START_OF_TURN_TOKEN|><|USER_TOKEN|>' + content.strip() + '<|END_OF_TURN_TOKEN|>' }}{% elif message['role'] == 'system' %}{{ '<|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>' + content.strip() + '<|END_OF_TURN_TOKEN|>' }}{% elif message['role'] == 'assistant' %}{{ '<|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>'  + content.strip() + '<|END_OF_TURN_TOKEN|>' }}{% endif %}{% endfor %}{{ '<|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>'}}{{ '<results>' }}{% for document in documents %}{{ '\nDocument: ' }}{{ loop.index0 }}\n{% for key, value in document.items() %}{{ key }}: {{value}}\n{% endfor %}{% endfor %}{{ '</results>'}}{{ '<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>' }}{{ 'Carefully perform the following instructions, in order, starting each with a new line.\n' }}{{ 'Firstly, Decide which of the retrieved documents are relevant to the user\\'s last input by writing \\'Relevant Documents:\\' followed by comma-separated list of document numbers. If none are relevant, you should instead write \\'None\\'.\n' }}{{ 'Secondly, Decide which of the retrieved documents contain facts that should be cited in a good answer to the user\\'s last input by writing \\'Cited Documents:\\' followed a comma-separated list of document numbers. If you dont want to cite any of them, you should instead write \\'None\\'.\n' }}{% if citation_mode=='accurate' %}{{ 'Thirdly, Write \\'Answer:\\' followed by a response to the user\\'s last input in high quality natural english. Use the retrieved documents to help you. Do not insert any citations or grounding markup.\n' }}{% endif %}{{ 'Finally, Write \\'Grounded answer:\\' followed by a response to the user\\'s last input in high quality natural english. Use the symbols <co: doc> and </co: doc> to indicate when a fact comes from a document in the search result, e.g <co: 0>my fact</co: 0> for a fact from document 0.' }}{{ '<|END_OF_TURN_TOKEN|>' }}{% if add_generation_prompt %}{{ '<|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>' }}{% endif %}"
    }
  ]

The only reason I ask is I've been running some similar tests and I can't understand how Qwen1.5-110B-Chat scores so highly yet both command-r models score much lower?
I've tried all the qwen-2 and qwen-1.5 models and they all seem to be really bad at "in the style of" which a lot of your benchmarks look to ask for?
I'd love find out exactly what was getting sent as the template for qwen and command-r to see if I can get to the bottom of what is happening!
Just checked the chat-ml template and it is a little odd too:
https://github.com/EQ-bench/EQ-Bench/blob/main_v2_4/instruction-templates/ChatML.yaml
user: user
bot: assistant
turn_template: <|im_start|><|user|>\n<|user-message|><|im_end|>\n<|im_start|><|bot|>\n<|bot-message|><|im_end|>\n
context: |
  <|im_start|>system
  <|system-message|><|im_end|>

Not sure why there is an extra pipe, new line and spaces like that?

Great question! And thanks for all the info to help debug.
Ok, so I had a lot of trouble with the command-r models when I was benchmarking them. It's possible that the reason was the extra BOS token, which I guess was likely added since I'm not instantiating the tokenizer with add_special_tokens=False per the discussion you linked.
The way I ran these models for the leaderboard scores is:
c4ai-command-r-v01
EQ-Bench: transformers using the above Cohere template
MAGI: lm-eval + transformers
c4ai-command-r-plus
EQ-Bench: either transformers using the above Cohere template, or the huggingface pro api (can't remember which). I just re-ran it with huggingface api and got near-identical result to the leaderboard score. I'm not sure which template they use.
MAGI: lm-eval + transformers
Creative Writing: huggingface pro api
Qwen-1.5-110B-Chat
EQ-Bench: together.ai api
MAGI: lm-eval + transformers
Creative Writing: together.ai api
So based on that, and given we don't know what template the huggingface pro api or together.ai is using for these models, I can confidently say that I don't know why it's underperforming! It might be that they are adding an extra BOS token. I don't know how much difference that would make; it might be worth running an A:B comparison with eq-bench / creative writing with the extra BOS token included vs. not.
Otherwise, it's good to be mindful that the creative writing benchmark is pretty subjective. For instance, the Qwen 110B model has a lot of gpt slop which I hate but which sonnet doesn't seem to care about.


Build images with buildkit

This PR replaces kaniko with buildkit for environment and jupyter-server image building. This is for a matter of performance, given that buildkit works with layers and can thus speed up builds through caching layers, pulling base image layers concurrently etc.
Known issues:

logging is not as clean as kaniko, getting only the build logs is a bit more tedius and leads to overhead
base image layers seem to be unaffected, leading to an overhead on build due to decompression

Coming back to this, I think we want to make it so that the directory that is being used as a cache is not part of the NFS, i.e. something only local to the node on which the builder is running.

something only local to the node on which the builder is running.

We start the builder on the same node as the registry right? But I guess we aren't ensured that the registry always starts on the same node, or are we? Leading to loss of cache.

postpone such things once we work on the environment images lifecycle PR/feature?

I think that makes the most sense given the current timeline :+1:


added GTSAM and test support for equidistant model

This PR contains:

a more flexible model for GTSAM distortion support
RadTan model with up to 8 coefficients: p1, p2, k1...k6
Equidistant model with 4 coefficients

I tested with "testKimeraVIO", and got the following 3 failures that already fail in the master:
[  FAILED  ] 3 tests, listed below:
[  FAILED  ] LCDFixture.detectLoop
[  FAILED  ] StereoFrameFixture.sparseStereoMatching
[  FAILED  ] TestTracker.getPoint3AndCovariance

@berndpfrommer looks great! I'll try to figure out what is wrong with those tests, I was not seeing an issue in Jenkins, feel free to paste here what are the actual errors.

@ToniRV here are the error messages I'm getting when running
../../../build/kimera_vio/testKimeraVIO
from the Kimera-VIO/test directory
[ RUN      ] LCDFixture.detectLoop
unknown file: Failure
C++ exception with description "vector::reserve" thrown in the test body.
[  FAILED  ] LCDFixture.detectLoop (676 ms)

[ RUN      ] StereoFrameFixture.sparseStereoMatching
/home/pfrommer/Documents/kimera/src/Kimera-VIO/tests/testStereoFrame.cpp:816: Failure
The difference between 92 and nrValid is 24, which exceeds 1e-5, where
92 evaluates to 92,
nrValid evaluates to 68, and
1e-5 evaluates to 1.0000000000000001e-05.
[  FAILED  ] StereoFrameFixture.sparseStereoMatching (54 ms)

[ RUN      ] TestTracker.getPoint3AndCovariance
Not equal:
expected:
[
        -1.96107290886;
        -1.45249548692;
         5.13806755474
  ]
actual:
[
        -1.91754469317;
        -1.42118583769;
         5.02725098455
  ]
/home/pfrommer/Documents/kimera/src/Kimera-VIO/tests/testTracker.cpp:974: Failure
Value of: assert_equal(f_ref_i_expected, f_ref_i_actual, 0.1)
  Actual: false
Expected: true
Not equal:
expected:
[
         0.095746852532 0.0689546286712 -0.243847814355;
        0.0689546286712 0.0498220240058 -0.175730723884;
        -0.243847814355 -0.175730723884  0.621448719948
  ]
actual:
[
         0.077882160815 0.0560681049551 -0.198333276028;
        0.0560681049551 0.0405165448006 -0.142893154387;
        -0.198333276028 -0.142893154387  0.505465049234
  ]
/home/pfrommer/Documents/kimera/src/Kimera-VIO/tests/testTracker.cpp:975: Failure
Value of: assert_equal(cov_ref_i_expected, cov_ref_i_actual, 0.1)
  Actual: false
Expected: true
[  FAILED  ] TestTracker.getPoint3AndCovariance (32 ms)

I think this pull request has become obsolete. GTSAM now also has FishEye support.

@berndpfrommer Hello, I meet the same issue with you. I alse tested with "testKimeraVIO", and got the same 3 failures you have given in the former. And can you give me your specific solution for it? Thanks very much!

Sorry, I have not been able to find out what the cause of the problem is, and the development of Kimera has moved on, so I closed the PR.


docs: write troubleshooting checklist for Starboard Operator

There's always the same procedure to figure out why Starboard Operator is failing. Usually it allows us to narrow down the root cause to a bug in code or configuration / platform issue. We should have this documented.

What are some of the common troubleshooting issues or should I just give it a go? @danielpacak

Just give it a go! Troubleshooting would start like with any other Pod or Deployment. We can take it from there and add Starboard-specific checklist.


Don't send start_state setting

Please fix.

Fix what exactly?

    // The state message when Sublime Text (or the plugin) starts. (NOT FORMATTED)
    "start_state": "Just launched",


update read committed docs around handling retries

Michael Erickson (michae2) commented:
In 23.2, under read committed isolation, applications could still encounter spurious 40001 errors in rare cases, such as lease transfers. In 24.1, under read committed isolation, we expect applications to encounter no spurious 40001 errors. (The only 40001 errors applications might encounter are all avoidable through workload changes, such as avoiding deadlocks or increasing results_buffer_size.)
This lack of 40001 errors is a special property of read committed isolation, and is definitely worth documenting.
I'm not sure exactly which pages should be updated, but from a quick glance maybe the following:

https://www.cockroachlabs.com/docs/v24.1/transactions
https://www.cockroachlabs.com/docs/v24.1/transaction-retry-error-reference
https://www.cockroachlabs.com/docs/v24.1/read-committed

Jira Issue: DOC-9869

A relevant slack thread, for some context:

https://cockroachlabs.slack.com/archives/C04E47S4KK9/p1705703315115239


Docker image optimization.

Optimized Dockerfile to create lightweight image.
Image size comparison:
bigchaindb/bigchaindb   latest              f7ac62515201        7 days ago          518 MB
local-bigchaindb-my2    latest              0d7b6ceae367        49 minutes ago      274 MB

Codecov Report

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

@@           Coverage Diff           @@
##           master    #1277   +/-   ##
=======================================
  Coverage   97.18%   97.18%
=======================================
  Files          51       51
  Lines        2380     2380
=======================================
  Hits         2313     2313
  Misses         67       67

Continue to review full report at Codecov.

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

@anryko: Thanks for the PR. I am currently in the midst of something now. Will have a look later today or tomorrow.

Hi @anryko
Before we can merge this pull request, we need you or your organization to agree to one of our contributor agreements. One of the big concerns for people using and developing open source software is that someone who contributed to the code might claim the code infringes on their copyright or patent. To guard against this, we ask all our contributors to sign a Contributor License Agreement. This gives us the right to use the code contributed and any patents the contribution relies on. It also gives us and our users comfort that they won't be sued for using open source software. We know it's a hassle, but it makes the project more reliable in the long run. Thank you for your understanding and your contribution!
If you are contributing on behalf of yourself (and not on behalf of your employer or another organization you are part of) then you should:

Go to: https://www.bigchaindb.com/cla/
Read the Individual Contributor Agreement
Fill in the form "For Individuals"
Check the box to agree
Click the SEND button

If you're contributing as an employee, and/or you want all employees of your employing organization to be covered by our contributor agreement, then someone in your organization with the authority to enter agreements on behalf of all employees must do the following:

Go to: https://www.bigchaindb.com/cla/
Read the Entity Contributor Agreement
Fill in the form "For Organizations”
Check the box to agree
Click the SEND button

We will email you (or your employer) with further instructions.

@ttmc done

This is to confirm that I agreed to and accepted the BigchainDB Individual Contributor Agreement at https://www.bigchaindb.com/cla/ and to represent and warrant that I have authority to do so.
Z1aAcC6rfuxbqjBoyd6MTHiGTYkDlQPOU4gpROl4F3yOcTwGGDqJtFxjIuCBVNr

Thanks @anryko!
@krish7919 The CLA step is cleared.

LGTM. Thanks @anryko !

You are very welcome :). Thanks for the quick merge!


chore: add more vlog info in RunAcceptLoop

Add more logs to figure out where we deadlock during shutdown in df

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
Attention: Patch coverage is 57.14286% with 3 lines in your changes missing coverage. Please review.

Project coverage is 77.77%. Comparing base (d30de86) to head (6b51f70).
Report is 92 commits behind head on master.

Files with missing lines
Patch %
Lines

util/fibers/listener_interface.cc
57.14%
3 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #316      +/-   ##
==========================================
+ Coverage   77.60%   77.77%   +0.16%
==========================================
  Files         103      108       +5
  Lines        7824     8121     +297
==========================================
+ Hits         6072     6316     +244
- Misses       1752     1805      +53

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


Allow DeepState, PatchTS to work with categorical features

Before submitting (must do checklist)

[ ] Did you read the contribution guide?
[ ] Did you update the docs? We use Numpy format for all the methods and classes.
[ ] Did you write any new necessary tests?
[ ] Did you update the CHANGELOG?

Proposed Changes

Closing issues
closes #337

PatchTS doesn't work with additional features now, so this functionality will be added in future.


Wallet does not connect to IOS expo go app

Scanning the bar code says, No usable data found.

Hi @kodisj
Since we are still very much in a development phase (pre-alpha!), we expect developers to have the expo go client installed on their mobile device. Once installed it would recognize the above QR code and open up the app.
https://expo.dev/client
As mentioned, be aware that the wallet still is in an alpha stage. We expect a version somewhere early next year, that allows you to recieve and present credentials. Right now you can only receive credentials from the issuers listed in the repository basically.
Although most of the sharing functionality is there, we are working hard on updated protocols/clients at the lower levels and we will integrate these really soon.

I did install expo client on my mobile, I scanned the barcode, it said data
not usable.  How to run the wallet on my iPhone is the question?
-KODIS
On Wed, 7 Dec 2022 at 12:45 AM, Niels Klomp @.***>
wrote:

Hi @kodisj https://github.com/kodisj
Since we are still very much in a development phase (pre-alpha!), we
expect developers to have the expo go client installed on their mobile
device. Once installed it would recognize the above QR code and open up the
app.
https://expo.dev/client
As mentioned, be aware that the wallet still is in an alpha stage. We
expect a version somewhere early next year, that allows you to recieve and
present credentials. Right now you can only receive credentials from the
issuers listed in the repository basically.
Although most of the sharing functionality is there, we are working hard
on updated protocols/clients at the lower levels and we will integrate
these really soon.
—
Reply to this email directly, view it on GitHub
https://github.com/Sphereon-Opensource/ssi-mobile-wallet/issues/11#issuecomment-1339852632,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAR7BRLQREPYD3GR4XW2YH3WL6GD3ANCNFSM6AAAAAASV2TG2Y
.
You are receiving this because you were mentioned.Message ID:
@.***>

Sorry  didn't notice you were talking about IOS.
Hmzz, we have an outstanding issue with not building on IOS that we need to fix ASAP. On thursday several developers will be in the office and then we could do a bit of testing ourselves with Xcode/Mac and and an iPhone.
cc: @sanderPostma @BtencateSphereon @SPodshivalin

Sounds good.  The issue is the barcode generated when run, it applies to
both android and ios I guess, any reason why you have gone with expo ?
On Wed, 7 Dec 2022 at 12:52 AM, Niels Klomp @.***>
wrote:

Sorry didn't notice you were talking about IOS.
Hmzz, we have an outstanding issue with not building on IOS that we need
to fix ASAP. On thursday several developers will be in the office and then
we could do a bit of testing ourselves with Xcode/Mac and and an iPhone.
cc: @sanderPostma https://github.com/sanderPostma @BtencateSphereon
https://github.com/BtencateSphereon @SPodshivalin
https://github.com/SPodshivalin
—
Reply to this email directly, view it on GitHub
https://github.com/Sphereon-Opensource/ssi-mobile-wallet/issues/11#issuecomment-1339867596,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAR7BRK5SM2VXU45GDJBGVTWL6HBFANCNFSM6AAAAAASV2TG2Y
.
You are receiving this because you were mentioned.Message ID:
@.***>

Reason was that it provided a clean app initially. But we soon ran into low-level requirements that forced us to eject anyway. So there are still quite a few expo deps in there, as some of them do provide some nice functionality.
The QR code does work on Android btw.

Got it.  I am highly impressed with your work.  Keep up the good work.  I
will be evaluating more closely going forward.
-Kodis
On Wed, 7 Dec 2022 at 1:04 AM, Niels Klomp @.***> wrote:

Reason was that it provided a clean app initially. But we soon ran into
low-level requirements that forced us to eject anyway. So there are still
quite a few expo deps in there, as some of them do provide some nice
functionality.
The QR code does work on Android btw.
—
Reply to this email directly, view it on GitHub
https://github.com/Sphereon-Opensource/ssi-mobile-wallet/issues/11#issuecomment-1339907278,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAR7BRNLS37MZKCYCIHKCVDWL6INNANCNFSM6AAAAAASV2TG2Y
.
You are receiving this because you were mentioned.Message ID:
@.***>

Reason was that it provided a clean app initially. But we soon ran into low-level requirements that forced us to eject anyway. So there are still quite a few expo deps in there, as some of them do provide some nice functionality.
The QR code does work on Android btw.

Even in android, the QR code does not seem to work.  it points to "com.sphereon.ssi.wallet://expo-development-client/?url=http%3A%2F%2F6a-j76.anonymous.ssi-mobile-wallet.exp.direct%3A80",   which is invalid, i guess.

Sorry. One of our devs who would take a look at it, got ill the other day.
Could you try the yarn android or yarn ios tasks respectively instead of yarn start. The difference is that these tasks will actually install the app on your phone, if connected with a USB cable.
The URL you see in the QR is indeed one of the app, so it would never know how to handle these, without having the app actually installed.

Okay, given the develop branch is working on both iOS and Android builds from multiple different installations and given we have updated the README, I am going to close this one.
In case the problem persist, please create a new ticket.


mongoose has assignability error after #42248

To repro: cd DefinitelyTyped/types/mongoose && tsc; observe that there are 74 errors, 2 more than the expected 72.
const locationSchema = new mongoose.Schema({
  name: { type: String, required: true },
  address: String,
  rating: { type: Number, "default": 0, min: 0, max: 5 },
  facilities: [String],
  coords: { type: [Number], index: "2dsphere" },
  openingTimes: [mongoose.Schema.Types.Mixed],
  reviews: [mongoose.SchemaTypes.Mixed],
  notes: [noteSchema]
});
var LocModel = mongoose.model<Location>("Location", locationSchema);
LocModel.create({ address: "foo", coords: [1, 2], facilities: ["foo", "bar"], name: "bar", openingTimes: ["foo"], rating: 10, reviews: ["foo"], notes: [] });

Actual:
At mongoose/test/model.ts:613, errors on openingTimes and reviews:
ERROR: 613:107  expect<EMAIL_ADDRESS>compile error:
No overload matches this call.
  The last overload gave the following error.
    Type 'string' is not assignable to type 'never'.
      Type 'string' is not assignable to type 'never'.

Expected: No error; the input type was [mongoose.SchemeTypes.Mixed], which should result in string[] not never[]
Likely related to #42336, although in this case we can't ship with this error in mongoose, which may involve fixing mongoose in some way.

Minimal repro:
type T = any extends number ? 1 : 0;
let x: T;
x = 1;
x = 0;

This used to typecheck, but now T is 1. The commit that changed this behavior is:
c3dd845923c34cf12cc00cc0787556c177607507 is the first bad commit
commit c3dd845923c34cf12cc00cc0787556c177607507
Author: Wesley Wigham<EMAIL_ADDRESS>Date:   Tue Jan 12 12:59:52 2021 -0800

    Better detect when typical nondistributive conditionals need to be defered by unwrapping their check
 and extends types (#42248)

Minimal repro:
type T = any extends number ? 1 : 0;
let x: T;
x = 1;
x = 0;

This used to typecheck, but now T is 1. The commit that changed this behavior is:
c3dd845923c34cf12cc00cc0787556c177607507 is the first bad commit
commit c3dd845923c34cf12cc00cc0787556c177607507
Author: Wesley Wigham<EMAIL_ADDRESS>Date:   Tue Jan 12 12:59:52 2021 -0800

    Better detect when typical nondistributive conditionals need to be defered by unwrapping their check
 and extends types (#42248)

This relates to mongoose because mongoose.DeepMapAsObject<{foo: any[]}> used to result in {foo: any[]} but now results in {foo: never[]}. Here's the definition:
type DeepMapAsObject<T> = T extends object | undefined
? {
    [K in keyof T]: T[K] extends Map<infer KM, infer KV> | undefined
    // if it's a map, transform it into Map | Record
    // only string keys allowed
    ? KM extends string ? Map<KM, DeepMapAsObject<KV>> | Record<KM, DeepMapAsObject<KV>> | [KM, DeepMapAsObject<KV>][] : never
    // otherwise if it's an object or undefined (for optional props), recursively go again
    : T[K] extends object | undefined
      ? DeepMapAsObject<T[K]>
      : T[K]
    }
: T;

Substituting any[] for T:
type DeepMapAsObject<any[]> = { /* since any[] extends object */
    // keyof any[] is number, any[number] is any
    [number]: any extends Map<unknown, unknown> | undefined // these get inferred as unknown
    // if it's a map, transform it into Map | Record
    // only string keys allowed
    ? never // KM is unknown which does not extend string, result is never
    // otherwise if it's an object or undefined (for optional props), recursively go again
    : any extends object | undefined
      ? DeepMapAsObject<any> // not too clear what happens here...
      : any
    };

So you have that conditional type testing whether any extends, and one branch is never and the other is any. Before the commit mentioned, the result was { [K in number]: any | never} which is just { [K in number]: any}. After, it just takes the "true" branch and the type becomes { [K in number]: never }.

This relates to mongoose because mongoose.DeepMapAsObject<{foo: any[]}> used to result in {foo: any[]} but now results in {foo: never[]}. Here's the definition:
type DeepMapAsObject<T> = T extends object | undefined
? {
    [K in keyof T]: T[K] extends Map<infer KM, infer KV> | undefined
    // if it's a map, transform it into Map | Record
    // only string keys allowed
    ? KM extends string ? Map<KM, DeepMapAsObject<KV>> | Record<KM, DeepMapAsObject<KV>> | [KM, DeepMapAsObject<KV>][] : never
    // otherwise if it's an object or undefined (for optional props), recursively go again
    : T[K] extends object | undefined
      ? DeepMapAsObject<T[K]>
      : T[K]
    }
: T;

Substituting any[] for T:
type DeepMapAsObject<any[]> = { /* since any[] extends object */
    // keyof any[] is number, any[number] is any
    [number]: any extends Map<unknown, unknown> | undefined // these get inferred as unknown
    // if it's a map, transform it into Map | Record
    // only string keys allowed
    ? never // KM is unknown which does not extend string, result is never
    // otherwise if it's an object or undefined (for optional props), recursively go again
    : any extends object | undefined
      ? DeepMapAsObject<any> // not too clear what happens here...
      : any
    };

So you have that conditional type testing whether any extends, and one branch is never and the other is any. Before the commit mentioned, the result was { [K in number]: any | never} which is just { [K in number]: any}. After, it just takes the "true" branch and the type becomes { [K in number]: never }.


Aes. 10

Make the gray line seperating the title of a blog and the Everything Explained main title, slighlty thinner and less bulky.

Completed.


[ENH] move tests for dependency checks and deep_equals to utils module

This PR moves the tests for dependency checks and deep_equals to the utils module where those utilities reside.

Codecov Report

Merging #217 (51256b0) into main (d840e75) will not change coverage.
The diff coverage is 100.00%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@           Coverage Diff           @@
##             main     #217   +/-   ##
=======================================
  Coverage   83.59%   83.59%
=======================================
  Files          43       43
  Lines        2841     2841
=======================================
  Hits         2375     2375
  Misses        466      466

Files Changed
Coverage Δ

skbase/utils/dependencies/tests/__init__.py
100.00% <100.00%> (ø)

...tils/dependencies/tests/test_check_dependencies.py
100.00% <100.00%> (ø)

skbase/utils/tests/test_deep_equals.py
100.00% <100.00%> (ø)


Overhaul Python common package build

This PR overhauls how we build and install the python library:

[x] Switches the build for the SWIG Python bindings to use the updated cmake build infra
[x] Consolidates client and core python packages
[x] Builds a Python wheel for the common/client and sservice
[ ] Write pdo.common.crypto wrapper
[ ] Ships the built wheel and updates documentation for installation

This looks like a great start! I'll have to spend more time with the CMakefile to understand all the ins & outs of what you're doing there.
One other note... should we consider packaging the SWIG files separately? that is, move them out of the python directory tree into one of their own and keep the python tree strictly python? (and maybe combine it with the client tree)

One thing I would really like to see from this... can we get to where we can build the packages without the virtual environment in place? Clearly we need the dependencies to run, but do we need them to build? This is part of pushing for a clean separation between the build, install, configure and run phases.

can we get to where we can build the packages without the virtual environment in place? Clearly we need the dependencies to run, but do we need them to build?

I'll look into this, because agreed, it would be nice to separate out the different phases more cleanly.

This might make it possible to remove all ledger-specific code from the base python packages.

All components use the ledger APIs, though, don't they? I'd rather keep as much of the python code in one place as possible. It makes it a bit easier to track, IMO, and also makes the python package build more straight-forward. That said, I am in favor of reproducing the ledgers/ccf directory structure within python/pdo.

This might make it possible to remove all ledger-specific code from the base python packages.

All components use the ledger APIs, though, don't they? I'd rather keep as much of the python code in one place as possible. It makes it a bit easier to track, IMO, and also makes the python package build more straight-forward. That said, I am in favor of mirroring the ledgers/ccf directory structure within python/pdo.

The only ledger specific code we have right now is the submitter and a few of the key functions. Those can be pulled into the package (setup includes the designated directory in the ledger/$PDO_LEDGER_TYPE/python directory. There is a super class for the submitter that stays in python...

Maybe I'm missing something, but why do we want to build and configure CCF separately? I understand doing this for the TP, though the submitter is used by several other components besides the client.
I can move the CCF-specific submitter to the ccf directory since it's just one file, but in general, I would like to avoid/minimize having more python code spread across a bunch of different directories. Right now we have python code mixed with cpp code in practically every directory, and I think the dependencies will be clearer, and also easier to maintain, if we separate the cpp layers from the python layers.

Maybe I'm missing something, but why do we want to build and configure CCF separately? I understand doing this for the TP, though the submitter is used by several other components besides the client.
I can move the CCF-specific submitter to the ccf directory since it's just one file, but in general, I would like to avoid/minimize having more python code spread across a bunch of different directories. Right now we have python code mixed with cpp code in practically every directory, and I think the dependencies will be clearer, and also easier to maintain, if we separate the cpp layers from the python layers.

i don't want to build it separately. I want the python to pull the packages from PDO_SOURCE_ROOT/ledgers/ccf/python instead. That way all of the ccf code is in one place rather than scattered throughout PDO_SOURCE_ROOT/python.

Right now we have python code mixed with cpp code in practically every directory, and I think the dependencies will be clearer, and also easier to maintain, if we separate the cpp layers from the python layers.

This is precisely because we have separate packages. We do NOT want the eservice or pservice code being packaged with the client package because it would pull in all the sgx dependencies. We should be building something like:

eservice package
pservice package
sservice package
client package
service support package

we may also want a "ledger" package. but i'm ok rolling this into the client/service support packages

@cmickeyb We currently ship the contents of $PDO_HOME/opt/pdo/bin and $PDO_HOME/opt/pdo/etc with pdo.common (see python/setup.py data_files parameter to setup). I don't think we need either of those anymore? Especially the contents of /etc, which include ledger keys, seem rather problematic to distribute as part of pdo.common...

@cmickeyb We currently ship the contents of $PDO_HOME/opt/pdo/bin and $PDO_HOME/opt/pdo/etc with pdo.common (see python/setup.py data_files parameter to setup). I don't think we need either of those anymore? Especially the contents of /etc, which include ledger keys, seem rather problematic to distribute as part of pdo.common...

I think we can drop the etc & bin directories. Nothing goes in them right now.

Closing this to break up into multiple PRs.


unit test code coverage tool

Description
Use the following format to name and describe your user stories
As a "Developer",
So that "I can see how well my code is tested",
I want "See code coverage"
Acceptance Criteria
What are some implicit tasks/criteria to be achieved within this story?

[x] Code Coverage generated for unit tests
[x] Files in which coverage is low is outputted
[x] Lines missing code coverage are made available

This should have been closed a while ago.


Error message when using invalid trust policy is not user friendly

What is the areas you experience the issue in?
Notation CLI
What is not working as expected?
I created a trust policy like:
{
    "version": "1.0",
    "trustPolicies": [
        {
            "name": "upstream",
            "registryScopes": [ "*" ],
            "signatureVerification": {
                "level" : "strict"
            },
            "trustStores": [ "blah" ],
            "trustedIdentities": [
                "*"
            ]
        }
    ]
}

After attempting to verify an image with this policy, I encountered the following error:
$ notation verify <image>
panic: runtime error: slice bounds out of range [:-1]

goroutine 1 [running]:
github.com/notaryproject/notation-go/verification.validateTrustStore({{0xc0003953a8, 0x8}, {0xc000032a00, 0x1, 0x4}, {{0xc0003953c0, 0x6}, 0x0}, {0xc000032a80, 0x1, ...}, ...})
        /home/runner/go/pkg/mod/github.com/notaryproject/notation-go@v0.12.0-beta.1/verification/policy.go:135 +0x1d2
github.com/notaryproject/notation-go/verification.(*PolicyDocument).ValidatePolicyDocument(0xc0005b3050)
        /home/runner/go/pkg/mod/github.com/notaryproject/notation-go@v0.12.0-beta.1/verification/policy.go:185 +0x418
github.com/notaryproject/notation-go/verification.NewVerifier({0x92cdc0?, 0xc0005b4180})
        /home/runner/go/pkg/mod/github.com/notaryproject/notation-go@v0.12.0-beta.1/verification/verifier.go:34 +0x53
main.getVerifier(0xc0002e4900?, {{0x7ffdc0036943, 0x13}, {0x7ffdc0036957, 0xf}, {0xc0003801e1, 0x47}})
        /home/runner/work/notation/notation/cmd/notation/verify.go:82 +0x13a
main.runVerify(0xc0002e4900, 0xc00007a1e0)
        /home/runner/work/notation/notation/cmd/notation/verify.go:55 +0xcf
main.verifyCommand.func2(0xc0002e4900?, {0xc0003bc9e0?, 0x1?, 0x1?})
        /home/runner/work/notation/notation/cmd/notation/verify.go:39 +0x1d
github.com/spf13/cobra.(*Command).execute(0xc0002e4900, {0xc0003bc9b0, 0x1, 0x1})
        /home/runner/go/pkg/mod/github.com/spf13/cobra@v1.6.1/command.go:916 +0x862
github.com/spf13/cobra.(*Command).ExecuteC(0xc0002e4300)
        /home/runner/go/pkg/mod/github.com/spf13/cobra@v1.6.1/command.go:1044 +0x3bd
github.com/spf13/cobra.(*Command).Execute(...)
        /home/runner/go/pkg/mod/github.com/spf13/cobra@v1.6.1/command.go:968
main.main()
        /home/runner/work/notation/notation/cmd/notation/main.go:27 +0x176

The error was caused by not having the trust store in the form "ca:blah". This error message is extremely unfriendly and the notation client should do more validation of the trust policy to provide a better user experience. I figured out my issue by reading the notation-go code, which should not be required.
What did you expect to happen?
An informative error message would be provided.
How can we reproduce it?
Create a trust policy like the example above
Describe your environment
WSL + Windows 11
What is the version of your Notation CLI or Notation Library?
notation version
Notation: Notary v2, A tool to sign, store, and verify artifacts.
Version:     0.12.0-beta.1
Go version:  go1.19.2
Git commit:  965a0b785467107ba9a2d37ee182c3c123b3eabf

@jeremyrickard Thanks for reporting the issue. we did some improvements on output messages in upcoming rc.1 release. Besides that, new options  --debug and --verbose  will be added in rc.1 for notation sign and notation verify command, so that user can view more logs for information and troubleshooting.

This issue is resolved in the RC-1 version. And the error message will be improved in RC-2 by this PR in notation-go: https://github.com/notaryproject/notation-go/pull/235.

Closing this issue as it's resolved.


Adding  Codefresh as a service

Sorry but we're not accepting any more HTTP-based services: https://github.com/github/github-services/blob/master/CONTRIBUTING.md#creating-a-new-service


docs: copy paste docs

Summary
This PR adds ecs-logging-ruby docs. Shared content is included from the ecs-logging repo.
To test this PR, you'll need an up-to-date copy of both elastic/docs and elastic/ecs-logging. Then run the following command, where $GIT_HOME is the path to your local repos:
$GIT_HOME/docs/build_docs --doc $GIT_HOME/ecs-logging-ruby/docs/index.asciidoc --resource=$GIT_HOME/ecs-logging/docs/ --chunk 1 --open

Follow-ups

[ ] Open PR in elastic/docs to add to the build
[ ] Open infra ticket to add the docs check to this repo
[ ] Add webhook for docs check
[ ] Remove content from readme and link to docs

:green_heart: Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS

Expand to view the summary

Build stats

Build Cause: Pull request #7 opened

Start Time: 2020-12-14T22:41:23.320+0000

Duration: 14 min 15 sec

Test stats :test_tube:

Test
Results

Failed
0

Passed
224

Skipped
0

Total
224

No prob! Opened https://github.com/elastic/ecs-logging-ruby/issues/8 to track the follow-ups.


limit task interaction to admins

As server admin
I would like to limit task interaction to certain users
So that not every troll can flood the system with BS tasks.
Acceptance Criteria:

It is possible to limit task interaction
Only people with the correct permissions can create/assign/edit/delete tasks

Original request here

This should actually be rather easy to implement.
See

https://lua-api.factorio.com/latest/LuaPermissionGroup.html
https://lua-api.factorio.com/latest/LuaPermissionGroups.html

@Tarrke Check the two links :)

As I understood it the UI is already there.
We have two options according to the API
Either we create our own role management (rather tricky)
Or we add a couple options that define group names.
If groups of that name exists then only players in that group can do the action.
The latter one should be rather straight forward.

Okay found the UI in question in MP or SP game open the console and hit
/permissions

Now I see things this should be simple yeah.

After some researche it does not seems possible to add new input_action rules. See https://forums.factorio.com/viewtopic.php?f=221&t=47308
We should be able to link the right to add/edit/assign tasks to an existing rule, but which one ???
List of defined onput_action here : https://lua-api.factorio.com/latest/defines.html

I'm almost positive that the defines.input_action.add_permission_group may be used here.

Yep. But this just enables us to add new permission groups. Not permissions :)

We can add new permissions, but we can base the permission system in the mod on existing permissions. The OP asked for "only admins" functionnality, I think we can give the players with the add_permission_group permission to manage tasks. This is a workaround.

Yeah, that would work as well.

Should this be an option as well ?

I would say it has to. Otherwise you force everyone into this limitation :)

I'll look into that next week

Okay just to recap, there are two ways of doing this.

Bind the rights to the defines.input_action.add_permission_group permission
Question:
There are multiple permissions in this mod (create, edit, assign, complete, delete). How are they distinguished (you want completion of tasks for everyone but not creation?)

Create a set of options (one per functionality).
These options are free form text.
If they are set it is checked if a group of that name exists.
If a group exists it is checked if the user is in the group.
If yes the action is performed.

As a side effect: would it make sense to have two levels of permissions? One for doing everything and one for only working with tasks assigned to yourself?


Contradiction about log write throughput in two docs

https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/azure-sql/database/service-tiers-general-purpose-business-critical.md#service-tier-comparison

-
General Purpose
Business Critical

Log write throughput
1.875 MB/s per vCore (max 30 MB/s)
6 MB/s per vCore (max 96 MB/s)

However, in the below documentation,

Log write throughput of GP looks like 4.5 MB/s per vCore
Max Log write throughput of GP is 50 MB/s
Log write throughput of BC looks like 12 MB/s per vCore

According to the Hyperscale section, both Log write throughput and Max log rate mean the same at 100MB/s.
https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/azure-sql/database/resource-limits-vcore-single-databases.md#general-purpose---provisioned-compute---gen5

Compute size (service objective)
GP_Gen5_2
GP_Gen5_4
...
GP_Gen5_12

vCores
2
4
...
12

Max log rate (MBps)
9
18
...
50

https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/azure-sql/database/resource-limits-vcore-single-databases.md#business-critical---provisioned-compute---gen5

Compute size (service objective)
BC_Gen5_2
BC_Gen5_4
...
BC_Gen5_8

vCores
2
4
...
8

Max log rate (MBps)
24
48
...
96

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

ID: 5676aae7-73bc-c084-174b-50ba4fd7be77
Version Independent ID: 0998f821-0f03-a833-b4b3-0d6ebd9468e5
Content: Single database vCore resource limits - Azure SQL Database
Content Source: articles/azure-sql/database/resource-limits-vcore-single-databases.md
Service: sql-database
Sub-service: service-overview
GitHub Login: @dimitri-furman
Microsoft Alias: dfurman

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

@laclefyoshi Thank you for letting us know about this discrepancy. We have corrected the outdated page, changes should be visible in a few hours.


project scope and module scope support

In every one "Run/Debug" need to enable EnvFile, This can be very tedious.
So it's even better if the plugin have a wider scope of support.

Did you try editing defaults to enable the plugin for all new run configs?

Thank you very much for suggesting that this is exactly what I need.

 We should just thank JetBrains for an amazing product they created! 😄


Person class

Create Person class

Private method is_of_age?
Public method can_use_services?

Create Student class that extends Person

Public method play_hooky

Create Teacher class that extends Person

Overwrite can_use_sevices? method

@lucascomamala please check for my message

@lucascomamala  please check slack for my message


"Select Control Points" option is missing for Path node

Godot version:
3.2.3.Stable
OS/device including version:
Intel(R) Core(TM) i7-5820K, GTX 970, Windows 10 Pro
Issue description:
"Select Control Points" option is missing for Path node. The tool is available for Path2D and it works to use the tooltip from Path2D of holding down shift and dragging on the control point, so why is the tool not there for the 3D Path? There is no way of knowing how to make the path smooth if you don't know it already or go compare with Path2D like I did.
Tool missing:

Tool present:

Steps to reproduce:
Create a new Path node and observe the issue.
Minimal reproduction project:
NA

There is no way of knowing how to make the path smooth if you don't know it already or go compare with Path2D like I did.

This is probably not exactly related and asks for proposal, but stumbling upon this issue, it makes me think that perhaps those nodes could benefit from Catmull-Rom interpolation by default (the idea is that you don't necessarily need or want to configure control points manually), like in goostengine/goost#77. But perhaps this is already the case for Path(3D) nodes?
If that makes sense, I could create a proposal for this, but I'm not proficient in 3D to be able to elaborate on this topic, nor have a real-life use case to justify making a proposal.

This is resolved in Godot 4.2 (probably earlier, but saw it there). Closing.


Introduce ExpandSelectionToWord action

Summary of the Pull Request
Introduces a new action expandSelectionToWord() which expands the beginning and end of the selection to encompass the word(s) it's on. This was implemented as a conditional keybinding where the key chord is passed through to the terminal if no selection is active (similar to copy()).
It is not bound to anything by default.
PR Checklist

[x] Closes #8274
[ ] Documentation updated. If checked, please file a pull request on our docs repo and link it here: #xxx
[x] Schema updated.

Validation Steps Performed

Scenario in #8274:

search for some text in the find dialog
ESC to close the dialog
execute expandSelectionToWord()
the new selection encompasses the whole word

mark mode

move onto a word
execute expandSelectionToWord()

mouse selection (same as above)
select a portion of two words --> new selection fully encompasses both words

I could easily abstract this action into expandSelection(mode: {cell|word|line|view|buffer}) but that all sounds... not useful.
Current behavior is that if the selection encompasses multiple words, the selection is expanded to encompass all of them entirely (i.e. "hell[o w]orld" --> "[hello world]"). I could change this to only expand at the active endpoint, but that sounds like a pretty niche thing imo.

Let me know if you disagree with my assumptions above.

I could easily abstract this action into expandSelection(mode: {cell|word|line|view|buffer}) but that all sounds... not useful.
Current behavior is that if the selection encompasses multiple words, the selection is expanded to encompass all of them entirely (i.e. "hell[o w]orld" --> "[hello world]"). I could change this to only expand at the active endpoint, but that sounds like a pretty niche thing imo.

Let me know if you disagree with my assumptions above.

Current behavior is that if the selection encompasses multiple words

what about a selection of hello [w]orld - that expands to hello [world] (right?), then what would the next expandSelectionToWord do?

RE expandSelection(mode: {cell|word|line|view|buffer}): That sounds like what home/end/pgup/dn/ctrl+a are for.

what about a selection of hello [w]orld - that expands to hello [world] (right?), then what would the next expandSelectionToWord do?

hello [w]orld --> hello [world] --> hello [world] (you're already on the whole word so no more to expand to)
VS Code has an "Expand Selection" action for Shift+Alt+Right. That expands to word --> line -->doc. (so if you're already on the whole word, it goes to line, etc...).

From bug bash:

[ ] Mark mode --> move to middle of word --> ExpandSelectionToWord --> Shift+Right/Left --> weird updated selection

make sure this gets into the docs!