useIsAuthenticated hook returning true when token is expired

Core Library
MSAL.js v2 (@azure/msal-browser)
Core Library Version
2.32.0
Wrapper Library
MSAL React (@azure/msal-react)
Wrapper Library Version
1.5.0
Public or Confidential Client?
Public
Description
I'm using the useIsAuthenticated() hook to render specific components when a user is signed in with a valid session. When the token expires, useIsAuthenticated() returns true.
Error Message
InteractionRequiredAuthError: interaction_required: AADSTS70044: The session has expired or is invalid due to sign-in frequency checks by conditional access.
Trace ID: c6c8ef47-fefa-4c22-a062-0c711089dc00
Correlation ID: b72a73fe-3359-44ca-b770-8eaab110d757
Msal Logs
No response
MSAL Configuration
{
  auth: {
    clientId: '',
    authority: '',
    redirectUri: window.location.origin
  },
  cache: {
    cacheLocation: 'localStorage',
    storeAuthStateInCookie: false
  }
}

Relevant Code Snippets
import { useIsAuthenticated } from '@azure/msal-react'
const IsAuthenticated = useIsAuthenticated()

export default function MyComponent () {
  return (
     IsAuthenticated === true
       ? Valid Session
       : Invalid Session
  )
}

Reproduction Steps

Wait for the token to expire
Log the return value of useIsAuthenticated()

Expected Behavior
useIsAuthenticated() should be returning false when a session is invalid.
Identity Provider
Azure AD / MSA
Browsers Affected (Select all that apply)
Chrome
Regression
No response
Source
External (Customer)

@kvargha thanks for raising the issue.
The useIsAuthenticated hook is designed to return true when there is a user account in the cache, meaning the user is "Authenticated" in your application. It doesn't reflect the state of validity of any of the related tokens, which determine whether or not the user is "Authorized".
If you want to determine if the user is authorized, please use the useMsalAuthentication hook or MsalAuthenticationTemplate instead. Thanks!

Hi @hectormmg, I tried using the two suggestions you made with an expired session and this was what I was faced with:

useMsalAuthentication: The return value for error was null. Shouldn't this return an error if a token is expired?
MsalAuthenticationTemplate: It rendered its children, and not the error component.

Is this the expected behavior?

@kvargha Are you able to show your usage of the useMsalAuthentication hook or MsalAuthenticationTemplate?
Additionally, please take a look at our docs for useMsalAuthentication and MsalAuthenticationTemplate if you haven't already.

Hi @jo-arroyo,
Here is how I'm using useMsalAuthentication:
`
import { useMsalAuthentication } from '@azure/msal-react'
// These two are components for a Sign In and Sign Out button
import AzureSignIn from './Azure/AzureSignIn'
import AzureSignOut from './Azure/AzureSignOut'
export default function App () {
const { error } = useMsalAuthentication()
return (
    { error ? <AzureSignIn/> : <AzureSignOut/> }
)

}
`
When I invoke acquireTokenSilent, it throws the error I indicated in my issue due to my expired session.
The documentation states "If an error occurs during login or token acquisition this property will contain information about the error". However, the return value from useMsalAuthentication() is null.
Essentially, I want to show a Sign In button if there aren't any users signed in or their session is expired, otherwise, render the Sign Out button.

@kvargha Please add an input parameter for useMsalAuthentication, per the docs here.

Hi @jo-arroyo ,
Here is my updated code:
import React, { useEffect } from 'react'
import { useMsalAuthentication, useMsal } from '@azure/msal-react'
import { InteractionType, InteractionRequiredAuthError } from '@azure/msal-browser'

// These two are components for a Sign In and Sign Out button
import AzureSignIn from './AzureSignIn'
import AzureSignOut from './AzureSignOut'

export default function LoginToggle () {
  const { accounts } = useMsal()
  const request = {
    loginHint: accounts[0]?.username,
    scopes: ['04657be9-ebe5-4322-8e28-4c661669f2d5/.default'],
    account: accounts[0]
  }
  const { login, error } = useMsalAuthentication(InteractionType.Silent, request)

  useEffect(() => {
    if (error instanceof InteractionRequiredAuthError) {
      login(InteractionType.Popup, request)
    }
  }, [error])

  return (
        <React.Fragment>
            { error ? <AzureSignIn/> : <AzureSignOut/> }
        </React.Fragment>
  )
}

I'm still facing the same issue, the value for error is null. I've also tried passing in an account identifier to useMsalAuthentication  but it still didn't work.

@kvargha Are you able to provide Verbose logs?

Here you go @jo-arroyo:

[Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - Event callback registered with id: 016cef66-e0d5-4ef8-8229-a1de29a99048
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - useMsalAuthentication - Registered event callback with id: 016cef66-e0d5-4ef8-8229-a1de29a99048
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - Event callback registered with id: 24c732c5-1b17-45d8-b4c0-ec765e3c05c5
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - MsalProvider - Registered event callback with id: 24c732c5-1b17-45d8-b4c0-ec765e3c05c5
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - Emitting event to callback 016cef66-e0d5-4ef8-8229-a1de29a99048: msal:initializeStart
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - Emitting event to callback 24c732c5-1b17-45d8-b4c0-ec765e3c05c5: msal:initializeStart
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - Emitting event to callback 016cef66-e0d5-4ef8-8229-a1de29a99048: msal:initializeEnd
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - Emitting event to callback 24c732c5-1b17-45d8-b4c0-ec765e3c05c5: msal:initializeEnd
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - handleRedirectPromise called
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - Emitting event to callback 016cef66-e0d5-4ef8-8229-a1de29a99048: msal:handleRedirectStart
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - Emitting event to callback 24c732c5-1b17-45d8-b4c0-ec765e3c05c5: msal:handleRedirectStart
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - handleRedirectPromise has been called for the first time, storing the promise
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT] : [ca1beada-803f-4271-9155-9cf1612c5b0d]<EMAIL_ADDRESS>: Verbose - initializeServerTelemetryManager called
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - Emitting event to callback 016cef66-e0d5-4ef8-8229-a1de29a99048: msal:handleRedirectEnd
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - Emitting event to callback 24c732c5-1b17-45d8-b4c0-ec765e3c05c5: msal:handleRedirectEnd
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:22 [Wed, 14 Dec 2022 22:49:31 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called

@kvargha Are these the complete logs? I'd expect to see more at the end, could you set the log level to Trace please? Additionally, I don't think conditionally rendering your sign in button based on the error property is the right approach. The hook will only attempt to acquire a token automatically once (on one of its first renders), any subsequent renders will not re-attempt.
There are 3 states you should be aware of and handle:

error === null and result !== null - Means a user is signed in and has a valid access token for whichever resource you requested
error !== null and result === null - Means token acquisition was attempted and an error occurred (you should have logic in place to handle this error)
Both error and result are null - Means either token acquisition hasn't happened yet or is currently in progress (this is essentially neither signed in nor out)

Another thing to keep in mind is that we generally discourage what you're trying to do. To truly achieve conditional rendering based on the validity of the token you would need to call acquireTokenSilent on every render which gets very expensive. Our general recommended best practice is to call acquireTokenSilent, on demand, when you need an access token for a resource and if it throws to handle it, either by invoking interaction or, if you don't want to extend the session, sign the user out.

Hi @tnorling,
Thank you for the explanation.
Is there a way to sign out a user without using a popup or redirect? I don't want to show the user the AzureAD signout page when their session is expired or automatically redirect them to the sign-in page, I'd prefer to prompt them to sign in again by rendering the sign-in button. I can achieve this by using a hook tied to a failed acquireTokenSilent invocation when making calls to a protected resource.
Here are the logs when the log level is set to Trace:

[Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - BrowserCrypto: modern crypto interface available
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - BrowserCrypto: modern crypto interface available
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - Event callback registered with id: c2e7f98a-b87b-4c41-ad49-bc3ab2115a9c
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - useMsalAuthentication - Registered event callback with id: c2e7f98a-b87b-4c41-ad49-bc3ab2115a9c
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - Event callback registered with id: 2ff6b585-00c3-4a38-adb5-19191824006f
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - MsalProvider - Registered event callback with id: 2ff6b585-00c3-4a38-adb5-19191824006f
AuthConfig.js:25 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Info - Emitting event: msal:initializeStart
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - Emitting event to callback c2e7f98a-b87b-4c41-ad49-bc3ab2115a9c: msal:initializeStart
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - Emitting event to callback 2ff6b585-00c3-4a38-adb5-19191824006f: msal:initializeStart
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:25 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Info - Emitting event: msal:initializeEnd
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - Emitting event to callback c2e7f98a-b87b-4c41-ad49-bc3ab2115a9c: msal:initializeEnd
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - Emitting event to callback 2ff6b585-00c3-4a38-adb5-19191824006f: msal:initializeEnd
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:25 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Info - useAccount - Updating account
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - handleRedirectPromise called
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:25 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Info - Emitting event: msal:handleRedirectStart
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - Emitting event to callback c2e7f98a-b87b-4c41-ad49-bc3ab2115a9c: msal:handleRedirectStart
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - Emitting event to callback 2ff6b585-00c3-4a38-adb5-19191824006f: msal:handleRedirectStart
AuthConfig.js:25 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Info - MsalProvider - msal:handleRedirectStart results in setting inProgress from startup to handleRedirect
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - handleRedirectPromise has been called for the first time, storing the promise
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT] : [0b578c53-ea0a-40be-ad3a-84ab3b758c24]<EMAIL_ADDRESS>: Verbose - initializeServerTelemetryManager called
AuthConfig.js:25 [Tue, 20 Dec 2022 20:29:47 GMT] : [0b578c53-ea0a-40be-ad3a-84ab3b758c24]<EMAIL_ADDRESS>: Info - handleRedirectPromise called but there is no interaction in progress, returning null.
AuthConfig.js:25 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Info - Emitting event: msal:handleRedirectEnd
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - Emitting event to callback c2e7f98a-b87b-4c41-ad49-bc3ab2115a9c: msal:handleRedirectEnd
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - Emitting event to callback 2ff6b585-00c3-4a38-adb5-19191824006f: msal:handleRedirectEnd
AuthConfig.js:25 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Info - MsalProvider - msal:handleRedirectEnd results in setting inProgress from handleRedirect to none
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:25 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Info - useAccount - Updating account
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:28 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Verbose - getAllAccounts called
AuthConfig.js:25 [Tue, 20 Dec 2022 20:29:47 GMT]<EMAIL_ADDRESS>: Info - useAccount - Updating account

Is there a way to sign out a user without using a popup or redirect?

Yes, you can pass a callback to the onRedirectNavigate parameter in the logout request. This callback will be executed after the MSAL cache is cleared but before the redirect to the signout page occurs. If the callback you provide returns false the redirect to the signout page will be skipped. You can use this to either redirect to your own internal "you have been signed out page" or to update React state to cause your button to render. Just note that skipping the server signout means the user's session may still remain active on the server meaning they can sign back in to your app without providing credentials. More details on skipping the server signout here

Thank you @tnorling! This is exactly what I needed. I'll be closing the issue now.


docker db managing improvements

TP-??? Docker Db managing improvement

Why
When working with TAP DB's you may not always want to work with just a single db or run a db dump everytime you need to clear down the database. This is especially relevant to data engineers
What

added two new make commands docker-import-new-db which imports a new db into a template name & docker-restore-db which loads a template into the db (deafult name tamato)
updated readme
corrected sample.env around minio

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

Comparison is base (4f8ccfe) 92.79% compared to head (dba9f78) 92.80%.
Report is 1 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1096   +/-   ##
=======================================
  Coverage   92.79%   92.80%
=======================================
  Files         460      460
  Lines       35104    35147   +43
  Branches     2693     2695    +2
=======================================
+ Hits        32576    32619   +43
  Misses       1997     1997
  Partials      531      531

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


Make OpenGL Report Format Usages Properly

Describe the bug
Currently OpenGL reports nothing/garbage for all formats.
Expected vs observed behavior
Report correct usages.
Implementation Idea
Use OpenGL Proxy Textures to establish if texture can be created.
Would be good to "upgrade" our image format usage to report the full "VkImageFormatProperties"
Because OpenGL Proxy Textures can report that too.
Caveats
Reporting:

vertex attribute format usage
buffer view usage
sampled image
storage Image (needs to check spec if it fails if you attempt to bind it without a shader)
attachment (FBO validation will return invalid status)
blitSrc and Dst
requires trial & error in CPU side.

Reporting:

storage buffer view usage
Requires weird trial and error with shaders possibly?

Feasible to self-report (without trial & error):

storage image atomic usage
storage buffer view atomic usage
transfer src&dst is implicitly okay if proxy texture can be created (need to check multisample for that)

OpenGL got murdered.


Roadmap for Cake3

Hi Kamisama,
Thank you for this very well working plugin.. I wanna just know if there's any roadmap for Cake3 compatibility and how can we help on that?
Regards,

Looks like theres a guy working on a Cake3 fork:
https://github.com/RTLer/Cake-Resque

Let's wait for his PR :)

Hi Kamisama,
This guy is from our team.. We already finished everything and ready to send a PR.. Also if it's possible we need to a PR to php-resque-ex in order to add deque method which is already added on php-rasque..
Regards,

Awesome ;)

There are a couple of PR here and for php-resque-ex that make the job works in CakePHP 3. Hope them helps...

Ping @wa0x6e ,
Now, Is CakeResque ready for CakePHP v3.x ?

Master branch should be 3.x ready, haven't tested it tho.


Microsoft.Dynamics.Nav.Deployment.Authentication.UserNotAuthorizedException

Version BC15 :
Debug - Attach - shift-F5 error : 'Microsoft.Dynamics.Nav.Deployment.Authentication.UserNotAuthorizedException'
when using authentication : 'UserPassword'

Hi! Could you please follow the template and provide adequate steps to reproduce the issue?

Please close this one...new = #5427


Cannot return rows when select from views

Hi
some select statement not work well.
select * from view_name --> can get colnames, but "rows.Next()" always false, no results
select a,b,c from view_name --> works fine
select * from a_table --> works fine
Any one meet the same issue?
I am using ubuntux64, go1.6 and oracle instance 11.2
Thanks!

@mattn Close this?
I can select from views all the time.


make .dep doesn't exit successfully

When trying to build the website on a freshly cloned repository, make .dep exits  with Error 1:
Makefile:17: .dep: No such file or directory
./scripts/collectdeps.py build/index.html.de build/index.html.en build/.htaccess build/robots.txt build/sitemap.xml build/blog/20200915-garloff-ovh.html.de build/blog/20200915-garloff-ovh.html.en build/test.html.de build/test.html.en >.dep
ERROR: tmp/logos.html not readable
Makefile:15: recipe for target '.dep' failed
make: *** [.dep] Error 1

This one is non-trivial, I'm afraid. You need two make to reliably build the web pages.
We could commit the .dep file into the repo to avoid it. I personally dislike keeping generated content in git, but maybe I need to overcome this ...

This is what I'm doing so far within my GitHub Action pipline: https://github.com/itrich/website/actions/runs/1037602004
   - uses: actions/checkout@v2
    - name: Setup Node.js environment
      uses<EMAIL_ADDRESS>
    - name: Install dependencies
      run: |
        sudo apt-get install sed python-markdown imagemagick cleancss
        sudo npm install html-minifier clean-css-cli -g
    - name: make .dep
      continue-on-error: true
      run: make .dep
    - name: make html
      run: make html
    - name: rsync build
      uses<EMAIL_ADDRESS>
However, I'm still struggling to avoid the step make .dep to fail unsuccessfully. Have you any clues?

You could do a touch -d "2000-01-01" .dep && make .dep to avoid the exit code killing your pipeline.

Seems that the root cause was tmp/logos.html not being present before executing make .dep, which seems odd.
However, my GitHub Action finally runs flawlessly, see https://github.com/itrich/website/actions 👍

The processing is
source --- (md2html/genlogos.py/include.py) ---> tmp ----- (minify) ------> build.
The real problem is that we source the .dep file from the Makefile which itself knows how to generate .dep.
We probably need to split the Makefile into two Makefiles to make things clean.
The first Makefile generating all that's needed for .dep and then generating .dep. And a second that can then cleanly source the .dep file.

Closed by #124


authUI.authViewController() for email does not reset after login

Steps to repro:

Login or signup using email
Logout
Login or signup again to see that the last view of the previous login/signup is displayed instead of the root view of the authUI.authViewController()

Recently it seems that isSignInWithEmailHidden flag was removed and instead now we are required to use FUIEmailAuth as one of the providers if we want to use email auth.
Since this change it looks like for the last view in the navigation stack of the email login/signup flow stays as the view presented.
This behavior is different from before and from other auth providers.
This is a problem because when the user logs out and the authUI.authViewController() is presented again the last view of the email login/signup is presented again instead of the root view of the authUI.authViewController().

I remember I have this issue before. for me its because I performSegue to the next view controller in the
authUI(_: FUIAuth, didSignInWith authDataResult: AuthDataResult?, error: Error?)
that caused a timing issue with
Auth.auth().addStateDidChangeListener
So, to solve it, performSegue in Auth.auth().addStateDidChangeListener and NOT authUI(_: FUIAuth, didSignInWith authDataResult: AuthDataResult?, error: Error?)

I remember I had this issue before. for me its because I performSegue to the next view controller in the
authUI(_: FUIAuth, didSignInWith authDataResult: AuthDataResult?, error: Error?)
that caused a timing issue with
Auth.auth().addStateDidChangeListener
So to solve it, performSegue in Auth.auth().addStateDidChangeListener and NOT authUI(_: FUIAuth, didSignInWith authDataResult: AuthDataResult?, error: Error?)

Thanks for the response.
I don't believe that is the reason, I simply call presentViewController() and present the authViewController.
Also as I stated in the bug, this behavior has changed from what was there before. In our app we use both FB login and Email, and FB login continues to work correctly as before. Only Email auth is affected.

Same problem here :)

Same here too.

We cannot reproduce the issue with our sample Demo app ---
We tested two cases:
Case 1:
Only select "Email" with the "link" switched off in IDP.  Steps:

Click "Sign in" and Email Sign in view is appeared.
2 We successfully login. And Tap "Logout"
3 Click "Sign in" again and Email Sign in view is appeared again.

Case 2:
Select "Email" with the "link" switched off in IDP.  In addition, select one or more IDPs such as Facebook and Microsoft. Steps:

Click "Sign in" and Auth picker view is displayed.
Tap "Sign in with Email" and the email Sign in view is appeared.
2 We successfully login. And Tap "Logout"
3 Tap "Sign in" again and the Auth picker view is displayed again. Tap "Sign in with Email" and th Email Sign in view is appeared again.

We believe the two cases match with our spec intention well.
You are right we removed isSignInWithEmailHidden flag and now we requires developers to create a FUIEmailAuth. This  makes it better align with the rest of FUIAuth classes.

@yongrim did you find any solution to your problem. I'm seeing the the same behavior.


added dockerfile for spin up discordianai as docker container

@nitintecg Thank you for the contribution! 🎉 This is a duplicate of a pull request made just a bit earlier by another developer which has since been merged. I hope you will find more features or other areas of interest to contribute to the project for!


In Progress: Update docs to match new design

This is where we'll ensure the style looks sane before redesigning the home page too.
To run, go to the /docs section (no link from the splash page currently).
When that link looks reasonably good, we'll be done.
To Preview

Pull this branch
Run the site (follow directions in the readme, but basically run bundle exec jekyll serve from the root)
Head to http://localhost:4000/docs

@aaronontheweb / @RyKilleen FYI this is in progress but feel free to jump in on this branch and make any commits that you think would help. I kicked it off just to start it but I admittedly don't have the visual knack.

got a preview we can look at? ;)

cc @SeanKilleen

@Aaronontheweb easy preview:  pull this branch & run bundle exec jekyll serve and then head to http://localhost:4000/docs.

@Aaronontheweb FYI haven't been able to touch it since late last night (client work all day). Anyone should feel free to pull the branch and make some improvements to keep it moving.

@seankilleen I'll be chiming in a bunch tonight.

@SeanKilleen The yellow link on blue background doesn't come close to passing color contrast. Do we have wiggle room for alternatives?

@rykilleen Yep! The original color scheme is grey and yellow -- it's half done now because I was in progress. Pull the master branch to see the original

💥


Test and fix for Nullable enum support

Could you send this to https://github.com/TrevorPilley/MicroLite/tree/6.3.x instead so that we can get 6.3.4 built?

I've done the fix and published MicroLite 6.3.4

Thanks Trevor, sorry, i hadnt checked my messages for a few days


Feature: add support for SNS notifications as alternative to webhooks

For an AWS user, having the ability to send notifications to one or more SNS topics rather than a simple webhook will enable many integrations and notification formats, so that Anchore can inject notifictions into existing streams/systems.
As the current webhook configuration is global, so too would be the SNS config, but instead of configuring different webhook urls, the user could provide ARNs for the SNS topic for delivery and the username/password set would support either access/secret key combos or a username of: "aws_role" and password of the role arn to assume using the credentials found in the current execution environment (e.g. instance or task profile).
Example:
webhooks:
  webhook_user: 'aws_role"
  webhook_pass: 'arn:aws:iam::123456789012:role/anchore-sns-push'
  ssl_verify: False
  general:
    url: 'arn:aws:sns:us-west-2:123456789012:anchore-general-notifications'
  policy_eval:
    url: 'arn:aws:sns:us-west-2:123456789012:anchore-policy-notifications'
    #webhook_user: 'aws_role'
    #webhook_pass: 'arn:aws:iam::123456789012:role/anchore-sns-policy-push'
  event_log:
    # Uncomment the event_log section in addition to configuring this webhook to receive event log notifications
    url: 'arn:aws:sns:us-west-2:123456789012:anchore-event-notifications'

The notification payload will be the existing webhook payload

How about using the IAM role permissions already granted to the container? SImilar to the awsauto for registries? If running under ECS in AWS we already have an IAM TaskRole assigned with permissions being granted. It's trivial to simply add the sns:Publish permission to the policy assigned to the Task role without having to specify a separate IAM role.

This is indeed a great-to-have feature. SNS will make things quite simple for notification aspect.


Allow custom handling of routes

This is needed for generating sitemaps.

This is actually achievable by placing levo.server.ts under the sitemap.xml directory.

No it's not.

Current idea is to allow user to create a levo.api.ts, that allow user to return a response object {status: string, body: UInt8Array, headers: Header} etc.


Bot not sending YT chat messages to discord.

Hey. I have set up the bot, and it comes online, etc, it isn't sending messages to the discord channel, any ideas why? It has full admin permissions. Thank you!
I have attached the python code below, since I have changed some stuff due to google API changes, and provided a stream ID.

import json
import re
#youtube stuff imported
import httplib2
import os
import sys

from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from oauth2client.client import flow_from_clientsecrets
from oauth2client.file import Storage
from oauth2client.tools import argparser, run_flow
import time

#discord stuff imported
import discord #gets the discord and asyncio librarys
import asyncio

##problems
#unsure what will happen in a headless enviroment if the oauth hasnt been set
##if the token and you input a invalid token the first time it will continue to say invalid token for tokens that are even valid

##ideas
#possiblity of use of file io to get the information of the client token for discord and stuff.
#use regex to help format the chat (honestly not needed)

##youtube chat porition
#this will handle getting chat from youtube which will then be pushed to discord

#!/usr/bin/python

####variables
config = {"channelName": "", "pageToken": "", "serverName": "", "discordToken": "","discordToYoutubeFormating": "", "youtubeToDiscordFormatting":"","discordToYoutube":True,"youtubeToDiscord":True}

botName = "none"

botUserID = "empty"

youtube = "sTA0GTgFn5E"

firstRun = "off"

#used as global varibles and were defined before we start using them to avoid problems down the road
channelToUse = ""

# The CLIENT_SECRETS_FILE variable specifies the name of a file that contains
# the OAuth 2.0 information for this application, including its client_id and
# client_secret. You can acquire an OAuth 2.0 client ID and client secret from
# the {{ Google Cloud Console }} at
# {{ https://cloud.google.com/console }}.
# Please ensure that you have enabled the YouTube Data API for your project.
# For more information about using OAuth2 to access the YouTube Data API, see:
#   https://developers.google.com/youtube/v3/guides/authentication
# For more information about the client_secrets.json file format, see:
#   https://developers.google.com/api-client-library/python/guide/aaa_client_secrets
CLIENT_SECRETS_FILE = "client_secrets.json"

# This OAuth 2.0 access scope allows for full read/write access to the
# authenticated user's account.
YOUTUBE_READ_WRITE_SCOPE = "https://www.googleapis.com/auth/youtube"
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"

# This variable defines a message to display if the CLIENT_SECRETS_FILE is
# missing.
MISSING_CLIENT_SECRETS_MESSAGE = """
WARNING: Please configure OAuth 2.0
To make this sample run you will need to populate the client_secrets.json file
found at:
   %s
with information from the {{ Cloud Console }}
{{ https://cloud.google.com/console }}
For more information about the client_secrets.json file format, please visit:
https://developers.google.com/api-client-library/python/guide/aaa_client_secrets
""" % os.path.abspath(os.path.join(os.path.dirname(__file__),
                                   CLIENT_SECRETS_FILE))

def get_authenticated_service(args):
  flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE,
    scope=YOUTUBE_READ_WRITE_SCOPE,
    message=MISSING_CLIENT_SECRETS_MESSAGE)

  storage = Storage("%s-oauth2.json" % sys.argv[0])
  credentials = storage.get()

  if credentials is None or credentials.invalid:
    credentials = run_flow(flow, storage, args)

  return build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
    http=credentials.authorize(httplib2.Http()))

# Retrieve a list of the liveStream resources associated with the currently
# authenticated user's channel.

def getLiveId(youtube): #this gets the live chat id
  global liveChatId,botUserID #pulls in the bots livechatid and botuserid for further saving and modifying

  list_streams_request = youtube.liveBroadcasts().list( #checks for the live chat id through this
    part="snippet", #this is what we look through to get the live chat id
    broadcastStatus="all", #we need both of these to get the live chat id
    broadcastType="all"
  ).execute() #executes it so its not just some object
  liveChatId = list_streams_request["items"][0]["snippet"]["liveChatId"]#sifts through the output to get the live chat id and saves it
  botUserID = list_streams_request["items"][1]["snippet"]["channelId"] #saves the bots channel user id that we will use as a identifier
  print("liveID {0}".format(liveChatId)) #print the live chat id

async def listChat(youtube):
  global pageToken #pulls in the page token
  global liveChatId #pulls in the liveChatID
  global botUserID #pulls in the bots channel ID
  global config
  try:
    continuation = True
    try:
      list_chatmessages = youtube.liveChatMessages().list( #lists the chat messages
        part="id,snippet,authorDetails", #gets the author details needed and the snippet all of which giving me the message and username
        liveChatId=liveChatId,
        maxResults=200,
        pageToken=config["pageToken"] #gives the previous token so it loads a new section of the chat
      ).execute() #executes it so its not just some object

      config["pageToken"] = list_chatmessages["nextPageToken"] #page token for next use
    except HttpError:
      continuation = False
    #print(list_chatmessages)

    if continuation == True:
      msgCheckRegex = re.compile(r'(:)') #setup for if we happen to need this it should never change either way
      for temp in list_chatmessages["items"]: #goes through all the stuff in the list messages list
        message = temp["snippet"]["displayMessage"] #gets the display message
        username = temp["authorDetails"]["displayName"] #gets the users name
        userID = temp["authorDetails"]["channelId"]
        if message != "" and username != "" and config["youtubeToDiscord"] == True: #this makes sure that the message and username slot arent empty before putting this to the discord chat
            print(temp)
            fileSave("youtubeMsgJson.json", temp)
            if userID != botUserID:
              print(config["youtubeToDiscordFormatting"].format(username,message))
              msg = (config["youtubeToDiscordFormatting"].format(username,message))
              await channelToUse.send(msg)
            elif userID == botUserID: #if the userId is the bots then check the message to see if the bot sent it.
                try:
                  msgCheckComplete = msgCheckRegex.search(message) #checks the message against the previously created regex for ":"
                  if msgCheckComplete.group(1) != ":": #if its this then go and send the message as normal
                    print(config["youtubeToDiscordFormatting"].format(username,message))
                    msg = (config["youtubeToDiscordFormatting"].format(username,message))
                    print("sending")
                    print(botUserID)
                    await channelToUse.send(msg)
                except AttributeError as error:
                  msg = (config["youtubeToDiscordFormatting"].format(username,message))
                  print("sending")
                  print(botUserID)
                  await channelToUse.send(msg)
  except  ConnectionResetError:
    login()

    print("Youtube Connection Error... Reconnecting")

async def sendLiveChat(msg): #sends messages to youtube live chat
   list_chatmessages_inset = youtube.liveChatMessages().insert(
     part = "snippet",
     body = dict (
        snippet = dict(
           liveChatId = liveChatId,
           type = "textMessageEvent",
           textMessageDetails = dict(
               messageText = msg
           )
         )
      )
   )
   list_chatmessages_inset.execute()
   #print(list_chatmessages_inset.execute()) #debug for sending live chat messages

def login():
  global youtube
  args = argparser.parse_args()
  youtube = get_authenticated_service(args) #authenticates the api and saves it to youtube
  getLiveId(youtube)

if __name__ == "__main__":
    login()
    #args = argparser.parse_args()

    #youtube = get_authenticated_service(args) #authenticates the api and saves it to youtube
    #getLiveId(youtube)

##discord portion of the bot
#this will be the main code

client = discord.Client() #sets this to just client for reasons cuz y not? (didnt have to be done like this honestly could of been just running discord.Client().)

async def discordSendMsg(msg): #this is for sending messages to discord
    global config
    global channelToUse #pulls in t{0} : {1}".format(author,msg)he global variable
    await channelToUse.send(msg) #sends the message to the channel specified in the beginning

@client.event
async def on_ready(): #when the discord api has logged in and is ready then this even is fired
    if firstRun == "off":
        #these 2 variables are used to keep track of what channel is thre real channel to use when sending messages to discord
        global config , botName
        global channelToUse #this is where we save the channel information (i think its a class)
        global channelUsed #this is the channel name we are looking for
        #this is just to show what the name of the bot is and the id
        print('Logged in as') ##these things could be changed a little bit here
        print(client.user.name+ "#" + client.user.discriminator)
        botName = client.user.name + "#" + client.user.discriminator #gets and saves the bots name and discord tag
        print(client.user.id)
        for guild in client.guilds: #this sifts through all the bots servers and gets the channel we want
            #should probly add a check in for the server in here im guessing
            for channel in guild.channels:
                if channel.name == config["channelName"] and str(channel.type) == "text": #checks if the channel name is what we want and that its a text channel
                    channelToUse = channel #saves the channel that we wanna use since we found it

        await youtubeChatImport() #runs the youtube chat import code
    else:
        await getFirstRunInfo()

async def youtubeChatImport(): #this is used to pull the from youtube to discord
    i = 0
    while True:
        i += 1
        try:
          await listChat(youtube) #checks the youtube chat
        except:
          pass
        if i == 8:
            fileSave("config.json", config)
            i = 0
        await asyncio.sleep(5) #this works

@client.event
async def on_message(message): #waits for the discord message event and pulls it somewhere
    global config
    global channelToUse #pulls in the global variable
    if firstRun == "off":
        if str(channelToUse.name) == str(message.channel) and str(message.author.name) != botName and str(message.author.name) != client.user.name and str(message.author.name) != client.user.discriminator and config["discordToYoutube"] == True:
            print(config["discordToYoutubeFormating"].format(message.author,message.content)) #prints this to the screen
            await sendLiveChat(config["discordToYoutubeFormating"].format(message.author.display_name,message.content)) #prints this to the screen

##file load and save stuff

def fileSave(filename, config):
    print("Saving")
    f = open(filename, 'w') #opens the file your saving to with write permissions
    f.write(json.dumps(config) + "\n") #writes the string to a file
    f.close() #closes the file io

def fileLoad():
    f = open("config.json", 'r') #opens the file your saving to with read permissions
    config = ""
    for line in f: #gets the information from the file
        config = json.loads(line) #this will unserialize the table
    return config

##first run stuff

def getToken(): #gets the token
    global config
    realToken = "false" #this is just for the while loop
    while realToken == "false":
        config["discordToken"] = input("Discord Token: ") #gets the user input
        try:
            client.run(config["discordToken"]) #atempts to run it and if it fails then execute the next bit of code if not then save it and go on
        except:
            print("Please enter a valid token")
            sys.exit(0) #this is a work around for the bug that causes the code not think the discord token is valid even tho it is after the first time of it being invalid
        else:
            realToken = "true"

async def getFirstRunInfo():
    global config
    print('Logged in as') ##these things could be changed a little bit here
    print(client.user.name)
    print(client.user.id)
    while config["serverName"] == "":
        for guild in client.guilds: #this sifts through all the bots servers and gets the channel we want
            print(guild.name)
            if input("If this is the server you want type yes if not hit enter: ") == "yes":
                config["serverName"] = guild.name
                break
    while config["channelName"] == "":
        for guild in client.guilds: #this sifts through all the bots servers and gets the channel we want
            #should probly add a check in for the server in here im guessing
            #print(server.name)
            for channel in guild.channels:
                if str(channel.type) == "text":
                    print(channel.name)
                    if input("If this is the channel you want type yes if not hit enter: ") == "yes":
                        config["channelName"] = channel.name
                        break
    while config["youtubeToDiscordFormatting"] == "": #fills the youtube to discord formating
        config["youtubeToDiscordFormatting"] = input("""Please enter the chat formatting for chat coming from youtube to go to discord.
{0} is the placeholder for the username
{1} is the placeholder for the message
Ex. "{0} : {1}: """)
    while config["discordToYoutubeFormating"] == "": #fills the discord to youtube formating
        config["discordToYoutubeFormating"] = input("""Please enter the chat formatting for chat coming from discord to go to youtube.
{0} is the placeholder for the username
{1} is the placeholder for the message
Ex. "{0} : {1}": """)
    print("Configuration complete")
    fileSave("config.json", config) #saves the file
    print("Please run the command normally to run the bot")
    await client.close()

if os.path.isfile("config.json") == False:#checks if the file exists and if it doesnt then we go to creating it
    print("Config missing. This may mean this is your first time setting this up")
    firstRun = "on"
else:
    config = fileLoad() #if it exists try to load it
if firstRun == "on":
    config = {"channelName": "", "pageToken": "", "serverName": "", "discordToken": "","discordToYoutubeFormating": "", "youtubeToDiscordFormatting":"","youtubeToDiscord": True, "discordToYoutube": True}
    getToken()

def discordStart(token):
  while True:
    loop = asyncio.get_event_loop()
    try:
        loop.run_until_complete(client.start(token))
    except (discord.ConnectionClosed, discord.GatewayNotFound) as error:
        loop.run_until_complete(client.logout())
        loop.close()
        discordStart(token)
        print("Client Connection Lost")
        # cancel all tasks lingering
    except KeyboardInterrupt:
        loop.run_until_complete(client.logout())
    finally:
        print("Client Closed")
        loop.close()
    print("Reconnecting")

discordStart(config["discordToken"])

without a log as to what happened I would only be speculating. However I really haven't used this code since 2017 when I implemented it for  https://github.com/popcorn9499/chatBot however youtube changed the api limits to something rather small making this entire program almost useless since it will hit the api limits in a few hours with 2 or so people chatting. maybe less maybe more depending on the amount of messages.
Your best bet would be to setup something like selenium to interact with the webpage for live chat directly and parse that to pull it to discord and vis versa. however I'm sure that would break some tos somewhere.
Anyways I can give a look at what's wrong if you send me the output from the program instead of just the code. otherwise its all speculation

Here is the console output:
liveID KicKGFVDakNCejNKSy16bm1nbmVHcUhaNmk1ZxILTlFVWjVPR1Y3dzQ
Logged in as
Rocket Launches Today#3997
789632676926717962

I see nothing in that log that indicates that it even noticed a message at all let alone tried to mirror it to the other service. try to send a message on both youtube and discord if you haven't already. you must do it when the application is running. Any please give youtube a good 5-30 seconds to propagate to discord as you have to hit the api manually and each request takes some of your google api quota which is in very short supply. if you have tried this I really don't know what is wrong.

There was an active conversation in the YouTube chat at the time, therefor messages should have been coming through. Are there any more logs available to figure out what's going on?

one thing I just realized might explain at least some of it. could you send me a copy of the config.json I don't need the discordToken or anything confidential but I do need to see the rest of it.
otherwise its possible the discord api changed as well since I wrote this bot and that is possibly to blame for it not even detecting messages from discord. But honestly its possibly configuration error. However since I havent used this code really since 2017 I am not really sure. Chatbot was sorta the better spinoff to this so it may be in your best interest to setup that

{"channelName": "\ud83d\udcac-general", "pageToken": "", "serverName": "Jay's test server", "discordToken": "TOKEN REMOVED", "discordToYoutubeFormating": "\"{0} - {1}\"", "youtubeToDiscordFormatting": "\"{0} - {1}\"", "youtubeToDiscord": true, "discordToYoutube": false}````

I am assuming you already know but you need discordToYoutube set to true to allow discord to youtube communication. However you could try enabling it and seeing how that works. It is also possible the what I believe is unicode in the channel name is causing issues with the bot. I am not sure if either of those is the case but if you could try stuff in this order.
Try setting discordToYoutube to true and sending a message in discord monitoring youtube chat to see if it appears. If it doesnt look in the bot console it should show something in the console. Please send me a copy of this log regardless at this step. if it doesnt work go onto attempt 2.
Now onto attempt 2. if it still isnt working then try making a channel without unicode or special characters. dashes should be fine and this will just indicate where the issue is specifically. If you could also send a copy of the console at this step I would greatly appreciate it.

Ignoring exception in on_message
Traceback (most recent call last):
  File "C:\Users\Jay\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "C:\Users\Jay\Documents\GitHub\sync-ytchat-to-discord\bot.py", line 259, in on_message
    await sendLiveChat(config["discordToYoutubeFormating"].format(message.author.display_name,message.content)) #prints this to the screen
  File "C:\Users\Jay\Documents\GitHub\sync-ytchat-to-discord\bot.py", line 186, in sendLiveChat
    list_chatmessages_inset.execute()
  File "C:\Users\Jay\AppData\Local\Programs\Python\Python39\lib\site-packages\googleapiclient\_helpers.py", line 134, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "C:\Users\Jay\AppData\Local\Programs\Python\Python39\lib\site-packages\googleapiclient\http.py", line 935, in execute
    raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://youtube.googleapis.com/youtube/v3/liveChat/messages?part=snippet&alt=json returned "The specified live chat is no longer live.". Details: "[{'message': 'The specified live chat is no longer live.', 'domain': 'youtube.liveChat', 'reason': 'liveChatEnded'}]">``` (Discord to YT)

Looks like I got it working, thanks for your help!

Looks like I got it working, thanks for your help!

If you dont mind me asking. what was the solution?

Looks like I got it working, thanks for your help!

If you dont mind me asking. what was the solution?

Looks like the unicode character in the channel name was messing it up, I honestly have no idea how I fixed the discord to YT error haha

Looks like I got it working, thanks for your help!

If you dont mind me asking. what was the solution?

Looks like the unicode character in the channel name was messing it up, I honestly have no idea how I fixed the discord to YT error haha

ah ok thank you. The error you saw was something specific to the google/youtube api specifically
<HttpError 403 when requesting https://youtube.googleapis.com/youtube/v3/liveChat/messages?part=snippet&alt=json returned "The specified live chat is no longer live.". Details: "[{'message': 'The specified live chat is no longer live.', 'domain': 'youtube.liveChat', 'reason': 'liveChatEnded'}]">
Specifically something about Live chat has ended. Not sure what you did honestly to change that but hey Im glad its working.


debugger

@olydis,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

autorest_home: process.env["autorest.home"]

Is this still needed?

Refers to: .gulp/common.iced:410 in 35d47fd. [](commit_id = 35d47fd274a2d1bc38f8b9401e6da0aa01a5037b, deletion_comment = False)

@mcardosos nope, well spotted!


Support autoFocus for text input/ textarea elements

for #281

@n1k0 could you please take a look

@n1k0 I'm off for 3 weeks, I'll take a look when I'm back.

Does this patch work for number fields as well? Selects? We should cover all widgets accepting the autofocus attribute methinks.

agree, will update.

@n1k0 sorry, so busy last 2 weeks, could you please help to check again

what did you mean @sunnyzhang66
this PR still has no review.

Hi Vinh,
Thank you for your response.
Currently , I am using CDN of react-jsonschema-form which is

, but doesn't have auto focus code inside.
I wonder if you can upgrade CDN which is including latest code?
Thanks
Sunny

From: Vinh Lê<EMAIL_ADDRESS>Sent: Saturday, October 1, 2016 4:47 AM
To: mozilla-services/react-jsonschema-form
Cc: sunnyzhang66; Mention
Subject: Re: [mozilla-services/react-jsonschema-form] Support autoFocus (#288)
what did you mean @sunnyzhang66https://github.com/sunnyzhang66
this PR still has no review.

You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/mozilla-services/react-jsonschema-form/pull/288#issuecomment-250892363, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AE1P-tc_vvjCyDuP6MhOTMnEgLpovc0Fks5qveXpgaJpZM4JR96X.

@sunnyzhang66 this commit is still in an open Pull Request.

just push a fix, @n1k0 could you help to take a look

@n1k0 sorry, i forgot. Updated.

Thanks a lot for your contribution!

Released in v0.41.0.


Customize requests to bridge

This FAQ entry says that I can request Bridgy Fed to send a message to a Bluesky user I want to follow, and encourage them to enable the bridge. I'm hesitant to do so, because I don't know exactly what message will be sent, so it gives me bad "automated system sending spammy messages to people" vibes (kind of like Facebook apps/games using users' permissions to do that, as a way to grow their userbase). It's also not ideal if I want to invite someone who isn't fluent in English.
A potential solution to both problems would be to allow users to add a message to their DM to the Bridgy Fed account, and have this message included in the text of the invite. This way I could customize it for each person and add a sentence or two making sure that this is perceived as a proactive action on my part.
It would also be nice to link to the full text of the default invite in the FAQ, so people know what they're sending to other users when they use this feature.

Interesting idea! Definitely agreed on adding the full text to the docs, I'll do that.
And a template or extra custom text is interesting too! But honestly unlikely. I get how the DM prompt is useful, but it's an awkward UX that I'm reluctant to lean into more. Plus, it would add significantly more content moderation liability and risk, especially since the DM comes from the bot user. If anything, this is more motivation for #1471.
If you really want to contact someone personally, maybe find their contact info and do it directly?

Relatedly: because the Bluesky default is to only allow DMs from accounts you follow, most(?) un-bridged bluesky accounts won't even see the message from Bridgy Fed (as I have just figured out after trying it a few times with different people, including my own placeholder bluesky account). Perhaps the auto-response from the Bridgy Fed account when you message it a bluesky handle should mention this...?
Anyway, thank you @snarfed for building the bridge--it's a truly amazing contribution to post-centralized social networking/microblogging.

Thank you @agoldst! And yes, agreed, that's https://github.com/snarfed/bridgy-fed/issues/1326

Added DM text to docs! Should be deployed in ~7m.

because the Bluesky default is to only allow DMs from accounts you follow, most(?) un-bridged bluesky accounts won't even see the message from Bridgy Fed

I wonder if the solution to that is for Fediverse users to be able to send the bot a DM with several Bluesky handles in it, then instead of a DM, the bot makes a public post on Bluesky that @ mentions those users and asks them to enable the bridge.  I guess the post would need to include a hashtag that would be muted by default in accounts bridged from the Fediverse, otherwise every request would appear in all such users' timelines.


[R-package] lgb.cv() fails with categorical features

Description
Executing a cross-validation with lgb.cv() fails when the data contains categorical features.
Reproducible example
I'm using the example in the code demo categorical_features_rules:
demo("categorical_features_rules", "lightgbm")  # executes the example

In that example, a lgb.Booster is trained with
model <- lgb.train(
    params = params
    , data = dtrain
    , nrounds = 100L
    , valids = list(train = dtrain, valid = dtest)
)

after the training and test data had been previously created as
dtrain <- lgb.Dataset(
    data = my_data_train
    , label = bank_train$y
    , categorical_feature = c(2L, 3L, 4L, 5L, 7L, 8L, 9L, 11L, 16L)
)
dtest <- lgb.Dataset.create.valid(
    dtrain
    , data = my_data_test
    , label = bank_test$y
)

Works perfectly so far. Now, if I want to cross-validate using the training data set, by doing
lgb.cv(
  params = params
  , data = dtrain
  , nrounds = 100L)

I'm getting an error
Error in if (data_is_not_filename && max(private$categorical_feature) >  :
  missing value where TRUE/FALSE needed

Specifying the categorical_feature argument again in lgb.cv() does not help.
The error seems to be related to categorical features. When I'm, running a similar analysis without them, lgb.cv() works fine:
dtrain_nocat <- lgb.Dataset(
  data = my_data_train
  , label = bank_train$y
  # no categorical_feature here!
)
lgb.cv(
  params = params
  , data = dtrain_nocat
  , nrounds = 100L)

Environment info
> sessionInfo()
R version 4.3.1 (2023-06-16 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19045)

Matrix products: default

locale:
[1] LC_COLLATE=German_Switzerland.utf8  LC_CTYPE=German_Switzerland.utf8    LC_MONETARY=German_Switzerland.utf8
[4] LC_NUMERIC=C                        LC_TIME=German_Switzerland.utf8

time zone: Europe/Zurich
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] data.table_1.14.8 lightgbm_4.3.0

loaded via a namespace (and not attached):
[1] compiler_4.3.1    R6_2.5.1          Matrix_1.6-4      parallel_4.3.1    tools_4.3.1       rstudioapi_0.15.0
[7] grid_4.3.1        jsonlite_1.8.5    lattice_0.21-8

Seems like I introduced this in #5184. I don't remember why I changed the condition from length(private$colnames) to ncol(private$raw_data). I'll investigate further.

I experienced the same issue, but it seems like it does not throw the error (i.e. it seems to work) when you specify the 'categorical_feature' vector to be a vector of strings, the names of your features.
i.e. cat_features = c("a","b","c").
I had no issues when I included this both in the train creating using lgb.Dataset() AND in lgb.cv(categorical_feature=cat_features).
Hope this helps.

Yes, that's a useful workaround that circumvents the bug in my example, too!
Thanks for the hint.


issue with vehicles endpoint

I am not familiar with ruby, but I am guessing that the hash merge of three dictionaries creates one large dictionary. I think you really want an array of the three objects. something like
[$falcon9, $falcon_heavy, $dragon]
but again... not super familiar with ruby

see the change in the last commit of #11... I think that should be what you want

It looks like that fixed it 👍


(maint) update Facter dependency

This PR updates the Facter dependency to also include Facter 4.
A ship in harbor is safe — but that is not what ships are built for.

CLA signed by all contributors.

Verified that we don't constrain facter in puppet's Gemfile so 👍


Cool new remix of freakyMenu lol

just a remix I made xd

btw i dont have my computer rn so im doing this on mobile that's  why I edited the song in some gameplay of da engine preview:

https://user-images.githubusercontent.com/85831572/144257029-7a9ba69d-652a-4c71-8c0f-96d000bcd827.mp4

Epic Remix

Epic Remix

thank


Peer to Peer (12/23/2021)

The project looks amazing 🤩🤩🤩 , nothing else to say other than a great job done. Everything looks good, keep up the good work ⭐⭐⭐⭐⭐.

Great job on implementing the project 🚀  . Everything looks good.

Thanks for the feedback guys.


[Bug] 'Monitor' object has no attribute 'num_envs'

env = VecFrameStack(env, n_stack=4) Is causing the following error
   env = VecFrameStack(env, n_stack=4)   File "d:\stable-baselines\stable_baselines\common\vec_env\vec_frame_stack.py", line 21, in __init__     self.stackedobs = np.zeros((venv.num_envs,) + low.shape, low.dtype) AttributeError: 'Monitor' object has no attribute 'num_envs'
I have my custom environment and I need to run just one env with 4 frame staking . This is how I'm calling it
  env = gym.make(args.env_name)
env = Monitor(env, log_dir, allow_early_resets=True)
np.random.seed(123)
env.seed(123)
nb_actions = env.action_space.n
env = VecFrameStack(env, n_stack=4)

I tried vectoring the env first and calling it like this
  env = gym.make(args.env_name)
env = Monitor(env, log_dir, allow_early_resets=True)
np.random.seed(123)
env.seed(123)
nb_actions = env.action_space.n
env = DummyVecEnv([lambda: env])
env = VecFrameStack(env, n_stack=4)
and that worked. However I'm not sure this is a correct way of doing it as the examples with the Atari env don't call env = DummyVecEnv([lambda: env])  first.


update README

we should update the readme with links and more specific explanations of core features etc.

thanks @marscher
we should also add the new info to doc/index.rst, I haven't found a good way yet to keep the contents in sync unfortunately


Add support for querying for test output from AzureDevops public cloud

We would like to be able to run tests in many different CI environments (to encourage testing 'everywhere' and to leverage resources at our disposal, https://dev.azure.com/adoptopenjdk).
This issue is an enhancement to TRSS to be able to query the AzDo API, much like it currently queries the Jenkins API, for monitoring tests in that CI environment.
There are still some open questions related to this enhancement that need to be answered that will be listed below.

We are looking into:
https://github.com/microsoft/azure-devops-node-api

We may not need this now that we are using Azure VM agents Jenkins plugin, but I will leave it open for a bit, while we determine if we/others still want to pursue it.

FYI @d3r3kk @milderhc

I did some experiments last year. It is WIP. For detail, please see my personal branch: https://github.com/llxia/openjdk-test-tools/tree/azure


Ledger - aggregate transaction possible to sign by cosigners that init transaction

Steps:

I'm initializing aggregate transaction (with voting key link) from symbol-cli using cosigner1
I'm going to Ledger wallet where I have cosigner1 and cosigner2

Result:
Both Cosigner1 and Cosigner2 can see button to confirm. If Cosigner1 will sign transaction it failes because "Validation failed because of redundant signatures"

On non-Ledger wallet it works fine:

Fixed.


Create folder 'Enabled', gitignore contents, explain in README

As discussed in #53.
See ongoing discussion on managing plugins in #112.

I like this.


How do i redraw a map using ngmap

I comment and put my problem in the link below:
http://stackoverflow.com/questions/37737431/how-do-i-redraw-map-unsing-ngmap
When i change the sceen and come back the map dont redraw propely.
Sorry for my bad english. Thanks

use this solution
http://stackoverflow.com/questions/34886358/how-to-render-maps-within-ng-hide-divs-using-ngmap-without-getting-a-gray-rectan

Hi, thanks for reply, and sorry if im wrong but i dont use ng-hide, and i have only one map i want to show him every time.

There have been so many discussions on this. It's not about ngMap, but it's about google not drawing a map without fixed width and height.
You need to resize map, the recenter the map. Try add the following code after your page has been loaded.
NgMap.getMap({id: 'myMapId' }).then(function(map) {
    google.maps.event.trigger(map, 'resize');
});

Any better ideas are welcome


Update go

Looks good, is there a reason you removed the test step in the job?

Tests are run as part of the docker build, it didn't seem necessary to run them twice. Thoughts?

Looks good, is there a reason you removed the test step in the job?

Tests are run as part of the docker build, it didn't seem necessary to run them twice. Thoughts?

That works for me.


Status 502 - Use the Application Router in Cloud Foundry to Connect to ABAP System

I followed this tutorial to build myself an approuter on CF.
https://developers.sap.com/tutorials/cp-connectivity-consume-odata-service-approuter.html
The router works perfectly fine for routes with destination of type Internet, but ends with a 502 status while accessing OnPremise destinations.
Log entry:
{"written_at":"2019-12-06T12:27:27.943Z","written_ts":1575635247943000000,"csn_component":"-","correlation_id":"b5db957c-715b-48dc-79c3-e34c7d581ae7","type":"log","logger":"nodejs-logger","layer":"/Handler","level":"error","container_id":"<IP_ADDRESS>","component_type":"application","component_id":"2d39ce3c-d0a7-48c0-954b-236a18fb1217","component_name":"approuter","component_instance":-1,"source_instance":-1,"organization_id":"-","organization_name":"-","space_id":"3ae5a25a-dce9-4370-bede-4d26a032d31d","space_name":"dev","request_id":"b5db957c-715b-48dc-79c3-e34c7d581ae7","msg":"GET request to /sap/opu/odata/sap/ZBC_USER_SRV/UserSet completed with status 502 - error while forwarding request to http://myrouter-ah1:123/sap/opu/odata/sap/ZBC_USER_SRV/UserSet: getaddrinfo ENOTFOUND myrouter-ah1 myrouter-ah1:123"}
I tried different approuter versions: 5.3.0(like in this tutorial), 6.1.0(like in resolution of issue https://github.com/SAPDocuments/Tutorials/issues/3813) and 6.7.0(latest).
I tried defining the destinations on subaccount level, destination service instance level and in the manifest file as environment variable destinations. None of them are accessible to the approuter, same message in every case.
Cloud connector doesnt show any incoming requests. I have confirmed the accessibility of backend via cloud connector by using it in an app deployed in Neo, it works fine.
What else can i check ?

@vivek-krishnadas :
Sorry, but I was not in the office for 7 weeks.
What puzzles me is that you say you confirmed the accessibility of the backend by a Neo app.
So you completed the first of my tutorials successfully to configure the Fiori Reference Apps in your ABAP system? Other colleagues missed that the demo user that is configured there must be used when you later create the destination on CF.
ENOTFOUND sounds to me as if the endpoint is not found.
Is myrouter-ah1:123 the virtual host for the ABAP system that you configured in the Cloud Connector? It sounds a bit as if the address refers to the approuter, not to the ABAP backend system.

@vivek-krishnadas Thank you for your feedback. We haven't heard from you in a while, so we are closing the issue.
If you still have questions, feel free to reopen the issue.


The license is missing

I couldn't find a description how the project is licensed. It would be good to provide this information.

License is to be decided.  Are you sensitive to what it will be?

A license that permits use in non open-source commercial projects and contributions via github would be the best. I believe MIT and ASF licences both fit these requirements.


devicelab flutter_driver_screenshot_test_ios test is failing 100%

Steps to Reproduce
$ cd dev/devicelab
$ dart bin/run.dart -t flutter_driver_screenshot_test_ios

Logs
2019-12-23T13:28:19.931393: stdout: [   +1 ms] Running driver tests.
2019-12-23T13:28:19.932339: stdout: [        ] executing: /Users/flutter/.cocoon/flutter/bin/cache/dart-sdk/bin/dart /Users/flutter/.cocoon/flutter/dev/integration_tests/flutter_driver_screenshot_test/test_driver/main_test.dart --packages=/Users/flutter/.cocoon/flutter/dev/integration_tests/flutter_driver_screenshot_test/.packages -rexpanded
2019-12-23T13:28:22.541329: stderr: [+2608 ms] ../../../packages/flutter/lib/src/foundation/basic_types.dart:10:1: Error: Not found: 'dart:ui'
2019-12-23T13:28:22.541615: stderr: [        ] export 'dart:ui' show VoidCallback;
stderr: [        ] ^
2019-12-23T13:28:22.541762: stderr: [        ] ../../../packages/flutter/lib/src/foundation/binding.dart:9:8: Error: Not found: 'dart:ui'
2019-12-23T13:28:22.542022: stderr: [        ] import 'dart:ui' as ui show saveCompilationTrace, Window, window;
2019-12-23T13:28:22.542194: stderr: [        ]        ^
2019-12-23T13:28:22.542399: stderr: [        ] ../../../packages/flutter/lib/src/foundation/key.dart:5:8: Error: Not found: 'dart:ui'
2019-12-23T13:28:22.542589: stderr: [        ] import 'dart:ui' show hashValues;
2019-12-23T13:28:22.542819: stderr: [        ]        ^
2019-12-23T13:28:22.542974: stderr: [        ] ../../../packages/flutter/lib/src/foundation/binding.dart:87:3: Error: Type 'ui.Window' not found.
2019-12-23T13:28:22.543166: stderr: [        ]   ui.Window get window => ui.window;
2019-12-23T13:28:22.543353: stderr: [        ]   ^^^^^^^^^
2019-12-23T13:28:22.543552: stderr: [        ] ../../../packages/flutter/lib/src/foundation/change_notifier.dart:68:20: Error: Type 'VoidCallback' not found.
2019-12-23T13:28:22.543704: stderr: [        ]   void addListener(VoidCallback listener);
2019-12-23T13:28:22.544077: stderr: [        ]                    ^^^^^^^^^^^^
stderr: [        ] ../../../packages/flutter/lib/src/foundation/change_notifier.dart:72:23: Error: Type 'VoidCallback' not found.
2019-12-23T13:28:22.544383: stderr: [        ]   void removeListener(VoidCallback listener);
2019-12-23T13:28:22.544616: stderr: [        ]                       ^^^^^^^^^^^^
2019-12-23T13:28:22.544893: stderr: [        ] ../../../packages/flutter/lib/src/foundation/change_notifier.dart:100:16: Error: Type 'VoidCallback' not found.
2019-12-23T13:28:22.545029: stderr: [        ]   ObserverList<VoidCallback> _listeners = ObserverList<VoidCallback>();
2019-12-23T13:28:22.545210: stderr: [        ]                ^^^^^^^^^^^^
2019-12-23T13:28:22.545410: stderr: [        ] ../../../packages/flutter/lib/src/foundation/change_notifier.dart:140:20: Error: Type 'VoidCallback' not found.
2019-12-23T13:28:22.545617: stderr: [        ]   void addListener(VoidCallback listener) {
2019-12-23T13:28:22.545765: stderr: [        ]                    ^^^^^^^^^^^^
2019-12-23T13:28:22.545944: stderr: [        ] ../../../packages/flutter/lib/src/foundation/change_notifier.dart:165:23: Error: Type 'VoidCallback' not found.
2019-12-23T13:28:22.546128: stderr: [        ]   void removeListener(VoidCallback listener) {
2019-12-23T13:28:22.546326: stderr: [        ]                       ^^^^^^^^^^^^
2019-12-23T13:28:22.546492: stderr: [        ] ../../../packages/flutter/lib/src/foundation/change_notifier.dart:233:20: Error: Type 'VoidCallback' not found.
2019-12-23T13:28:22.546672: stderr: [        ]   void addListener(VoidCallback listener) {
2019-12-23T13:28:22.546860: stderr: [        ]                    ^^^^^^^^^^^^
2019-12-23T13:28:22.585044: stdout: [  +38 ms] Stopping application instance.

https://github.com/flutter/flutter/commit/78db9656424768d71b363f3365fa5637b3a3fa49#diff-d525f5a1105b9023610d7d682308a9c5R8
added import 'package:flutter/foundation.dart'; to the driver test, which is importing 'dart:ui'.


AS0066 gives false positives for internal interfaces

1. Describe the bug
When turning on AS0066 we receive errors for a modified interface, which is marked Access = Internal;.
2. To Reproduce
Create a version <IP_ADDRESS> of an extension where an internal interface is introduced.
interface IFoo
{
  Access = Internal;
  procedure Foo();
}

Use this version for AppSourceCop.json with version <IP_ADDRESS> and raise the version to <IP_ADDRESS> while adding a procedure to the interface.
interface IFoo
{
    Access = Internal;
    procedure Foo();
    procedure Bar();
}

3. Expected behavior
We should be able to modify internal interfaces freely since they're internal and therefor we control which extensions use them.
4. Actual behavior
An error is reported by AppSourceCop:
error AS0066: Procedure 'Bar' has been added in 'Interface IFoo'. A procedure must not be added to a public API.
5. Versions:

AL Language: v8.0.508407
Visual Studio Code: 1.60.0
Business Central: 18,4
List of Visual Studio Code extensions that you have installed:

Final Checklist
Please remember to do the following:

[x] Search the issue repository to ensure you are reporting a new issue

[x] Reproduce the issue after disabling all extensions except the AL Language extension

[x] Simplify your code around the issue to better isolate the problem

The fix for this issue has been checked in to the master branch. It will be available in the bcinsider.azurecr.io/bcsandbox-master Docker image starting from platform build number 30339 and VS Code Extension Version 9.0.520686.
If you don’t have access to these images you need to become part of the Ready2Go program: aka.ms/readytogo
For more details on code branches and docker images please read:
https://blogs.msdn.microsoft.com/nav/2018/05/03/al-developer-previews-multiple-releases-and-github/
https://freddysblog.com/2020/06/25/working-with-artifacts/


check platforms: check remote hosts, not clusters

Cluster configuration is no longer relevant to OSBS in any way and will
be removed. Fix the check_and_set_platforms plugin to do the equivalent
check for remote hosts instead.
Signed-off-by: Adam Cmiel<EMAIL_ADDRESS>Maintainers will complete the following section

[x] Commit messages are descriptive enough
[ ] Code coverage from testing does not decrease and new code is covered
[x] Python type annotations added to new code
[n/a] JSON/YAML configuration changes are updated in the relevant schema
[n/a] Changes to metadata also update the documentation for the metadata
[n/a] Pull request has a link to an osbs-docs PR for user documentation updates
[n/a] New feature can be disabled from a configuration file

WDYT, do we even want to check remote hosts in this plugin? Or should we just let the build continue and fail later if there are no remote hosts for some platform?

I think we should also update https://github.com/containerbuildsystem/atomic-reactor/blob/master/docs/config.md

I think we should also update https://github.com/containerbuildsystem/atomic-reactor/blob/master/docs/config.md

Hmm, yes, this is hopelessly outdated :smile:
IMO it would be better to do in a story dedicated to cleaning the cluster configuration out of the codebase, it is still present in many places. I filed an internal tracker for that.


Uncaught Error: This socket has been ended by the other party

Error Log
Atom: 1.18.0 x64
Electron: 1.3.15
OS: Ubuntu 17.04
Thrown From: Remote-FTP package 1.1.3
Stack Trace
Uncaught Error: This socket has been ended by the other party
At events.js:160

Error: This socket has been ended by the other party
    at Socket.writeAfterFIN [as write] (net.js:286:12)
    at Channel.ondata (_stream_readable.js:555:20)
    at emitOne (events.js:96:13)
    at Channel.emit (events.js:188:7)
    at readableAddChunk (_stream_readable.js:176:18)
    at Channel.Readable.push (_stream_readable.js:134:10)
    at /packages/Remote-FTP/node_modules/ssh2/lib/Channel.js:166:15)
    at emitOne (events.js:96:13)
    at SSH2Stream.emit (events.js:188:7)
    at parsePacket (/packages/Remote-FTP/node_modules/ssh2-streams/lib/ssh.js:3443:10)
    at SSH2Stream._transform (/packages/Remote-FTP/node_modules/ssh2-streams/lib/ssh.js:668:13)
    at SSH2Stream.Transform._read (_stream_transform.js:167:10)
    at SSH2Stream._read (/packages/Remote-FTP/node_modules/ssh2-streams/lib/ssh.js:251:15)
    at SSH2Stream.Transform._write (_stream_transform.js:155:12)
    at doWrite (_stream_writable.js:307:12)
    at writeOrBuffer (_stream_writable.js:293:5)
    at SSH2Stream.Writable.write (_stream_writable.js:220:11)
    at Socket.ondata (_stream_readable.js:555:20)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at readableAddChunk (_stream_readable.js:176:18)
    at Socket.Readable.push (_stream_readable.js:134:10)
    at TCP.onread (net.js:543:20)

Commands

Non-Core Packages
atom-beautify 0.30.4
atom-sync 0.7.3
autoclose-html 0.23.0
busy-signal 1.4.3
color-picker 2.2.5
emmet 2.4.3
git-plus 7.9.3
html-template-generator 0.3.0
intentions 1.1.2
language-babel 2.68.0
linter 2.2.0
linter-eslint 8.2.1
linter-jshint 3.1.5
linter-ui-default 1.6.3
nuclide 0.241.0
playyoutube 1.3.0
Remote-FTP 1.1.3
script 3.15.0

I think this is a server side problem, not a package issue. Your server drops the socket connection.

Thank you, it appears I had made a typo in the config file.


[stable/drupal] Add Icon

PR in the context of normalizing/improving metadata in official charts.
Refs https://github.com/kubernetes/charts/issues/124 and https://github.com/helm/monocular/issues/93
NOTE: I have not bumped the chartVersion attribute in order to avoid race conditions/conflicts with existing PRs. Maintainers should be able to change this value before merging (let me know if you prefer that I update it instead)
Thanks,
Miguel

@k8s-bot ok to test


Derive all the things

Currently, we only have support for deriving Foldable. Eventually, we should be able to derive all of the following:

[x] Functor, Foldable, and Traversable (0.2)
Data.Functor.Classes

[ ] Eq(1)(2)
[ ] Ord(1)(2)
[ ] Read(1)(2)
[x] Show(1)(2)

[ ] Enum, Bounded, and Ix

I've hit a minor road block when thinking about how to derive Read1 and Read2. Currently, GHC derives Read instances in terms of the readPrec method, which uses the ReadPrec datatype. But Read1/Read2 only have methods that involve the less efficient ReadS type! This would mean a lot of inefficient conversions between the two types, which doesn't sound appealing.
For base-<IP_ADDRESS>, there's not much I can do. But hopefully this situation can be rectified in the future. I've proposed adding ReadPrec-based methods to Read1 and Read2 to the Haskell libraries mailing list.

And my proposal was accepted! Yay!
I went ahead and implemented Bounded deriving in a93e6bda569159c588d15fa975e6648622c1776e. Next up: Enum.
(Note to self: the "is enumeration" check I do here is wrong. I also need to check that none of the constructors are GADT-like, and I should probably update the error message to reflect this. See this Note for an explanation.)

And now we have Ix!
That's all of them except for Typeable/Data, but I really don't want to do those unless someone asks for them.


Bump Prettier

Old version of prettier prevented using latest Typescript features such as ??

@tiero why CI is failing?

@tiero why CI is failing?

forgot to build and commit JS files


Process 'command '   .../Kickstarter/android-oss/app/.gradle/nodejs/node-v6.7.0-darwin-x64/bin/node'' finished with non-zero exit value 1

when I build the project, I get following error
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:installApolloCodegen'.
> Process 'command '/Users/xiangzhongfei/Documents/work/OpenDemo/Kickstarter/android-oss/app/.gradle/nodejs/node-v6.7.0-darwin-x64/bin/node'' finished with non-zero exit value 1

Hi @luckyAF, I'm not sure if this is a Kickstarter app specific issue. I bumped Apollo yesterday in #394 and can still build successfully. This seems like a node/npm issue. I believe that's what https://github.com/apollographql/apollo-android uses under the hood. What do you get when you do node -v in your terminal?

v6.11.3

Hi @luckyAF,
Thanks! I did some googling and saw that this is definitely an Apollo issue and not a Kickstarter issue. I think this comment is helpful:
https://github.com/apollographql/apollo-android/issues/608#issuecomment-369899779
I would open an issue here if you're still running into problems: https://github.com/apollographql/apollo-android/issues
Best,
Izzy


Warn if the Python version isn't explicitly specified in runtime.txt

Similar to heroku/heroku-buildpack-ruby#611, though unlike that case it needn't block heroku/heroku-repo#70.

I don't think that's a good idea.

By warn I don't mean fail the compile, instead output a friendly "We notice that the Python version isn't explicitly specified. It's recommended to do, see ". Context:
https://github.com/heroku/heroku-repo/issues/70#issuecomment-318448112

I don't recommend to do so — 99% of apps don't specify one.

I don't want to clutter up 99% of builds with a warning they don't need to see.

Some context...
My main concern was how the following interact:

The desire to have minimal setup required for new apps (ie have runtime.txt be optional)
Sticky Python versions (ie never update to newer default Python, re-use the version first used)

...in that it means 99% of apps will always be using out of date Python and not even know it.
In an ideal world where Python patch version updates never break anything, the buildpack could auto-update users who don't have a runtime.txt thereby preserving both the "keep Heroku friction free" and "keep people protected" aspects.
However that clearly isn't viable, which means the best we can do is try to make it clearer to users what version they are using, and encouraging them to update it if needed. ie:

increasing the visibility of the Python version used

by making it actually be output in the build log (I've filed #453 for this)
by adding a runtime.txt to their repo so it's more visible to the developers that don't look at build logs (this issue)

encouraging them to update by outputting more blatant warnings for known insecure Python versions (there's already a check during compile for InsecurePlatformWarning but I think that needs to be extended)

However I can understand the desire to not show a warning if most people are going to ignore it. I would be interested to know if there were better ways to try and keep users protected however. What do other buildpacks do?

Let's warn if they don't have runtime.txt set AND python is out of date!

in fact, let's simply things.
Let's just warn if Python's out of date, period.

this is now implemented!

Awesome - thank you :-)


Allow request for incoming transactions by address

At the moment transaction information can be retrieved only by PublicAccount instance which is basically public key. Account can however have incoming transactions without having announced public key to the network
Allow request fr incoming transaction by address + consider changing the API to allow requests by address and SDK can decide which endpoint(s) to call based on parameters of the call

included in pull request #120
decided not to be too clever and only added API to query for incoming transactions by address


horizontal volume bar

Is it possible create a custom horizontal  volume bar?

Yes, just take the vertical volume bar and modify it to work horizontally.
https://github.com/2fdevs/videogular/blob/master/app/scripts/com/2fdevs/videogular/plugins/vg-controls/vg-volume/vg-volume-bar.js
It should be pretty easy to do.


Add https://github.com/vmeurisse/flipperzero-plugins

This contains precompiled plugins for the official firmware

Neato! Currently working on rewriting a bunch of FAQ questions so I'll get this merged after I'm done with that.

Heads up, some of these will only work right with the firmware they were intended for. For example, my firmware has a random deed generation function not in Unleashed. I call it to grab a random deed type to attribute a gain in experience into. I suspect that an RM app in unleashed would likely cause a crash on any of the actions below (I have not tried to see if it would even run, crash, or just power through the error (haha)):

Dice First Roll for d20+ = sides on dice (i.e. Nat 20 on d20)

Dice First Roll for d20+ = sides on dice - 1 (+1 EXP) (i.e. 19 on d20)

Getting 2048 in 2048

Mouse Jacker Ducky Run

NRFSniffer Found Address

Stopwatch @ Alert

Tetris, Snake, or Flappy Bird Score For EXP

Zombiez for every 20 Zombie kills

@RogueMaster Trust me, I saw that ;)
This is why the description explicitly mention the official firmware.
If you load a fap on an incompatible firmware, the error is handled. Flipper will check major version from api_symbols.csv before loading anything. If it doesn't match, the app isn't loaded (no icon in menu, error message when trying to open). If the major version is the same, the app will try to start but show an error message if some of the function used are missing from the firmware (you can use the logs to get the list).

So as you all probably know, I'm working on a site called Aquarium to host things just like this. If you don't mind, I'm going to leave this PR unmerged until I can decide how to proceed with the site. I'll try to reach out to all the devs of those plugins, in addition to the once already in the repo, to see if I can get their permission to republish their work.

The linked apps are heavily out of date. @vmeurisse are you planning on updating them?
I have a more current collection over here, including more linked in the Official folder ReadMe.

Closing in favor of #98.


⚠ CIOOS Pacific ERDDAP dataset ECCC_MSC_BUOYS has degraded performance

In d8a154e, CIOOS Pacific ERDDAP dataset ECCC_MSC_BUOYS (https://data.cioospacific.ca/erddap/tabledap/ECCC_MSC_BUOYS.htmlTable?wmo_synop_id&time>now-3hours&distinct()) experienced degraded performance:

HTTP code: 503
Response time: 25195 ms

Resolved: CIOOS Pacific ERDDAP dataset ECCC_MSC_BUOYS performance has improved in dafad7d after 8 minutes.


Does this plugin support OKTA

Team we are trying to integrate our supeset application with OKTA, and we have tried to use this plugin for integration. Please confirm if this supports okta integration ?

This project has been marked as unmaintained, maybe you should try some other oauth support framework.


daft.DataFrame.write_deltalake does not support append for tables with schema evolution

Describe the bug
Appends to Delta Lake is not permitted when schema between the DataFrame and the DeltaLake table differs. There appears to be safety in place in daft.DataFrame.write_deltalake , which was noticed when working on PR #3522 that prevents this from happening.  Specifically, this block of code is the one preventing this.
Without knowing too much of the history, I assume this safety is in place since delta-rs likely has/had some limitation.
I could locate https://github.com/delta-io/delta-rs/pull/2246in the delta-rs project that appears to mention there is support for what we are seeking, however from what I see in the delta-rs writer, I believe this is the relevant block of code explicitly prevents mode='append' and schema_mode='overwrite' from being done.
Handling schema evolution using Daft DataFrame writes to Delta lake would be a great feature.
To Reproduce

Read a DataFrame using daft.DataFrame.read_deltalake()
Perform transformations that add/remove columns.
Attempt to daft.DataFrame.write_deltalake(table="sometable",mode="append",schema_mode="overwrite")

Expected behavior
Should allow appends to existing tables.
Component(s)
Other
Additional context
No response

Thank you for reporting this. @jaychia any thoughts on this?

Hi @anilmenon14 , what is the expected behavior here? Should Daft be allowing missing columns/extra columns/different columns by performing column pruning or adding columns of data with all nulls?

Hi @jaychia ,
To replicate the behavior for the same DataFrame code I used in Daft to trigger appends, I recreated the same experiment with exact same dataset I had been using for Daft, with the Spark syntax in a Databricks environment:
# Read the NYC taxi dataset
import pyspark.sql.functions as F
df = spark.read.table('some_catalog.some_schema.nyc_taxi_data')

# Perform a couple of transformations that creates 2 new columns and drop an existing column
df_transformed = (df.withColumns(
                    {
                        "tpep_pickup_datetime": F.timestamp_add("DAY", F.lit(7), "tpep_pickup_datetime"),
                        "tpep_dropoff_datetime": F.timestamp_add("DAY", F.lit(7), "tpep_dropoff_datetime"),
                        "trip_distance": F.round(F.col("trip_distance") * 1.2, 2),
                        "fare_amount": F.round(F.col("fare_amount") * 1.3, 2),
                    })
                    .withColumn("trip_distance_km", F.round(F.col("trip_distance") * 1.609344, 2))
                    .withColumn("fare_class",F.when(F.col("fare_amount") < 20.0, "Economical").otherwise("Expensive"),)
                    .drop("trip_distance")
)

# Write the transformed data as an append to the existing table
(
df_transformed.write
.mode("append")
.option("mergeSchema",True)
.saveAsTable('some_catalog.some_schema.nyc_taxi_data')
)

This is how this append in Spark behaves with merge schema option:

I forked the current main branch and altered this L942 of the daft/daft/dataframe.py  to accept mode="append" to try and see how Daft .write_deltalake would behave on append with schema overwrite.
By doing so, I could proceed to execute something like my_daft_df.write_deltalake(unity_table_ext,mode="append",schema_mode = "overwrite"), however it did not correctly lead to schema evolution as we could observe with Spark. It appeared to create a new delta log with append transaction , however strangely when reading the table again (either using Daft or Spark), the old/initial schema of the table was still in use.
Let me know if you like me to look into anything else and I'm happy to help.


Can't use quant --architecture

I'm using Ubuntu16 and Tensorflow1.9 and python3.5
I have used all of  these commands to retrain quant model and I'm getting the same error:
python scripts/retrain.py --output_graph=tf_files/retrained_graph.pb --output_labels=tf_files/retrained_labels.txt --image_dir=flower_photos --architecture MobileNet_1.0_224_quant
or
python scripts/retrain.py --output_graph=tf_files/retrained_graph.pb --output_labels=tf_files/retrained_labels.txt --image_dir=flower_photos --architecture mobilenet_1.0_224_quant
or
python scripts/retrain.py --output_graph=tf_files/retrained_graph.pb -- output_labels=tf_files/retrained_labels.txt --image_dir=flower_photos --architecture MobileNet_v1_1.0_224_quant
Error:
ERROR:tensorflow:Couldn't understand architecture suffix 'quant' for 'mobilenet_1.0_224_quant'
ERROR:tensorflow:Did not recognize architecture flag
Can someone please tell me the correct command

Have a look at this line in the retrain.py script:
https://github.com/googlecodelabs/tensorflow-for-poets-2/blob/6be494e0300555fd48c095abd6b2764ba4324592/scripts/retrain.py#L899
You need to specify the suffix as quantized not quant.


Product Types Need Provisioning Answers in UX

The provisioners in the Jellyfish Fog gem look for provisioning answers into order to specify the custom attributes needed for  a service to be deployed. Currently, those questions are not being populated in the UX for creating/editing Products from Product Types.
Steps to Reproduce:
Select a new Product Type to instantiate a new Product instance with from Admin > Products:

Issue:
The create/edit form is missing the associated Product Type questions.

In the case of AWS Fog Infrastructure, the product type questions should be populated with the following:

So lets talk about what this actually is/means/needs to look like.  Input so an admin can adjust values? Just displaying them in an aside? @stackus @mafernando   Talk it out let me know and your collective will shall be executed.

Think this is already being addressed by an extension @stackus is working on.
Closing for now.


Minor changes to remove checks for logically impossible situations

Two changes:

The tool_event InputEvent is either a MouseMotion or a MouseButton, so the check for the InputEvent being a MouseButton event does not need to occur if the object is already identified as a MouseMotion.
In the tool_event MouseButton path, if the elif section is reached then event.pressed is guaranteed to be false, so checking that it is false is redundant.

Thanks!


terraform: 1.2.8 -> 1.2.9

https://github.com/hashicorp/terraform/releases/tag/v1.2.9
Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

@zowoq thanks for the update but how do I use this?
When I install this I just get v1.0.11

This depends on which version of nixpkgs you're using. Make sure to update your channel and point it to nixos-unstable. See https://nixos.wiki/wiki/Nix_channels


Rename pmf and X

This PR should be merged after https://github.com/econ-ark/HARK/pull/1164 is merged.

@llorracc passing tests


Python: FunctionCallContent and FunctionResultContent should have plugin_name and function_name

Today, each class only has name. name should be split out into its component parts

we did that through methods in python, .split_name and .split_name_dict, we could create properties from there to mitigate, would that work?

Yes, that'd be great


Updated (almost) all docs regarding "votes" once Tendermint integrated

I grepped all the docs for "vote" (case-insensitive) and updated all associated mentions of votes to account for how things will work with Tendermint integrated. Two entire pages got deleted:

Data Models - The Vote Model
Appendices - The Vote Schema File

(Deleting the actual vote schema file at bigchaindb/common/schema/vote.yaml caused many things to break so doing that was deferred until later.)
The only exception was the docs page about the Event Stream API. Updating that will require some code changes first, so I created a new issue to do that: #2064

@kansi - While writing the blog post about the changes to the HTTP API, I noticed several more changes that will have to be made to the HTTP API docs. (For example, there's no longer a concept of "invalid blocks" so all that will go away.) I'll do those changes in another PR that uses this branch as a starting point.


.string() method validate all type values

Prerequisites

[X] I have written a descriptive issue title
[X] I have searched existing issues to ensure the bug has not already been reported

Fastify version
4.1.0
Plugin version
3.1.0
Node.js version
16.14.12
Operating system
macOS
Operating system version (i.e. 20.04, 11.3, 10)
Monterey
Description
i try to validate my body prop "name" as a required string, but if i sent a number value from POSTMAN json, i've got an successful validation... it's very strange.
Steps to Reproduce
S.prop('name', S.string().required())
Expected Behavior
No response

It is not because the value is coerced.
https://github.com/fastify/fastify/blob/main/docs/Reference/Validation-and-Serialization.md#validation
Try:
const fastify = Fastify({
  ajv: {
    customOptions: {
      coerceTypes: false
    }
  }
})

Not related to fluent-json-schema


Remove Amazon.Corretto.17 <IP_ADDRESS> to Amazon.Corretto.17.JDK <IP_ADDRESS>

Microsoft Reviewers: Open in CodeFlow

Hi @SpecterShell,
This manifest has the highest version number for this package. Is it available from another location? (This might be in error if the version is switching from semantic to string, or string to semantic.)
(Automated response - build 886.)

https://github.com/microsoft/winget-pkgs/pull/159777


3b and 3d documentation updates

If you haven't already, please read through our contributing guidelines before opening your PR
What is the purpose of this PR?
Closes #159 and closes #161.
Main changes:

3a : change intensity arg to have default ['Au', 'chan_39'] in watcher callbacks and remove from notebook
3b: remove intensity and replace args from notebook and make them defaults
3d: more detailed mph descriptions and save mph plots to run_metrics (similar to qc notebook)

watcher notebook documentation is being updated in the image stitching PR #152


Fixed conflicting method signature for _dispatch_install_thread_detach_callback()

This fixes various "conflicting types for XXX" errors I get when building the project for Android after the recent libdispatch-1121 merge. The changes are not Android-specific though and probably result in warnings or errors on other platforms (depending on -Werror).

Thanks, I’ve updated the patch to only include the change for _dispatch_install_thread_detach_callback() in queue.c to align with queue_private.h.

@swift-ci please test

CC: @ktopley-apple


Reliable way to lock up vscode

Environment data
dotnet --info output:
.NET Command Line Tools (1.0.0-preview2-1-003177)
Product Information:
Version:            1.0.0-preview2-1-003177
Commit SHA-1 hash:  a2df9c2576
Runtime Environment:
OS Name:     Mac OS X
OS Version:  10.11
OS Platform: Darwin
RID:         osx.10.11-x64
VS Code version:
1.8.1
C# Extension version:
1.6.1
Steps to reproduce
Set file to C# and paste this in, next try to add any generic type to the int on _totalLockup.
using System;
using System.Collections.Generic;

public class Bizarre
{
    // Typing X< (say List<) before x (int here) works fine when TKey is not RuntimeTypeHandle
    private Dictionary<Type, int> _worksFine;

    // With RuntimeTypeHandle this fully locks up VSCode until it shows the 'window unresponsive' dialog
    private Dictionary<RuntimeTypeHandle, int> _totalLockup;
}

See tweet for repro https://twitter.com/NinoFloris/status/812838424545783808

This looks like a duplicate of https://github.com/OmniSharp/omnisharp-vscode/issues/1086.

OK. All of my analysis is in #1086. I'm closing this as a dupe of this issue. However, thanks very much for your excellent repro. I've pushed a new release (1.6.2) that should address this problem. It's not a perfect solution, but it won't hang any longer. If you're interested in seeing what happened, check out issue #1086 and the PR I merged to workaround it: #1089.