Upgrade advanced approvals

Details

This PR adds Upgrade path to the Advanced Approval Workflows. It aims to look like this:

Fixed Issues

$ https://github.com/Expensify/App/issues/46818
PROPOSAL:
Tests

Open one of the workspaces that doesn't have upgraded Advanced Approvals, if you don't have one, create new.

Open /settings/workspaces/C5F418EFCC35C83B/upgrade/approvals by hand or click on + Add workflow, Upgrade page should pop up.

The page should look like this:

After you click to upgrade, it should redirect to Upgrade successful page and save this workspace as upgraded.

When closing Upgrade page, it should redirect you back to Workflows

[x] Verify that no errors appear in the JS console

Offline tests

N/A
QA Steps

N/A

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[ ] I included screenshots or videos for tests on all platforms
[ ] I ran the tests on all platforms & verified they passed on:

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[ ] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

I'll be adding videos tomorrow, but PR is ready for review; @shawnborton please take a peek at the UI, I hope everything's right :) Also I've noticed one bug - after opening Upgrade page, there is no animation on closing, I'll fix it first thing tomorrow!

Spinning up a test build now!

It does look like the illustration is too small here though:

@allroundexperts I thought we already fixed that in another PR?

@shawnborton I had the same hunch, but dimensions in .svg looked right like in Figma

@Guccio163 looks like this will be fixed once this PR is merged, so we can ignore for now

Looks pretty good except for the RHP animation bug you mentioned, and the icon size (which is being fixed elsewhere).

The pressed state of the "Add approval" row seems really dark though, any idea what's going on there?

Reviewer Checklist

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[ ] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[ ] I verified that all the inputs inside a form are aligned with each other.
[ ] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

After checking in other places in app, everywhere where the same component is used is the same situation, it is a matter of component's issue, not this section:
https://github.com/user-attachments/assets/986b9498-3191-4094-83c5-80330b9b1966

Looks pretty good except for the RHP animation bug you mentioned, and the icon size (which is being fixed elsewhere).

@shawnborton do I understand correctly that both of them are already addressed in another issue?

Icon size - yes, that's being addressed elsewhere.
Regarding the RHP animation, I am responding to your comment here. Seems like you are going to fix that in this PR?

@shawnborton I meant to, but after your comment

@Guccio163 looks like this will be fixed once this PR is merged, so we can ignore for now

I've noticed that in this PR issue #45689 is also addressed, so I guess both these issues will be handled separately ;)

@tgolen  Both changes applied, I hope User should be allowed to add new Approval Workflow only if he has upgrade to Control Plan, otherwise redirected to the Upgrade Page is an appropriate comment

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/tgolen in version: 9.0.18-0 🚀

platform
result

🤖 android 🤖
failure ❌

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/mountiny in version: 9.0.18-10 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


chore: update k8s to 1.14.2

What this PR does / why we need it:
Add your description
Which issue(s) this PR is related to (optional, link to 3rd issue(s)):
Fixes #14
Reference to #

Special notes for your reviewer:
/cc @your-reviewer

Release note:

NONE

Have tested on k8s 1.14.3, and it is ok.

/cc @lichuan0620  @anoopwebs

/lgtm

👏

I'd say go for it, hoping that has backward compatibility at least up to 1.10

@anoopwebs  Could you help to test on the versions of kubernetes? If there is no problem, I will create a latest release.

I can test it on 1.11 and 1.12 versions of Kubernetes but can do only tonight (EST) and will update it here.

I can test it on 1.11 and 1.12 versions of Kubernetes but can do only tonight (EST) and will update it here.

@anoopwebs  Any updates?

@supereagle I tried building a docker image locally and run it but I got following
Unable to find image 'docker:latest' locally
latest: Pulling from library/docker
9d48c3bd43c5: Already exists
7f94eaf8af20: Already exists
9fe9984849c1: Already exists
c20ab28a107d: Pull complete
893706d7c9c3: Pull complete
6a90931a80d1: Pull complete
f85af80e5c4b: Pull complete
Digest: sha256:2dcf87c9893b05ab815880e3d223cd6976c388a6f6697de10e90523255259ca4
Status: Downloaded newer image for docker:latest
docker: error during connect: Post http://docker:2375/v1.40/containers/create: dial tcp: lookup docker on <IP_ADDRESS>:53: no such host.
See 'docker run --help'.

I use make docker to build locally, what is your build command? @anoopwebs

I used docker build -t webs/kube-event-exporter:1.0.14 .

@supereagle I did verify on 1.12 Kubernetes cluster and event metrics are showing up as usual. Still, local attempt to verify is broken.

Still, local attempt to verify is broken.

Sorry, not sure about local attempt to verify. Do you mean that you still can not build locally by the command docker build -t webs/kube-event-exporter:1.0.14 .?


Support Forge Jar-In-Jar (JarJar)

More info please? Was it recently added? Don't just create an issue without a description

looks like they just merged it https://github.com/MinecraftForge/MinecraftForge/pull/8715

Similar changes had been done in FG
MinecraftForge/ForgeGradle#863
Also has an additional dependency named JarJar


Fix heat sla-metrics conf file name

This is already done in https://github.com/blueboxgroup/ursula/pull/1369/files#diff-0e23e74542e84f9be6087e8d9a0b7fb4L20   #1369


dark theme with minimal mistakes jekyll

I want to switch to minimal-mistakes-theme
I added this two lines
but nothing have changed
help me please
theme                  : "minimal-mistakes-jekyll"
minimal_mistakes_skin    : "dark"

You should add remote theme of minimal-mistakes-jekyll. But it can change current template of academicpages.
Add to _config.yml:
remote_theme<EMAIL_ADDRESS>minimal_mistakes_skin: "contrast" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise"

You should add remote theme of minimal-mistakes-jekyll. But it can change current template of academicpages. Add to _config.yml: remote_theme<EMAIL_ADDRESS>minimal_mistakes_skin: "contrast" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise"

I seems not work for me...

Related to issue #911, but I'm not sure if the Minimal Mistakes themes are actually compatible with Academic Pages still due to the code drift between the two.


Timeout setting

I am not seeing how to setup timeout from the server.
I need to set a time of 60 seconds and if no communication from the client i want the server to send a message to client that it is closing the connection as timeout.
How can i achieve this using this framework.
basically i am looking for something like setTimeout(6000)

see #473


Better fig

Supersedes #416. Adds my fig_rake gem to manage interaction with containers, which makes stuff a lot simpler. You can almost treat Panoptes running in fig exactly the same as if it was running locally.
I did make some changes to the Dockerfile that we should think about, namely installing all dependencies during the build instead of excluding the test and development ones. I'm not sure it really matter having them installed in production. Thoughts?

I should also note that I'm using FigRake's monkey patching capabilities. We could rework it to use the frake and frails commands instead.

I'm digging on this, my only concern is building the docker image with test and dev gems which may not really matter apart from time constraints on build.
I'm testing it out on my machine to see how well it fits normal dev practises as well.

Sorry about that database mistake. I've update that config file as well as adding more explanations to the README steps.

@camallen re: build times. They get installed as part of the Docker image build which doesn't have the same timeout constraints as the AMI build. I also think the dominating time factor in new builds is that AWS sometimes takes hours to actually make the image.

I've reworked the dockerfile to allow faster gem modifications and docker image rebuilds https://github.com/edpaget/Panoptes/pull/11

I merged your pull request.

I bumped the version of Fig Rake.


chore(examples): Add id3info example

This should help when debugging issues. Fixes #81.

Here's some example output:
$ cargo run --example id3info -- testdata/id3v23_chap.id3
# ID3 ID3v2.3 - 17 frames
TALB="Mac Power Users"
TPE1="Mac Power Users"
TIT2="554: Read-it-later Services"
COMM:[eng]="Read-it-later services can be a great way to save and enjoy an article later, away from the noise of social media or an overflowing RSS client. This week, David and Stephen talk about some of the popular choices, and how to keep them from becoming just another thing to check. Then, a recap of Apple’s recent media event."
USLT:[eng]="Read-it-later services can be a great way to save and enjoy an article later, away from the noise of social media or an overflowing RSS client. This week, David and Stephen talk about some of the popular choices, and how to keep them from becoming just another thing to check. Then, a recap of Apple’s recent media event."
CTOC=TableOfContents(TableOfContents { element_id: "toc", top_level: true, ordered: true, elements: ["chp0", "chp1", "chp2", "chp3", "chp4", "chp5", "chp6"], frames: [] })
CHAP:chp0=<chapter, 1 frames (0+4294967295 - 466287+4294967295>
CHAP:chp1=<chapter, 1 frames (466287+4294967295 - 964340+4294967295>
CHAP:chp2=<chapter, 1 frames (964340+4294967295 - 1597615+4294967295>
CHAP:chp3=<chapter, 1 frames (1597615+4294967295 - 3042409+4294967295>
CHAP:chp4=<chapter, 1 frames (3042409+4294967295 - 3345281+4294967295>
CHAP:chp5=<chapter, 1 frames (3345281+4294967295 - 4158417+4294967295>
CHAP:chp6=<chapter, 1 frames (4158417+4294967295 - 5997000+4294967295>
TLEN="5997000"
TYER="2020"
TENC="Forecast"
APIC:Front cover=<image, image/jpeg, description "", 321286 bytes>

$ cargo run --example id3info -- testdata/id3v23_geob.id3
# ID3 ID3v2.3 - 18 frames
TIT2="All You Need (Original Mix)"
TPE1="Thoma Cher"
TALB="Far East \0 Wild West EP"
TCON="Indie Dance \0 Nu Disco"
TIT1="Whiskey Disco"
TPUB="Whiskey Disco"
TYER="2017"
TKEY="Am"
RVAD=Unknown(Unknown { data: [0, 16, 0, 0, 0, 0, 0, 0, 0, 0], version: Id3v23 })
TBPM="117"
COMM:[eng]="Purchased at Beatport.com"
GEOB:Serato Overview=<encapsulated object, application/octet-stream, filename "", 3842 bytes>
GEOB:Serato Analysis=<encapsulated object, application/octet-stream, filename "", 2 bytes>
GEOB:Serato Autotags=<encapsulated object, application/octet-stream, filename "", 21 bytes>
GEOB:Serato Markers_=<encapsulated object, application/octet-stream, filename "", 318 bytes>
GEOB:Serato Markers2=<encapsulated object, application/octet-stream, filename "", 470 bytes>
GEOB:Serato BeatGrid=<encapsulated object, application/octet-stream, filename "", 39 bytes>
GEOB:Serato Offsets_=<encapsulated object, application/octet-stream, filename "", 29829 bytes>


Fix/775 skip conversion

This PR involves two changes:

While testing DateTimeConverter, subject used to be TimeConverter. Changed it to DateTimeConverter.

Removed changed_properties check in skip_conversion method because nil DateTime value would not be skipped because changed_properties[attr] is not nil. See #775

Coverage decreased (-0.02%) to 98.17% when pulling cefa25b03185e2bbb922647b3f5d48f4593814b6 on artsince:fix/775-skip-conversion into dd59ca75b63749b84759811a8840a5587cddf040 on neo4jrb:master.


Largest palindrome product

Solve Problem 4: Largest palindrome product on Project Euler
Make a directory whose name is your Github username. Move your solution to that folder. Also a screenshot of your accepted submission on ProjectEuler.
Move that directory to Problem4 directory in the ProjectEuler directory.
For eg. location of my solution would be /ProjectEuler/Problem4/MJ10/

Look up the CONTRIBUTING.md Document to see how to push your code to GitHub.

I claim

Issue closed, end of Hacktoberfest!


How to send a query for prediction using curl

Hi, is there anyway to create some API so that we can call from different languages. I have tried creating a wrapper for python but am getting some issues with linking as I am inexperienced in interfacing with c++ from python. Is there any way I can create some REST API service so that in query_predict in place of cin, we can use input from API. Any suggestions would be appreciated.

@bedapudi6788 Hi, sorry for the delay in replying. What is the issues you are experiencing? Would you mind to share your code? Thanks.

I will probably tackle the same problem in the future. @bedapudi6788 , have you solved it?

@davidalbertonogueira As my knowledge of c++ is minimal at best, I couldn't find anyway to host the model or write a python wrapper. So, I am currently using subprocess module in python to use my models, but it's not the best way to do this.

See python example in https://github.com/facebookresearch/StarSpace/issues/101

RIGHT  A MOMENT  GET A RIGHT  DECISION IT MUST CHANGE A BETTER THINGS


feat: dockerfile

Your requested Dockerfile. Kind regards from the desk next to you.

@dreiekk Thanks for your contribution!


Investment Project search endpoint and fixes.

Codecov Report

Merging #255 into develop will increase coverage by 0.6%.
The diff coverage is 98.14%.

@@            Coverage Diff             @@
##           develop     #255     +/-   ##
==========================================
+ Coverage    92.74%   93.34%   +0.6%
==========================================
  Files           56       56
  Lines         1985     2030     +45
  Branches       178      189     +11
==========================================
+ Hits          1841     1895     +54
+ Misses         122      114      -8
+ Partials        22       21      -1

Impacted Files
Coverage Δ

datahub/search/urls.py
100% <ø> (ø)
:arrow_up:

datahub/search/signals.py
100% <100%> (ø)
:arrow_up:

datahub/search/views.py
98.46% <100%> (+8.26%)
:arrow_up:

datahub/search/management/commands/sync_es.py
93.18% <100%> (+0.32%)
:arrow_up:

datahub/search/elasticsearch.py
98.48% <96.66%> (+13.11%)
:arrow_up:

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 7d7340e...e901763. Read the comment docs.


[Needs copy update] Web - Sage - "Can't connect to integration. ("")" error after adding user-defined dimension

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.44-8
Reproducible in staging?: Y
Reproducible in production?: Y
Issue reported by: Applause Internal Team
Action Performed:

Navigate to https://staging.new.expensify.com/
Log in with a new Gmail account
Click on FAB - New workspace
Enable "Accounting" in the "More features" page.
Navigate to "Accounting"
Connect to Sage Intacct and upgrade the workspace to Control when asked
Wait for the sync to finish
Navigate to Import - User-defined dimensions
Click on the "Add user-defined dimension"
Input any name and select any option for "Displayed as"
Click on the "Confirm" button
Dismiss the RHP
Wait for the sync to finish

Expected Result:
The error shouldn't be visible or should be more informative that the issue is connected to user-defined dimensions.
Actual Result:
"Can't connect to integration. ("")" error appears after adding user-defined dimension. It disappears if the user-defined dimension is removed.
Workaround:
Unknown
Platforms:

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
https://github.com/user-attachments/assets/4c11beba-3739-490d-96a6-1a2301984d54

View all open jobs on GitHub

We think that this bug might be related to #wave-control

@strepanier03  FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

I'll see what I can find. I'm thinking I'll have to get logs and check in Sage to ensure the UDD is set up correctly.

Haven't been able to dig into this more yet, hoping to prioritize tomorrow.

Still investigating.

Suggestion
What: Create a new ExpensiError for New Expensify Sage Intacct connection.
Suggestion: ExpensiError #?#: Invalid User-defined dimension integration name.
How do you produce the error?

Prerequisite: Have a workspace connected to Sage Intacct in New Expensify

Click Settings > Workspaces > workspace name > Accounting > Import > User-defined dimension > Add User-defined dimension.
Enter anything for the Integration Name as long as it's not a real UDD in our test Sage Intacct account, ex: "Testing dimension" works.
Select any option for Displayed As.
Click Confirm.
Click the Add user-defined dimension button.
RHP stays open, I'm assuming so another UDD can be added and Sage syncs in the background.
Close RHP and when Sage finishes syncing, the red error under the connection is displayed, this is the error we want to update.

Note for self
Don't forget to add the new error to the existing help page - https://help.expensify.com/articles/new-expensify/connections/sage-intacct/Sage-Intacct-Troubleshooting.
Why Does This Happen?
This error occurs because the r Name of the user-defined dimension in Sage Intacct is not valid.
How to Fix It
To fix this please log into Sage Intacct as an administrator to find the correct name.
To find the Integration Name in Sage Intacct:
[test and populate list of steps then add to this]

I am not treating this as a bug but as an internal copy update and resource update.

Haven't been able to prioritize this yet, needs to still.

No update yet.

Haven't been able to prioritize this.

This will need to wait until the new year.


Every function that takes an Array should also allow an Iterable

So each one of these should also take an Iterable:
Helpers

[ ] mconcat
[ ] mconcatMap
[ ] mreduce
[ ] mreduceMap
[ ] take (new)

Pointfree

[ ] filter
[ ] find (new)
[x] head
[ ] map
[ ] reduce
[ ] sequence
[ ] tail
[ ] traverse

Since we are now exposing the possibility of infinite values, makes sense to add a take function at this point.

how would this be implemented without changing the type or mutating the value? the value of using the known functions is that they take care of creating the correct type but i think filter/map/reduce won't work without mutation or changing type
I think though most of the others should be fine

hey @evilsoft I am wondering if you have some magical idea for this? cause i can't quite think of how to do many of these without returning an array instead of the original iterable?

I think we need to define a function that clone the object in a way that it doesn't loose the structure. We need some checks for base constructors like (Date, Array, String etc..) and clone it in the right way, and when its a normal object use something like Object.create and assign.
Something like (pretty basic without the base constructor checks)
let object = Object.create(Object.getPrototypeOf(source))
Object.assign(object, source)

let symbols = Object.getOwnPropertySymbols(source)
symbols.forEach(key => object[key] = source[key])

return object

@HenriqueLimas @evilsoft I think we may have made a mistake on this one when we did head. I am thinking that the behavior we started with in head is wrong. I'm thinking that it should be if a generator function is passed in, then we will invoke it and iterate, however if you pass in the result of a generator call then your expectation is that you want it iterated over.
What do you guys think?


Re-Think Transform Component Implementation

Summary
The current implementation of the Transform component is quite bloated and not as fast as a component used this often should be. A brief attempt at simplifying it was made, but yielded no results. Re-approach the topic by rethinking how a Transform component should be done if there wasn't one already.
Analysis

Implement lots of unit tests for Transform before beginning any implementation.
Is deriveAngle used anywhere? Remove it otherwise.
Can transformation change events be removed?

Their main purpose is ensuring safe interaction between RigidBody and Transform so they always remain synced up.
With the implementation of deterministic component update order, this can potentially be solved differently.

Can velocity values be removed?

It was established during #576 that a distinction between moving to X and teleporting to X is required, so the answer is generally "no".
However, an alternative implementation using last / current values would be viable, if that was preferable for some reason.

Can the tempVel accumulation values be removed?

Depends on the exact outcome of velocity value removal or adjustment, but potentially yes.
Their main purpose was to ensure stable velocity values over the current frame as different objects adjust Transform position in any order.
With the implementation of deterministic component update order, this might no longer be necessary.

Can absolute values be removed?

They're derivative and can always be calculated from relative values plus object hierarchy.
This would save object size / memory, but would require calculating them on access.
If it's fast enough, it might still be worth it. If it isn't, keep them.

Is it possible to make Transform no longer implement ICmpUpdatable?

Probably not, as long as there are velocity values to be maintained.

If not, is there any way to adopt an array-of-structs approach internally without public API changing in any way?
With an updated, simplified Transform implementation, make sure to fix parent rotation velocity behavior and reactivate their tests.

Progress

Started working on this is the feature/3.0/refactor-transform branch.
Removed DeriveAngle without replacement, as it was a 0.1% feature that can be easily added with a custom Component.
Removed EventTransformChanged without replacement for the same reason. Rewrote RigidBody update-from-Transform code to work without relying on the now removed event.
Removed change flags, as they were no longer necessary.
Attempted to simplify velocity calculations to operate in world space only, but reverted because derived velocities wouldn't work that way.
Attempted to move velocity calculations into a separate VelocityTracker component, but reverted for complexity reasons.

Immediate ToDo

Consider simplifying velocity calculations into using a "last pos" / "current pos" form, and velocity information into world space only.

Movement doesn't update last values, generating velocity.
Teleportation updates last values, resetting velocity to zero.
This will lose pre-teleport velocity information, but is that really an issue?
If it is, teleport updates could still update last values to match, so velocity is retained.

Investigate whether ICmpUpdatable can be removed from Transform.
Investigate removing absolute values from Transform.

Progress

Adopted a "last pos" / "current pos" velocity calculation approach and restricted it to using world space values only, removing all local space velocity calculation fields.
Velocity values are no longer serialized.
Added and updated some Transform unit tests.

Immediate ToDo

Consider renaming all "RelativeXY" style properties and methods with "LocalXY".
Write unit tests for transform changes when switching object parents.
Investigate removing absolute values from Transform.

Watch out for parent change operations in code and editor. They're currently implemented so that absolute transform values remain, while relative values are recalculated. This is no longer possible within Transform when there are no fields for absolute values.
Editor code will need to be adjusted to explicitly retain world space transform values.
Introducing some API to do the same via code would be nice.

Investigate whether ICmpUpdatable can be removed from Transform.

The only blocker for this is velocity calculation.
After velocity calculations have now been simplified a lot, reconsider moving them into a separate VelocityTracker component.

Progress

Renamed public Transform API to match the new "Local" / "World" space terminology.
Updated Transform XML comments to match the renamed API, but also clarified some members that didn't have a good description before.
Switched the editor default from editing world space values to editing local space values.
Added a unit test to check for Transform behavior when switching parent objects.

Immediate ToDo

Investigate removing absolute values from Transform.

Watch out for parent change operations in code and editor. They're currently implemented so that absolute transform values remain, while relative values are recalculated. This is no longer possible within Transform when there are no fields for absolute values.
Editor code will need to be adjusted to explicitly retain world space transform values.
Introducing some API to do the same via code would be nice.

Investigate whether ICmpUpdatable can be removed from Transform.

The only blocker for this is velocity calculation.
After velocity calculations have now been simplified a lot, reconsider moving them into a separate VelocityTracker component.

Progress

Started with an experimental VelocityTracker implementation and moved all velocity related code from Transform into it. Transform is no longer an updatable component.
Adjusted all code that relied on Transform velocity to instead use or requrie a VelocityTracker.
Adjusted all sample projects (except DualStickSpaceShooter) to have VelocityTracker components where they are required.
Found a few bugs after the recent Transform changes, to be fixed before proceeding.

Immediate ToDo

Fix RigidBody behaviour in certain parent / child scenarios. Can be reproduced in the physics sample, check out Pulley-, Friction-, Distance- or AngleJoint sample scenes.
Fix Prefab changelists with regard to Transform values. Can be reproduced in the DualStickSpaceShooter and Steering samples.
After the above fixes, adjust the DualStickSpaceShooter main scene to use VelocityTracker where needed.
Adjust the Scene View icon choosing algorithm to take a hint from the object name too, so "Camera" objects don't look like a microphone, because "SoundListener" happens to have the larger dependency hierarchy.
Investigate removing absolute values from Transform, or (if keeping them) not serializing absolute values anymore.

Watch out for parent change operations in code and editor. They're currently implemented so that absolute transform values remain, while relative values are recalculated. This is no longer possible within Transform when there are no fields for absolute values.
Editor code will need to be adjusted to explicitly retain world space transform values.
Introducing some API to do the same via code would be nice.

Progress

Fixed Prefab changelist entries that were still referring to the old RelativeXY naming.
Fixed DualStickSpaceShooter sound listener not having a VelocityTracker.
Added an icon and XML docs for the VelocityTracker component.
Adjusted the Scene View to take object naming into account when choosing a representative component icon.

Immediate ToDo

Fix RigidBody behaviour in certain parent / child scenarios. Can be reproduced in the physics sample, check out Pulley-, Friction-, Distance- or AngleJoint sample scenes.
Investigate removing absolute values from Transform, or (if keeping them) not serializing absolute values anymore.

Watch out for parent change operations in code and editor. They're currently implemented so that absolute transform values remain, while relative values are recalculated. This is no longer possible within Transform when there are no fields for absolute values.
Editor code will need to be adjusted to explicitly retain world space transform values.
Introducing some API to do the same via code would be nice.

Progress

Adjusted Transform.IgnoreParent implementation so it matches behavior when there actually is no parent. Local transform properties will return and accept world values while IgnoreParent is active, as they would when there was no parent.
Added a new test case to verify IgnoreParent behavior.
Minor bugfix in RigidBody to avoid erratic update-from-Transform calls due to rounding errors when comparing last to current transform values. There still seems to be some problem with regard to angle handling.

Immediate ToDo

Fix RigidBody rotation behavior in certain parent / child scenarios. Can be reproduced in the physics sample, check out AngleJoint sample scene.
Verify that the new IgnoreParent behavior doesn't introduce new bugs. Check movement-related sample projects:

All physics sample scenes.
DualStickSpaceShooter
FlapOrDie
Steering
AudioHandling
CameraController

Investigate removing absolute values from Transform, or (if keeping them) not serializing absolute values anymore.

Watch out for parent change operations in code and editor. They're currently implemented so that absolute transform values remain, while relative values are recalculated. This is no longer possible within Transform when there are no fields for absolute values.
Editor code will need to be adjusted to explicitly retain world space transform values.
Introducing some API to do the same via code would be nice.

Do a full benchmark run before / after to see the perf impact of the cleanup.

Progress

Identified the RigidBody problem as a bug in MathF.CircularDist, which was introduced in a recent optimization.
Fixed the above bug, all physics samples now work as expected.
Checked all movement-related sample project (listed above) and verified that they all work as expected with the new IgnoreParent behavior.

Immediate ToDo

Investigate removing absolute values from Transform, or (if keeping them) not serializing absolute values anymore.

Watch out for parent change operations in code and editor. They're currently implemented so that absolute transform values remain, while relative values are recalculated. This is no longer possible within Transform when there are no fields for absolute values.
Editor code will need to be adjusted to explicitly retain world space transform values.
Introducing some API to do the same via code would be nice.

Do a full benchmark run before / after to see the perf impact of the cleanup.

Thinking a bit more about the removal of world space transform fields:
Remove Abs Fields Completely

Every call to world space value properties will require a recalculate.
It will be fast, but stack up quickly in parent-child hierarchies. If there are 6 hops from object to root, a single get of the position property will require to recalculate the full world transform of all six objects.
With this in mind, there definitely should be a cached world space value for performance reasons.

Keep Abs Fields, Don't Serialize Them

As discussed above, this would require an "abs available" flag, so initialization out of order will work properly.
Shrinks serialized data, but adds slightly more load to runtime data and increases init complexity.

Keep Abs Fields As-Is

No changes necessary.
Probably the best course of action, unless there is a more serious reason to remove the world space fields than minimalism.

Progress

Did a full benchmark run to compare before / after:

BenchmarkReportBefore601.txt
BenchmarkTestReportAfter601.txt
Average frame times went down between 1.4 and 2.0 ms for 10k objects. Rendering and update of 10k sprite renderers with varying materials now under 7 ms per frame.

Merged back to develop-3.0


bee on bee example as part of USDA's Kevin Hackett in iDigBio's Envisioning a Biological Collections Action Center Webinar Series

also see plants "would benefit from better integration across collections"


Associate interactives with projects.[#94148910]

I've noticed locally that if I assign interactive to project, it disappears from search results (when no project filters are selected). I can see this interactive only if I filter search results by this project. Such behavior is different from other material types. However I'm not sure why. Can you replicate this?

@pjanik Thanks, We are not able to replicate the case you mentioned. Seems to be working fine on our local. Did you try re-indexing the solr for Interactive model? Old interactives might need re indexing.

Sorry folks, actually the interactive wasn't disappearing - it was only reordered in search results (but I had 1400 interactives imported, so the first impression was quite similar).


[Proposal]: Speech to Text WTH

Topic
The Speech to Text WTH hack will help hackers understand how to use Azure's Cognitive Speech services. The hack will take call center data and navigate through challenges to learn the tools to transcribe the audio files, improve the accuracy of these transcriptions, determine the intent of the calls, assess sentiment and PII redaction. Finally, we will be able to run the model in their own environment.
Abstract/Learning Objectives

Data Cleaning + Preprocess Ground Truth Files
Train a standard model
Train a custom acoustic model
Test and evaluate the accuracy of the models
Deploy and containerize the models

Delivery Date
3/10/23
Authors
Lauren Tran , GitHub: laurentran

Jason Virtue, GitHub: DataSciNAll

Israel Ekpo, GitHub: izzymsft

Ellie Nosrat, GitHub: EllieNosrat

Other
Natural Language Processing is a common hero offering by Microsoft. Documentation is limited on how to setup and process audio data (unstructured) and this WTH will help developer readiness. This will be the first WTH on NLP.
Code of Conduct

[X] I agree to follow this project's Code of Conduct

WTH V-Team has met with @devanshithakar12 and the authors are working on this hack.


Fixed code generation for unions with fields whose types are the same after type erasure

LGTM other than minor comments

I spent some time learning how swift code generation works and I (almost) understand what is going on here. Given that you have passing test for your specific problem we should proceed with this.

Yeah, stringtemplate can be a little complicated to understand :)

Could somebody merge this (I don't have write access) and cut a new release ?


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-archive-test-source-version-target/pull/164 is merged into live branch.
Auto archive content to https://github.com/opstest2/docs-archive-test-source-version-target.git

Docs Build status updates of commit 4742f91:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

versioningArchiveSourceFolder/TOC.yml
:white_check_mark:Succeeded
View (sql-server-2014 || azuresqldb-current || azuresqldb-mi-current || azure-sqldw-latest || >= aps-pdw-2016 || >= sql-server-2016 || >= sql-server-linux-2017 || sql-server-previousversions || sqlallproducts-allversions)

versioningArchiveSourceFolder/docfx.json
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


This example is very confusing

This example is very confusing.

Originally posted by @blackfalcon in https://github.com/AlaskaAirlines/auro-combobox/issues/90#issuecomment-1259007275

https://github.com/AlaskaAirlines/auro-combobox/pull/90


How is Llava quantized ?

In autoawq, do we only quantize the LLM part of Llava or do we also quantize the ViT ? Can we add support for quantizing the vision models like ViT or SIGLIP?

@Abhranta Hi, there is AutoGPTQ :
from transformers import AutoTokenizer, TextGenerationPipeline
from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig
import logging

logging.basicConfig(
    format="%(asctime)s %(levelname)s [%(name)s] %(message)s", level=logging.INFO, datefmt="%Y-%m-%d %H:%M:%S"
)

"""
Download https://huggingface.co/liuhaotian/llava-llama-2-13b-chat-lightning-preview to local
Make following edits to the config.json
LlavaLlamaForCausalLM -> LlamaForCausalLM
"model_type": "llava" -> "llama"
"""
pretrained_model_dir = "./checkpoints/llava-llama-2-13b-chat-lightning-preview"

quantized_model_dir = "llava-llama-2-13b-chat-lightning-4bit-128g"

tokenizer = AutoTokenizer.from_pretrained(pretrained_model_dir, use_fast=True)
examples = [
    tokenizer(
        "auto-gptq is an easy-to-use model quantization library with user-friendly apis, based on GPTQ algorithm."
    )
]

quantize_config = BaseQuantizeConfig(
    bits=4,  # quantize model to 4-bit
    group_size=128,  # it is recommended to set the value to 128
    desc_act=False,  # set to False can significantly speed up inference but the perplexity may slightly bad
)

# load un-quantized model, by default, the model will always be loaded into CPU memory
model = AutoGPTQForCausalLM.from_pretrained(pretrained_model_dir, quantize_config)

# quantize model, the examples should be list of dict whose keys can only be "input_ids" and "attention_mask"
model.quantize(examples)

# save quantized model using safetensors
model.save_quantized(quantized_model_dir, use_safetensors=True)

Does this quantize only the LLM or the ViT too ?

Hi @sailfish009, is there no native support for LLava based models. The solution you suggested seems very hacky:( I was also wondering if the quantization happens to the vision encoder too?

@pratyush0599  @Abhranta  yes it is language model only.
for vision model:

How to Fine-Tune LLaVA on a Custom Dataset
autoawq example
Mastering Multimodal AI with LLaVA-NeXT and Advanced Quantization Techniques (NNCF)
Advancing Multimodal Large Language Models with Quantization-Aware Scale Learning for Efficient Adaptation
Activation-aware Weight Quantization for LLM Compression and Acceleration
Awesome list for LLM quantization

Hope this helps!


Deploy information website. Hard deadline: 05/04

Colombian referendum website: http://plebiscitodigital.co/
@santisiri  wheres the code for that?
What should the domain be? Maybe something like "eleccioneslegitimas"
We'll have a video by then... I will work on the content.

Something like 'eleccioneslegitimas' is interesting but I think it's too prone to cause confusion, just because 'elecciones' comes from 'to elect' and hence people could come to site already thinking someone is going to be elected. Some ideas thinking out loud:
venezuelavota.ve
votavenezuela.ve
votavz.la
plebiscitodigital.ve
venezuelademocratica.ve
venezuelalibre.ve

We should aim to have a basic website ready by the time we publish Medium article, so we can link it in the article and point people to it. We can add video to the website once it's ready, don't think we need to wait for the video.
@santisiri let's sync about the code for http://plebiscitodigital.co/ - I can take care of that

i like the simple approach of http://venzuela.democracy.earth
@medied the landing for plebiscito digital i have it on http://webflow.com, create a user there and i'll send it to you.

@santisiri this is me - https://webflow.com/medied
I guess we could have venezuela.democracy.earth redirect to the webflow site until we 'open up' parallel voting, and while parallel voting period is active the info site could be found at a different url like info-venezuela.democracy.earth. Is something like that what you were thinking of? I like that simplicity.

@medied @paulamlb @santisiri  Maybe this is a discussion out of the scope of this github issue, however, my 2 satoshis: it is elections what's gonna happen on 20th of May, legitimate or not. Shouldn't we allow people to vote in the way they want to vote? (to select a president, free of coercion, in a safe and secure manner and for the candidates they want to vote). We could add multiple "extra questions" as well to the vote, but I like the idea of replicating the election day with the "guarantees" Venezuelans deserve.

Hi Alessandro! @aecc Can you explicit what kind of guarantees?

hi @paulamlb, the ones I just mentioned: "to select a president, free of coercion, in a safe and secure manner and for the candidates they want to vote". I'm sure you are aware that one of the most important issues why people are reluctant to vote is because some of the most important leaders in Venezuela are actually banned from the election. This could be a way where people who want to express they support for them can do it. My whole point is that exactly what people want to do is to be able to "elect" someone else for the government and we should give them that opportunity.

@medied here's all the code for the landing we did back then: https://www.dropbox.com/s/r35eioge7nxgm5e/colombiaearth.webflow.zip?dl=0

Yea let's continue that conversation in #287

@medied were you able to get that?

http://www.venezuelaproponecambio.com/


Large image with thin lines, all black.

Hello LingDong-,
I'm amazed by the speed of this algorithm. Great work! One issue I encountered is that for large images with quite thin white lines, I end up with no vectors at all. I used csize=1 and many iterations, but to no avail.
Could you help me with that?
Thanks, Frank
UPDATE: The algorithm seems to be non-robust against "artifacts". For reference, this is the image: https://gyazo.com/c11c5dabd97d81b70283cec449a78177
If you remove the artifacts on the right, it works. If you don't, all black.

Hi @fgabel
Thanks for the issue. What language port are you using? I just tested your image in Java and Python(swig) ports, and it seems to be working just fine with the "artifacts":

This was the python two-liner I used to make the above svg:
im = cv2.imread("input.png")
open('output.svg','w').write(
  f'<svg xmlns="http://www.w3.org/2000/svg" width="{im.shape[1]}" height="{im.shape[0]}"><path stroke="red" fill="none" d="'+" ".join(
  ["M"+" ".join([f'{x[0]},{x[1]}' for x in y]) for y in trace_skeleton.from_numpy(im)]
)+'"/></svg>')


Cannot build 1.6.1 from source

Mismatched version with vendor module:
go: inconsistent vendoring in /builddir/cointop-1.6.1:
<EMAIL_ADDRESS>is explicitly required in go.mod, but vendor/modules.txt indicates<EMAIL_ADDRESS>
Build with go get github.com/miguelmota/cointop or by manually changing the specified module version:
# github.com/miguelmota/cointop/pkg/api/impl/coinmarketcap
.local/share/go/src/github.com/miguelmota/cointop/pkg/api/impl/coinmarketcap/coinmarketcap.go:161:3: unknown field 'Slug' in struct literal of type "github.com/miguelmota/cointop/vendor/github.com/miguelmota/go-coinmarketcap/pro/v1".InfoOptions

@FollieHiyuki Thanks for the report! Re-ran go mod vendor, can you try again?

Thank you. It builds correctly now.
Can you make a release just for the sake of packaging? That would be nice.

@FollieHiyuki Yes, just published v1.6.2

Thanks. It works on my system.
@miguelmota I think we can close this issue now.


Fix up specification of BBCH growth stage codes

Currently called "bbch_code" should be "bbch_growth_stage"
Currently specified with gs prefix. This should be made more explicit in the description or with examples, or the gs prefix should be removed.
How do we want to allow a range or several BBCH growth stages to be specified? The growth stage is intended to be applied to a single plant, not a plantation.

From our last discussion of this with Michael, I was under the impression that we want to stick with broader approximate growth stages for the agcontext.
I mean I can see how it might be super useful to have image level growth stage information, but that level of annotation doesn't seem to be a target for now (or any time soon)

Yes, I agree that we should not be annotating per image. So the question being regarded in this issue is how to specify "broader approximate growth stages".
Also, might be good for the name to clarify that this is the crop growth stage, not weed.

Current implementation for growth stage entry uses a range slider.
An alternative design is the following. The challenge is getting a widget that provides for multi-valued entry but with a range constraint; also hard is translating input range between the different description granularities:

A further alternative might be like the Wikipedia commit range selector: with a radio box for min and max growth stage.
When searching, we should be able to filter on min and max growth stages.


Sometimes image data is None

For some reason image data is coming out as None when I try and plot it, for some images.
However a ratemap made of the same image seems to work fine?

I'm an idiot, the view() method of the Image class was using self._data, rather than the data property, it meant that the files hadn't necessarily been read in.


Clean up GitHub releases and tags

We link to GitHub releases on https://nixos.org/nixpkgs/download.html now. (last section)
So i would like to have a clean list of just official releases. (to improve user experience and be more professional)
So i suggest to remove tags and GitHub releases like these:

backups/* (https://github.com/NixOS/nixpkgs/releases/tag/backups%2Fstdenv-updates%4034093)
program@version https://github.com/NixOS/nixpkgs/releases/tag/black%402016-05-13
*-beta (?) (https://github.com/NixOS/nixpkgs/releases/tag/15.09-beta)
https://github.com/NixOS/nixpkgs/releases/tag/last-glibc-2.13

The question is, are these still useful for anyone or where they just temporary tags?
@kamilchm @domenkozar

I want to not that removing published tags from a repository is considered bad. Also, because people still have push access to this repo (AFAIK), they might re-appear anyways!

I think *-beta tags are important milestones in the release process

https://nixos.org/nixos/manual/index.html#at-beta-release-time

So we shouldn't remove those at least.

I don't think this is relevant anymore.

the repo and github project is still a mess. nothing seem to have been cleaned up. so the decision is to keep it that way?

We don't link the releases on the home page anymore. If you think this is still important, feel free to re-open.
I'm just going through stale issues that have seen no progress or interest for 3 years.


classes and functions need documentation

Currently almost no classes or functions are documented. All classes and functions should be completely documented, preferably according to PEP8 standard.
Someone please do this :)

Majority is documented. However, needs more testing. So maybe create new issue to include documentation and increase test coverage


fix supervisor spec for non dynamic modules

a release upgrade on a vm running cowboy where any other appup includes an {update, Mod, {advanced, Extra}} instruction will hang forever due to these child specs being wrong. I've had to patch supervisor to make it possible for our api's app to release upgrade. I had a bug in my own supervision tree too, so I was having to do that anyway :(
The gen_servers should be [Mod] and the non gen_server needs to be [] since there is no callback to handle this.

Thanks!


Plugin not working on startup

OS : Windows 11 22H2
Stream deck version : 6.5.2
On startup, the plugin doesn't work.
When i press the key, nothing happens.
I have to open Stream deck on Windows, manually generate a picture by clicking the "Generate" button.
After that the plugin works fine until the next startup.
(The same thing happens if i exit and relaunch the app, my prompt is not saved)

Oh dang, that's a nasty bug. Thank you for submitting! I'll get working on a solution


Scan crash with invalid file

Describe the bug
Having a png with a huge exif chunk [1] (judging by the filename, I've not analyzed the actual contents) in the scan path will crash the app during scanning shortly after starting it.
To Reproduce
Steps to reproduce the behavior:

Put the file in the scan path (in my case Documents/.../huge_eXIf_chunk.png)

Expected behavior
Maybe skip scanning the file and mark it as broken, if that functionality is implemented?
System information and logs:
Package: deckers.thibault.aves.libre
Aves version: 1.11.5-libre, build 12402
Flutter: stable 3.22.2
Android version: 13, API 33
Error reporting: false
07-17 16:48:40.894 22866 23266 I ault.aves.libre: Starting a blocking GC Alloc
07-17 16:48:40.945 22866 23266 I ault.aves.libre: Alloc concurrent copying GC freed 2548(184KB) AllocSpace objects, 3(236KB) LOS objects, 68% free, 5701KB/17MB, paused 322us,162us total 51.133ms
07-17 16:48:40.946 22866 23266 W ault.aves.libre: Throwing OutOfMemoryError "Failed to allocate a<PHONE_NUMBER> byte allocation with 12566528 free bytes and 186MB until OOM, target footprint 18421304, growth limit 201326592" (VmSize 19637712 kB)
07-17 16:48:40.949 22866 23266 E AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-6
07-17 16:48:40.949 22866 23266 E AndroidRuntime: Process: deckers.thibault.aves.libre, PID: 22866
07-17 16:48:40.949 22866 23266 E AndroidRuntime: java.lang.OutOfMemoryError: Failed to allocate a<PHONE_NUMBER> byte allocation with 12566528 free bytes and 186MB until OOM, target footprint 18421304, growth limit 201326592
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at j0.a.r(SourceFile:92)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at j0.a.U(SourceFile:126)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at j0.a.<init>(SourceFile:3)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at j0.a.<init>(SourceFile:2)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at j4.e.f(SourceFile:31)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at j4.e.i(SourceFile:53)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at k4.s.U(SourceFile:1)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at k4.s.V(SourceFile:36)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at k4.s.T(SourceFile:142)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at d4.w.i(SourceFile:23)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at d4.w.c(SourceFile:1)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at d4.w$c.invokeSuspend(SourceFile:13)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at X4.a.resumeWith(SourceFile:12)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at o5.P.run(SourceFile:99)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at t5.n$a.run(SourceFile:4)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at v5.k.run(SourceFile:3)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at v5.a.J(SourceFile:1)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at v5.a$c.d(SourceFile:15)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at v5.a$c.p(SourceFile:29)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        at v5.a$c.run(SourceFile:1)
07-17 16:48:40.949 22866 23266 E AndroidRuntime:        Suppressed: t5.j: [E0{Cancelling}@7ed1d6d, Dispatchers.IO]
07-17 16:48:40.977 22866 23266 I Process : Sending signal. PID: 22866 SIG: 9

Additional context
The other "crashers" in the same directory as [1] might also be interesting to check.
[1] https://github.com/pnggroup/libpng/blob/libpng16/contrib/testpngs/crashers/huge_eXIf_chunk.png

Nice, thanks for the report and the sample!


Feature Request: add a /mods page that lists all mods

This should list all of the mods (see !mods), with a hyperlink/embed to the Steam workshop, and a short blurb (~1 sentence) about why Baalor uses it. This will have !mods link to it

Closed via #89


Archboard feedback on DPG generation of pageables

Based on feedback highlighted in #29331, the archboard gave feedback on pageables. Currently, DPG is generating methodes like:
public virtual Pageable<BinaryData> GetProjects(int? top = null, int? skip = null, int? maxpagesize = null, RequestContext context = null);

Based on the archboard conversation:

[ ] top should be size in .NET (or "Size" as a property; more on that...).
[ ] Size (nee top) and Skip should be moved to properties, but @tg-msft may need to fill in the desire here. He thought we already had these on pages or something, but I can find no evidence of that in Azure.Core or Azure.Storage.*.
[ ] maxpagesize should not be exposed directly, and instead should be populated from Pageable<T>.AsPage()'s pageSizeHint as shown here.

We will first take a look at the first item.

@heaths, I don't quite understand the second item, so could you help to provide more details?  thanks

I really doubt what's the value of this naming change?
top + skip is a well-known parameter pair for pageable REST API, and others like limit + offset, I think all these are acceptable because it can represent the meaning clearly, no matter which language.

My concern is that there are multiple combinations of pagination parameters. Shall we convert all of them? Then we could miss some of them.
If the requirement is not restricted to .Net SDK, then why not we apply it to swagger/cadl so that every language SDK can benefit.

I really doubt what's the value of this naming change? top + skip is a well-known parameter pair for pageable REST API, and others like limit + offset, I think all these are acceptable because it can represent the meaning clearly, no matter which language.

This was feedback from the architects @KrzysztofCwalina and @tg-msft. This is something they wanted for all LROs in .NET.


Memory leak when calling cron_next

At this moment I really have no idea where it could be.
I have narrowed it down to calling the cron_next. The used cron_expr is every time the same.
I'm running this code on an ESP8266, using the esp8266/Arduino platform (2.6.3)
The amount the free heap decreases is depending on the expression complexity when calling cron_next.
For example

* * * * * * decreases the heap by 64 bytes.
*/2 * * * * * decreases the heap by 80 bytes.

Sometimes it is also decreased by 112 bytes.

But as can be seen in the code segment below, the sampled free memory is just wrapping the call to cron_next.
Part of my code calling the function and logging the heap decrease:
    int32_t freeHeapStart = ESP.getFreeHeap();

    time_t res = P081_data->get_cron_next(last);

    int32_t freeHeapEnd = ESP.getFreeHeap();

    if (freeHeapEnd < freeHeapStart) {
      String log = F("Cron: Free Heap Decreased: ");
      log += String(freeHeapStart - freeHeapEnd);
      log += F(" (");
      log += freeHeapStart;
      log += F(" -> ");
      log += freeHeapEnd;
      addLog(LOG_LEVEL_INFO, log);
    }

The object wrapper I made to keep the expression and the calls to this library all in one place:
struct P081_data_struct : public PluginTaskData_base {
  P081_data_struct(const String& expression)
  {
    const char *error;

    memset(&_expr, 0, sizeof(_expr));
    cron_parse_expr(expression.c_str(), &_expr, &error);

    if (!error) {
      _initialized = true;
    } else {
      _error = String(error);
    }
  }

  ~P081_data_struct() {}

  bool isInitialized() {
    return _initialized;
  }

  bool hasError(String& error) {
    if (_initialized) { return false; }
    error = _error;
    return true;
  }

  time_t get_cron_next(time_t date) {
    if (!_initialized) { return CRON_INVALID_INSTANT; }
    return cron_next((cron_expr *)&_expr, date);
  }

  time_t get_cron_prev(time_t date) {
    if (!_initialized) { return CRON_INVALID_INSTANT; }
    return cron_prev((cron_expr *)&_expr, date);
  }

private:

  String    _error;
  cron_expr _expr;
  bool      _initialized = false;
};

Like I said, I really have not a clue where this memory leak should come from. It could also be something specific to esp8266/Arduino or even that I'm doing things completely wrong.

Hi, thanks for the report! Sorry, I don't have cycles to dig this (and also don't have ESP dev env), if you find the cause for this - I will happily accept a PR.

Thanks for the notice.
Could you maybe still spare some cycles to see if I did something very obviously wrong in the code I posted here?
In the mean time I am testing against several esp8266/Arduino core lib versions, just to make sure it is happening in all versions and if not, whether it may be a bug in their code.

Found the culprit, but no idea yet how to patch it.
If I define CRON_USE_LOCAL_TIME then there is no memory leak.
So it must be in this section:
https://github.com/staticlibs/ccronexpr/blob/2fa16462a361525a8762e81b586ccd85e261c441/ccronexpr.c#L106-L124

Hi there,
the issue is with the function setenv in the piece of code @TD-er has just mentioned.
But the reason is really tricky, I guess here is well explained.
Furthermore, why is there this piece of code?
if (tz)
         tz = strdup(tz);

strdup makes a copy of tz, I suppose this could be another leak.
What do you think?

M, I cannot see obvious flaws in this piece of code. It is obviously not a nice way to do timegm (it may be better to avoid setenv() if possible) - it came in with #24 . If there exists better way to do timegm on ESP - I will happily accept a PR.
On strdup() call - I think it is necessary, original tz value may be overwritten after setenv() call - it is valid only before setenv(). It also seems to be freed unconditionally (except the same check as for strdup()), so doesn't look like a leak.

I'd like to point you to https://github.com/espressif/esp-idf/issues/3046 - might be actual cause.
But also beware: I'm not sure how temporarily changing TZ on dual-core ESP32 will behave. It might return invalid values, or even crash... Or work without problems. I did not dig so deep yet. But generally calling setenv after program init is always dangerous. Finding better way would be great, but I don't know about any.

Hello there,
we got a similar issue.
TZ=UTC+0
0x2004B950  00000000 00000019 553D5A54 302B4354 2004C300 2004C315 00000018 00000011  ........TZ=UTC+0.Ã. .Ã. ........
0x2004B970  553D5A54 302B4354 3E333000 00000011 553D5A54 302B4354 3E384600 00000011  TZ=UTC+0.03>....TZ=UTC+0.F8>....
0x2004B990  553D5A54 302B4354 3E353100 00000011 553D5A54 302B4354 3E463100 00000011  TZ=UTC+0.15>....TZ=UTC+0.1F>....
0x2004B9B0  553D5A54 302B4354 3E333000 00000011 553D5A54 302B4354 3E373100 00000011  TZ=UTC+0.03>....TZ=UTC+0.17>....
0x2004B9D0  553D5A54 302B4354 3E443200 00000019 553D5A54 302B4354 334A6500 78744874  TZ=UTC+0.2D>....TZ=UTC+0.eJ3tHtx
0x2004B9F0  00000018 00000011 553D5A54 302B4354 FFFFFF00 00000011 553D5A54 302B4354  ........TZ=UTC+0.ÿÿÿ....TZ=UTC+0
0x2004BA10  322E3500 00000011 553D5A54 302B4354 81F9FD00 00000019 553D5A54 302B4354  .5.2....TZ=UTC+0.ýù.....TZ=UTC+0

Until now there is no proof that those strings are still allocated, but due to the out of memory hard faults it seems likely.
I could not spot an obvious flaw in the timegm implementation. The usage of strdup is suspicious (in contrast to the example shown at https://linux.die.net/man/3/timegm), but the allocated string is freed afterwards.

Hi, I don't know about STM32 libraries, but cause might be the same: leak is not caused by timegm or strdup, but by setenv.
If you can, use local time for cron, and this problem will not appear (problematic code won't be used).

Hello,
i investigated the issue a bit. It turned out that in my case the TZ environment variable was not set initially. This causes the variable to be toggling between UTC+0 and being unset (unsetenv("TZ")). Eventually this is an variant of the bug that was described here: https://lists.freebsd.org/pipermail/freebsd-bugs/2006-July/019280.html
It seems that setting the TZ variable initially to some value (e.g. UTC+0) is another workaround for the issue:
setenv("TZ", "UTC+0", 1);
tzset();

Hello,
"cron next" calls "cron mktime" twice, which in turn calls "cron mktime gm". The time zone is obviously set with each call with "getenv" and "setenv". I don't think this is nice, because according to my understanding, something like this is an initialization that belongs once at the beginning of a program. However, this part leads to the memory leak observed here. If the setting of the time zone is commented out (see below), "cron next" works without any disadvantages that I can see and without a memory leak!

This project is no longer maintained, see its updated and extended fork in exander77/supertinycron repo, closing the issue to archive the repo.


Feat(Music): Add autoplay

What does this mean exactly? Considering that it starts playing automatically when you add a song.
Is this issue still needed?

When autoplay is on and the queue finishes, Skyra plays songs related to the last one, similarly to how YouTube's "Play Next" works.

Hey there @kyranet , here is how you can implement autoplay system.

When the track ends you need the information of the track that ends. With that information you get the identifier (ID) of the song

2.Then you will create a mix from YouTube, with this link  https://www.youtube.com/watch?v=${identifier}&list=RD${identifier};

Search it using the lavalink library and add the second song from the mix to the queue. Because the first song would be the same one which you played before

When the song ends you will have repeat the steps again.

Example:
Song link : https://www.youtube.com/watch?v=Xgs99T6CKPg
Identifier: Xgs99T6CKPg
Mix Link: https://www.youtube.com/watch?v=Xgs99T6CKPg&list=RDXgs99T6CKPg
Result:


Add one or more procmacros crates

I'm specifically interested in the #[ram] and #[interrupt] attributes that are generally implemented by the procmacros crate. An example of this can be seen in the esp32-hal repository.
I imagine this may be tricky to get working for all chips, so it's possible more than one implementation may be necessary. I have not looked into this enough to know whether or not that is the case at this time.

I plan on looking into the ram macro. Seems the ESP32C3 linker scripts need some changes. I'd also like to look into an easy way to support both, direct-boot and non-direct-boot.
The interrupt macro probable makes more sense together with the general implementation of interrupt support

Closed by #6 and #10


Cherry-pick fix for #10367 to release-15.09.

Building config.system.build.isoImage would fail with the following
error using the channel:
ln: failed to create symbolic link
'/nix/store/zz0hzi5imrg4927v6f8mv281qs6v6pbq-nixos-16.03pre69762.e916273/nixos/nixpkgs/.': File exists
The fix skips symlink as it already exists if the channel
nixpkgs copy is used.
Fixes #10367
(cherry picked from commit 75284b09e16f3168abc5273a9ed28d1fb4b33adf by
falsifian)

@domenkozar PTAL.
I added the work-in-progress label only because I haven't finished testing it (still building it now). Go ahead and merge it if you can verify it works, or you're feeling daring :-) Otherwise I hope to try the iso tomorrow morning (UTC-8).

(Tagged @domenkozar since they mentioned cherry-picking it in #10367.)

Thanks. And it works.


Are the Scanning Directions in Figure 4 of the paper mislabeled?

Hello,
I noticed that the Scanning Directions in Figure 4 might be mislabeled. Could you please confirm if this is the case?

Yes, thanks for your kind reminder. We will fix this in revision!


[Migration] Email Templates has been changed for account lock

WSO2 Identity Server 5.10.0 uses separate email templates for notifying,

Account locking by exceeding Maximum Failed Login Attempts
Account unlocking by exceeding Account Unlock Time

WSO2 Identity Server 5.10.0 uses separate email templates for notifying,

Account locking by administrator
Account unlocking by administrator

As per the fix for issue : wso2/product-is#6778
Please refer the documentation for instructions : https://github.com/wso2/docs-is/pull/862
Suggested Labels : Migration/5.10

documented at https://is.docs.wso2.com/en/next/setup/migrating-what-has-changed/#email-templates-has-been-changed-for-account-lock


Use preload="auto" on videos that expect to get the canplay event

Since the default state is metadata, there's no guarantee that the
videos will reach anything beyond HAVE_CURRENT_DATA, but the canplay
event is fired when reaching HAVE_FUTURE_DATA.

Ping @remy ? This still causes the demo to not work at all in Opera...


Base.associations should be completely private

Base.associations is not being used outside of Base, and should
not be exposed.

@wai-procore @AllPurposeName @dlcarter @adamwells want to give your code review? This small change so =D


How can I send weight to PayPal through the minicart so it can be used to calculate shipping?

Weight is set okay(see bottom image, weight set at 1.25), but when the cart sends to paypal it isn't there(see image just below, no weight in the cart), and I just get shipping calculations of 0. So how do I get the weight to be passed through to PayPal? Her is the link where all of this is happening:
http://sundanceclayworks.com/shop/jewelryorg/jewelryorg?2

Thanks

Using the latest version of minicart, this is still an issue. However, here is the function I created to automatically set the correct "weight_cart" attribute needed on the form, upon pressing checkout.
Note: this requires setting the hidden input form element with name "weight" to each of your products.
Hopefully this helps others.
paypal.minicart.cart.on('checkout', updateCartWeight);

function updateCartWeight()
{
    var weight = 0;
    var form = $('#PPMiniCart form');

    for(var i = 0, weight = 0, item, items = paypal.minicart.cart.items(); i < items.length; i++)
    {
      item = items[i].get();

      for(var key in item)
      {
        if (key.indexOf('weight') >= 0)
        {
            weight += (parseFloat(item[key])*parseInt(item.quantity));
        }
      }
    }

    weight = weight.toFixed(1);

    if (form.children('input[name="weight_cart"]').length > 0)
    {
        form.children('input[name="weight_cart"]').val(weight);
    }
    else
    {
        form.append('<input type="hidden" name="weight_cart" value="'+weight+'"/>');
    }
}


Service Bus Authenitication via Managed Identity

The table at the top of the page is missing the fact that Service Bus now supports authentication via Managed Identity as documented here: https://learn.microsoft.com/en-us/azure/stream-analytics/service-bus-managed-identity

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

ID: 2896ae0e-a559-64c7-1782-14ef1c83f509
Version Independent ID: fdc01b78-9222-6231-f85e-68defe4eafa9
Content: Outputs from Azure Stream Analytics
Content Source: articles/stream-analytics/stream-analytics-define-outputs.md
Service: stream-analytics
GitHub Login: @enkrumah
Microsoft Alias: ebnkruma

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

I have a PR to update the doc. Changes should show up on the page soon.


Expanding camera live stream

Hi,
Thanks for your great card! I based my mobile view on your card right now 👍
I do have 1 issue with the card. When I add a custom:webrtc-camera card, the expand option dissapears.
I tested it with a mushroom title card and now I see the expand option is moved to the left, but not reacting.

Result of test with no title card
Normal;

Expand the camera card. The title is gone;

Solved it by adding a vertical-stack card and then add the camera card.


Lack of information provided with regards to the Open Weather API

Challenge Show the Local Weather has an issue.
User Agent is: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36.
Please describe how to reproduce this issue, and include links to screenshots if possible.
The instructions should let you know that if you want to use the Open Weather API you need to register and get an API token from them otherwise you won't get anything when you make the requests.
Registration is free so that is not a problem.
The Open weater API site doesn't tell you unless you click around that you need a token either which is why I think it's important that FCC provides that bit of information.

Never mind, I miss read.


Cloud-network-config-controller implementation

This PR implements the core control loops for managing the resource CloudPrivateIPConfig, supporting the feature: egress IP on cloud environments.
Main aspects of this PR:

Implements a node control loop: intended on retrieving the node's subnet information, as known by the cloud
Implements a secret control loop: used for cloud credential secret rotation
Implements the control loop for CloudPrivateIPConfig

This controller has been manually tested on all clouds (Azure, AWS, GCP) and works as expected. Remaining integration with network plugins remains as well as a CNO PR for the deployment of the feature.

Overall this basically looks good

@danwinship / @martinkennelly : thanks for the reviews. I've been updating the PR and think I have something close to a finish product now. Recent changes include:

Incremental sync, i.e we only process and ADD / DEL per sync not both.
Taken into account all of your comments
Removed the admission controller

/lgtm

/approve


remove /admin from UKCP link

Removes /admin from the UKCP url.
Same issue as in https://github.com/VATSIM-UK/core/pull/3655 I've just missed this second url

Thanks @kristiankunc


Request for having a turbo.js or/and turbo.ts to configure turbo

Describe the feature you'd like to request
When building your turbo.json config file, there is the point where it becomes pretty large to manage. It will be nice to have the alternative turbo.{js,ts} to programmatically skip code duplication, conditionally load a configuration setting, extract setting to an env-related module, etc. There are many advantages of having a ts/js config file that I don't think is worth mentioning all of them.
Describe the solution you'd like
turbo.js and/or turbo.ts as a developer choice in how it builds the turbo configuration.
Describe alternatives you've considered
None, besides extending the capabilities of the json settings but it will be quite a headache and most of the requirements needed are already covered in the language (js/ts)

Turbo is written in Golang. We ideally want to avoid starting a node.js process just to read configuration until it becomes unbearable to do so. I too appreciate the convenience, but it makes it impossible to statically analyze

Turbo is written in Rust @ https://turbo.build
> Turbo is an incremental bundler and build system optimized for JavaScript and TypeScript, written in Rust.


add support for prepared query templates

Expanding on https://github.com/solarkennedy/puppet-consul/pull/288 and the good work by @djtaylor, add support for prepared query templates to the custom type.

I've updated this to add a template parameter, which allows 0.6.3 to work still since its defaulted to false.

Any more feedback on this?

Nope! ty.


Possible data race in qtls.clientSessionCache

We have detected this race once on one of our Windows builders, and unfortunately I'm unable to reproduce it again, see the backtrace below.  None of the goroutines seem to be from our code directly, so I've decided to report anyway, just in case.
Looking at the code, qtls.clientSessionCache.Get calls cs.ResumptionState, the documentation of which says:
// It can be called by [ClientSessionCache.Put] to serialize (with
// [SessionState.Bytes]) and store the session.

I'm not entirely sure, but the wording might suggest that it is not supposed to be called from tls.ClientSessionCache.Get?  Additionally, tls.NewResumptionState docs state that:
// state needs to be returned by [ParseSessionState], and the ticket and session
// state must have been returned by [ClientSessionState.ResumptionState].

Where, again, the wording is not clear.
Alternatively, it could be a crypto/tls race?
The full backtrace:
==================
WARNING: DATA RACE
Write at 0x00c000386478 by goroutine 1677:
  github.com/quic-go/quic-go/internal/qtls.clientSessionCache.Get()
      C:/Users/runneradmin/go/pkg/mod/github.com/quic-go/quic-go@v0.41.0/internal/qtls/client_session_cache.go:53 +0x331
  github.com/quic-go/quic-go/internal/qtls.(*clientSessionCache).Get()
      <autogenerated>:1 +0x74
  crypto/tls.(*Conn).loadSession()
      C:/hostedtoolcache/windows/go/1.21.7/x64/src/crypto/tls/handshake_client.go:307 +0x2ac
  crypto/tls.(*Conn).clientHandshake()
      C:/hostedtoolcache/windows/go/1.21.7/x64/src/crypto/tls/handshake_client.go:188 +0x1bd
  crypto/tls.(*Conn).clientHandshake-fm()
      <autogenerated>:1 +0x47
  crypto/tls.(*Conn).handshakeContext()
      C:/hostedtoolcache/windows/go/1.21.7/x64/src/crypto/tls/conn.go:1552 +0x615
  crypto/tls.(*Conn).HandshakeContext()
      C:/hostedtoolcache/windows/go/1.21.7/x64/src/crypto/tls/conn.go:1492 +0x3a
  crypto/tls.(*QUICConn).Start.func1()
      C:/hostedtoolcache/windows/go/1.21.7/x64/src/crypto/tls/quic.go:177 +0x4f

Previous read at 0x00c000386478 by goroutine 1675:
  crypto/tls.(*Conn).loadSession()
      C:/hostedtoolcache/windows/go/1.21.7/x64/src/crypto/tls/handshake_client.go:378 +0xc64
  crypto/tls.(*Conn).clientHandshake()
      C:/hostedtoolcache/windows/go/1.21.7/x64/src/crypto/tls/handshake_client.go:188 +0x1bd
  crypto/tls.(*Conn).clientHandshake-fm()
      <autogenerated>:1 +0x47
  crypto/tls.(*Conn).handshakeContext()
      C:/hostedtoolcache/windows/go/1.21.7/x64/src/crypto/tls/conn.go:1552 +0x615
  crypto/tls.(*Conn).HandshakeContext()
      C:/hostedtoolcache/windows/go/1.21.7/x64/src/crypto/tls/conn.go:1492 +0x3a
  crypto/tls.(*QUICConn).Start.func1()
      C:/hostedtoolcache/windows/go/1.21.7/x64/src/crypto/tls/quic.go:177 +0x4f

Goroutine 1677 (running) created at:
  crypto/tls.(*QUICConn).Start()
      C:/hostedtoolcache/windows/go/1.21.7/x64/src/crypto/tls/quic.go:177 +0x2c7
  github.com/quic-go/quic-go/internal/handshake.(*cryptoSetup).StartHandshake()
      C:/Users/runneradmin/go/pkg/mod/github.com/quic-go/quic-go@v0.41.0/internal/handshake/crypto_setup.go:208 +0xf2
  github.com/quic-go/quic-go.(*connection).run()
      C:/Users/runneradmin/go/pkg/mod/github.com/quic-go/quic-go@v0.41.0/connection.go:503 +0x318
  github.com/quic-go/quic-go.(*client).dial.func1()
      C:/Users/runneradmin/go/pkg/mod/github.com/quic-go/quic-go@v0.41.0/client.go:214 +0x70

Goroutine 1675 (running) created at:
  crypto/tls.(*QUICConn).Start()
      C:/hostedtoolcache/windows/go/1.21.7/x64/src/crypto/tls/quic.go:177 +0x2c7
  github.com/quic-go/quic-go/internal/handshake.(*cryptoSetup).StartHandshake()
      C:/Users/runneradmin/go/pkg/mod/github.com/quic-go/quic-go@v0.41.0/internal/handshake/crypto_setup.go:208 +0xf2
  github.com/quic-go/quic-go.(*connection).run()
      C:/Users/runneradmin/go/pkg/mod/github.com/quic-go/quic-go@v0.41.0/connection.go:503 +0x318
  github.com/quic-go/quic-go.(*client).dial.func1()
      C:/Users/runneradmin/go/pkg/mod/github.com/quic-go/quic-go@v0.41.0/client.go:214 +0x70
==================

Interesting. The crypto/tls code is accessing a session ticket that (presumably) has been retrieved from the session cache, while the session cache is modifying the ticket.
I suspect this is happening because you're concurrently dialing two connections that are both trying to resume using the same session ticket. We probably need to protect the session cache with a mutex.

However, I think this can only happen if the underlying ClientSessionCache actually returns the same session ticket multiple times. If the underlying ClientSessionCache was well-behaved and only returned every ticket once, there'd be no way that two Go routines would access the same session ticket and create the race condition you're observing.
See RFC 8446 and RFC 9001 regarding the reuse of session tickets.
Strictly speaking, it's not forbidden to reuse the session ticket though (it's just a "SHOULD NOT"), so maybe we should introduce the mutex anyway. That would make it safer for our users to shoot themselves in the foot.


Remove the project wide "default" Devkit setting

With the release of Ruby 2.0.0 we started using a new compile environment. With the new environment it no longer means there is a universal default.
Instead a default-devkit should be included in each interpreter configuration and be used when DKVER isn't supplied.
Likewise building a Devkit should error out without a supplied "DKVER".
@jonforums Can you think of any problems with the purposed behavior?

With the release of Ruby 2.0.0 we started using a new compile environment. With the new environment it no longer means there is a universal default.

Just to clarify:

By "compile environment" (and "environment"), I suppose you mean "DevKit type" (or "flavor"); and
By "universal default," I suppose you mean "a single DevKit type which succeeds with all the allowed Ruby versions."

The allowed Ruby versions are those available via RubyInstaller's Rake tasks (without users overriding them through override/*.rb code). By design, given each ruby_base_version pair of major and minor version numbers, RubyInstaller preselects and makes available only one version of MRI Ruby (YARV or CRuby). As you say, currently rake ruby19 and rake ruby20 (for example) require different DevKit types.
Is all this correct? :)
BTW, in the Rake commands rake devkit:ls and rake ruby22 DKVER={{something}}, I found remembering which name to enter (of DevKit and DKVER) not as easy as it may be for you, indeed, old hands. Perhaps this is because DevKit and DKVER both IMO seem to be names for the same concept. In these two particular usages, are they in fact the same concept? If so, then having two names here is IMO a misfeature.
Obviously, DKVER is not a version number. (And, of course, version numbers definitely would happen, if any long-range plans to gemify the DevKit types are implemented. That would make the name DKVER even more confusing.) So IMO a better name for DKVER would be devkit_type (lower-case, even for the environment variable).
On that topic, as you know, half the time, because it's easier and it works (generally, environment variables aren't case sensitive on Windows), people use lower case when entering environment variables such as your DKVER and SFX. These instances of double specification are confusing to new users. So why not always speak of lower-case environment variable names? For instance, see your wiki page section Building the DevKit.
you can always build your own DevKit by simply:
rake devkit sfx=1

Instead a default-devkit should be included in each interpreter configuration and be used when DKVER isn't supplied.

A better name for default-devkit IMO would be default_devkit_type.

Likewise building a Devkit should error out without a supplied "DKVER".

Currently, the output of rake --tasks includes:
rake default                   # Build Ruby 2.3

Further, building a DevKit (or an installer) should error out without IMO the user supplying a ruby_base_version. Thus no Ruby version would be defaulted to.
And when are devkit_type and base_ruby_version picked up from what has been generated already, and when not? That's further confusing. People (even moderately new users) might assume one or both will be picked up sometimes, although sometimes they won't—I know I did. Requiring users always to specify both is IMO less confusing and time-wasting.
The default Rake task IMO should be reserved to invoke (future) tests for RubyInstaller (combined with user overrides). As you know, having :test as the default eases the test cycle, generally.

By "compile environment" (and "environment"), I suppose you mean "DevKit type" (or "flavor"); and

Yes

By "universal default," I suppose you mean "a single DevKit type which succeeds with all the allowed Ruby versions."

No, they should all more or less succeed but the DevKit for each version is coordinated with the rake-compiler project. With Ruby 2.0.0 that changed and in the near future it will probably change again.
As for the changes you suggest in your post, they aren't bad ideas or changes but you have to consider that people have used this software and have scripts around it. The external API may not be pretty but it's what we've got at the moment and it works well enough. So while good reasons I don't find them good enough.
As for the tests, there are certain parts of RubyInstaller that can be refactored to be tested but the Rake parts would be near impossible to test properly. It would be like writing tests for a Makefile. So outside of some major refactoring writing tests would be not worth the effort at the moment and it would be testing modular parts that could be used by the rake tasks and not the process itself.
I don't want to make any breaking changes on how it works in the expected usage now, but I do want to make it harder to make the mistakes that you mentioned and possibly add wrappers around them for convenience.


Using allOf to extend a response schema

I'm attempting to use allOf to create a schema that extends an existing schema. In the example PetInput does this, but the response schema is just blank when I use the definition below. Is allOf only supported for input schemas?
include Swagger::Blocks
  swagger_schema :CurrentUserResponse do
    key :required, %i(user)
    property :user do
      key :'$ref', :CurrentUser
    end
  end
  swagger_schema :CurrentUser do
    allOf do
      schema do
        key :'$ref', :User
      end
      schema do
        key :required, [:sms_enabled, :email_messages_enabled, :roles, :channel, :features]
        property :sms_enabled do
          key :type, :boolean
          key :description, 'This user will receive SMS notifications'
        end
        property :email_messages_enabled do
          key :type, :boolean
          key :description, 'This user will receive Email notifications for new messages'
        end
        property :roles do
          key :type, :string
          key :description, 'The roles of this user'
        end
        property :can_schedule_recurring do
          key :type, :integer
          key :description, 'Whether the user can scheduling recurring appointments'
        end
        property :unread_message_count do
          key :type, :integer
          key :description, 'Number of unread messages sent to this user'
        end
        property :channel do
          key :type, :string
          key :description, 'Realtime channel'
        end
        property :features do
          key :type, :array
          items do
            key :type, :string
          end
        end
        property :unread_notifications_count do
          key :type, :integer
          key :description, 'Number of unread notifications sent to this user'
        end
      end
    end
  end

key :'$ref', :User
Use are referencing :User schema, that was never defined by swagger_schema

@quarryman :User is defined, I just didn't want to add it to the sample as it is quite large.

hey @bryanhickerson — I'm not sure, we don't have any special handling for allOf. Is that something that swagger UI is supposed to handle or is it up to swagger implementations to handle it? Any chance you can dig through the source and see if you can find a way we aren't conforming to the swagger spec? Here's the relevant place: https://github.com/fotinakis/swagger-blocks/blob/48a2ad05da6d8f658e1d9f4d88cb360eca071e22/lib/swagger/blocks/nodes/schema_node.rb#L10 -- let me know what you find.

I'll take a look


Clean up code tosca part

Cleaning up the code of the component for tosca

@gioppoluca You wanted to clean up the code from release 2.0.1. Did you do that? Do you have an update on that?


update circleci script to release upon building a tag

in the current workflow circleci already build git tags. With an additional step it could also do the npm publish part.

wontfix


Update FontAwesome 4.3.0

Pulled fonts & scss from the current version(4.3.0) of FontAwesome
We'll be able to use fa-pulse:sparkles:

Can we close and merge this PR? Any ETA? Thanks!

@yamasy1549 thanks for the PR!
@osabate thanks for the reminder!
And sorry for the delay :(
Greetings!

Works! :+1:

@osabate @cristianferrarig Thank you very much!! :oden:


Improve query tracker liveness odin checks

Currently, if a query is running too long, we still try to read result and fail with Can't check query tracker with error: Query [query-id] result 0 not found or is expired
We need to:

Provide a clear error message, that query wasn't able to finish in 30 seconds
Add "partially available" state, when query finishes in A-B seconds
Add ability to specify check timeout and soft timeout, as in map_result and sort_result odin checks

A change was merged, closing