Azure Bot Service OAuth Connection String Not Maintaining Token

I have recently set up the Oauth Connection String (in settings in my Bot Service in Azure) with the Instagram Basic Display API - however, it seems the Bot Service is not maintaining the token.
It works at first but over time (maybe an hour) I get:
"message": "Error validating access token: Session has expired on Friday, 28-Feb-20 12:00:00 PST. The current time is Friday, 28-Feb-20 15:10:48 PST.",
"type": "OAuthException",
"code": 190,
I believe the issue is that with the IG Basic Display API you get a short term token (1 hour) that you have to trade for a long term token (6 months). I don't believe the bot service is doing this correctly (it is getting the short-term correctly but then perhaps saving and trying to maintain that over 6 months rather than trading it for the 6 months token?), or perhaps there is an issue on my behalf?
Insight here would be great as I would prefer not to maintain the token myself if this solution works.
Can someone replicate this?

Are you using the Instagram as sevice provider on the Azure portal, or are you using Generic Oauth?

Instagram

I am using it to access their IG, not to allow them to log in with my app via Instagram.

You're going to have to clarify once more. The way you're using the OAuth connection string is to authenticate, but what you're describing is NOT OAuth.

Doing a bit more digging into the Insta basic display API, I think I can see what you're doing.
Using this API in the OAuth Connection String is going to return the short-lived token that is only going to last an hour. What you do with that token going forward is on you as the dev, including using it to retrieve a long-lived token (which according to the Insta API docs lasts 60 days).
In order to ensure your user remains logged in, I recommend you loop your user through a login-verification waterfall. Basically, it checks for a live token with every message and if the token is expired or null, it resends the login prompt.

I thought the point of using the bot service connection string to authorize is to use the bot service to maintain the token refreshing etc for me? I'm pretty sure that's the reason I saw them say in the video from MS about it.
Otherwise, I don't really see the point in it. With the previous Instagram API, it maintained the tokens for us, including refreshing. Now, I may as well do the whole cycle myself as I have to refresh/maintain it myself anyway.

I watched the video you referenced, and while some of the info in it is true, some of it is outdated.
The Bot Framework Token Service (built using your service provider on the Azure portal) is responsible for using oauth to do the token retrieval, as well as storing that token once acquired. That part is true. The bot dev can use the service to handle all the exchanging of ids and secrets for tokens. They also don't  have to manage securely storing that token themselves.
The bot dev is responsible to make sure to implement logic that handles when token expires (ie resending the oauth prompt to log the user back in). The logic is simple in that all you have to do is call a check for the token with every message. As for exchanging the short-term oauth token you recieve using the oauth prompt for the longer-lived one in the Insta API, that is on the dev.

Well we would have to handle the secure long term token storage and refreshing with the current capabilities.
Also we cannot check the token response with every message as it continues to return the old 1 hour token that has expired.
I assumed this service was to maintain the lifecycle of the token for us, otherwise I am unsure why we would use it more than once. And even then, the check the bot does for a token response again returns the old expired token. It doesn't seem practical

You would have to maintain the storage of the long-term token, yes, because that is not the standard token returned with an oauth request.
As for checking the token response, if you run the OauthPrompt dialog, and it returns a response that the token is expired,  it will log the user out and resend the oauth prompt, prompting the user to log in again. That is handled by the Bot Builder Dialogs.
The video was released in 2018 when token refreshing was a preview feature that was never fully implemented.
In the BotBuilder-Samples repo  there is a sample called "Bot Authetication MS Graph" (C# and Node) that show the code for the type of logic you're looking for.

To confirm, currently I use:
connector.getUserToken - which always returns the expired 1 hour token. Is this what you mean by oauthPrompt? This returns the token but not whether it is expired (though it obviously does after 1 hour), are you recommending I do a check on that then log the user out myself? Is this the token you recommend checking?
If so this would log the user out every hour.
Otherwise, with every message I would have to check my saved long-term token myself before continuing.
Can you clarify what you recommend please.

Currently the bot service token store follows only the typical OAuth2 protocol, which includes retrieving the first access token from the identity provider. If you are using an identity provider that requires additional token exchanges, then our recommendation is for you to acquire and manage that token yourself.

@thejasondt Jason; does that answer your question?  If so, would like your confirmations so we can resolve this item.  Thank you!

Closing, please reactivate if you have further questions.


wrong graph

Please update the graph for:
Corporate and bot profiles should be easy to recognize

thanks, itś already fixed

hi, I still see the wrong graph:

Some hours ago I saw it here: https://github.com/Gustavo22Soaresh/osm-comunity-survey/blob/main/2024/results.pdf
now its fixed, thank you


add rsync to UBI 7 images

Checklist before submitting

[x] Did you read the contributor guide?
[ ] Did you update any affected documentation?
[ ] Did you write any tests to validate this change?

Description
rync needs to be installed on the UBI-7 images.
Review process to land

All tests and other checks must succeed.
At least one maintainer must review and approve.
If any  maintainer requests changes, they must be addressed.

Codecov Report

Merging #31 (ef2131b) into main (ced5349) will decrease coverage by 0.11%.
The diff coverage is n/a.

:exclamation: Current head ef2131b differs from pull request most recent head 0541a5d. Consider uploading reports for the commit 0541a5d to get more accurate results

@@            Coverage Diff             @@
##             main      #31      +/-   ##
==========================================
- Coverage   95.32%   95.21%   -0.11%
==========================================
  Files          21       21
  Lines        1796     1795       -1
==========================================
- Hits         1712     1709       -3
- Misses         84       86       +2

Flag
Coverage Δ

unittests
95.21% <ø> (-0.11%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

open_ce/utils.py
92.41% <0.00%> (-0.89%)
:arrow_down:

open_ce/conda_utils.py
98.44% <0.00%> (-0.02%)
:arrow_down:

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 ced5349...0541a5d. Read the comment docs.

Codecov Report

Merging #31 (ef2131b) into main (ced5349) will decrease coverage by 0.11%.
The diff coverage is n/a.

:exclamation: Current head ef2131b differs from pull request most recent head 0541a5d. Consider uploading reports for the commit 0541a5d to get more accurate results

@@            Coverage Diff             @@
##             main      #31      +/-   ##
==========================================
- Coverage   95.32%   95.21%   -0.11%
==========================================
  Files          21       21
  Lines        1796     1795       -1
==========================================
- Hits         1712     1709       -3
- Misses         84       86       +2

Flag
Coverage Δ

unittests
95.21% <ø> (-0.11%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

open_ce/utils.py
92.41% <0.00%> (-0.89%)
:arrow_down:

open_ce/conda_utils.py
98.44% <0.00%> (-0.02%)
:arrow_down:

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 ced5349...0541a5d. Read the comment docs.

Codecov Report

Merging #31 (ef2131b) into main (ced5349) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head ef2131b differs from pull request most recent head 0541a5d. Consider uploading reports for the commit 0541a5d to get more accurate results

@@           Coverage Diff           @@
##             main      #31   +/-   ##
=======================================
  Coverage   95.32%   95.32%
=======================================
  Files          21       21
  Lines        1796     1796
=======================================
  Hits         1712     1712
  Misses         84       84

Flag
Coverage Δ

unittests
95.32% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

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 ced5349...0541a5d. Read the comment docs.

Codecov Report

Merging #31 (0541a5d) into main (ced5349) will decrease coverage by 0.11%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main      #31      +/-   ##
==========================================
- Coverage   95.32%   95.21%   -0.11%
==========================================
  Files          21       21
  Lines        1796     1795       -1
==========================================
- Hits         1712     1709       -3
- Misses         84       86       +2

Flag
Coverage Δ

unittests
95.21% <ø> (-0.11%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

open_ce/utils.py
92.41% <0.00%> (-0.89%)
:arrow_down:

open_ce/conda_utils.py
98.44% <0.00%> (-0.02%)
:arrow_down:

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 ced5349...0541a5d. Read the comment docs.

Codecov Report

Merging #31 (0541a5d) into main (ced5349) will decrease coverage by 0.11%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main      #31      +/-   ##
==========================================
- Coverage   95.32%   95.21%   -0.11%
==========================================
  Files          21       21
  Lines        1796     1796
==========================================
- Hits         1712     1710       -2
- Misses         84       86       +2

Flag
Coverage Δ

unittests
95.21% <ø> (-0.11%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

open_ce/utils.py
92.41% <0.00%> (-0.89%)
:arrow_down:

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 ced5349...0541a5d. Read the comment docs.

Codecov Report

Merging #31 (0541a5d) into main (ced5349) will decrease coverage by 0.11%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main      #31      +/-   ##
==========================================
- Coverage   95.32%   95.21%   -0.11%
==========================================
  Files          21       21
  Lines        1796     1796
==========================================
- Hits         1712     1710       -2
- Misses         84       86       +2

Flag
Coverage Δ

unittests
95.21% <ø> (-0.11%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

open_ce/utils.py
92.41% <0.00%> (-0.89%)
:arrow_down:

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 ced5349...0541a5d. Read the comment docs.


GRPC requests with some populated JSON bodies segfault under protobuf 4.22.0

Describe the bug
When making requests to GRPC endpoints with JSON bodies with fields under protobuf 4.22.0, the Python interpreter will reliably segfault under MacOS
To Reproduce
Steps to reproduce the behavior:

Make sure you're using protobuf 4.22.0
Make a GRPC request against an endpoint using a populated JSON body
Prepare for Python to segfault

Expected behavior
A clear and concise description of what you expected to happen.

A successful response from the endpoint

Desktop (please complete the following information):

OS: [e.g. iOS]
MacOS, Python 3.8.9 and 3.10.4

Opened as a bug as some of the output indicated that the issue may be do to older methods in the library - but as of time of filing, I haven't been able to do enough research to determine whether this is firmly something in grpc_requests - or if its a problem in protobuf 4.22.0.

After doing some testing both internally on the protos that resulted in this result, and with protobuf 4.23 within grpc_requests - I'm thinking this bug is actually rooted in how the services I was working with have implemented their protos and reflection.
So I'm going to close this as a non-issue.


Add some meta-documentation

This pull request expands the README and provides a template file for future This Week in Amethyst posts.

Seems to be okay, so I'll merge it now.


Fix contact method crash

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/32181
PROPOSAL: N/A
Tests

[ ] Verify that no errors appear in the JS console
[ ] Go to the contact methods.
[ ] Create a new contact method.
[ ] Go back. Select created method.
[ ] Remove it.
[ ] Verify it app works.

Offline tests

QA Steps

[ ] 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).

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

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] 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 approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[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(themeColors.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 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

https://github.com/Expensify/App/assets/104823336/0d7b8268-c6d2-4337-bfc0-97f0fd450f67

Android: mWeb Chrome

https://github.com/Expensify/App/assets/104823336/91ed8731-a15a-4f0d-851a-95f5cbee942a

iOS: Native

https://github.com/Expensify/App/assets/104823336/62297c9f-e670-4a8a-a007-b78ef365c166

iOS: mWeb Safari
https://github.com/Expensify/App/assets/104823336/35da64c5-4bf0-40c8-a3a0-4da24869b000

MacOS: Chrome / Safari

https://github.com/Expensify/App/assets/104823336/6ffecdd6-0faf-44f6-93d2-286b11d4676a

MacOS: Desktop
https://github.com/Expensify/App/assets/104823336/908537e9-d6b2-47c1-ab74-b8a2ad7ac620

reviewing

@kosmydel I am still getting crash on iOS
https://github.com/Expensify/App/assets/108292595/13f75b43-c1ca-4614-aee0-2639fa08ec11

Reviewer Checklist

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

[x] I verified the steps for local testing are in the Tests section
[x] I verified the steps for Staging and/or Production testing are in the QA steps section
[x] 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)
[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 checked that screenshots or videos are included for tests on all platforms
[x] I included screenshots or videos for tests on all platforms
[x] I verified tests pass on all platforms & I tested again on:

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

[x] 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
[x] I verified proper code patterns were followed (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] 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 approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[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 verified that this PR follows the guidelines as stated in the Review Guidelines
[x] 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)
[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] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] 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)
[x] 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)
[x] All JSX used for rendering exists in the render method
[x] 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

[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(themeColors.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 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.
[x] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native
https://github.com/Expensify/App/assets/108292595/8877b3d5-c851-4a4f-8381-c1d73d2d5255

Android: mWeb Chrome
https://github.com/Expensify/App/assets/108292595/46225290-7a2c-4d50-8c98-a83f9ae49cb8

iOS: Native
https://github.com/Expensify/App/assets/108292595/917d155a-0a9a-437d-b023-da0df950a2ce

iOS: mWeb Safari
https://github.com/Expensify/App/assets/108292595/d0c313ab-9c1b-40e7-9e98-b02be2f8aa83

MacOS: Chrome / Safari
https://github.com/Expensify/App/assets/108292595/78c9313b-2194-48b8-a73d-38a2671d0a15

MacOS: Desktop
https://github.com/Expensify/App/assets/108292595/6be9fb2b-1829-48a1-bbdd-ef5dccc64302

: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 production by https://github.com/mountiny in version: 1.4.5-7 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


No more props-based styling?

Problem description
I recently upgraded my version of Material-UI to the @next version.  It appears as though it's no longer possible to do property-based styling.  For example, I'm trying to style an Event component so that its absolute position is reliant on the properties passed to it.  In older versions of Material-UI, it'd be as easy as writing
...
render() {
    const style = {
		position: "absolute",
		start: this.props.start * 100 + "%",
		height: this.props.length * 100 + "%",
		width: "100%"
    }
    return (<RaisedButton style={style}/>)
}

However, with new Material-UI requiring the stylesheet to be created beforehand, it's no longer possible to do this property-based styling, unless I'm missing something important here.  Is there a solution to this problem?  I've read all the issues that say inline styles are slower, but it appears as though there is no replacement for this problem.
Steps to reproduce

Use new Material-UI v1.0.0-beta.4

Versions

Material-UI: 1.0.0-beta.4
React: ^15.6.1
Browser:

I would expect the idea behind your example to work. Do you have a reproduction example?

Apologies for the delay in response, but I don't think this issue is closed without a solution...
import React, {Component} from 'react';
import {withStyles, createStyleSheet} from 'material-ui/styles';
import Button from 'material-ui/Button';
const styleSheet = createStyleSheet({
    container: {
        position: "absolute",
        top: /*How can this be dependent upon the props passed to the component?*/,
        height: /*How can this be dependent upon the props passed to the component?*/,
    }
});
class Foo extends Component {

  render() {
        let classes = this.props.classes;
    return (
      <div className={classes.container}>
        <Button raised/>
      </div>
    );
  }
}

export default withStyles(styleSheet)(Foo);

I don't get where is the issue with inline style. Please provide a reproduction example with codesandbox.io or webpackbin. Also, you are free to compose the class names or using a third party  styling solution for overriding Material-UI default style.

My apologies.  I have solved my issue. Thank you.

Great, feel free to share the solution. Might help someone in the future too :).

@SaltyQuetzals Inline styling applied to the root element so it is solving this case but @oliviertassinari what about cases when you need to do it on inner class, e.g. if i have CardHeader
Inline styling can help me to have props based styles on the root, how can i do it for title ?


Handling of !

Currently, miri has a special handling for the ! type in read_lvalue in lvalues.rs: The program is aborted whenever a ! lvalue is read from.
This has me wonder: Why !? Is there any special handling in rustc around the ! type to tell LLVM about unreachable code? Why are we not also, e.g., checking that a bool is valid (i.e., 0 or 1 and not anything else) and a reference aligned?

There actually used to be something in Mir, telling us about unreachable code at the exact locations at which we abort on !, but it disappeared. We now just replicate the old behaviour

It's a hack because rustc used to emit a coercion which in MIR would generate an Unreachable terminator and when this was removed, a miri test broke. I'm not sure there's any point to this TBH.

@eddyb I would expect there to something in codegen, at least around a function returning !, that asserts to LLVM that ! is uninhabited... is there? Is there any way even for unsafe code to violate that promise?

@RalfJung For functions returning !, we both don't have a target block in the MIR terminators that are calls to that function, and the function declaration in LLVM will have a noreturn attribute.

I see. So that would already fail now in miri because it would hit the missing target block.
All right, I guess I will then submit a PR to get rid of this check.


gmx make_ndx string mask

In biobb_gromacs.make_ndx, the string mask (e.g. echo -e 'a D*\n0 & ! 19\nname 20 FREEZE\nq') is not properly read.
Testing the same tutorial in version 3.6 / 3.7 (with biobb_md instead of biobb_gromacs) runs properly.
Can be something related with the new biobb_common?

Solved changing the "echo" by an stdin file:
https://github.com/bioexcel/biobb_gromacs/blob/682220e87ba7c9e9c009328ea9e5f9f6c768a2a5/biobb_gromacs/gromacs/make_ndx.py#LL111C1-L113C69


bug - more than 1 variable required for deploy

Is there an existing issue for this?

[X] I have searched the existing issues

Greenfield/Brownfield provisioning
greenfield
Terraform Version
1.5.5
Module Version
7.3.1
AzureRM Provider Version
3.69.0
Affected Resource(s)/Data Source(s)
azurerm_log_analytics_workspace
Terraform Configuration Files
resource "azurerm_resource_group" "rg" {
  name     = "rg-${var.fq_stack_name}"
  location = var.region
}

module "aks" {
  source  = "Azure/aks/azurerm"
  version = "7.3.1"
  resource_group_name = azurerm_resource_group.rg.name
}

output "resource_group" {
  value = azurerm_resource_group.rg.name
}

tfvars variables values
fq_stack_name=poc-aks-argocd-dev

Debug Output/Panic Output
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  + create

Terraform planned the following actions, but then encountered a problem:

  # module.aks.null_resource.kubernetes_version_keeper will be created
  + resource "null_resource" "kubernetes_version_keeper" {
      + id       = (known after apply)
      + triggers = {
          + "version" = null
        }
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Error: Resource precondition failed

  on .terraform/modules/aks/main.tf line 714, in resource "azurerm_log_analytics_workspace" "main":
 714:       condition     = can(coalesce(var.cluster_log_analytics_workspace_name, var.prefix))
    ├────────────────
    │ var.cluster_log_analytics_workspace_name is null
    │ var.prefix is ""

You must set one of `var.cluster_log_analytics_workspace_name` and
`var.prefix` to create `azurerm_log_analytics_workspace.main`.
Error: Terraform exited with code 1.
Error: Process completed with exit code 1.

Expected Behaviour
A default value cluster is created.  Given this example:
module "aks" {
  source  = "Azure/aks/azurerm"
  version = "7.3.1"
  # insert the 1 required variable here
}

Actual Behaviour
According to the docs only specifying the resource_group_name is required to setup an AKS cluster.  However, when I've done that, I get the provided error upon terraform plan stating that some other variable must be set.
Steps to Reproduce
terraform plan
Important Factoids
No response
References
No response

Thanks @chrisjohnson00 for opening this issue. We're using terraform-docs to generate the module's document now, only variable that without default attribute would be marked as "required".
This module is built as a general-purpose module, it's not designed for a specific scenario, and it's features are added at different time for different purposes, that caused one variable's default could be incompatible with another variable's default value.
The simplest usage for this module I've tried is:
module "aks" {
  source  = "../.."
  resource_group_name = azurerm_resource_group.main[0].name
  log_analytics_workspace_enabled = false
  role_based_access_control_enabled = true
  prefix = "aks-example"
}

To be honest, this is too complex if all you want is just try this module. And maybe we should consider enforcing a simplest example for every Azure Verified Module.
Maybe it's time to constrict this module's complexity and begin creating some scenario-focused smaller modules. e.g.: CloudPosse has created the following different modules that provision Aws subnet:

named-subnets
multi-az-subnets
dynamic-subnets
vpc

But if we're going to do so, we need more information on users' requirements, what's your scenario, so we can provide a simpler module that fits the requirement.
I'll change this issue to a community discussion topic, and everyone are welcomed to leave your opinion and suggestions in our repo for all Azure Verified Modules and leave your suggestions there, so our PM team can participate our disscussion.


Fix typo

Github -> GitHub

Learn Build status updates of commit ee31dfa:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/defender-for-cloud/attack-path-reference.md
: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 learn.microsoft.com contributor guidesPost your question in the Learn support channel


flap should be flipped

The current type signature of flap is:
Functor f => a -> f (a -> b) -> f b

It would be better if it were:
Functor f => f (a -> b) -> a -> f b

The issue I'm constantly running into with the current shape is that I usually have a in a pipeline and want to bring my own f (a -> b) i.e. it's stopping me from writing pointfree code:
// Current
flow(f, x => A.flap(x)([g, ...etc]), h)

// Desired
flow(f, A.flap([g, ...etc]), h)

The type system isn't capable of allowing flip to handle this.
The proposed signature would also match Haskell:

flap in relude
(<@>) in comonad

But in Haskell (or PureScript) you'd almost be using flap by its infix flavor <@> which matches current curried signature from fp-ts, so that:

Apply a value in a computational context to a value in no context. ^1

Anecdotally the Haskell codebase I work on most has two usages of flap, one infix/flipped and one not.
I'd be open to other suggestions as this has been a recurrent pain point for me with flap in fp-ts.
Given that with the type system our flip isn't as flexible as in other languages, I wonder if fp-ts should adopt a convention for commonly flipped functions. An example would be fp-ts-std/Array::elemV, which has been used a lot in our TS codebase at work.

In retrospect there are voidRight and voidLeft pairs in alike also missing in fp-ts:
(<$) :: f a b.  Functor f => f a -> b -> f b

Maybe having similar (flapFlipped or flapV) without breaking change of existing flap to compensate the lack of infix operator?
Indeed a reliable flip helps a lot in practices, finding myself also using utils like elemV  for missing pieces thanks to fp-ts-std btw.

I'd love a flapV! I went with "V" as it sort of looks like a mirror, but any naming convention would suffice.
Very much agreed on $> and <$ also. I twitch every time I write map(constant(x)) 😄

I'm having exactly the same issue as @samhh. The current param order is yet to work for me.


could we break the limitation of max length of 24 for agent_id and application_name

we are using pp as our apm platform, now we felt the the max-length of 24 is too short, could we expand them to 128  if we carefully modify the hbase adpation layer?  what is the most unexpected result if we applying it?  could you give us some advice for this feature?

The most influence is the rowkey distribution in hbase.
The RangeOneByteSimpleHash should be constructed as following both in collector and web.
    <bean id="traceV2Hasher" class="com.navercorp.pinpoint.common.hbase.distributor.RangeOneByteSimpleHash">
        <constructor-arg type="int" value="136"/>
        <constructor-arg type="int" value="144"/>
        <constructor-arg type="int" value="256"/>
    </bean>

@snakedragon I would like to have the id longer as well but looks like this is not so easy.


Should DRPC actions be case sensitive matches, or can we take any mixed case actions?

Currently the actions are matched exactly as per case Failover or Relocate. Should we move these to case-inseneitive matches? Does this break the API in anyway?

One thing which makes me prefer the case insensitive is to avoid delay of operations such as failover due to human typos in DR Actions. However, I agree that it is important to consider if it will break the API.

It remains case sensitive as of now.


rails-assets is down

The service is down. I cannot install gems from it :(
The web-site shows this error for a few hours by now:

This website is under heavy load (queue full)
We're sorry, too many people are accessing this website at the same time. We're working on this problem. Please try again later.

Ditto, our builds have started failing on this.

The service is down.
:+1:

Still having issues here as well.

My DO servers are unstable.
Would it be this?
:tired_face:

Hey guys, sorry about the confusion here. Please use this thread for now: https://github.com/tenex/rails-assets/issues/65 -- I realize it's confusing having two repositories but Monterail and I will get that sorted out ASAP, but separately.
@LPiner Can you be more specific?
@theprogramer What do you mean your "DO servers"?
@jandudulski (or someone else from this repo) can you lock this thread as I've redirected people to the above? Or alternatively, get me access to this one? Thanks :+1:

DO = Digital Ocean
LOL

Okay, I close this thread in order to move the discussion to https://github.com/tenex/rails-assets/issues/65


Update CUDA base images in CI

It looks like the key had been updated on ubuntu20.04 based images but not ubuntu18.04 so I gave up and installed the new key manually

Why Clang 13 instead of Clang 14?

test this please

Retest this please.

This should finally work.

@masterleinad do you mind cleaning up the history?

@masterleinad do you mind cleaning up the history?

Sure.

Cleaned.

Thank you

Failure is due to warnings from building the SYCL image.  Merge as is?

Failure is due to warnings from building the SYCL image. Merge as is?

Aren't there a lot of warnings coming from building Kokkos. Still technically from building the image, so I would be OK, but shouldn't those be fixed? Or would they be fixed with the Kokkos update to 3.5?

They are not our problem (we = ArborX)


Update existing sandbox data

Greenspace Collection

[ ] Update parks
[ ] Update community gardens

Disaster Resilience Collection

[ ] Add Portland Emergency Transportation Routes
[ ] Update Basic Earthquake Emergency Communication Node (BEECN) Locations)

Transportation Collection

[ ] Update safety hotline
[ ] Update crashes
[ ] Update change in ridership

Food Access Collection

[ ] Update rail stops
[ ] Update grocery stores
[ ] Update community gardens (also in greenspace collection)
[ ] Update bus stops

I will work on updating these datasets this week

parks and community gardens have 2019 versions in S3 now; API endpoints in progress.


Admin panel

Added an initial output of the orders in the dashboard page through the Get request to backend
Added a search panel for the orders through a SearchPipe

Reviewed and tested!


Cruft update, enable helper bot

Pull Request Checklist:

[ ] This PR addresses an already opened issue (for bug fixes / features)

This PR fixes #xyz

[ ] (If applicable) Documentation has been added / updated (for bug fixes / features).
[ ] (If applicable) Tests have been added.
[ ] CHANGELOG.rst has been updated (with summary of main changes).

[ ] Link to issue (:issue:number) and pull request (:pull:number) has been added.

What kind of change does this PR introduce?

Fast-forwarding the cookiecutter.
A helper bot now makes verified commits on bump version.
Micromamba v2.0 workaround has been applied to affected workflows

Does this PR introduce a breaking change?
No. Workflows now make better use of caching.
Other information:
"Why use a helper bot?"
Glad you asked. The commits that are coming from the workflow currently are "borrowing" a token I made then overwriting the committer information and, as such, the GPG signature is invalid. For security purposes, this makes it look like someone stole my account and committed changes pretending to be someone else, which is effectively what it is doing.
The helper bot is a verified way of indicating that these commits are genuine and coming from a verified source (by way of GPG signature). The bot makes a one-time-use token, creates a commit with it, pushes the changes, then destroys that token so that the risk of it leaking is diminished.
Also:
https://github.com/mamba-org/setup-micromamba/issues/225

coverage: 100.0%. remained the same
when pulling 48b4f6d136e0c257b13a5c4ed62155acefe1a488 on cruft-update
into 568867cca79709601eecff63bfe673151c08904f on main.


Trigger tests in release-* branches (release-1.0 backport)

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

:exclamation: No coverage uploaded for pull request base (release-1.0@929fc08). Click here to learn what that means.

Additional details and impacted files
@@              Coverage Diff               @@
##             release-1.0     #445   +/-   ##
==============================================
  Coverage               ?   43.80%
==============================================
  Files                  ?       59
  Lines                  ?     4917
  Branches               ?        0
==============================================
  Hits                   ?     2154
  Misses                 ?     2629
  Partials               ?      134

Flag
Coverage Δ

unittests
43.80% <0.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

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


Save the last used search setting

It would be great to be able to save the last search settings, such as:

Match case
toggle search details state
Number of surrounding lines to show

My search:mode = newEditor

I believe that opening a new search editor is meant to be sort of like opening an isolated instance of searching, so that's likely why we don't save the last search session. We could make this a feature request to use the last set search settings (match case, regex, etc.) in the search editor to drive the settings in a new search editor, though. Alternatively, we could have a setting that sets the default search settings for a search editor.

Thanks @andreamah, this is also great for users coming from Sublime where search settings are remembered and a new tab opens when using 'Find in files'.

This feature request has not yet received the 20 community upvotes it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this feature request has received less than 20 community upvotes and we closed it. Still a big Thank You to you for taking the time to create this issue! To learn more about how we handle feature requests, please see our documentation.
Happy Coding!


Off-by-one in Sigma

sum([k for k in range(100)])

output: 4950
The reference said output: 5050
Which would be
sum([i for i in range(101)])

The second example of sigma is also wrong. The result should be 10200. Better define a custom function instead of using range like so:
def my_range(i):
  return([k+1 for k in range(i)])

and then call
sum([2*k + 1 for k in my_range(100)])


Solr api

This PR addresses the switch from the evaluation-system-based Databrowser to the new API developed by Martin

added Proxies for all endpoints of the API
It is now possible to switch between flavours of the databrowser
Added Pagination

I was just thinking: the databrowser on the web is accessible via solr/data-browser. Shall we then make the API endpoints api/data-browser?

@Karinon have you forgotten about this?

No, but I forgot that I had another PR lying around on top of this PR since november... I will check the CI-Jobs when we merge the other PR


Update README image shields

to add Quay.io link + update dead imagelayers shields by a new one.
Result

Tbh. I see little value in so many badges. It makes the experience very clunky as these load so slowly and unnecessarily spreads browsing information of viewers of the repository to third-parties.

IMO those ones gives a interesting view of the quality of the project to new users + link to corresponding docker images.
I think we can get rid of the docker hub stars, but retain the pulls one to keep a link to the docker hub + interesting stats on the popularity of the image.
I've also added some cache to docker hub shields, which were slower than others.

Is there much value in running 2 distinct CIs at this point?

Not much. Travis has a better support for Golang environments.
I've been using CircleCI since I started working on the new release process because at that time they had the better docker support, maybe Travis has caught up.

So what do we do ? I'm in favor to keep 1 shield per service (Travis, CircleCI, Quay and Docker Hub), making them easily accessible through a link.

:+1: for having one shield? (this is what they are called?) per service.

One per service is fine. At the moment there are 4 for docker and two never load for me.

Updated


BG96 PPP switch between data and command mode (IDFGH-4199)

Hello,
Using example pppos_client, I have some problems trying to change between data mode to command mode and them go back to data mode without finishing active connections (e.g. MQTT in the example).
Modem used is BG96 and after reading PPP Application Notes, Quectel indicates that to achieve this goal users mush follow a concrete steps. Basically a buffer of "+++" characters should be send within a time sequence. Also, it indicates that to return to data mode (after executing an AT command),  users should send "ATO\r" (in some documents appears as "ATO0\r").
Could you add this feature to the modem libraries to be compatible with your stack? Now it sends other data that mush not be there (APN configuration).
As the source code is uploaded, I'm going to work on this. If I find a "pretty" solution to doing it, I will share it.
Thanks.

Thanks for raising this feature request.

Thanks for reporting and sorry for slow turnaround, we have a fix under internal reviewing now, and the issue will close automatically once the fix is available on GitHub, thanks.


addCollectTokensFromNotes

Tokens from Presentation notes should be collectable with predefined keys.
e.g.
 keys={
            "Name": "name",
            "Title": "title",
            "Keywords": "keywords",
            "Literature": "literature"
        }

see https://stackoverflow.com/questions/75266188/pyparsing-syntax-tree-from-named-value-list


Custom assemble release plan

Closes: https://github.com/atlassian/changesets/issues/512
Here you can override assemble-release-plan and create any logic for bumping packages.

Have you tried this in your project - could you paste in your custom assemble release plan? The split between assemble release plan and apply release plan is somewhat unintuitive for me (the apply package also does some version-related manipulations) so having a concrete example would make it a lot easier for me to review this.
That being said - I know that @mitchellhamilton had some ideas related to customizing those 2 packages, or rather maybe a way of building a custom runner that would compose our exposed pieces and custom ones. So it would be great if we could get his input regarding the approach proposed in this PR.

Have you tried this in your project - could you paste in your custom assemble release plan? The split between assemble release plan and apply release plan is somewhat unintuitive for me (the apply package also does some version-related manipulations) so having a concrete example would make it a lot easier for me to review this.
That being said - I know that @mitchellhamilton had some ideas related to customizing those 2 packages, or rather maybe a way of building a custom runner that would compose our exposed pieces and custom ones. So it would be great if we could get his input regarding the approach proposed in this PR.

The approach I've seen taken in the past is to call assemble release plan and apply release plan yourself. Given that it's not interactive or anything, there isn't really much point to using the cli over having a script like this
import assembleReleasePlan from "@changesets/assemble-release-plan";
import readChangesets from "@changesets/read";
import { read } from "@changesets/config";
import { getPackages } from "@manypkg/get-packages";
import { readPreState } from "@changesets/pre";
import applyReleasePlan from "@changesets/apply-release-plan";

const packages = await getPackages(cwd);
const preState = await readPreState(cwd);
const config = await read(cwd, packages);
const changesets = await readChangesets(cwd, sinceRef);

let releasePlan = assembleReleasePlan(changesets, packages, config, preState);

releasePlan = modifyReleasePlan(releasePlan)

await applyReleasePlan(releasePlan, packages, config);

The approach I've seen taken in the past is to call assemble release plan and apply release plan yourself. Given that it's not interactive or anything, there isn't really much point to using the cli over having a script like this
import assembleReleasePlan from "@changesets/assemble-release-plan";
import readChangesets from "@changesets/read";
import { read } from "@changesets/config";
import { getPackages } from "@manypkg/get-packages";
import { readPreState } from "@changesets/pre";
import applyReleasePlan from "@changesets/apply-release-plan";

const packages = await getPackages(cwd);
const preState = await readPreState(cwd);
const config = await read(cwd, packages);
const changesets = await readChangesets(cwd, sinceRef);

let releasePlan = assembleReleasePlan(changesets, packages, config, preState);

releasePlan = modifyReleasePlan(releasePlan)

await applyReleasePlan(releasePlan, packages, config);

@Andarist something like that, so if I didn't add 'changeset' to "page-settings" or "page-users" they will not bump.
import assembleReleasePlanFunction from "@changesets/assemble-release-plan";

export const assembleReleasePlan: typeof assembleReleasePlanFunction = (
  changesets,
  packages,
  config,
  preState,
  snapshot
) => {
  const result = assembleReleasePlanFunction(
    changesets,
    packages,
    config,
    preState,
    snapshot
  );

  const updateOnlyIfAffected = /page-settings|page-users/;

  result.releases = result.releases.filter((r) =>
    updateOnlyIfAffected.test(r.name) ? r.changesets.length > 0 : true
  );

  return result;
};

@Andarist something like that, so if I didn't add 'changeset' to "page-settings" or "page-users" they will not bump.
import assembleReleasePlanFunction from "@changesets/assemble-release-plan";

export const assembleReleasePlan: typeof assembleReleasePlanFunction = (
  changesets,
  packages,
  config,
  preState,
  snapshot
) => {
  const result = assembleReleasePlanFunction(
    changesets,
    packages,
    config,
    preState,
    snapshot
  );

  const updateOnlyIfAffected = /page-settings|page-users/;

  result.releases = result.releases.filter((r) =>
    updateOnlyIfAffected.test(r.name) ? r.changesets.length > 0 : true
  );

  return result;
};

@mitchellhamilton do you mean that you can reproduce the behavior of changesets by the code that you provided?

@mitchellhamilton do you mean that you can reproduce the behavior of changesets by the code that you provided?

Yes

Yes

One of the things we do with Chakra UI is publish an "aggregate package" (@chakra-ui/react) for user convenience that exports most of our other packages. We'd like to add a small customization to the release plan assembly that will always bump the aggregate package using the highest change of the package dependencies, so that its version accurately represents any breaking changes, new features, etc. included in those deps.
Given that we seem to have a similar use case to @aspirisen but for a different purpose, would it make sense to have a post-assemble option that allows us to specify a module with an export that takes and returns a ReleasePlan?
I don't mind using a custom script instead, but it would be a lot easier to be able to specify a small hook to achieve some customization here without needing to change the rest of the workflow.
Thoughts @mitchellhamilton?

One of the things we do with Chakra UI is publish an "aggregate package" (@chakra-ui/react) for user convenience that exports most of our other packages. We'd like to add a small customization to the release plan assembly that will always bump the aggregate package using the highest change of the package dependencies, so that its version accurately represents any breaking changes, new features, etc. included in those deps.
Given that we seem to have a similar use case to @aspirisen but for a different purpose, would it make sense to have a post-assemble option that allows us to specify a module with an export that takes and returns a ReleasePlan?
I don't mind using a custom script instead, but it would be a lot easier to be able to specify a small hook to achieve some customization here without needing to change the rest of the workflow.
Thoughts @mitchellhamilton?

@with-heart wouldn't running a totally separate script before calling into changesets work?
Script's logic:

grab existing changesets
duplicate them - just change the pkg name to aggregate and mention the original pkg name in the content of the changeset

After such operation, Changesets would just see those additional changeset files and I think you would pretty much land with your desired outcome.

@with-heart wouldn't running a totally separate script before calling into changesets work?
Script's logic:

grab existing changesets
duplicate them - just change the pkg name to aggregate and mention the original pkg name in the content of the changeset

After such operation, Changesets would just see those additional changeset files and I think you would pretty much land with your desired outcome.

I don't mind using a custom script instead, but it would be a lot easier to be able to specify a small hook to achieve some customization here without needing to change anything else about the workflow.

You don't really need to change anything about your workflow, the only change is from running changeset version to the script (and you keep using the GH action by telling the action to run the script https://github.com/changesets/action#with-version-script)


Replace ugettext_lazy() with gettext_lazy() for Django 3.0

otherwise we get:
RemovedInDjango40Warning: django.utils.translation.ugettext_lazy()
is deprecated in favor of django.utils.translation.gettext_lazy()
@jaredly, @fabiocaccamo, @gtnx  our team at @kiwitcms will appreciate it very much if you can merge this and release a minor update on PyPI.
FYI in case you need help maintaining this package we can extend a hand as well, just let me know.

ugettext_lazy has been replaced by gettext_lazy in django 2.0.
There's no clear rules on which django version is supported be this package. However, i believe that:

some people are using this library with a django version lower than 2.0
Django is still supporting version 1.11 (ok not for long but still)

So i propose to add a small check on django version like
if django.VERSION >= (2, 0):
  from django.utils.translation import gettext_lazy as _
else:
  from django.utils.translation import ugettext_lazy as _

@gtnx thanks for the comments; make sense; patch updated.

Released in 0.1.16


AFNI - 3dTstat error

In version 0.9.1, using the latest docker image (poldracklab/mriqc).
This is the error I got:
2017-04-10 18:01:03,856 workflow:INFO Saving crash info to /scratch/PI/russpold/data/psychosis/05_mriqc/out/logs/crash-20170410-180103-jdurnez-get_mean_RPI.a4-f3305277-ee7f-4134-9153-2d6dc438141b.pklz
2017-04-10 18:01:03,856 workflow:INFO Traceback (most recent call last):
  File "/root/src/nipype/nipype/pipeline/plugins/multiproc.py", line 52, in run_node
    result['result'] = node.run(updatehash=updatehash)
  File "/root/src/nipype/nipype/pipeline/engine/nodes.py", line 366, in run
    self._run_interface()
  File "/root/src/nipype/nipype/pipeline/engine/nodes.py", line 476, in _run_interface
    self._result = self._run_command(execute)
  File "/root/src/nipype/nipype/pipeline/engine/nodes.py", line 607, in _run_command
    result = self._interface.run()
  File "/root/src/nipype/nipype/interfaces/base.py", line 1085, in run
    runtime = self._run_wrapper(runtime)
  File "/root/src/nipype/nipype/interfaces/base.py", line 1728, in _run_wrapper
    runtime = self._run_interface(runtime)
  File "/root/src/nipype/nipype/interfaces/afni/base.py", line 130, in _run_interface
    return super(AFNICommandBase, self)._run_interface(runtime)
  File "/root/src/nipype/nipype/interfaces/base.py", line 1762, in _run_interface
    self.raise_exception(runtime)
  File "/root/src/nipype/nipype/interfaces/base.py", line 1686, in raise_exception
    **runtime.dictcopy()))
RuntimeError: Command:
3dTstat -mean -prefix sub-S4086UIY_task-rest_acq-RL_run-2_bold_tstat.nii.gz /scratch/PI/russpold/data/psychosis/05_mriqc/work/workflow_enumerator/funcMRIQC/fMRI_HMC_afni/_in_file_..scratch..PI..russpold..data..psychosis..03_bids..sub-S4086UIY..func..sub-S4086UIY_task-rest_acq-RL_run-2_bold.nii.gz/get_mean_RPI/sub-S4086UIY_task-rest_acq-RL_run-2_bold.nii.gz
Standard output:

Standard error:

Fatal Signal 11 (SIGSEGV) received
  3dTstat main
 Bottom of Debug Stack
** AFNI version = Debian-16.2.07~dfsg.1-1~nd80+1  Compile date = Aug 19 2016
** [[Precompiled binary Debian-x86_64-1-gnu: Aug 19 2016]]
** Program Death **
** If you report this crash to the AFNI message board,
** please copy the error messages EXACTLY, and give
** the command line you used to run the program, and
** any other information needed to repeat the problem.
** You may later be asked to upload data to help debug.
** Crash log is appended to file /home/jdurnez/.afni.crashlog

Return code: 1
Interface TStat failed to run.

No memory fails this time :-p . Full logs attached.  Let me know if you need more files.
QC.1.txt

Can you post the contents of your /home/jdurnez/.afni.crashlog?. There's something in that image that AFNI does not like.

Here it is.
afni-crashlog.txt

I run MRIQC 0.9.4 on the full dataset and didn't get any errors. I'll close this for now. If it happened again, please reopen (will consider AFNI-17 for this case too).


Invenio extras - gnuplot-py missing

error from pip :
TASK: [zenodo-docker-role | Install Invenio extras from file] *****************
failed: [localhost] => {"cmd": "/usr/bin/pip install -r invenio/requirements-extras.txt", "failed": true}
msg: stdout: Downloading/unpacking http://sourceforge.net/projects/pychecker/files/pychecker/0.8.19/pychecker-0.8.19.tar.gz/download (from -r invenio/requirements-extras.txt (line 9))
  Running setup.py (path:/tmp/pip-o2DR9G-build/setup.py) egg_info for package from http://sourceforge.net/projects/pychecker/files/pychecker/0.8.19/pychecker-0.8.19.tar.gz/download

Downloading/unpacking gnuplot-py==1.8 (from -r invenio/requirements-extras.txt (line 4))
  Could not find any downloads that satisfy the requirement gnuplot-py==1.8 (from -r invenio/requirements-extras.txt (line 4))
  Some externally hosted files were ignored (use --allow-external gnuplot-py to allow).
Cleaning up...
No distributions at all found for gnuplot-py==1.8 (from -r invenio/requirements-extras.txt (line 4))
Storing debug log for failure in /root/.pip/pip.log

This was due to the package being unverified


feat: bump fiber to v3

📑 Description
Closes https://github.com/goravel/goravel/issues/?

Bump fiber to v3 and optimize Context performance by reuse object.

Summary by CodeRabbit

New Features

Upgraded Fiber framework from version 2 to version 3, enhancing performance and functionality.
Simplified workflows for testing, code coverage, and linting by utilizing external configurations.

Bug Fixes

Improved error handling and logging in various components for better reliability.

Documentation

Updated README to reflect the new Fiber version and its implications.

Chores

Cleaned up test setups by removing outdated configuration expectations, streamlining processes.

✅ Checks

[ ] Added test cases for my code

Great PR 👍 But I noticed the fiber 3.0.0 is still a beta version, I suggest we upgrade it when it's formal.

Yes, wait for it.


Fix FailureConverter when an exception CallStack contains an incomplete set of keys

What was changed
All elements returned by https://www.php.net/manual/en/function.debug-backtrace.php are possible, but not guaranteed. Safeguard added for elements without "class" property.
Why?
I encountered this problem when I was using https://laravel.com/docs/10.x/helpers#method-throw-if helper function, that doesn't belong to a class. See screenshot:

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Hello.
Is it possible to add a test there?
And you have to sign CLA

Hello. Is it possible to add a test there? And you have to sign CLA

thanks for your quick response on this PR @roxblnfk
it seems like there is no test covering this piece yet, do you want me to introduce new tests under \Temporal\Tests\Unit\Exception\FailureConverterTestCase?

Yes, it would be great to add a few Unit tests. I intend to release a fix as soon as possible, and I will also add something to improve the code understanding by the static analyzer.

@roxblnfk thanks for your psalm changes, I've added two unit tests which aims to cover the change. Please let me know if you have any feedback.

@actuallymab thank you for your contribution. The fix is now available in version 2.8.1.


Minor change to octal documentation

This is in response to the reverting found in pull #3375.
This removes a mention of being experimental and possible future deprecation of a no longer valid 0 prefix.
It also mentions parse for runtime parsing of octal strings.

@schveiguy I've added your suggestion. I like that it specifically calls out C.

Great! LGTM. Pulling without auto-tester results since this is doc only.


Introduce RenderClusterIterator

Summary of the Pull Request
This is the successor of #3438 . The idea is based on @miniksa 's comment originally posted here https://github.com/microsoft/terminal/pull/3438#issuecomment-550058212

We could perhaps wrap a TextBufferCellIterator into a RenderClusterIterator, tell the RenderClusterIterator that it needs to return operator bool() as false when the underlying TextBufferCellIterator::TextAttr changes on increment, and provides accessors only for the character string and column string into the underlying cell iterator (which is a view directly into the text buffer).

References
#3075 #3438

PR Checklist

[ ] Closes #xxx
[X] CLA signed. If not, go over here and sign the CLA
[ ] Tests added/passed
[ ] Requires documentation to be updated
[ ] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx

Detailed Description of the Pull Request / Additional comments
This is still WIP, though. Would love to hear everybody's feedback.

Validation Steps Performed
Just pretty much everything should be validated. Vim, cat, top, cmatrix, and so on.

I don't know what I did wrong but I'm getting the same error as CI build:

src\buffer\out\TextColor.h(37,10): Error C1083: Cannot open include file: 'WexTestClass.h': No such file or directory (compiling source file ..\paint.cpp)

Just overall, did you check a trace on this (can I see)? I presume it's better than the original but maybe not as perfect as the more memory-intense previous iteration.

Plain catting is a lot faster with this PR. The trace is I think as good as #3438, if not better.

I found something interesting. Plain cmatrix performance is actually  worse with this PR. I think that render thread speeding up saves time so that the output thread can write more data, which backfires itself, causing render thread to be even more busy. That is probably where differential drawing will come in handy.

Mostly this is ready now. Tests are finally green.

This needs to hold, until  #3546 is solved. I'm seeing even worse result with this PR.

OK this PR is not the cause of the regression. It's probabaly #3474. But still let's hold this until the regression is solved.

Now that #778 is closed,  this does not seem necessary. Close this for now,

Thanks for this anyway, @skyline75489. I do want to get this done at some point in the future and will likely use this as a template whenever that time comes. But you're right, it's not as critical right now anymore.


Scala Exercises based off of MOOC curriculum

Hi guys,
I'm not sure if this is the right place to be posting this as this is a content-related point rather than a technical one. So feel free to close/move it if it should be somewhere else.
But in continuing to work on the Scala MOOCs, I just realized that I would love to point people to scala-exercises.com from the MOOC videos and resource pages. In particular for the Spark course, because we expect that people will skip over the previous 3 MOOCs introducing Scala + the fundamentals, just being in a rush to learn Spark.
So I started looking around for something interactive that I could point people at. I immediately thought of scala-exercises, but realized that the stdlib exercises is maybe not the best place to point these people. Not that there's anything wrong with it, it's just maybe not the best beginner-first place to send people trying to get a quick idea of what Scala is all about.
That said, I was thinking it would be cool if there was a set of exercises based on the first 2 MOOCs (Functional Programming Principles in Scala and Functional Program Design in Scala). The progression that Martin has designed for these courses is really spot on, if you ask me (of course I'm biased).
Just brainstorming here. Would something like this ever be feasible? (Again, just trying to figure out what I should point fast-track students at)

Excellent idea Heather, and very much feasible! We would love to help facilitate this and can dedicate some resources to moving it quickly.

Awesome! Let me see if I can get someone from the SC side of things to spend some time on this as well. It's always better to work together on stuff like this. Julien might be up for it; I just have to check on his availability. Just for the sake of synchronization the two orgs, who can I direct Julien at if indeed he is available soon? (I'm guessing he'd be free late this week or early next, but again, I have to check with him first to be sure)

You can coordinate with @jdesiloniz and if you need anything else just let me know!

Great. @julienrf said he'd be up to participate :)

Sounds awesome! I'll start creating a new repo/content library for this project, and set up everything so @julienrf and I can work on this. @heathermiller, should I access the content of both MOOCs through Coursera?

Hey @jdesiloniz, yep! Everything we have (slides, etc) are in those course pages. @julienrf is something of an expert now a days on that course material, so I'm sure he would be interested in working out a structure and maybe has some ideas for examples/exercises (he's something of a wizard when it comes to coming up with stuff like this!)

Hey @heathermiller. Sorry for the delay. I just added two new repos to the scala-exercises organization, one for each one of the courses you mentioned:

https://github.com/scala-exercises/exercises-fpprinciples
https://github.com/scala-exercises/exercises-fpdesign

So far, they only have an initial (but working) structure so that we can start inserting content right away. I guess @julienrf and me can coordinate through both repos issues, but I don't know if he's got an idea on the structure of contents and other details. It'd be nice to hear from him about it.
About the "FP design in Scala" course, so far I haven't been able to access the content (it's starting in Coursera in November), but I've already access the "FP principles in Scala" so I have the material available to work on that library.

Hi @jdesiloniz! Thanks for the work you achieved on this topic. I’d like to get some more time to think about the structure of the contents, can I ping you in a few days? In the meanwhile, feel free tell me if you have any specific idea in mind!
Also, I will give you access to the MOOCs so that you don’t have to wait for them to start.

@julienrf sure! I'll be looking forward to that. Thanks!

Hi,
I started putting a syllabus here. It is not really exactly following the MOOCs, here are the main differences:

early introduction of algebraic data types (even before classes) ;
no FRP.

Also, it has some overlaps with the “std_lib” course. I don’t really know how to manage that.
What do you all think of the level of details?

Hi Julien, great job! I think it's greatly detailed!
This would cover the contents of the first MOOC, right? (i.e.: it doesn't cover Monads, for-comprehensions...). The only thing it kind of got me was the mention of imperative programming, vars, while loops, etc. I don't know if the idea there is to show how not having referential transparency can lead to trouble.
The only thing I would mention (and it doesn't really has nothing to do with the syllabus here) is that Scala Exercises has some limitations regarding the kind of exercises you can create. That is: right now you can only create "fill-the-gaps"-kind of exercises (i.e.: we don't have features to let users implement whole classes, or use functions or other named structures in the exercise scope ~yet~). So we should take that into account when thinking about the structure of the exercises.

This would cover the contents of the first MOOC, right?This would cover the contents of the first MOOC, right?

I indeed omitted to detail monads as they are in progfun2, but there is a section on for expressions. And, beside FRP and monads, everything that’s in progfun2 is covered (lazy evaluation, streams, identity and state).

The only thing it kind of got me was the mention of imperative programming, vars, while loops, etc. I don't know if the idea there is to show how not having referential transparency can lead to trouble.

I think it is worth presenting vars and imperative programming, because they are useful in some situations despite they lead to referential transparency loss. Does that make sense to you?

Oh great, I was thinking that was a lot of points to cover for only one MOOC. Now that makes sense! Does it make sense for you to have all this content in one single library? Or have it split on two?
About your thoughts on imperative programming, I see your point. As long as a beginner user can recognize the eventual problems the use of mutation can bring in the library contents, I'm OK with it!

I think it would be better to have it as a single library.

👍

@julienrf I think this is perfect! I couldn't have designed things better. :) Looks great to me!


PD30

Hi,
do you have a patch for PD30?  I noticed you have the original PD30 firmware. Did you use the same location to download the firmware? PD30 has only an empty space for the connector on the PCB.  Thanks for sharing all of the info.

In-Circuit Serial Programming and Debugging Pinout
Pin1 - GND
Pin2 - $\overline{\textrm{MCLR}}$
Pin3 - PGED
Pin4 - PGEC
Pin5 - Vcc(3.3V)


Cleanup README.md: Fixing some typos/bugs and etc.

Cleanup README.md:

Fixing some typos/bugs
Capitalizing Svelte
Overall helping make it more informative

Preview the way it looks here: https://github.com/patricknelson/svelte-tag/tree/adjust-readme

Sorry, tinkering with draft/WIP feature.


<:< still exists in scala 2.10+

Minor copy correction since this caused some confusion at my workplace.
Source: https://github.com/scala/scala/blob/2.12.x/src/library/scala/Predef.scala#L499

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Fan Speed Issues

Hello,
thanks for your work and this awesome integration!
Unfortunately I ran into some problems with the fan control.

Whenever the AC is turned off, the fan control is unavailable

When the fan is set on auto, the range can exceed 100%

The option "Custom" is only available, when the slider was set manually

(Not a bug) I think it would be nicer, if there was nothing selected in the fan speed dropdown, when the slider was set manually instead of adding the "custom" option which then disappears again when selecting something from the dropdown.

There is no way to set the speed to full power from the dropdown. High is only 80%.

Thanks for any feedback.
Alex

Thanks for the input and thanks for using the integration.
Some of these points are not new and I'll try to explain the why of them.

Whenever the AC is turned off, the fan control is unavailable

This is expected behavior. If a device is off, it is not possible to control the fan speed.
The only means to disable a control in HA is to mark it as unavailable (as far as I know). So it seemed reasonable to do so. This approach also seems inline with HA's description of the available property.

https://developers.home-assistant.io/docs/core/entity/#registry-properties

Name
Type
Default
Description

available
bool
True
Indicate if Home Assistant is able to read the state and control the underlying device.

When the fan is set on auto, the range can exceed 100%

Also expected, but confusing. (Reported in #72 too).
In short, the device encodes "auto" as a value of 102, but I can't (to my knowledge) get the actual fan speed. So I can either display the value as is (current behavior), or limit it's value to 100 in the number entity. However I felt this would be misrepresenting the setting.
I'm open to ideas on how to make this cleaner.

The option "Custom" is only available, when the slider was set manually
(Not a bug) I think it would be nicer, if there was nothing selected in the fan speed dropdown, when the slider was set manually instead of adding the "custom" option which then disappears again when selecting something from the dropdown.

This was on purpose as I wanted to indicate to the user that a "custom" fan speed had been set via the slider. However, I am interested in your suggestion of setting the selector to blank so I will experiment with that.

There is no way to set the speed to full power from the dropdown. High is only 80%.

Yes that is correct. Some users reported issues when I tried to use 100% as "high" (#67, https://github.com/mill1000/midea-msmart/issues/95). It seems the official value for "high" is 80%.
I could add an additional speed (max? full?) when the device supports custom speeds to set it to 100%.

I think the appearance is perfect like this:
102 is the AUTO
101 is the dehumidification
if you want it really nice, it could be that if it's over 100 then it greys out, but it's perfect as it is.

Thanks, I appreciate the additional input.

The latest release includes an additional "Max" fan speed when the device supports custom fan speeds.


Deprecated versions of CI actions

When the Github action pipeline is run, several warnings are raised because of deprecated versions of CI actions are used:

Node.js 12 actions are deprecated. Please update the following actions to use Node.js 16: actions/checkout@v2, actions/setup-java@v1. For more information see: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/.
The set-output command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

@maisonobe, this issue can be closed as PR #242 was merged and resolves it.

Thanks, I forgot to close it.


Missing table references

In the Data Reference section, the "Product" and "Expenses table are missing.

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

ID: 0eddfa5b-1e69-a074-db05-a9138327170c
Version Independent ID: 7952af48-217c-d753-2ec0-a14fe75867cd
Content: Analyze Azure costs with the Power BI App
Content Source: articles/cost-management-billing/costs/analyze-cost-data-azure-cost-management-power-bi-template-app.md
Service: cost-management-billing
Sub-service: cost-management
GitHub Login: @bandersmsft
Microsoft Alias: banders

#please-close


the isWithinTokenLimit may be broken

          the `isWithinTokenLimit` may be broken

running
import { isWithinTokenLimit } from 'gpt-tokenizer';

isWithinTokenLimit(
      lastMessage.message,
      1000,
    );

throws Model name must be provided either during initialization or passed in to the method
for
"gpt-tokenizer": "^2.1.2",
cc @thdoan
Originally posted by @michaelfarrell76 in https://github.sheincorp.cn/niieani/gpt-tokenizer/issues/37#issuecomment-1778736225

import { isWithinTokenLimit } from "gpt-tokenizer/model/gpt-3.5-turbo";

I got the same issue. You will need to specify the model when importing functions.


How to turn off the  === implicit conversion in org.scalatest.matchers.should.Matchers in Scala 3

Scala 3.2.0
There is my implicit conversion from string to QueryOps, which has === method that returns Query type . This works fine in Scala 2.12 and Scala 2.13. However, my === collides with Matcher's === inside my test class and returns Boolean instead of Query type in Scala 3.  How can I turn off the  === implicit conversion in org.scalatest.matchers.should.Matchers.
class MyTest extends AnyFunSpec with Matchers {
  // my  `===` collides with Matcher's `===` inside MyTest

@i10416 Sorry for responding to this late, Matchers can be used by importing, e.g.
import Matchers._

as alternative of being mixed in.  Perhaps you can try to rename the === of Matchers in the import?

I met a same when I was working on Scala 3 support.
Just FYI: https://docs.scala-lang.org/scala3/reference/changed-features/implicit-resolution.html

If you have another === you want to use, you can mix in NonImpilcitAssertions.
https://www.scalatest.org/scaladoc/3.2.14/org/scalatest/NonImplicitAssertions.html


Using DB for translation messages errors if database isn't called 'db'

yii2/console/controllers/MessageController.php passes in a $db definition to the function saveMessagesToDb() function, line 164.
    protected function saveMessagesToDb($messages, $db, $sourceMessageTable, $messageTable, $removeUnused, $languages)
    {
        $q = new \yii\db\Query;
        $current = [];

        foreach ($q->select(['id', 'category', 'message'])->from($sourceMessageTable)->all() as $row) {
            $current[$row['category']][$row['id']] = $row['message'];
        }

However, since the all() function isn't passed the $db, it tries to get a component called 'db', this is fixed by changing line 169 to
        foreach ($q->select(['id', 'category', 'message'])->from($sourceMessageTable)->all($db) as $row) {

I discovered this on version 2.0.5, but it looks like the problem still exists in 2.1
The relevant part of my messages.php file is:
    // 'db' output format is for saving messages to database.
    'format' => 'db',
    // Connection component to use. Optional.
    'db' => 'shared_db_i8n',

If I copy the contents of the database definition 'shared_db_i8n' to a new one 'db', the error goes away.  The problem still exists with the code.
This problem may exist in other places

Fixed. Thanks!


Fixed#5849: Added System level flag for tagCategories

Describe your changes :

Fixes #5859

Added System level flag for tagCategories. User will not be allowed to delete system-level tags/tagCategories.

Type of change :

[x] Improvement
[x] New feature

Checklist:

[x] I have read the CONTRIBUTING document.
[x] I have commented on my code, particularly in hard-to-understand areas.
[ ] I have added tests that prove my fix is effective or that my feature works.
[x] All new and existing tests passed.

Reviewers
@mohityadav766 @harshach

@harshach @mohityadav766, can you please review this pr?


[release/1.7] Fix ambiguous tls fallback

Backport

Avoid TLS fallback when protocol is not ambiguous #9283
Check scheme and host of request on push redirect #9294

I see the Merge pull request button, but can't find the "Merge queue" button 🤔

We haven't enabled the merge queue for 1.7 yet


Issues with Expo Support for Push Notifications

I’m following up on issue #10 regarding Expo support. The proposed solution for manually syncing Firebase Cloud Messaging tokens doesn’t seem to be working in my project.
I’m building a mobile app with Expo and need users to subscribe to push notifications through a button. Could you provide any updates on Expo support? An integrated solution would be really helpful.
Thanks!

@divquan we do support setting any token in the SDK now. Here are the related docs:
With Sign In (this is the easiest way)
https://github.com/trycourier/courier-react-native/blob/master/Docs/Authentication.md
https://github.com/trycourier/courier-react-native/blob/master/Docs/PushNotifications.md#manual-token-syncing
await Courier.shared.signIn({
  ...
});

await Courier.shared.setTokenForProvider({
  provider: CourierPushProvider.EXPO,
  token: 'example_token'
});

const tokenForProvider = await Courier.shared.getTokenForProvider({
  provider: CourierPushProvider.EXPO
});

Or with this (the more technical way)
https://github.com/trycourier/courier-react-native/blob/master/Docs/Client.md#token-management-apis
const client = new CourierClient({
  ...
});

await client.tokens.putUserToken({
  token: "...",
  provider: "expo",
)

await client.tokens.deleteUserToken({
  token: "..."
})

Both of these will put your tokens into Courier, then you can send messages to them.
I'm around if you have any other questions. I'll be watching this thread.

Closing this for now. @divquan Feel free to ping me here if you have any other questions.


Web interface takes very long to load

Hi All
My setup:
Webmin 1.9
Authentic theme - latest. - also tried beta
Ubuntu 18.04.1
I know that ubuntu 18.04 isn't officially supported yet, however I'm sure it's being worked on.
Basically it's taking ages to get to a usable web interface.
I think it could be related to the bottom two issues that were raised previously.
#572
#47
Here's a screenshot of the waterfall from inspect in chrome - this is using the beta theme, the stable theme takes even longer to load.

What would you suggest to get this sorted out? I'm suspecting the couple of files as can be seen in the waterfall - specifically:
unauthenticated/css/bundle.min.css?1923154901888606
unauthenticated/css/fonts-roboto.min.css?1923154901888606
unauthenticated/js/bundle.min.js?1923154901888606

You would need to restart Webmin after editing mentioned file.

Hi
Thanks for the feedback. Sorry late reply, wasn't on the pc much this weekend.
I tried on the beta and stable versions. Although there was some improvement, the delay is still very long.
In fact I tried increasing that buffer size up till 65536, and this is the results I'm still getting:

We still getting over 31 seconds before screen is up.
Any other solutions?
Just as a side mention, the server is over-spec'd running 8Gb of ram, and plenty of processing power for what it needs for this to function well....
Any other suggestions would be welcome.

Switching to Gray Theme doesn't increase load much, or it does?
How fast is the link to the server?
I wonder, where is bundle.min.js in the screenshot above? 🤔🙂
It seems that fonts Roboto takes  longest time to load in your case. You could install Roboto locally by downloading them from the web, then go to theme configuration, and force to use local version of Roboto fonts, or you could also choose to use Arial or Tahoma instead.

Besides, try other browser without any extensions on, and/or Incognito Tab (also with disabled extensions).

Hi
I've had similar issues on other browsers - incognito & firefox.
The screenshot before was with the beta version. I've now gone down to the stable version for the rest of these:
Stable version - shipped defaults:

With arial font selected:

Now with Grey theme installed - webmin

Usermin - greyframed theme in incognito:

Usermin, incognito - on authentic theme:

Hope these help out!

The interesting thing, is that you have files loaded that are not the part of any packages.
For example, what is inject.js that is loaded in all themes? Why the first line is blurred in all screenshots?
Are you behind proxy, by the way?
When you reload the page, and open console, then go to Network tab, filter out bundle, then click on it, how fast does it load?

If you download anything large from your server how fast/smooth does it go? Try with compressed data, like a video file.
Do you have compression on? Go to Webmin Configuration/Web Server Options and set GZip static files option to Use pre-compressed file and compress dynamically. What is this option set to right now?

Just to note, I have Authentic Theme loaded on my VM in 1.19 seconds, while Virtualmin Framed Theme in 1.09 seconds.

The interesting thing, is that you have files loaded that are not the part of any packages.
For example, what is inject.js that is loaded in all themes? Why the first line is blurred in all screenshots?

Not sure what this is at all - I've just put in Virtualmin, and nothing else loaded as yet. I'm not sure what that inject.js??
Also the only reason I blurred out the first line, is that I'm a bit security paranoid - I just took off the server name off the top line....

Are you behind proxy, by the way?

No - I'm not behind a proxy in any way.

When you reload the page, and open console, then go to Network tab, filter out bundle, then click on it, how fast does it load?

It's loading fast if I filter out those....

If you download anything large from your server how fast/smooth does it go? Try with compressed data, like a video file.

Hmmmmm..... ok something is strange on the server here.....I've uploaded - not the speediest, but it'll do. However when downloading compressed files, it's very slow.....see below:

This is strange, as the cpu on the server is hardly being used:

Do you have compression on? Go to Webmin Configuration/Web Server Options and set GZip static files option to Use pre-compressed file and compress dynamically. What is this option set to right now?

Haven't played much yet with Webmin/Virtualmin settings.
This is what it was:

I've now changed it to what you've said.

Just to note, I have Authentic Theme loaded on my VM in 1.19 seconds, while Virtualmin Framed Theme in 1.09 seconds.

Hmmm - well I'm not sure what's going wrong this side then...?

With enabled compression my Ubuntu 18.04 initially loads the same fast as other distros.

Strange why mine is not working correctly....
Did another test on my server using rsync - getting ok speed on that:

This is very frustrating, not sure why this is happening on 18.04. I'm going to try run it on a 16.04 freshly minted server, and see what happens....

Ok, so I think that it might be the KVM network for some reason this seems to be going very slow....
I changes settings on the VM - and this is what I'm getting now:

I'll mark this closed for now - sorry about the run around - never thought to look at the KVM networking - I still need to go and see why it's running so badly...

You might also have driver issues.
https://askubuntu.com/questions/1029723/slow-wifi-since-updating-to-18-04
Can you tell more exactly about KVM? What was causing it?

I'm still busy testing various things. I'm running KVM on a debian 9 host. Guest VM is ubuntu 18.04.
I was using the default rtl8139 for the device model for the network card. I changed to virtio - which seems to have helped a bit, but I still need to check the performance out in more detail.
For now as per the last picture I sent, it seems that this has sorted out the problem mostly, however as said, I still need to test properly.
I will report back and let you know

ok - so for your info:
Using virtio driver:

Using the rtl8139 driver:

So the virtio is performing as it should - my home connection is maxed out at 50Mb/s.... The default when setting up the KVM was rtl8139, which we can see is only getting like 843 Kb/s...
I know this isn't your issue, but it's good that I'm posting here, as it could help others in the same situation. :smile:

To anyone stumbling across this thread and the issue is isolated to Firefox, you may want to try resetting your Firefox profile. According to the following page "Firefox starts to noticeably slow down after storing 7-8 identically named self-signed certificates. After storing 10 it slows down significantly and can hang on “Performing a TLS handshake” for 30 seconds or more". When I did this the Authentic Theme in Webmin went from being extremely slow to super fast.
From: https://www.thesslstore.com/blog/troubleshoot-firefoxs-tls-handshake-message/

I'm facing the exact same problem in our installation. The theme is generally very fast, but slows down as soon as you're loading a page that is based on a larger local file, e.g. our virtual file for postfix (virtual.cgi). In the old "Grey Framed Theme" everything loads very fast and also on that page. It's not browser or client related as this happens for all our users and on different browsers (tested with Firefox and Chrome). I'm using the latest version (19.39-2) and have also tried with the latest beta version.

I will give more tests to it. How large is virtual map file?

JS file gets executed only once, upon first load.
I am confused now.
Can you provide the screenshot of the page that is loading slowly for you? Maybe video-screencast?

2 Mb is quite a lot in our case.

Can you send me your map file for Postfix via email, so I could give it a test? programming аt rostovtsev dоt io. No screenshot needed.

I think I know why this is happening. It could be a general improvement.

I'll see if I can randomize the local parts of the mail addresses because of GDPR reasons and send it to you ;)

Okay, I have added your entries to Postfix Mail Server/Virtual Domains/ and yes, loading is slow. Returned HTML is about 1.8Mb.
It takes for me about 10 seconds to load due to rendering and scripting. I will see if that can be fixed/improved.

Yes that's the same amount of time as for us... Thanks for taking care of this issue :)

Okay, I managed to make it load 2 times faster for me.
All grid tables will initialize pagination, if there are more that 1000 rows, allowing to search (using top right filter, in the table header and sort).

New option added to theme configuration, preventing you completely avoid data tables for super large responses.

Above everything page render code is very harry and requires more optimizations to be done in the future. At the moment you can control the speed load.
Please feedback within next 12 hours if possible.

I'll be back at the office on Monday. I like the idea of introducing a pagination and especially the filter.

The filter was already there, paginations were not. To make it super fast pagination should happen on the server.

However, if you add 4-5 times amount of data that you sent me (about 16000 rows), then it still very slow and takes about 1 minute to render. The good thing that it doesn't crash. I will do further optimizations after the release, if it's even possible to achieve. It's all about parsing large amount of HTML, which has to happen in our case - there are probably ways to make it more efficient though.

Ok, I've checked the pagination in the current release... I think it's a little bit confusing to have two paginated tables on the left and on the right.
Is it possible to paginate the whole table and show the first n lines on both columns, e.g. lines 1 to 50 in the left column and lines 51 to 100 in the right column?

@Chartman123 In practice, the way it's represented now is two different tables. I am not sure if it's possible the way you described it. This part of UI needs improvement.
Did the speed change for you in any way?

Yes, like you already said, the time decreased to 5 seconds 👍


on-scroll-up/down events for modules stop working after a on-click event occurs for a custom module.

I have custom module custom/application the configuration for which is:-
    "custom/applications": {
      "format": "{icon}  Applications{}",
      "format-icons": [""],
      "tooltip": false,
      "on-click": "nwggrid -f",
      "max-length":19,
    },

Which shows me a Applications button on the top-left corner of my screen.
The steps to recreate the issue is:-

First click the Applications button.
Press esc to close nwggrid.
Now try to scroll up/down over the pulseaudio module. It won't work.
Weirdly if you click on the pulseaudio module to launch pavucontrol nwggrid shows up again.
After this if you close nwgrrid everything starts working properly.
This also affects the sway-workspaces module or any module that has on-scroll-up/down event setup.

I am also pasting my config for the modules that are affected by this issue:-
    "pulseaudio": {
        "format": "{volume}% {icon} {format_source}",
        "format-bluetooth": "{volume}% {icon} {format_source}",
        "format-bluetooth-muted": " {icon} {format_source}",
        "format-muted": " {format_source}",
        "format-source": "{volume}% ",
        "format-source-muted": "",
        "format-icons": {
            "headphone": "",
            "hands-free": "",
            "headset": "",
            "phone": "",
            "portable": "",
            "car": "",
            "default": ["", "", ""]
        },
        "on-click": "pavucontrol"
    },

    "sway/workspaces": {
      "disable-scroll": false,
      "all-outputs": true,
      "format": "{icon}",
      "persistent_workspaces": {
        "1": [],
        "2": [],
        "3": [],
        "4": [],
        "5": [],
      },

      "format-icons": {
        "1": "१",
        "2": "२",
        "3": "३",
        "4": "४",
        "5": "५",
        "focused": "",
        "urgent": "",
        "default": ""
      },
      "icon-size": 15
    },

    "backlight": {
        "format": "{percent}% {icon}",
        "format-icons": ["", ""],
        "on-scroll-up": "brightnessctl -c backlight set +5%",
        "on-scroll-down": "brightnessctl -c backlight set 5%-"
    },

To elaborate more in step 5 if you press esc to close nwggrid this weird behavior will continue. To fix it you have click on empty area.

To elaborate more in step 5 if you press esc to close nwggrid this weird behavior will continue. To fix it you have click on empty area.


tools/refactor/rename/rename.el: successful rename closes all other windows

Successfully renaming a symbol (a var that is private to a package, in my latest case) causes all windows to be closed but the one in which the rename was asked for.

https://go-review.googlesource.com/#/c/10453/