[$250] Attachment- Unable to cancel the requested password for PDF file

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

Action Performed:

Go to https://staging.new.expensify.com/
Log in with any account and select any chat
Click on plus button
Select add attachment > select Document.
Choose any password protected PDF.
Put password and select Send
Open again the PDF attachment and click Cancel

You can use this protected PDF file to test: password-protected.pdf
The password is 1234
Expected Result:
Able to cancel the requested password for PDF file
Actual Result:
Unable to cancel the requested password for PDF file
Workaround:
Unknown
Platform:

Where is this issue occurring?

Web
iOS
Android
Desktop App
Mobile Web

Version Number: <IP_ADDRESS>
Reproducible in staging?: Yes
Reproducible in production?: Yes
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/93399543/162761826-efae7e79-ef24-43e3-8600-46be6e6734f5.MP4
Expensify/Expensify Issue URL:
Issue reported by: Applause
Slack conversation:
View all open jobs on GitHub

Added password-protected pdf file to the issue description. Note that his problem also is there as soon as you are uploading the file because we have a preview at that stage too.

I noticed that the preview for password-protected pdf files doesn't work the same in the desktop, it just shows "Failed to load PDF file". We should have consistent behaviour.

@aldo-expensify We logged a separate issue for this https://github.com/Expensify/App/issues/8593

I think I reported this issue two weeks back https://expensify.slack.com/archives/C01GTK53T8Q/p1649156147168719. Are we ignoring the Slack reports?

Proposal

Due to limitations from react-pdf we need to add a custom handler for the password that suggested by the 3rd author (https://github.com/wojtekmaj/react-pdf/issues/581#issuecomment-654741296)
In src/components/PDFView/index.js, add a custom onPassword function:

onHandleCallback(callback, password) {
    // Cancel button handler
    if (password === null) {
        return this.props.onCancel();
    }

    callback(password);
}

onPassword(callback, reason) {
    const { PasswordResponses } = pdfjs;
    switch (reason) {
        case PasswordResponses.NEED_PASSWORD: {
            const password = prompt('Enter the password to open this PDF file.');
            this.onHandleCallback(callback, password);
            break;
        }
        case PasswordResponses.INCORRECT_PASSWORD: {
            const password = prompt('Invalid password. Please try again.');
            this.onHandleCallback(callback, password);
            break;
        }
        default:
            break;
    }
}

Apply to
<Document
   ....
    onPassword={this.onPassword}
>
   ...
</Document>

By applying this solution we are able to resolve issue #8593 as well.
Demo
mWeb
https://user-images.githubusercontent.com/5449119/163023668-cdca5acb-299f-4661-8c5d-92c1abd62be0.mp4
Web
https://user-images.githubusercontent.com/5449119/163023682-110f0f48-70c5-401e-8028-69064eef03c3.mp4

@phivh thank you for the proposal! I am mostly on board with that, but I have a few requests:

Can you please rename this.onPassword -> this.promptForPassword?
Where does pdfjs come from in const { PasswordResponses } = pdfjs;?
Where does prompt() come from?
I kind of think that onHandleCallback feels unnecessary. Can that code be moved into promptForPassword() at all? I'm not quite following how it all goes

@tgolen  🚀  fast here.

@tgolen

Can you please rename this.onPassword -> this.promptForPassword?
=> it can be, will change the name when create PR
Where does pdfjs come from in const { PasswordResponses } = pdfjs;?
=> It's from react-pdf module, it should call right above the class component, I just want to put it inside the function more clearly.
Where does prompt() come from?
=> prompt() is another way to call the confirm dialog just like window.promt(). FYI https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt#example
I kind of think that onHandleCallback feels unnecessary. Can that code be moved into promptForPassword() at all? I'm not quite following how it all goes
=> No, it is necessary to handle action cancel or ok then check the password Null or not then execute the default callback()

@phivh

I kind of think that onHandleCallback feels unnecessary. Can that code be moved into promptForPassword() at all? I'm not quite following how it all goes
=> No, it is necessary to handle action cancel or ok then check the password Null or not then execute the default callback()

I too feel onHandleCallback is unnecessary, we could refactor like below.
promptForPassword(callback, reason) {
    const {PasswordResponses} = pdfjs;
    let password;

    if (reason == PasswordResponses.NEED_PASSWORD) {
        password = prompt('Enter the password to open this PDF file.');
    } else if (reason == PasswordResponses.INCORRECT_PASSWORD) {
        password = prompt('Invalid password. Please try again.');
    }

    if (!password) {
        return this.props.onCancel();
    }

    callback(password);
}

cc: @tgolen

OK, thanks! I agree with @Santhosh-Sellavel that it looks much better like that.

It's from react-pdf module, it should call right above the class component, I just want to put it inside the function more clearly.

I'm not sure I'm following this. Is it imported from react-pdf like this?
import {Document, Page, pdfjs} from 'react-pdf/dist/esm/entry.webpack';

I think anything being imported from a module should always be at the top of the file and never inline.

prompt() is another way to call the confirm dialog just like window.promt()

Hm, I guess that works since this is desktop/web, but are there any alternatives to using it?

Thanks @Santhosh-Sellavel , Its totally able to refactor as your suggestion.
@tgolen

I'm not sure I'm following this. Is it imported from react-pdf like this?
import {Document, Page, pdfjs} from 'react-pdf/dist/esm/entry.webpack';

=> Correct, we will import like this

I think anything being imported from a module should always be at the top of the file and never inline.

=> Yea, that is a proposal, I will move on top when creating PR. Just want to put it there to show where is the PasswordResponses came from

prompt() is another way to call the confirm dialog just like window.promt()
Hm, I guess that works since this is desktop/web, but are there any alternatives to using it? It's just such an ugly UX.

=> Technically, we could create a custom popup to make the UX better but for now, to apply a bug fix we are able to use prompt() because this only apply desktop/web/mWeb and it also used by react-pdf library by default.
https://github.com/wojtekmaj/react-pdf/blob/356de607adc2af8cb284d6adbf7434e31d85f76b/src/Document.jsx#L348-L369

I checked with a few people on the team and we don't want to use prompt() for this. The UX of it is sub-par to the experience of the app and we would like to use our own form for this. Could the password form be embedded in the attachment modal?

I checked with a few people on the team and we don't want to use prompt() for this. The UX of it is sub-par to the experience of the app and we would like to use our own form for this. Could the password form be embedded in the attachment modal?

@tgolen should we consider to change the type of this bug to feature request? If we use the password form it could affect to the UI.

Yeah, I think that's fine to move it to a feature request.
On Sun, Apr 17, 2022 at 9:59 PM Phi Võ (Brian) @.***>
wrote:

I checked with a few people on the team and we don't want to use prompt()
for this. The UX of it is sub-par to the experience of the app and we would
like to use our own form for this. Could the password form be embedded in
the attachment modal?
@tgolen https://github.com/tgolen should we consider to change the type
of this bug to feature request? If we use the password form it could affect
to the UI.
—
Reply to this email directly, view it on GitHub
https://github.com/Expensify/App/issues/8595#issuecomment-1101066751,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAJMAB3XZEN3COWK6OGNLOTVFTMYTANCNFSM5TDMTFKQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

Placed a hold on this while we work out the UI details. @Expensify/design @tgolen any thoughts on the design elements of creating our own password form for password-protected documents?

@tgolen from slack thread here
Can we close this one or #8593?

Sorry, I know this is crude, but I think this is what we want to do:

Okay, I can grab this one and cook something up

Note: We also need this password prompt on Android and iOS.

Cool, looks like we have consensus on this approach:

Yay, thanks Shawn! Taking this off hold, please get those proposals in!

Doubled the price, please get those proposals in!

Proposal
Add a password entry form for password-protected PDF attachments. The password form is effectively part of PDFView. This is overall a simple solution, but requires additional plumbing to properly hide or disable the send button in the AttachmentModal component.
Task 1 - Create PDF Password Form Component

Create a React component called PDFPasswordForm as part of the PDFView component. So PDFPasswordForm.js will live inside the src/components/PDFView folder. It could also just go in src/components but it's only purpose is to request a password for protected PDFs and it doesn't provide any general facilities - like password validation, for example.

The design of the form follows the mockups provided in this GitHub issue. This component contains a text field and a confirm button. The confirm button is disabled by default and becomes enabled if the text field contains any characters. Pressing the enter key also submits the form.

On the web the PDFView component selectively renders the PDFPasswordForm when Document.onPassword() (from 'react-pdf`) is called. See https://github.com/wojtekmaj/react-pdf for details.

On iOS and Android the PDFView component selectively renders the PDFPasswordForm when PDF.onError() (from 'react-native-pdf) is called with the message, Password required or incorrect password`. See https://www.npmjs.com/package/react-native-pdf for details.

Upon successfully loading a PDF PDFView calls a function from properties called onLoad() - or onPDFLoaded() - or something else if preferred.

Task 2 - Add callback for successful PDF load

Change AttachmentModal so that the send button is disabled or hidden when the target file is a PDF. The filename is available in the variable sourceURL. This isn't the most elegant way to do this but a more elegant solution for managing the send button would probably require touching more components (like ImageView, for example.)

In AttachmentModal add an onAttachmentLoaded() handler that enables or displays the send button when it is called. For other file types this basically does nothing since the send button is already enabled/displayed.

In AttachmentModal add onAttachmentLoaded as a property on the <AttachmentView> markup.

In AttachmentView pass/forward the onAttachmentLoaded as a property in the <PDFView> markup  - as onLoad.

Task 3 - Internationalization and styles

Add internationalization string for "this PDF is password protected..." text.

Add web, mobile web and native styles for PDFPasswordForm.

Thanks, @Santhosh-Sellavel. Here's a few more details.
For Web (PDFView/index.js):

Add state to indicate that a password is required. Here I store the react-pdf callback function and use that as a flag to determine whether or not to render <PDFPasswordForm>.

In this example I'm not hiding the react-pdf <Document> component when the password form is displayed. I can do this by saving the submitted password and then not render <Document> at all. Or maybe this can just be done more simply with styles so that it's not necessary to store the submitted password. For mobile (below) it's necessary to store the password.

There's no invalid password handling here. I'll add that to the proposal.

onPassword(callback, reason) {
    this.setState({onPasswordCallback: callback});
}

onPasswordFormSubmit(password) {
    // send password to react-pdf Document component
    this.state.onPasswordCallback(password);
}

render() {

    ...

    {this.state.onPasswordCallback &&
        <PDFPasswordForm onSubmit={this.onPasswordFormSubmit}/>
    }

    <Document
        ...
        onPassword={this.onPassword}
        ...
    >
    ...
}

For iOS and Android (PDFView/index.native.js):

Convert to React PureComponent so we can store some state.

Add state to indicate that a password is required, and for passing the password to the react-native-pdf PDF component.

There's no invalid password handling here. I'll add that to the proposal.

onError(error) {
    if (error.message.match(/password/i)) {
        this.setState({passwordRequired: true});
    }
}

onPasswordFormSubmit(password) {
    this.setState({password: password});
    this.setState({passwordRequired: false});
}

render() {
    ...
    <TouchableWithoutFeedback style={[styles.flex1, props.style]}>

        {passwordRequired ? (
            <PDFPasswordForm onSubmit={this.onPasswordFormSubmit} />
        ) : (

            <PDF
                ...
                onError={(error) => this.onError(error)}
                password={this.state.password}
            />)
        }

    </TouchableWithoutFeedback>
    ...
}

@tgolen
@frenkield Proposal LGTM!
🎀👀🎀 C+ reviewed

Change AttachmentModal so that the send button is disabled or hidden when the target file is a PDF. The filename is available in the variable sourceURL. This isn't the most elegant way to do this but a nicer solution for managing the state of the send button would probably require touching more components (like ImageView, for example.)

I believe we should have option where user can enter password and view pdf while sending a password-protected pdf, also skip and just send it anyway! So no need to disable send button.

Thanks, @Santhosh-Sellavel.

Yep, I'm all fine with giving the 🟢  to move forward with the PR and the rest of the review can happen there.

I applied on Upwork. I'll submit the PR by Monday, May 23rd (05/23/2022) at the latest.
Thanks, Everyone!

Hi All. In the case where we're sending a PDF, should I add some language indicating that one can skip the password entry and just click the Send button? For example,

@Expensify/design any thoughts on the above?

I think we could omit the message below, and just change the top message to say something like "This PDF is password protected. Please enter the password to view it."

Thanks, everyone. I'll make the changes.

@frenkield Let us know when PR is ready!

I'll submit it in a few hours, @Santhosh-Sellavel.

@Santhosh-Sellavel, I submitted the pull request: https://github.com/Expensify/App/pull/9141
Thanks!

Not overdue, PR review in progress almost complete.

Status:
PR is almost 70-80 % complete. https://github.com/Expensify/App/pull/9141
We have one question from @shawnborton

Also I wanted to follow up on my previous question - where does this preview image come from exactly?

@kadiealexander
@tgolen is already OOO and will be back on June 6.
I am going OOO, so I request a new C+ assignment for this one. If @parasharrajat is available let's assign them as C+ , because he has more context to this. If not then just re-apply Exported label here.
I believe C+ alone can handle things until @tgolen is back, so let's keep @tgolen assigned to this one.

Sure, happy to help.

Can anyone please update the OP with the correct(final) mockups?

Started reviewing the PR.

~PR is almost 70-80 % complete.~ I would say 50-60%.

~PR is almost 70-80 % complete.~ I would say 50-60%.

My net hourly rate here is already comically low. And it appears that there are still many, many hours of work to do.
Whom do I contact in order to request more money for this project?

You can ask here! Please let me know what you feel is fair for this job and we'll discuss this internally.

Thanks, @kadiealexander.
This project is taking significantly longer than anticipated. I've already spent 50 hours on it and we're still only 50%-60% complete. I'd like to modify the terms of the contract as follows:

The total price is upped to $2000
There are 2 milestones: one for $500 and the second for $1500
The first milestone (for $500) is marked completed - and thus the $500 are released to me

If this isn't amenable to you I totally understand. In that case I'll cancel the contract and Upwork will release all escrow funds back to Expensify. I'll also close the pull request.
I apologize for the inconvenience.

Thanks @frenkield, I have taken this to the team to discuss internally and will be in touch.

Ok great. Thanks, @kadiealexander.

Hey @frenkield! Our team agrees with your request. I've paid the $500 milestone in Upwork and I've added a $1500 milestone to be paid after the 7 day regression period once the PR is deployed.
Thanks for your work so far, and for communicating with us about what you feel is fair.

That's great news! Thanks so much, @kadiealexander. And thanks to the rest of the team as well.

@frenkield could you please share an update here for the team?

Hi @kadiealexander. Most everything is working. I'll add some comments/questions to the pull request tomorrow. I believe these are the only outstanding technical issues:

The confirm button is correctly positioned on native and android-chrome. However, the solution doesn't work adequately on ios-safari.
The enter key doesn't behave as desired in certain situations. I think I may need to explicitly transfer focus back to the AttachmentModel submit/close buttons after a password-protected PDF is opened.

Thanks so much @frenkield!

However, the solution doesn't work adequately on ios-safari.

We can leave this one optionally.

We can leave this one optionally.

Ok thanks, @parasharrajat. So on ios-safari the confirm button will be positioned just below the password field - the same as on web.

No, I meant say that it is fine if button is not fixed at the bottom of the screen on MWeb safari when keyboard is open. On all other devices Button will be fixed bottom and float over keyboard. But button will always be at the bottom of the screen on all platforms.

Ah sorry. So...

On ios-safari the confirm button will always be at the bottom of the screen.
And when the keyboard is open, the confirm button will be covered by the keyboard. So the confirm button will not be visible when the keyboard is open on ios-safari.

Is the the correct behavior, @parasharrajat?

Yeah.

And when the keyboard is open, the confirm button is covered by the keyboard. So the confirm button is not visible when the keyboard is open on ios-safari.

Actually this is a challenge we are trying to solve. So it is fine you are not able to find a solution to it.

Ok thanks, @parasharrajat.

Hi All. Everything is done but there are a couple small rendering issues on Android. Hopefully I'll have these resolved by Monday.

@shawnborton It seems we discussed the design for the main scenario https://github.com/Expensify/App/issues/8595#issuecomment-1113477651 but missed the one where we are sending the attachment. On Send Attachment modal, there is another button Send. On the web, it looks fine as Confirm button is not sticky to the bottom. It stays next to the password input. But on mobileWeb and Android, what should we place the confirm button.
Currently, PR does this :arrow_down: . When previewing the old sent PDFs, confirm button is the green and sticky bottom which looks fine. But as per the video, it does not look good while sending the PDF.
https://user-images.githubusercontent.com/11221215/174502915-dce69d5f-d532-4804-8e87-a91fd28b8b1a.mp4

Hmm honestly I'm not too sure - it feels strange to have the send button docked to the bottom when the password input and confirm button are shown. Do you mind bringing this one to #expensify-open-source for more eyes and discussion?

Asked here https://expensify.slack.com/archives/C01GTK53T8Q/p1655843898715879

@frenkield You can proceed as decided on the slack thread. Let me know if you have any other questions. Thanks.

Ok sounds good. Thanks, @parasharrajat.

Not overdue, updates are in the PR.

Thanks for the information regarding the styles and translations, @parasharrajat.
I committed the requested updates related to styles and translations (as described in my previous comment). I also merged main from github.com/Expensify/App. So the code in the pull request is completely up to date.
All tasks are now complete.

Apologies, I totally missed that. I just left my review!

@parasharrajat @frenkield how are we tracking with this?

PR is in review.

Not overdue

The fade out solution looks good to me. Why is that not acceptable?
What do you want me to continue on the PR, @parasharrajat? As far as I know everything is 100% done.

Ah sorry! I see.

@parasharrajat, the fade out solution looks good to me. Why is that not acceptable?
Are there other people that don't approve of this solution? Or is it your decision?

Hi @kadiealexander, @parasharrajat and @shawnborton.
I need to take some time off. I'll resume working on the PR on Monday, August 22nd.

This was just merged today!

Just adding a note that I'm OOO until September 21st. As this is on hold I won't reassign it, but if you need a contributor manager to do anything before that point please reapply the external label.

Reassigning as I'm ooo for the next 9 days.

Issue not reproducible during KI retests. (First week)

PR in product with no regressions for 7 days - paying @frenkield $1500 based on the convo here.
Since this original Upwork job automatically closed.
I made a new job posting and hired @parasharrajat for payment.
Internal posting - https://www.upwork.com/ab/applicants/1570596159667929088/job-details
External posting- https://www.upwork.com/jobs/~010327ce806aef815b

HI @Christinadobrzyn
I've checked this job from upwork.
As a senior React-Native developer, I'd like to work on your project.
I've checked the issue carefully, I can fix it.
Could you please allow me to join the slack?
Looking forward to hearing from you.
Best regards

Hey @super-soft-dev - thanks for reaching out! This project is complete but feel free to reach out to us at<EMAIL_ADDRESS>with a link to your Upwork profile and our team can add you to Slack to help with open jobs.

ok Thanks

@parasharrajat I just paid out this job $500 for the original amount and $1500 as the bonus. Please feel free to reach out with any questions! Thank you!


Not a SharpShell Server

Version of SharpShell used: 2.7.2
When I try to open my dll in server manager it shows " The file iso.dll is not s sharpshell server".
I'm new in .net and have no idea what is wrong.
I've followed tutorial https://www.codeproject.com/Articles/563114/NET-Shell-Extensions-Shell-Thumbnail-Handlers
I checked .net framework version 4.7.2
using System.Drawing;
using SharpShell.SharpThumbnailHandler;
using System.IO;
using System.Runtime.InteropServices;
using DiscUtils.Udf;
using System.Drawing.Drawing2D;
using SharpShell.Attributes;

namespace IsoThumbnailHandler
{
    [ComVisible(true)]
    [COMServerAssociation(AssociationType.FileExtension, ".iso")]
    [Obsolete]
    public class IsoThumbnailHandler : SharpThumbnailHandler
    {

        public static Bitmap ResizeImage(Image image, int width, int height)
        {
                  //some codes
        }

        protected override Bitmap GetThumbnailImage(uint width)
        {
            //read stream and return bitmap
        }

    }
}

I have to add initializer and Dispose.


Check results returns 0 duration and 0 use count when no adapters match

When no adapters match mixer check returns valid duration = 0 and use count = 0.
This effectively disables cache.
The solution is to create a "fall back adapter" where the default duration and use count and response (allow or deny) can be configured.
If no adapter matches during check, the fall back adapter should respond.
This commit in mixer/pkg/api/grpcServer.go removed the built in defaults.
This is what happened in the regpatrol issue.

Wow, thank you very much for pinpointing this. I'll have a fix by tomorrow.

Related thought: If no Mixer check adapters exist in Istio config, it would be super neat if Pilot would configure proxies to disableCheck.

@geeknoid Per my suggestion in Mandar's comment: it would be really good to make the allow-all adapter configurable. The setting for the valid duration affects how long a stale config is tolerated in the system, and should be under control of the operator. It also allows the switch to deny-all behavior, for extra security.
@douglas-reid I don't think we should do any type of inference for "missing config", in principle. The config system is eventually consistent, so a missing config is never a reliable indicator for disabling policy checks.

@kyessenov we already have a denier adapter. imho, we should be very careful about introducing a special class of hard-coded adapter with its own configuration.  In fact, if we want an allow-all adapter, I believe we can just set the response code of denier to be rpc.OK and give it a duration/tokens.

@douglas-reid @geeknoid Let's just change the denier adapter configuration then to be OK and put default validity constraints there. Mixer takes an AND of the applicable adapters in the end.

My intended fix was going to be considerably more expedient for today: If
no adapter has been consulted for a request, return a fixed duration OK
response. This is the behavior we had previously.

At this point in the game, I don't want to introduce the notion of a
default fallback adapter. It's too much for too little value overall. The
hardcoded return value is 5 lines of product code, with 25 lines of test
code.
Post 1.0, we can rename 'denier' to 'static' or something like that and
introduce the notion of a fallback adapter in our config model.
On Wed, Jun 13, 2018 at 11:17 AM Kuat<EMAIL_ADDRESS>wrote:

@douglas-reid https://github.com/douglas-reid @geeknoid
https://github.com/geeknoid Let's just change the denier adapter
configuration then to be OK and put default validity constraints there.
Mixer takes an AND of the applicable adapters in the end.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/6216#issuecomment-397035634, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AVucHc0Y8sNVRcQ7p9BaCqde0qUUXGx_ks5t8VcagaJpZM4UlTTy
.


New Manage button on the home page has a different color scheme than Import Existing and Create

Setup

Rancher version: v2.7-head https://github.com/rancher/rancher/commit/568544bc9f149af838521c7b96accebb135182cb
Browser type & version: Chrome

Describe the bug

As part of https://github.com/rancher/dashboard/issues/7547, we recently introduced a Manage button to the home page that links directly to the Cluster Management page. It looks like the following:

The Manage button is the only one that has a different color scheme than Import Existing or Create. We should ensure that we have consistency across all of the buttons.
To Reproduce

Setup Rancher and navigate to the home page in a browser.
Validate that the Manage button has a different color scheme than Import Existing and Create.

Result
The color scheme mismatches.
Expected Result

The color scheme should not mismatch what we see in Import Existing and Create.

This is by design.
Block filled buttons (all blue) are call to actions like creating or importing clusters. General buttons (outlined) are designed to be less distracting like just navigating to cluster management.


output is in wrong directory, not-changeable, no warnings

config:
{ entry: '> [src/index.js]',
        output: 'test/dist/buildSync.js',
        log: true,
        debug: true,
        plugins:
         [ FuseBoxHTMLPlugin { useDefault: true, test: { /\.html$/ [lastIndex]: 0 } },
           FuseBoxJSONPlugin { test: { /\.json$/ [lastIndex]: 0 } },
           [length]: 2 ],

actually winds up going to
 output:
            UserOutput {
              context: [Circular],
              original: 'test/dist/$name',
              filename: 'buildSync.js',
              useHash: false,
              template: '$name',
              dir: '/Users/.../node_modules/ava/lib/test/dist' } } },

and this configuration is not changeable, and there is no debugging for it

FuseBox v4 Major Upgrade
As of today, the latest major version of FuseBox v4 is available in fuse-box@next. FuseBox has undergone a full re-write from scratch, learning from its mistakes in the previous versions.
There are a lot of improvements, speed and config wise.
Get started here
We are still working on the documentation and polishing before the major release. We are getting very close. And we need help testing.
npm install fuse-box@next

Most of the issues that I am closing have been resolved, however, if you find that your issue is still relevant in v4 don't hesitate to re-open or (better) create a new one with v4 configuration.


Update changelog for v0.9.2

Issue #, if available:
Description of changes:
/cherry-pick release-0.9
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/cherry-pick release-0.9

/approve


Experiment with separating concerns in some simple States.

This is closer to a callback style, which might be more familiar to
people coming from other frameworks.
It's a pretty mechanical refactor now, but the hope is that looking at a
bunch of on_mouseover() functions will reveal further refactors more
easily than a bunch of monolithic event() functions.
I don't think every State fits this pattern; things like SandboxMode
need to carefully orchestrate the order of things. Make simple things
easy and hard things possible.
@michaelkirk, @gedkott : Any opinion on this? There are many more places it could be applied, but I don't want to spend the time before being more convinced this is helpful.

There are many more places it could be applied, but I don't want to spend the time before being more convinced this is helpful.

As a side note, if SimpleState becomes more popular than State we should consider changing the names  - maybe SimpleState becomes State and what was State becomes CustomState or something.

As a side note, if SimpleState becomes more popular than State we should consider changing the names - maybe SimpleState becomes State and what was State becomes CustomState or something.

Quite reasonable! I'm not sure how many places should be changed over; I don't think I'll make a focused effort to migrate, but just do it as I happen to touch different parts of the UI.


1% of users getting JS error on layer deletion

Context
According to this report https://fsty.io/v/aLBxdPG 1% of free users are getting a JS error when deleting a layer. This needs further investigation.

Ey @noguerol is this still happening?


Feature request: Additional whitelist URLs?

It would be sweet if I could build a "Google Docs" app that allowed URLs from both docs.google.com and drive.google.com, or *.google.com, or whatever. Fluidapp allows this. Not sure if it's possible but it would be great.

What do you mean by whitelist? Unless there's something about open web apps that I'm unaware of we don't do any whitelisting.

If you create an open web app for "https://docs.google.com"...

It doesn't work. My SWAG for the reason is that some of the JS that makes it work comes from a different domain.
If you click on the hamburger at top left and choose "Drive", it will open that in your default browser, even though it's "part of this application" somehow. My SWAG for this is that Google Drive is at a different domain.

"Whitelist" is the word I use for the observed behavior: Some links in the open web app open in the open web app, and other links in the open web app open in the default browser. Some essential content for the open web app is downloaded; some is (apparently) not. Allowing me to figure out that breakage and make a whitelist could mitigate. But of course that depends on whether an open web app has this affordance.

I can't replicate the first issue, the app itself works fine for me. There's no whitelisting of domains that an app does that the browser doesn't; AFAIK an open web app as installed by Firefox launches a separate instance of Firefox with a new profile made specifically for that app and loads up a single window with one tab and no chrome, so it should function nearly identically to how it does in Firefox itself, with a few small exceptions.
As for the second issue, I think it's out of our control, in that any links that open new windows/tabs open up in your default browser as opposed to another window of the app. I can't find anything on how to toggle this app-wide, and we have no control over the app's behavior itself.
Closing this as I can't replicate and wontfix. Feel free to reopen if you're still getting this issue and have some tips for reproducing. Thanks!


cmd/cue: support a "shuffle" env var or flag

Just like go test -shuffle randomizes the order in which it runs Go tests, to find any unintended dependencies between tests, we should have a way to run CUE so that it shuffles the order in which it performs it work. For example, right now the evaluation of files always happens in the same order, so we could shuffle the order of the files to make sure that the shuffling doesn't change the result.
The flag or env var should take a seed number, so that it is easy to reproduce exactly the same failure when we find one.
This will mainly be useful to us when debugging or for CI, akin to go test -race, but it could also be useful to downstream users to diagnose CUE bugs.
cc @myitcv

In the context of https://github.com/cue-lang/cue/issues/474 this might be hard. Even today, the order in which CUE is presented does have meaning from the perspective of manifestation (output/presentation). https://github.com/cue-lang/cue/issues/474 proposes to make that stronger. Shuffling the order of input to the evaluator would then by definition break the order of manifestation, thereby breaking all the tests (which almost all use golden files).
This is not to say that the order of evaluation matters from a semantics perspective. Indeed, for this to matter semantically would go entirely against one of CUE's goals to be order independent.
But this might work if used with CUE_UPDATE=1. That would allow evaluation to run with a "shuffled" input, and golden files to be silently updated when the comparisons inevitably fail. In such a mode, we could then drop the CI check that ensures the working tree is clean.
So this would end up being a mode of testing that does not test manifestation, rather a stress test of the evaluator to random order of inputs.

Good points. Thinking outloud, I wonder if we could use this for go test in a way where the tests don't expect cue eval or cue export outputs to be precisely equal byte by byte, but semantically equal still. That would be stricter than using CUE_UPDATE=1 to ignore the result of commands like cmp, if we can pull it off.
A very rough version of this could be to run CUE_UPDATE=1 go test ./..., and have a tool to look at all the txtar file changes to ensure that they are all semantically equivalent, like changing the order of fields.


Normalize Timezones

this PR allows sites to leave out the data-timezone and have meeting times translated into the user's timezone
meetings would be required to provide their own timezone in the right format
it would not have TSML support initially, since TSML:

doesn't store timezone information for meetings
always specifies timezone in its embed shortcode

closes #248

i have two concerns so far about this PR:

there's currently no outward indication that the timezone has been translated. i added times to the meeting names, but presumably most sites would not do this. i'm not sure how important it is for online meetings, but for in-person ones (if i'm planning a trip, say) then this should probably be flagged in the interface somewhere

this makes it so if you do specify a timezone the times all get normalized to that timezone. this could present a problem on a site that currently displays meetings across a range of timezones such as Continental European Region (they are currently not using TSML UI, but maybe we should contact them about this change)

requester is going to use online-meeting-list on a separate page for this purpose


UploadRequest to Glacier fails with BadRequest

Thanks for sorting #117, but now I get a BadRequest error.
Trace output (sanitised)
[TRACE] 2016-03-04 22:58:31 CurlHttpClient [139819415877376] Making request to https://glacier.eu-west-1.amazonaws.com/vaults/myvault/archives
[TRACE] 2016-03-04 22:58:31 CurlHttpClient [139819415877376] Including headers:
[TRACE] 2016-03-04 22:58:31 CurlHttpClient [139819415877376] authorization: AWS4-HMAC-SHA256 Credential=A*******************/20160304/eu-west-1/glacier/aws4_request, SignedHeaders=content-length;content-type;host;user-agent;x-amz-archive-description;x-amz-content-sha256;x-amz-date;x-amz-glacier-version;x-amz-sha256-tree-hash, Signature=4d************************************************************b0
[TRACE] 2016-03-04 22:58:31 CurlHttpClient [139819415877376] content-length: 364960
[TRACE] 2016-03-04 22:58:31 CurlHttpClient [139819415877376] content-type: binary/octet-stream
[TRACE] 2016-03-04 22:58:31 CurlHttpClient [139819415877376] host: glacier.eu-west-1.amazonaws.com
[TRACE] 2016-03-04 22:58:31 CurlHttpClient [139819415877376] user-agent: aws-sdk-cpp/0.9.6-67-g3f84fee Linux/4.1.12 x86_64
[TRACE] 2016-03-04 22:58:31 CurlHttpClient [139819415877376] x-amz-archive-description: mydescription
[TRACE] 2016-03-04 22:58:31 CurlHttpClient [139819415877376] x-amz-content-sha256: b3************************************************************02
[TRACE] 2016-03-04 22:58:31 CurlHttpClient [139819415877376] x-amz-date: 20160304T225831Z
[TRACE] 2016-03-04 22:58:31 CurlHttpClient [139819415877376] x-amz-glacier-version: 2012-06-01
[TRACE] 2016-03-04 22:58:31 CurlHttpClient [139819415877376] x-amz-sha256-tree-hash: b3************************************************************02
According to http://docs.aws.amazon.com/amazonglacier/latest/dev/api-archive-post.html we should have something approaching:
POST /AccountId/vaults/VaultName/archives   (1)
Host: glacier.Region.amazonaws.com
x-amz-glacier-version: 2012-06-01
Date: Date (2)
Authorization: SignatureValue
x-amz-archive-description: Description
x-amz-sha256-tree-hash: SHA256 tree hash
x-amz-content-sha256: SHA256 linear hash
Content-Length: Length
<Request body.>
(1) Is the AccountID or '-' missing?
(2) Trace has 'x-amz-date' rather than 'Date' (although there is an example given further down the page that uses 'x-amz-Date')
Thanks!

x-amz-date and Date are interchangable.
Still investigating the AccountID portion.

according to the source code, AccountId would be there if you specified it. Did you specify it?

Oops. My bad :(
All working now!


Conversion fails

When I try to use this package, I get the following error:
Conversion failed: Error: spawn C:\WINDOWS\system32\cmd.exe ENOENT
Note  jupyter-nbconvert executable installed and functions properly.

I have never tried this on windows and it probably doesn't work but it should be easy to fix.
Maybe you or someone who has access to a windows machine could make a small PR to fix it.


write mini documentation for chunk structure

in wiki. relating already to the new branch
must cover:

makefiles
input / output comments
naming of files

but i think there is quite a few more points, i should check / think about this a bit
eg.

headlines
latexmath
etc

see https://github.com/compstat-lmu/lecture_i2ml/blame/devel/README_intern.md#L18 ff.
we don't have a wiki, i don't think we need one.

yup, all ok.


[es] Update KubeCon dates for 2024

en PR https://github.com/kubernetes/website/pull/44158/files
/assign @ramrodo

/lgtm

/lgtm

/lgtm

@ramrodo could you double-check this, it seems to be ready to be merged

Thanks! It's ready.
/lgtm
/approve


Fix up keyword and test case

Fix up keyword: push image with tag
Fix up case: Project Admin Add Labels To Repo
Fix up case: Proj Replication Jobs Log View

Coverage decreased (-0.07%) to 64.299% when pulling 080bfaee798abd7afce3c345bd139b687d3580f4 on sigsbee:fixup into 04335de72b1121d15effbf9d9a31a657b51163ab on vmware:master.


How to Tell Which Pentacle Is Which (*edited for clarity)

I've played the mod a few times, and one of the things that makes it difficult is not knowing which ritual (drawing on the ground) is which, especially when you have 6 or 7 of them scattered about.
Can I suggest a couple of options.

A new block that can be written on, or automatically gets the ritual name as part of the creation. At the moment I'm using valilla signs, but something that fits in with the mod would be great.

When you look at the centre golden bowl, it shows the name of the ritual above it.

Thanks, Rob.

I do like the second suggestion of the Golden Bowl showing the ritual name.
Another option would be similar to Traveler's Titles
 that makes the name show up on the screen when you enter the circle.
Also, something that bothered me about the circle.
I am not sure if this is a feature that was added or removed. But I feel the Circles should be "Upgradable" Like, since there are 4 tiers of crusher demons, I feel that the Circle for the Foliot should be the base, and you made additions to the circle to get the Djinn, and so on. The idea would be that you could still perform the lower-tier rituals while using a high-tier circle since the original circle is still part of the bigger circle.
Because I also get lost in how many circles I have to make, as well as there are circles that I make just once and never again.
So I feel that There should be just a few types of circles, and then tiers for those types.
So A Circle for Summing, a CIrcle for Binding, and a Circle for Possession. Then you would get Tiers for each type, that way you could use the same circle with different sacrificial items for the crafts.
I think this is already in the mod, as we have a Foliot tier, a Djinn tier, Afrit tier, and Marid tier.
But looking at the 3 types of circles tier progressions, they all look different, so it feels less like "expanding your ritual circle" and more like "you need 12 different circles" to do the crafts.

I've played the mod a few times, and one of the things that makes it difficult is not knowing which ritual (drawing on the ground) is which, especially when you have 6 or 7 of them scattered about.
Can I suggest a couple of options.

A new block that can be written on, or automatically gets the ritual name as part of the creation. At the moment I'm using valilla signs, but something that fits in with the mod would be great.
When you look at the centre golden bowl, it shows the name of the ritual above it.

Thanks, Rob.

Fair point, this is something I should look into. I have to look into how to do this in a performant manner, as currently the evaluation of a pentacle is lazy (that is, when a ritual starts, it checks for the pentacle, there is no ongoing awareness of which set of blocks is a pentacle). But that should be solvable :)

Also, something that bothered me about the circle. I am not sure if this is a feature that was added or removed. But I feel the Circles should be "Upgradable" Like, since there are 4 tiers of crusher demons, I feel that the Circle for the Foliot should be the base, and you made additions to the circle to get the Djinn, and so on. The idea would be that you could still perform the lower-tier rituals while using a high-tier circle since the original circle is still part of the bigger circle.
Because I also get lost in how many circles I have to make, as well as there are circles that I make just once and never again. So I feel that There should be just a few types of circles, and then tiers for those types. So A Circle for Summing, a CIrcle for Binding, and a Circle for Possession. Then you would get Tiers for each type, that way you could use the same circle with different sacrificial items for the crafts.
I think this is already in the mod, as we have a Foliot tier, a Djinn tier, Afrit tier, and Marid tier. But looking at the 3 types of circles tier progressions, they all look different, so it feels less like "expanding your ritual circle" and more like "you need 12 different circles" to do the crafts.

@ffuentesm Not sure if you are currently in Discord, but someone in the ATM team created a datapack for exactly that, there is one circle that is ever-growing and backwards compatible with early tier rituals. I decided against using it as the default (as a whole meta has developed around the different circles and how to set them up economically and stylistically), but the datapack was linked in discord. It is also compatible with the dictionary of spirits, so the correct circle is displayed for each ritual.

No, I am not on Discord, but I would appreciate a lot that Datapack if possible.
I just think that needing 11 different circles bloats things up and makes me lost when crafting.
I would prefer the idea of "growing your circles" as you progress. Not to have just 1 circle, but 3 main circles for the main 3 functions.
It's funny because when I look at the Marid circles, they are identical. The difference is that the Binding one adds 4 soul crystals to the circle.


Choose Renderer per Style

As initially described in #7 one should be able to switch the renderer in the editor. Feasibility yet to be tested.

[x] Build Maputnik with two renderers
[x] Be able to switch Renderer via config
[x] Store default renderer in metadata of style
[x] Add option to toolbar


decouple the engine from the context manager

in order to better support different rendering API (read: Metal in macOS because OpenGL performance there is terrible), we need to support a context manager different from GLFW.
As part of the same effort, decouple the engine from the context manager and support more than one.
Tasks:

[x] decouple the engine from the context manager (implementing callbacks that fetch the relevant data)
[x] add support for sokol_app, that will enable Metal, DirectX and webGL/webgpu
[x] make sokol_app the default, and convert glfw into an example on how to use a different framework

implemented with PR #7

implemented with PR #7


Reflexive connectivity test times out

I've not had a chance to debug this yet but if you @jessetane have an idea please take a look.

So, on my home network (cheap netgear wifi router with a public ip doing stock nat) it works fine, however when I tether my laptop through my phone (AT&T LTE, at least 2 levels of nat) reflexive times out for me as well. That particular scenario has never worked for me without a relay though so it does not come as a surprise. What does your network setup look like?

Ow, my comment never made it (I did not hit enter before I left the office it seems:().
I wrote exactly what you wrote, our corp network is behind several NAT's hence it times out, @andresusanopinto kindly pointed this out.
We do suggest however that instead of reportFatal we should do reportWarning as this is expected lots of networks (corp, mobile etc). I think that applies to the Host candidate test as well, that will not always succeed either. Basically they are informative tests, not "something is wrong with your system" kind of test.
Then we could also change the warning text to "Failed to gather HOST/Server Reflexive Candidates" rather than just displaying "Timed out".
WDYT?

Got it. First, is there a common scenario when host connectivity would fail? That's the exact issue that led me here in the first place, and it seems important to me that that scenario would always work. Very interested to know if I'm missing anything with that assumption!
I agree it might be nice to lower the severity level of the failure, but reportWarning still shows the green check next to the failed test for me. I see the suite turns yellowish, but the only way to see which test failed is to open each of them up and read the log, which is sort of annoying.
Also, the connectivity tests are sort of an awkward case - as long as one of the scenarios works, things might be ok, but if all of them time out, something is definitely wrong and the whole suite should fail.

One other thing: I'm fairly sure host and reflexive candidates are almost always gathered, even when their respective connectivity tests fail. The failure is most frequently due to unknown configuration or topology problems on the network, so in those situations I'm not sure what else we could log here other than basically "it didn't work".

I increased the timeout in #130, lets see if that reduces some of throughput and connectivity test "Timed out" failures.

Also, I'm not sure but I suspect that when creating a peerconnection with a turn server address ( turn:turn:xx.x.x.x.x) the turn server does not provide server reflexive candidates or even the browser filters them out? Will have to do some testing.
WRT to reportWarning() should in my opinion fail but suite turn yellow. And yes it is tricky as it's environment dependent, which we cannot detect hence we got nothing to compare with to determine if the test result is valid for the particular environment. Tricky ;)

Ow I missed the fact that the reflexive test ofc uses STUN, nvm my comment about TURN + reflexive candidates ;)

So maybe we should add a warning that reflexive candidates have been gathered successfully (verifies that the browser has been able to contact the stun server and it has provided candidates) but failed to establish a connection, most likely due to some exotic network config.
Maybe better to consolidate the tests and evaluate the results from all three collectively?

Also worth bringing up here is the IPv6 test which is a similar situation (fails for most people, but does not necessarily break anything).

Yes indeed, this is due to having only two conditions, error and success. I'm working on adding a proper warning method.

Fixed in #130


Issue overlap 11

Hi @NtemKenyor, I have raised a Pull Request for the above issue. Could you please look into it?


Fix Binder configuration

Fix Binder configuration and remove patches mention, as it's not needed after the v4 migration. Also upgrade pinned version of jupyterlab_widgets package.

Currently, for the Binder build to succeed, the async_generator and certipy packages, which are sub-dependencies of the main packages we use, need to be specified inside the environment.yml file.
Merging this as the Binder deployment works now. Will open up future PRs for improving the build, if another solution comes up.


Add ignoreSingleLineRawStringProperty

Description
Allow single line raw strings to be ignored during MaxLineLengthRule execution.
Since multi-line raw strings are already ignored by default and that it is common to have long string literals, this may be a good compromise between disabling the rule and using multi-line raw strings.
Checklist

[x] tests are added
[ ] CHANGELOG.md is updated

I do wonder if this even needs a configuration option. Maybe we should just ignore all raw strings, regardless of number of lines? As a principle for ktlint we try to have a minimal set of configuration options (although we've certainly violated that in the past.)

In https://github.com/pinterest/ktlint/issues/659#issuecomment-844148789 it was mentioned that #1149 and #1150 are alternative solutions for the issue. As @shashachu mentioned, and I agree with her, we should not add a ktlint option for this. So closing down this alternative without merging.


Fix ClassReferenceParser

Returns ClassInfo of the model when forClass_ is a modelled class, otherwise returns the Class itself.
ClassInfo is used as the underlying java type for the property of type "Class".
Thus when unmarshalling from json string it should be converted back into a ClassInfo.
For example, for the model below
foam.CLASS({
  name: 'Thing',
  properties: [
    { name: 'targetClass', class: 'Class' }
  ]
});

When unmarshalling
{
  "class": "Thing",
  "targetClass": {
    "class": "__Class__",
    "forClass_": "OtherThing"
  }
}

The targetClass should be the ClassInfo of "OtherThing" and not OtherThing.class.

Are you sure this is the correct behaviour? It seems odd that we would return a Class or ClassInfo. If someone needs a ClassInfo instead of a Class then shouldn't they just resolve it themselves?

There is an issue when unmarshalling the above example because the PropertyParser tries to set the "targetClass" property and it expects a ClassInfo but ClassReferenceParser return a Class so the parser throws ClassCastException.
Script to re-produce:
import foam.lib.json.*;
import foam.mlang.predicate.Predicate;
import foam.nanos.auth.User;

import static foam.mlang.MLang.*;

pred = INSTANCE_OF(User.class);
out = new Outputter();
jsonString = out.stringify(pred);
print(jsonString);  // json string

parser = new JSONParser();
parser.setX(x);
obj = parser.parseString(jsonString, Predicate.class);
print(obj);  // null

Since "Class" type on the Java side is simply a ClassInfo, we could probably make it always returns ClassInfo. Also, currently on the outputter side we don't support generating value of pure Java class type. https://github.com/foam-framework/foam2/blob/master/src/foam/lib/json/Outputter.java#L206:L241.

@kgrgreer do you think we make ClassReferenceParser to only return ClassInfo?

This problem is alluded to my TODO left right by the code you're updating.
// TODO(adamvy): Should Class vs ClassInfo be separate types?
// What should we store in Class properties.

The question being, should properties of { class: 'Class' }, store the ClassInfo or the Java Class object?  In JS these are the same thing, but in Java and Swift and any language that has its own class system they are separate.
AbstractDAO.OF for example is a "Class" property but stores a ClassInfo in java.
https://github.com/foam-framework/foam2/blob/master/src/foam/dao/AbstractDAO.js#L63
We should answer this question, remove the TODO and make sure the parsers/outputters on all platforms do the same thing.

We should answer this question .. should properties of { class: 'Class' }, store the ClassInfo or the Java Class object?

Yes, we should decide how to handle this properly.
Our new type system for "Class" type also defaults to ClassInfo on the Java side.
https://github.com/foam-framework/foam2/blob/master/src/foam/core/Type.js#L329
It seems like we don't have custom javaType: 'java.lang.Class' on properties of { class: 'Class' } in our codebase. Would it be sensible to only store ClassInfo?
And if we would like/need to support storing both, it might be also better to separate them as @adamvy has mentioned. @kgrgreer, any thoughts?

We really want to store the Model, but decided to call models classes in JS to make it more familiar to people. What we really want is the Model/JS-Class/ClassInfo. We can get the actual Java class from the ClassInfo. I would just keep this named Class and clearly document that it is storing the classInfo/JS-Model. If we need an actual Class property, we probably just want a "class name" like we use in NSpec, in which case we can just use String since classes aren't actually marshallable or editable.

Updated. @kgrgreer @adamvy, please take a look when you have a chance.

@kgrgreer, is there something else we need to address here?

This looks reasonable, but I think we can optimize a bit.
First off, in https://github.com/foam-framework/foam2/pull/2051 I added an end to end serialization test that serializes a complex object to the server and back.  I had to disable the part of the test which deals with Class/ClassInfo references.  Can you merge your PR with master so you have those changes, and uncomment the lines in my test to verify that these changes pass the end to end test?
Secondly, I think we can take a shortcut for Class properties like we do for Date properties and just serialized the name of the class as a string, instead of the more complex { class: "__Class__" ... construct.  We should still use __Class__ by default, but when dealing with a Class property it should have custom serialization/deserialization to just serialize the class name.
Take a look at #2051 for to see the places where we put in special optimizatino for DAte properties.  In particular the Date property in JS the AbstractDatePropertyInfo.java object.

Updated, please take another look. Thanks @adamvy.

This is looking good, what I'd love to do at this point is add custom serialization/deserialization for the Class property so that it can just send a the class id as a string.  Similar to how Date property just sends a number as opposed to the whole { class: '__Timestamp__' ...} construct.

Added passClassesByReference boolean to JSON Outputter and override toJSON in Class property so that it outputs string or { class: '__Class__', ... } with respect to the value of passClassesByReference.
If passClassesByReference is true, Class objects are passed as { class: '__Class__', ... }. Otherwise, passes the class.id as string.

I still think we want to special case Class property serialization so that it only outputs the id.  For dates we do this here https://github.com/foam-framework/foam2/blob/master/src/foam/core/types.js#L87 for JS and here https://github.com/foam-framework/foam2/blob/master/src/foam/core/AbstractDatePropertyInfo.java#L72 for Java.
For Class properties we should add an AbstractClassPropertyInfo with a custom toJSON() that is just outputString(((foam.core.ClassInfo)value).getId()); for java.

Addressed your comments, @adamvy. Thanks.


Verify sig order

What
Resolves #323

Reminder, as I'm sure you're already aware, just mentioning it, the SDK will need updating to call with host fn with the params in the right order.

Reminder, as I'm sure you're already aware, just mentioning it, the SDK will need updating to call with host fn with the params in the right order.

Yup I have the change ready. I'll open that PR after this is merged.


Fails in some deeply nested method chains sprinkled with indexing

Found in an attempt to format this. Haven't found a minimal reproduction yet, sorry

rustfmt.toml:
error_on_line_overflow = true
max_width = 100
imports_granularity = "Crate"

Version: rustfmt 1.7.0-nightly (7f2fc33d 2024-04-22)

It's the long string literal on line 86 thats preventing formatting. rustfmt can't fit that string literal within the max_width so it fails to reformat the entire method call chain.
This is another duplicate of https://github.com/rust-lang/rustfmt/issues/3863


Update index when association changes?

Is it possible to update indexes when an association changes? I mean a blog post has comments and when comments are added it still says comment count is zero. Is that what facets should be used for?

Hi, depends on how exactly you define how records are stored in the index -- could you post some snippet of mapping/to_indexed_json, etc? (Normally, it should happen behind the scenes. Facets are a way to compute some aggregated values.)

Please don't laugh out loud at this code... :)
  mapping do
    indexes :id
    indexes :title, boost: 200
    indexes :description,  boost: 55
    indexes :privacy
    indexes :pr
    indexes :prescribed
    indexes :workout_at, type: 'date'
    indexes :box_wod_id
    indexes :bench_id
    indexes :user_id
    indexes :username
    indexes :group_names, boost: 150
    indexes :photo_file_name
    indexes :email_notification?
    indexes :public?
    indexes :box_only?
    indexes :private?
    indexes :pr?
    indexes :rx?
    indexes :video_link
    indexes :comments_count
    indexes :result_time
    indexes :result_weight
    indexes :result_rounds
    indexes :result_reps
    indexes :result do
      indexes :time
      indexes :weight
      indexes :rounds
      indexes :reps
      indexes :twitter
      indexes :facebook
    end
    indexes :user do
      indexes :id
      indexes :username,  :type => 'string', boost: 99
      indexes :email
      indexes :username_migrated
      indexes :profile_pic_filename
    end
  end

  def to_indexed_json
    to_json(methods:
    [
      :username,
      :group_names,
      :comments_count,
      :stars_count,
      :starred_user_ids,
      :result_time,
      :result_weight,
      :result_rounds,
      :result_reps
    ], include: { result: { except: [:comparable_id, :comparable_type, :created_at, :updated_at] }})
  end

  def comments_count
    comments.size
  end

Nothing wrong with your code :)
Hmm, you seem to be properly indexing the comments_count method in the to_indexed_json method... This is really weird -- as soon as you add a comment, and then save the model instance, it should be propagated to ES.
One idea: maybe you've changed the mapping along the way, and there's a mismatch between the mapping and the data. AFAIK Tire does not handle this situation well, doesn't raise, etc. Could you try it with a fresh, testing index?

If I refresh the index it get's indexed properly. I think the problem here is how I create the comments.
  def create
    @commentable = find_commentable
    @comment = @commentable.comments.build(params[:comment])
    @comment.user = current_user
    @comment.save

    respond_with @comment, layout: !request.xhr?
  end

Maybe I should save the @commentable instead of the comment or just add it to the @commentable array of comments?

Yes, I'm afraid the @comment.save won't bubble up to the @commentable instance. Firing the @commentable.tire.update_index method should be enough, no need to saving the whole thing.

Works like a charm!


Support for the AWS Security Finding Format (ASFF) for output results

The support for ASFF for output results will allow the findings to be consumed by AWS Security Hub.

Hello, @barnesrobert ! Thank you so much for your suggestion 🙂
Can you please describe it a little more? Thank you.


Normalize labels of time measurement datum terms

ID
Label

EUPATH:0004991
60 day follow-up date

EUPATH:0023052
60-day follow-up observation time

EUPATH:0000429
antimalarial drug used date

EUPATH:0000091
clinical visit date

EUPATH:0000150
date of death

EUPATH:0010219
date of first antibiotic administration

EUPATH:0000319
date of hospital admission

EUPATH:0000320
date of hospital discharge

EUPATH:0000390
date of last fumigation

EUPATH:0000151
date of participant first enrolled in a study

EUPATH:0000152
date of participant last seen in a study

EUPATH:0010319
date of rehydration

EUPATH:0000525
days of follow up specimen collection

EUPATH:0000153
days since a clinical visit with a malaria diagnosis

EUPATH:0010215
defecation date

EUPATH:0010238
diarrheal episode time measurement datum

EUPATH:0000747
DNA extraction date

EUPATH:0000154
duration of abdominal pain

EUPATH:0000155
duration of anorexia

EUPATH:0000414
duration of being febrile

EUPATH:0000156
duration of cough

EUPATH:0022048
duration of current main occupation

EUPATH:0022049
duration of current secondary occupation

EUPATH:0000157
duration of diarrhea

EUPATH:0000158
duration of fatigue

EUPATH:0022037
duration of fourth most recent trip

EUPATH:0000159
duration of headache

EUPATH:0000160
duration of jaundice

EUPATH:0000161
duration of joint pains

EUPATH:0022034
duration of most recent trip

EUPATH:0000162
duration of muscle aches

EUPATH:0022035
duration of second most recent trip

EUPATH:0000163
duration of seizures

EUPATH:0000164
duration of subjective fever

EUPATH:0022036
duration of third most recent trip

EUPATH:0000165
duration of vomiting

EUPATH:0043064
duration time of insecticide exposure

EUPATH:0000749
end of observation period

EUPATH:0021085
household data collection date

EUPATH:0000792
lethal insecticide time 50

EUPATH:0043145
lethal insecticide time 90

EUPATH:0043146
lethal insecticide time 95

EUPATH:0043147
median knockdown time

EUPATH:0000191
number of days from time of participant enrollment in a study until   current visit

EUPATH:0000350
number of days per week at primary job

EUPATH:0000351
number of days per week at secondary job

EUPATH:0000366
number of hours per day at primary economic activity

EUPATH:0000367
number of hours per day at secondary economic activity

EUPATH:0000427
number of months since malaria diagnosis

EUPATH:0000278
parasite clearance time

EUPATH:0000290
parasitemia start time

EUPATH:0000138
participant observation duration time

EUPATH:0000360
primary economic activity pay period

EUPATH:0000361
secondary economic activity  pay   period

EUPATH:0015458
stool test for microorganisms date

EUPATH:0010220
time of first antibiotic administration to human participant under   investigation

EUPATH:0022064
time of most recent bednet treatment

EUPATH:0023002
time of participant first enrolled in a study

EUPATH:0010320
time of rehydration

EUPATH:0000219
time of screening

EUPATH:0000750
time to first malaria diagnosis

EUPATH:0000745
time to onset

EUPATH:0000751
time to reinfection

EUPATH:0023050
treatment start date

EUPATH:0023051
treatment start time

EUPATH:0000378
years of living in the community

EUPATH:0000377
years of living in the dwelling

@johnwjudkins Could you please document the rule for naming the terms?

I think we'd better to create a naming convention wiki page to record it.


WMR: Prerender doesn't always build full page styles

Summary
I'm running into an issue where the full styles for a page are not currently being created in the generated style tag. For example, take this as the root:
export function App() {
  return (
    <LocationProvider>

Should be purple

        <ErrorBoundary>
          <Router>
            <Route path="/" component={Home} />
            <Route path="/about" component={About} />
            <Route default component={NotFound} />
          </Router>
        </ErrorBoundary>

    </LocationProvider>
  );
}

text-purple-500 will be included in the routes / and /foo, however, it is not in /about. This is mainly an issue as I'm using Twind without any runtime, so a style not in the style tags results in unstyled content.
Reproduce

Clone this repo I've set up: https://github.com/rschristian/twind-prerender-bug

Run a build & then serve the content

Disable JS in your browser via the devtools

Navigate to /, notice the text is purple

Navigate to /about, notice it is not

Hello,
I will follow this thread, as I built a zero-runtime Twind setup for my own personal use (i.e. pet project). I documented some of my journey in this GitHub discussion:
https://github.com/tw-in-js/twind/discussions/147
As mentioned, I haven't shared any code yet. My ad-hoc build workflow is difficult to generalize. Although I can use most Twind's features (static class/className props values, css(), style(), plugins, variants, etc.), my code must follow certain patterns so that the separation of "critical" vs. "secondary" stylesheets for any given isomorphic route works. Note that I don't use the Twind CLI static code analysis to discover used styles / classes (as by design this has limitations, fuzzy string matching, no support for dynamic classes). Instead I achieved zero Twind runtime by using a more deterministic approach that combines a custom WMR plugin with a Preact VNode options hook. I explained some of the technical details in the discussion linked above. At the time there were some moving architectural pieces in WMR itself, which is also why I was reluctant to release code. Although I haven't had time to significantly update my project for a while (due to work priorities), I have been keeping my codebase in sync with the latest version of WMR, so I know that my SSG / static SSR design continues to work as expected. I look forward to hearing more from your experiment :)

Ah yeah, looks like I've built something quite similar.
Besides this hiccup it does work quite well.

I don't experience the issue you are describing, but then I am not relying on use-twind-with/wmr so ... perhaps indeed the source of the problem is here in this Twind utility. I don't have bandwidth at the moment to compare my code, sorry :(


ENH: Increase coverage

Improvements concerning testing and a few related enhancements:

Fix an RTTI bug concerning a Superclass name.
Remove a duplicate include file.
Print all member variables in a number of classes.
Use itkBooleanMacro to set the boolean ivar values to On/Off.
Increase code coverage of a number of classes.

PR Checklist

[X] No API changes were made (or the changes have been approved)
[X] No major design changes were made (or the changes have been approved)
[X] Added test (or behavior not changed)
[X] Updated API documentation (or API not changed)
[X] Added license to new files (if any)

Follow-up of the latest comments in PR #2286:

Commented the failing commands; will uncomment them in separate PRs once we are able to merge this.
Removed the baseline comparison for the classes for which I have some concerns on the appropriateness of the used data in the test.

Will push these outstanding things and some others as time permits, but will allow myself some time. I might suggest some of them as GitHub issues so as not to have them as a blocking element on a PR, and given that I might not find the time to push them forward.

A short note related to this PR:
Thanks for all the patience. I'm well aware that I put quite of a burden on the CI derived from some oversights in the commits. I'm sorry for the noise.
I had noticed that the coverage increased noticeably (89.86% to 89.96%) between Feb, 15 and Feb, 16. It did not look like a hiccup since it was stable for a few days days. Not sure if it was intended or was a nice side effect of the commits merged between those days, but that was good news.
And finally, this PR, standing on the shoulders of all previous efforts, made it possible to break the 90% barrier for the Aggregate Coverage build, and make the Code Coverage be over 88%, also breaking into the +1300 threshold for files with complete coverage. The aggregate coverage has been stable around 90.09% for a few days now.
So great effort from the maintainers and the community to push towards a tool that is better tested. I remember Luis' call to the mailing list in 2014 to increase the coverage :-). I think he would be glad to know this.


Only run tests on src and tests changes.

Prevent to run tests workflow, which takes some time, unnecessarily (i.e when updating docs)

LGTM!


HTML5 Exports ?

Hi, just asking if this is at all possible. I definitely love the look and design of the engine!

Honestly, I don´t know :(
I don´t need it so I have never looked into it.
Raylib can be exported for web so you would have to look into how to export c# projects for HTML5.

Thanks for the response!
If I ever figure this out I'll open a PR.


Question: Possible to add more than 15 cards in the extra deck?

Hello. I was wondering if it is possible to bypass the 15 card restriction in the extra deck? I already tried to turn the DeckEditorDisableLimits to true, but that does not work. Does anyone have any insight to this? If so, it will be greatly appreciated

Same as #140, I think it's possible to add the cards but the client doesn't like it.


webApiPermissionRequests: Property resource does not map to a unique identifier within AAD

At the moment we are developing a multi-tenant application and are facing an issue with the current flow on how API Permissions can be requested. We created an app, e.g. "Fantastic SharePoint App" and the customer of ours has an app of his own with the same name: "Fantastic SharePoint App". We are not able to get the permission request to complete. Our App is not identified. It's just the customers app.
We did some additional testing on our own tenant and did create multiple Apps with the same name. This will cause a total mess. The newest app will be picked.
The documentation is unclear in this regards, as the documentation for a single tenant app states, that only the display of an app can be used. The display name of an app within AAD is not a unique element nor the key of the application. This will always cause an issue. See: https://learn.microsoft.com/en-us/sharepoint/dev/spfx/use-aadhttpclient#request-permissions-to-an-azure-ad-application
@andrewconnell did mention, that during the preview phase the ID was a valid option and got removed in favor of the display name. https://github.com/SharePoint/sp-dev-docs/issues/5026#issuecomment-566979002
This section https://learn.microsoft.com/en-us/sharepoint/dev/spfx/use-aadhttpclient-enterpriseapi-multitenant#request-permissions-to-the-enterprise-api still provides the (supposedly no longer valid) information

The value of the resource property refers to either the name or the ID of the Azure AD application used to secure the API.

What would be the best approach to have a unique identifier for the property resource and are there any changes planned?
Contrarily to the permission request, the aadHttpClientFactory is initialized with either the URL or the GUID of the API.
this.context.aadHttpClientFactory
        .getClient('https://contoso-api.azurewebsites.net')

In this step a unique element is used...
cc: @VesaJuvonen

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

ID: ecbbb69a-f2dd-ed42-d887-14a72494000f
Version Independent ID: 7e5c254a-fd12-0fc6-fc7d-61f4ef009226
Content: Consume multi-tenant enterprise APIs secured with Azure AD in SharePoint Framework
Content Source: docs/spfx/use-aadhttpclient-enterpriseapi-multitenant.md
Product: sharepoint
Technology: sharepoint-framework
GitHub Login: @VesaJuvonen
Microsoft Alias: vesaj

@andikrueger , thanks for your feedback.
Right now name is the only supported value for consuming AAD protected APIs. I've modified the article the ensure there's no more misunderstanding on the current behavior.
I will also track this as a potential request for future improvements on SharePoint Framework.


Use prebuild ranger distribution from apache for ranger docker

From the new atlas build it was noted that apache makes build versions of released code available for download.
Rather than build ranger from source, we can use this source instead probably cutting an hour off the docker ranger build! See the atlas Docker.build file
https://www.apache.org/dist/ranger/1.2.0/
@akhilreddyjirra - I see you are currently refactoring the ranger/atlas builds so would it make sense for you to make this change? If not I can :-)
See also https://github.com/odpi/egeria/pull/1178/files (not merged, closed - initial proposal)

From the new atlas build it was noted that apache makes build versions of released code available for download.
Rather than build ranger from source, we can use this source instead probably cutting an hour off the docker ranger build! See the atlas Docker.build file
https://www.apache.org/dist/ranger/1.2.0/
@akhilreddyjirra - I see you are currently refactoring the ranger/atlas builds so would it make sense for you to make this change? If not I can :-)
See also https://github.com/odpi/egeria/pull/1178/files (not merged, closed - initial proposal)

sure @planetf1

done


Core[major]: Base Tracer to propagate raw output from tool for on_tool_end

This PR completes work for PR #18798 to expose raw tool output in on_tool_end.
Affected APIs:

astream_log
astream_events
callbacks sent to langsmith via langsmith-sdk
Any other code that relies on BaseTracer!

Waiting for a second maintainer to sign off

Made a change to fix linter errors, ready to merge if tests pass

@eyurtsev I don't get it why are some checks still failing.

@eyurtsev
Hey,
thanks a lot for your work!
I just stumbled across this fix here and I am super thankful that you pushed a solution for it.
I'd like to ask if you are planning to apply this change also for the AsyncCallbackManagerForToolRun.
https://github.com/langchain-ai/langchain/blob/d6d843ec24f5ccd29e1f6a4e75fa7ae5ca4a8159/libs/core/langchain_core/callbacks/manager.py#L1041-L1047

@PhMueller This looks like the root cause of issue as well. When I remove this line (see https://github.com/langchain-ai/langchain/pull/20374), the code I use to reproduce the issue passes.


Allow for local usage of the files. Clone only once and not rely on the github link for the index file.

It would be nice to not have to rely on the github link.

Technically people can clone the repo inside "public" folder since the assets folder hierarchy is the same on ST and ST-content (at the time of writing at least). But since people can put file in the assets folder manually I don't see the problem with the github link ?


Adding support to run and test docker stop command

I am using terratest to test images which run a node server, and at the end of every test I stop the container and run it again in another test using different combinations.
For it, I would need a way to stop the container, I currently do it by running docker stop using Go's built in exec command, but it does make sense to bake it into the framework.
I have implemented this locally and its working. If it is good enough to be added to the framework, I'll raise a PR for it.

Please check out our contribution guide. To avoid Terratest from becoming massive and bloated, we need to be picky about the helpers we add.
A docker.Stop helper function passes the litmus test for "platforms", "popularity", and "creating infrastructure", but I am not sure it passes the test for "complexity." If you look at the docker helpers we currently have, there is not a lot of code surrounding the run and build commands: most of the heavy lifting is done by the shell module.
So a quick sanity check: would it simplify your logic some more if you use the shell module as opposed to the exec function?

@yorinasub17 yes that's correct, it doesn't pass the test of complexity. I would be okay using terratest shell for the use case. Thanks for providing a good workaround, its much easier to use than Go's exec.
Also, I would sooner or later need to use docker exec as well to verify few things once the container is running. I could use shell for that too but do you think it passes litmus test for all the parameters to be added to the terratest docker module?

@yorinasub17 One thought: while we certainly don't want Terratest to get too bloated, I wonder if our contribution guidelines are missing a balance of "API is reasonably complete and coherent." E.g., if we have a docker run helper, a docker stop helper seems like it should be part of the API too, even if it's not overly complicated to write. That said, we don't need to support every Docker CLI method; just the major ones, and those that would often be used in tandem. WDYT?

For context, I mostly test containers which run services, run I have to run them in detach mode, and then test a couple of things, and then stop them before the test ends.
For some cases, I also use docker exec to run commands inside the container to assert a few things (proper versions of libraries installed, directories exist etc). I consider docker stop to be a core docker CLI command, but I do not consider docker exec to be a core CLI method, but docker exec is sufficiently more complex so it passes the litmus test for complexity.
When I started using terratest, I was surprised it did not have a docker stop (I doubted by auto-completion), but then it wasn't so big of a deal so I ended up using Go's exec, but as @yorinasub17 suggested, using shell is much less boilerplate.

@yorinasub17 @brikis98 by any change were you guys able to come to an agreement?

Sorry for the delay as we were out for the holidays.

I wonder if our contribution guidelines are missing a balance of "API is reasonably complete and coherent."

That makes sense, and in that regard, adding a Stop function would be in line with that.

FWIW, I do think the docker terratest functionality could use an overhaul given that those only map the structs to CLI args which IMO is not really providing a lot of value beyond what shell provides. I have some thoughts on this that might be worth an RFC, but probably won't come out any time soon.

Thanks for confirming @yorinasub17, I'll raise a PR.

Released in https://github.com/gruntwork-io/terratest/releases/tag/v0.23.2

Please check out our contribution guide. To avoid Terratest from becoming massive and bloated, we need to be picky about the helpers we add.
A docker.Stop helper function passes the litmus test for "platforms", "popularity", and "creating infrastructure", but I am not sure it passes the test for "complexity." If you look at the docker helpers we currently have, there is not a lot of code surrounding the run and build commands: most of the heavy lifting is done by the shell module.
So a quick sanity check: would it simplify your logic some more if you use the shell module as opposed to the exec function?

Updated with new link to Terratest contribution guidelines.


47378

add note

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

azurermps-4.4.1/AzureRM.CognitiveServices/AzureRM.CognitiveServices.md
:white_check_mark:Succeeded
View (azurermps-4.4.1)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

#sign-off from apexprod

@v-savila - This updates old documentation only. If you need updates to the 5.x and 6.x documentation, please submit those separately. 6.x documentation must be updated as part of the main product, since reference for the current release is built in CI.

@nitinme - Hi Nitin, please see comment above.

#sign-off apexprod cc @nitinme

@v-savila @cmcclister Please do not sign off on this PR. Changes are required before it can be merged.

@sptramer please see Nitin's comment above.
cc @cmcclister

This change isn't for the latest version. Please link me to a PR indicating that the latest version has been updated as well and I will merge.

@sptramer do I just need to update 6.11 and can I use this same PR?

@v-savila You need to update the PowerShell help directly, which will update the command-line help as well as our online ref. File a pull request aginst https://github.com/azure/azure-powershell, you can contact the engineering team (Mark Cowlishaw) for help.

@sptramer #hold-off please close this PR. We will reinstate this request once we have the necessary directions and guidance. Thank you, Christopher cc @v-savila @nitinme @markcowl


What defines the "newer" version of the Microsoft Lists App?

What type of issue is this?
Question
What SharePoint development model, framework, SDK or API is this about?
Declarative list formatting
Target SharePoint environment
SharePoint Online
What browser(s) / client(s) have you tested

[ ] 💥 Internet Explorer
[X] 💥 Microsoft Edge
[X] 💥 Google Chrome
[ ] 💥 FireFox
[ ] 💥 Safari
[ ] mobile (iOS/iPadOS)
[ ] mobile (Android)
[ ] not applicable
[ ] other (enter in the "Additional environment details" area below)

Additional environment details
No response
Issue description
This document states that the embed of customRowAction can only be used with the "newer" version of the Microsoft Lists App. Is there a way to determine if the Microsoft Lists App currently being used is the "newer" version?

@tecchan1107 Yes that's correct. The view tabs on the top should be a good enough indicator of the "new" UI.

Thanks for the answer @arkogupta !


does not seem to work with React app (at least with Vite)

I'm trying localtunnel for the 1st time. Unfortunately it's not working at all for me.
I've created a React app with Vite.
I'm trying to open the page at the specified provided url (https://smart-ads-help-109-118-64-60.loca.lt/)
Well, in the console I keep to see this message in loop:
[vite] connecting...
client.ts:230 [vite] server connection lost. polling for restart
After a few minutes I get (Error 504: aborted)

@JuanVqz you could just use ssh reverse port forwarding

setup your ubuntu server
in /etc/ssh/sshd_config edit GatewayPorts no to GatewayPorts yes
then sudo service sshd restart
now use terminal to ssh reverse port forward by command ssh -R 80:localhost:3000 user@<remote_server_ip>
now your localhost:3000 can be accessed from http://<remote_server_ip>:80 i.e public now

Hey, @issimissimo ! I just tried it out and it was working for me. Can you make sure you are using giving the right port?
the default port provided by vite-react is 5173. Also, if you can post the screenshot of the error, that'll be great.

HI @dheerajdlalwani , I am getting the same error with my react app. It's throwing error 504.
My local host:

port mapping to server :

localtunnel :

Hmm, that should work @sharibislam. Try restarting the lt command and see if the same thing happens again.
Are you running an nginx instance locally?

Hi @TheBoroer , Still getting the same error.  I am not using nginx at all.
I have capured some network logs if may help.
Network logs -:
fetch("https://long-times-thank-137-220-84-29.loca.lt/continue/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0aW1lc3RhbXAiOiIyMDIzLTAzLTA4VDAwOjA5OjUzLjM1NFoiLCJzdWJkb21haW4iOiJsb25nLXRpbWVzLXRoYW5rLTEzNy0yMjAtODQtMjkiLCJpcCI6IjEzNy4yMjAuODQuMjkiLCJpYXQiOjE2NzgyMzQxOTN9.Vlq3oQNtZnEsLn47UO-uI9TyZwJSKBrvJfqZ0CHlTbE", {
"headers": {
"accept": "/",
"accept-language": "en-US,en;q=0.9",
"sec-ch-ua": ""Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": ""Windows"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"x-requested-with": "XMLHttpRequest"
},
"referrer": "https://long-times-thank-137-220-84-29.loca.lt/",
"referrerPolicy": "strict-origin-when-cross-origin",
"body": null,
"method": "GET",
"mode": "cors",
"credentials": "omit"
});


FontAwesome instead of glyphicons

With Bootstrap 4, Glyphicons is no longer included as standard.  As such, some have opted to use FontAwesome instead.
I know that the js automatically adds the "glyphicon" class when data-icon is used.  Is there a cheat which will make it add the "fa" class instead?  The new Fontawesome version also has fas and far classes for variations on the icons.

You can set iconBase to match whatever font you're using.
https://developer.snapappointments.com/bootstrap-select/options/
$.fn.selectpicker.Constructor.DEFAULTS.iconBase = 'fa';

Will this work with the Version 5 of Font Awesome?

@petrakid
I was able to get it to work with Font Awesome v5 by changing the span.check-mark to svg.check-mark in the css files.

Alright thanks.  Worked for me too.


Rename of module corrupts source references

Prerequisites

[x] Ensure you have latest version of plugin installed
[x] Search for possible issue duplicates

Installation details

[x] IDE version (Help->About->Copy to Clipboard)
PyCharm 2021.1.1 (Professional Edition)
Build #PY-211.7142.13, built on April 21, 2021
Runtime version: 11.0.10+9-b1341.41 x86_64
VM: Dynamic Code Evolution 64-Bit Server VM by JetBrains s.r.o.
macOS 10.15.7
GC: G1 Young Generation, G1 Old Generation
Memory: 1024M
Cores: 16
Registry: debugger.watches.in.variables=false
Non-Bundled Plugins: String Manipulation (<IP_ADDRESS>.3), org.intellij.plugins.hcl (0.7.10), org.jetbrains.plugins.go-template (211.6693.44), com.failfast (2.0.4), mobi.hsz.idea.gitignore (4.1.0), name.kropp.intellij.makefile (211.6693.108), com.intellij.kubernetes (211.7142.13), org.sylfra.idea.plugins.linessorter (1.0.1), JSTestDriver Plugin (202.5), net.ashald.envfile (3.2.1), ru.meanmail.plugin.requirements (2021.4-211)

[x] intellij-hcl plugin version (Settings->Plugins)
0.7.10

[x] Terraform version (terraform -v)
0.15.4

Terraform Configuration Files
./sub1/root.tf
terraform {}
module "foo" {
  source = "../sub2"
}

./sub2/main.tf

Expected Behavior
Use the "Rename" refactoring command to rename the dir "sub2" to "sub3".
The directory should be renamed and the source reference should be updated to "../sub3"
Actual Behavior
The directory was renamed to sub3, but the source reference was updated to "..\/sub3"
Steps to Reproduce

Create the two files above (sub2/main.tf can be empty)
Select the dir sub2
Use "Refactor > Rename" to rename sub2 to sub3

The same thing happens if you select rename from the refactor menu while on the source string.

Fixed in 0.7.13


Delete StudentServiceImporter

It's been (see https://github.com/studentinsights/studentinsights/pull/1091), and per @alexsoble in https://github.com/studentinsights/studentinsights/pull/1090#issuecomment-331895526 there's an admin UI feature for this now, so we can just delete this class and related code (eg., rake or thor calls into it, specs).

@kevinrobinson On it! I built 'em so I'll delete 'em.


fixed all linting errors we've had in log package. added comments.

Motivation
clean code
Changes
all lint errors fixed.
note: changes across all code base since we use logging a lot :)

bors merge

Merged as part of Consolidated linting (#1958)


bug: fix actor name resolution in graphql

Codecov Report

Merging #2118 (a2b2325) into main (c88c1b3) will increase coverage by 11.61%.
Report is 6 commits behind head on main.
The diff coverage is 5.55%.

@@             Coverage Diff             @@
##             main    #2118       +/-   ##
===========================================
+ Coverage   20.24%   31.86%   +11.61%
===========================================
  Files          77       94       +17
  Lines        1931     2316      +385
  Branches      264        0      -264
===========================================
+ Hits          391      738      +347
- Misses       1530     1562       +32
- Partials       10       16        +6

Files
Coverage Δ

...rs.TypeModuleGenerator/HotChocolateTypeModule.g.cs
100.00% <100.00%> (ø)

...b.WebApi/GraphQL/Types/EsettOutgoingMessageType.cs
100.00% <ø> (ø)

...s/dh/api-dh/source/DataHub.WebApi/GraphQL/Query.cs
0.78% <0.00%> (-0.01%)
:arrow_down:

...hQL/DataLoaders/ActorNameByMarketRoleDataLoader.cs
0.00% <0.00%> (ø)

...WebApi/GraphQL/Resolvers/EsettExchangeResolvers.cs
0.00% <0.00%> (ø)

... and 24 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Add git alias for gcM (GPG-sign the commit)

Add the -S option to gcm
See: https://git-scm.com/docs/git-commit

Hey @mager that is a git specific configuration, it is better to save those preferences in .gitconfig

👍


Defaults to conversational hour options if the locale prefers it

Some locales prefer conversational day periods, ie. "12 at noon" to "12 pm". Currently clients need to use one of the conversational hour option to get this behavior, such as
let str = Date.now.formatted(.dateTime.hour(.conversationalDefaultDigits(amPM: .wide))

In some locales this is in fact the desired behavior, and should be the default. This PR adds a hook to swap "regular" hour with conversational one if we know the locale prefers it.
While we're here, clean up ICUPatternGenerator's function interface and extra steps in IntervalFormatStyle that's now unnecessary.
rdar://110180766

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test


Additional CAN trait for extended features

The current embedded-hal CAN trait seems to only support 'transmit' and 'receive', but commonly higher level applications will need support at least:

Opening and closing the node
Setting the baudrate

Additionally, it can be useful to have support for:

Reading the bus state flags
Putting the device into listen-only mode

For instance, consider the options supported by the linux can-utils slcand daemon: https://github.com/linux-can/can-utils/blob/master/slcand.c
I think that it would be reasonable to have some CanState trait, that supports open/close, alongside a CanSpeed trait that allows setting (+getting?) the device baudrate -- but I would be interested to hear other opinions/comments.

howdy, thanks for the issue!
the main goal with e-h is to abstract what is required for drivers rather than how to interact with a given platform, because that differs so substantially between platforms and cross platform applications must address this configuration -anyway- (think mapping pins, clocks, etc.)
i have not seen a specific need for these yet, but if there are drivers with a demonstrable need for these APIs at runtime the first steps would be to ensure your proposed traits could be supported by a collection of platforms and used by a driver or two, then to open the appropriate PRs.

@ryankurte Thanks for the feedback!
Maybe I'm misunderstanding the goals of this project. I expect a stack like:
host system
------
comm. transport (usb, uart, i2c, etc.)
------
can hal  <------------- embedded hal goes here
------
can controller (embedded hardware specific)

I'm not actually aware of many CAN stacks that don't support programmable baudrates: kvaser, pcan, linux vcan, etc. all support programmable bitrates, and Zephyr RTOS also seems to consider it a integral CanBus API feature.
So if I want to write a uart --> can driver using e-h, I'll find myself unable to implement all of the supported features (namely, programming the bitrate and open/close).
If all you need is drivers + hardware that support a shared feature-set, I'm happy to provide a list and open a PR with my suggested traits. Or do you need something more concrete than that?

Related discussion: https://github.com/rust-embedded/embedded-hal/pull/212#issuecomment-635822962

The traits in embedded-hal are meant to be implemented by device-specific HALs and consumed by drivers that communicate over CAN, or by higher-level CAN protocol stacks that might implement something like ISO TP or CANopen.
The implementors would use something like vcan, or talk over SPI to a CAN controller, or use a microcontroller's embedded CAN controller - there's a big diversity in possible implementations, many of them on bare-metal embedded  platforms.
The users of the traits are then things like a driver for a motor controller that's controlled over CAN (which might be part of an application or a standalone crate), so that it can easily be generic over different underlying hardware. In general those drivers shouldn't need to perform configuration operations like opening/closing the node or setting the baud rate; we consider that sort of configuration as out of scope for embedded-hal traits. Instead, the specific implementations (eg on top of vcan, or the STM32's bxcan peripheral, etc) should provide their own methods for configuration of baud rate, enable/disable, etc etc; applications use those methods to bring the bus up, and then drivers can use the generic traits to actually send and receive frames.


Incompatible with upcoming 3.4 (ie. haxe nightly)

Hi, I know you have that big ol' disclaimer saying that 3.3.0 is unsupported, but I'd like to note that the current nightly haxe build (the upcoming 3.4) is currently broken as well.  Which is a shame, as this lib seems great.

Oh no! Sorry to hear you're having trouble. I'd like to resolve this issue, but can't reproduce it. I just downloaded Haxe 3.4.1 and ran the Basic/Simple example successfully on neko. What platform/example were you working with, and if you were targetting neko, would you mind running neko and sharing the version?
Thanks very much, sorry I didn't notice the issue earlier!