 to go it's get credentials binding office hours for the 16th of june 17th of june sorry wrong date given 17th of june harsh it any particular topics that you wanted to bring yeah um should we i mean should we discuss the code today that would that would be great with me i was just attempting to show a test failure with uh by experimenting with the code i was expecting it to fail because i think it had failed for me locally but i don't see the failure when i run it now and so i am i am at the moment a little bit perplexed i was expecting to see failures and didn't and so i would love to have a discussion of the code uh which test are you talking about mark in my case it was the test freestyle project okay the freestyle project okay yeah so it's using a shell step to echo the get username and get password values to an auth.txt file but one of the values of get password has an ampersand in it and the shell should treat that as a as a special case and attempt to put the job in the background and um not actually echo the ampersand and the surprise for me is the test passes and i i'm not clear why it passes so i i just started the some diagnosis to understand why the test was passing when i thought it would fail but we we can discuss whatever code topics you would like we don't have to we don't have to focus on my my narrow little thing i can chase my question in a debugger as well yeah i mean mark you must have changed the code bar here i mean you commented on on the code yesterday i i looked at it but i have not made the changes yet right and in fact i hadn't made any changes either i was trying to watch it fail and was rather embarrassed that it didn't fail that was the surprise so line 165 where it says echo dollars get username and get password and redirects that to auth.txt then if you go down five or ten lines you'll see there's an assertion that the the very last line on 178 is that it expects to find exactly that text username the literal colon and a password in the file auth.txt and it succeeds at least in my case it does and now i need to check the ci job maybe the ci job failed and and would tell me something just a minute tests test result okay yeah okay so the test result oh oh maybe that's the reason okay all right first for whatever reason on the on the continuous integration server it's showing the failures only on windows and that's where i was running the last time i was seeing test failures so i i can't explain why uh read and execute permissions to be set huh interesting so no so the the failures on on the ci job are unrelated to the to the uh the thing that well maybe okay no one of them good all right that's relief one of them is failing in a way that i might have expected one of the six failures on the on the ci.jenkins.io are failing as i expected okay i mean the i mean the most of the failures are in the generate git script write test right five of the it looks like five of the six are and those i assume you'll just have to adapt the test because you don't need to worry about read and execute permissions on a windows computer oh okay but i changed the code i changed the code yesterday because of the those failures so i changed it to this i am like okay go ahead so i'm casting the file path into a file file instance and then i'm setting the permissions like set readable set executable on that and that fixed the test for you because on windows i would expect that's that should be not needed but i guess i haven't looked at at the code elsewhere let me let me check no i changed the test because c h mode won't work on windows so i have to change it to set a can read can read provide i think it's a method provided by file oh yeah where is that this yeah here it is yeah but but i think that should be i mean the the can can execute is a is a conditional right you're asking a question and asserting that it's true but as you mentioned earlier like the without bad bad bad extension it will always be executable so i think so yeah i don't i don't think there's an executable bit in windows i remember it not as far as i know yeah let me look there was a case where i had to do some POSIX based file permissions setup and there may be something similar for windows but that was for private keys not for not for username password yeah so okay so i'm not i'm not sure why we're well needs more work to to fix the failures on the ci job the one that is interesting to me is the fourth one in on the ci job the one up no third maybe nope there is it ah yes okay so this the one that has the the ampersand character in it because ampersand is also a special character in the in bat yeah this confused me a lot and but i okay go ahead no mark you can go ahead please i think that we may be able to work around it with that env technique that i mentioned or in bat it's the set technique let me see if i can check it while we're while we're all here together okay from my command window set find str comp yeah okay so i think there is a i think there's a solution for us with bat that will let that test pass and and i i don't think we need the can execute or the can so maybe maybe harsh it you can tell us tell us again tell me share with us again what caused you to try to set the execution permissions so like when i was debugging the test case so the ch mode well it was returning minus one which is not which was causing the failure of the test so i thought of converting the file path into a file instance and then checking the permissions so i thought that would be feasible in windows okay and i would assume that the answer can execute and can read for those batch files both comes back true does this test pass for you yeah this is passing although i i can check i can check it like i can debug the test and can halt it and then go to the temporary file folder and then i just can check with the properties of that but not tested it you say that again for me you tested the properties no i was saying that i can like debug the test set a breakpoint and go manually go to the temporary directory created by this test and check the batch file properties for that permissions on that i will test it if it is like i will test it without setting the permissions and with setting the permissions and if they are both you know there's no difference then they know there and i don't think there's any need for this step for converting the file path into file instance we can directly go with the file path then so i really do want to see so i assume that what you're showing us on screen is not yet committed and not yet pushed or is at least not yet pushed okay well also one thing so i have added and yeah this line this is flat from a dependent new line connector which was missing in the previous commits or okay and that that is that because the the batch file was using a unix line terminator yeah i did not know that okay very glad that you so so system dot line separator then is actually a string and it's a two character string on windows yeah the carriage return and then line here now interesting i didn't realize that great thank you okay that gets to be a fun fight in git when you have uh some people on monics and some people on windows and not everyone's converting and now the having your senior ide hints there um it's listing the encoding on the right as null don't you want it as utf-8 uh it i mean it picks up the default encoding by the system so i have not changed it ah okay so encoding the default platform default coding on the remote machine got it okay so probably best to leave it null then rather than explicitly call for utfa just in case somebody's running on a uh an ibm with an ibm mainframe with without running linux okay so these are the changes i've made till yesterday i was working on the test cases and i have to work on this area the git get tool instance i mean we i i'm testing using different different instance for git tool instances so i'm using jgit tool jgit apache to test that it does not work on or the authentication process does not work on all of these git implementations and only this git cli implementation but the variable binding will be will be provided to all the git implementations so and now i was curious there the the there's a technique you could use if you if you wish to let you actually that public static the line 47 public static data can actually you can write loops in there to allow you to iterate over various things and construct that array of array of objects of objects so that you could do every username password pair with every combination of git tool but but that's that for me right now this is already showing us showing us what we need without having to increase the execution time so i think what you've got here is is great now tell us tell me the the expected behavior when you pass in jgit tool magic exa name i was assuming that that would be a failure because you can't use use get username password binding with jgit and yet i think the tests are passing aren't they um yeah so yeah so i just realized yesterday that it is just giving the default git implementation it is not giving the jgit tool that we in instance that we need so i made a few changes in that yeah regarding that um so now so now it is uh giving jgit tool instance on the jgit apache instance but it is returning null so i have still have to figure that out why it's returning null okay all right so you're still investigating that very good yeah yeah also i mean uh if even if that i mean i have investigated that and that works fine uh this test will pass because this is not performing any authentication operation like git command this is only echoing the bindings that is provided by all before to all the git implementations so this is not restricted this is the the you know the expected behavior uh the what we are expecting to fail is the git command that should fail because that is the authentication process uh process that is being performed ah okay so it's it's not that we would we would consider putting a safeguard in there that says if you're attempting to use a credential binding with jgit we tell you it just can't be done rather we're relying on even if they use jgit to do the to do the clone we will still pass down username and password and assume that they've got a command line git implementation available there okay the variable bindings that i have created by default the git username the git password will be available to these implementations that all other stuff like generate git script like this code explains it so this will only execute when this line focuses on that okay so so now i've got to understand ends with any so if my if my git tool name is git-2.31 won't that fail that test no it will only fail when it's jgit or jgit Apache uh i mean no i mean yeah so this will fail when it's jgit or jgit Apache so this specific line i'm talking about okay got it so the the question that's being asked there on line 56 is does the string git tool end with either jgit or jgit Apache yeah got it i see okay because if you can see like on line 54 they said key bindings so it is not checking that if the implementation is git cli git jgit or jgit Apache so these will be available to all the implementation if we include this under under these 56 statement then it won't be available so it's upon us if we want it or not okay that makes sense can we have a custom name for jgit or jgit Apache cannot they are they are hard coded magic is can we not have like a stricter check that we get to if it exactly equals to jgit or jgit apache yes that so that that check on line 56 could be could be made more more strict it could say if it is either j if it matches get get magic the jgit tool or the magic exit exactly then fail yes i think so because i am concerned about um case where if the git tool name in in a cli git implementation let's say is a name which contains jgit for any reason for any weird reason let's end end with jgit because someone's name has a j in it i'm not sure if that could be the exact string string should be jgit if it contains it won't cause a problem the exact string should be jgit if that's the case yeah that it will fail except isn't isn't the ends with any saying that if it were dirage git or or rajgit they would then they would then match because it ends with jgit even though it's not jgit the string in the check-ins installation right uh yeah well i think this method i am i will read the java documentation of this method but i think that this is matching the entire string rather than the end i think that because i will work on that rajgit case as well and see if it fails so uh let's say if we have um three git cli git installations how do we choose which one to use yes yes yes i know so the um so from what i understand like so the name should be if the name is default then it will go with with default if the name is not default then it would go with the first implementation that the at index zero so yeah okay so are you checking if that installation can work on the particular node where this port is running let's say you you take the first uh implement installation are you are you validating if that installation is work is working on that node yeah if it is git then it will work based on the git exe name if it's not get it well it won't work but it's totally dependent on the git exe name that is provided so one i have created yeah this here so yeah where is that thing yeah so on line 34 it is returning the git exe name but it's do okay so isn't isn't line 33 though doing okay i'm gonna have to go do some research separately but i thought that line 33 said return me the get tool for the jankins controller the jankins dot get there says give me the node that is the jankins controller so that's not the agent that will be running the job that's truly the jankins controller isn't it i think so so so and now we we i think we correctly can assume that there is a command line git on the jankins controller that's that's to me seems like a safe assumption but i thought that rishabh's question was what happens if the git tool on the controller is named git and the git tool on the agent let's say it's a centos 8 machine that i had to install a brand new version of git because of the ancient thing that's there and it's called git dash 2.2 2.32 yes yes that's my question and i'd say if it's an older if it's a machine where version in the control is not compatible with the agent i mean are we talking about the name on the git exe like the two fields like the name and the installation name so yeah i i thought actually we were we were talking on line 26 about a git tool object right so on 26 it's it's asking give me the descriptor for and i assume that over on the right hand side of line 26 there is probably something that yeah so you're looking it up by the name that was passed in and this or not passed in by the name default in this case so what you're doing there is looking up looking up on the default installation right so i i remember that i wrote some code i was iterating through all the possible git installations for a particular agent and then i i check each of them which one is valid for the agent and i just i assumed that there would be one if there's more than one then i choose the first one there are like more than one options to um run for a particular agent i choose the first one and then i proceed for and it's something like that yeah so i think this one may be worth maybe worth some interactive testing just to see what it means if we've got different git tools available in the in the jankin's controller because i i apologize harsh it but i'm not sure how to tell you i can tell you what things i would think to check i would check if i define a git tool on my controller name git the default and then on an agent i define a an installation say a windows agent and call it git-2.2 2.32 that would give me two two implementations and i could i could then double check that does it do the right thing in both cases i mean rishabh mentioned in the the git chat like we could use the credentials for finding out the git tool i mean i have not worked on that but rishabh could could you explain more on that um why did i mention that i'm sorry rishad i i remember i mentioned that credentials could find the git i think i was asking you um how would we find the git tool mean like the user's choice in the git in the credentials context because i remember where i implemented uh this logic there was i could get the user's choice and then validate if it exists or not in the like environment i was running in but i'm not sure if that is possible in the credentials binding context yeah so then i was just thinking that do we need to do all of that or is it okay for us to just get the default installation and work with it yeah maybe it is good enough to to just work with it to take it exactly as it exists until we prove otherwise so work with the code that that harsh it's implemented let's do some interactive testing and see yeah let's see you said yeah so it would be a it would only be a problem when the default installation so if the default installation logic gets the installation from the controller if you're running on an agent with a different version of it and if they're not compatible for that machine for that particular agent then it would be a problem right now i think so yeah and i'm not even sure what compatible means in this case right because harsh it helped me remember is there is there any difference between command line get versions in terms of how we pass username and password i don't think there is i think the place we had differences was in ssh not in not in username password yeah yeah so for at least for now it may be good enough just to say let's let's just go with it and not worry about the complexity of of not worry about anything further on the complexity of git tool use this test it get to the point where we think it's ready to ready to ship or ready to ask for code review from jesse glick and ship i guess the other thing is is i mean but correct me if i'm wrong but couldn't a user not have any git tool and still have command line get on their agent they could but i think if that's the case i don't know that jankins will know what to do because it's got to have a git tool in order to perform git operations so if they did not define if they if they did not define a git tool on the agent then then i would expect i don't i'm scary enough i don't think i've ever run in that condition so i don't know how it behaves i get i get plug in without a git tool seems like it would be not a git plug in let me take a look i think i run in that mode oh you do okay good yeah because we uh what can i say uh agents run in container images and the container images contain their own git so we manage it that way yeah and i would expect that that you've got on your controller a git tool that is that is then being used on as as the representation of the thing on the agents as well uh technically it can't do anything on the agent like we can i can take that offline and and research that a little bit okay yeah so i mean so when i look at my agents i've got i i don't define a separate tool for git on the agent and yet they have git on them and i think they're getting it they're they're using the system-wide configured tool in my case named default yeah so harsh it i'm i'm not offering any help to you i apologize i'm i'm more asking questions and that's not not terribly helpful at this point i need to spend more time i think in the code i mean i will create the test cases to just show that everything is working as expected just one last question harsh it uh do we get the node instance um in this context like this there's a there's a class called node yes do we get that in the credentials binding somewhere are you getting that uh to get Jenkins dot get uh can be casted to node but i don't think that is required in this case because the git utilizes all git tools should i think be uh like sufficient for us to decide which git tool we need and um maybe after that we can look for our specific case but then you're saying that we don't maybe from Jenkins dot get but mark pointed out that Jenkins dot get would give us the control in instant not instance for the agent running uh i have to work on that i i didn't know more that but i if i will work on that that's okay that's okay i should yeah that's okay i'll also look into it i did not check that earlier before suggesting that we should look for the user's choice i did not check if it's even possible or how yeah because i think maybe what you're saying is like ideally if we can check the context of what this job's going to run on like the agent node then we would get better information on like what git tool is available for that node that we're going to run on right yes yes yes so that's it from my side yeah and i i don't have any further questions myself i've got a i need to spend some more time reviewing um i i did have i guess a separate a separate question in terms of before we're ready to release we'll want documentation on the credential binding in the read me so that we can point users to it but i assume that can come later after we get code evaluated and test written and things like that so i think uh this so i think i was working on that yesterday so this code looks like promising to me but i i have tested it but it creates a j git apache git tool in the jenkins i know it's called agent i guess so yeah and that that seems reasonable to me are you saying that that that code that's in the commented block did not work for you the way you expected it to or no it worked for me as i expected so oh good okay oh so the documentation changes has to be made in the git client plugin or has to be created a separate document for that so there's a there's a read me file read me dot adoc at the root of the of the repository and that read me file is the documentation for the for the plugin and so that's where you would put the put an example of how to use git with credentials and and it reminds me that i need to do a check to be sure that when we run with the syntax generator that we have as much help available as we can during the interactive use of the syntax generator see let me i guess while we're here i'm going to do a quick check of that just to see because we've got i'm running a copy of the plugin already and i should be able to see the pipeline syntax generator to see if the online help is included in it or if it's if it's even possible okay so with credentials credentials where is it with credentials okay add a binding for git username and password oh credentials there we go oh no okay so we're there's still some online help that we could add harsh it and this is one that we're you and we'll i'll have to give you a pointer to where the file is that can be added for it so i you okay if i stop your sharing and show you a show you a screenshot so i'm going to share my screen and and again this is much lower priority than what you're currently working on so don't don't shift tasks by any means for this just be what wanted you to be aware that we've got more to do for the online help so here on my screen you should see the bindings and git username and password whoops git username and password and an ssh user private key as two examples of the binding so if i delete that one and delete that one we get back to the start so if i add the git username and password notice that the text is right here but there's no question mark on the far right hand side whereas if i do an ad of ssh user private key there's a question mark right here that when i click it it describes what this binding does and the way we add this file the way we add this help is we place a specifically named file at a certain location in the in the in the source code repository so i'll i'll see if i can find that we learned about this as part of a project we did with chicote africa about how to add this this help so i can i think i can find that and point you to the file name because what we want is we want the user when they're doing this to have the option of clicking that to get an explanation of what is the git username and password with some good text that describes why this is important to them yeah okay yeah so that one let me put myself sorry and i've not been taking any notes but let's get some notes on this just to remind ourselves so i think mark what you just showed should be part of the pr right it should it should go with it should check with the functionality because i think it's equally important yeah i think i think it should be included in the pr i think you're right okay so need online help let's see so we we discussed handling multiple git tools installations and we also discussed how to add help to the the pull request and we've got mark action and mark send location of the file to harsh it for inclusion you can ignore my comment as i suspected mr mark was correct about oh sorry about what they default git tool thing that's what we use oh okay so it so it's you're you're you're using you're using you didn't have a custom git tool defined for every agent you're using the git tool from the from the controller or using the git tools object definition from the controller it's not you're actually using git on the agent yeah so there's just a default git configured and it has a path to git and then got to just have that correctly in the path okay very good sorry about that distraction okay okay so online help and then harsh it the other one was how to add documentation to the read me and there maybe if you're okay with it harsh it i'm going to share my screen so we can look at the read me together would that be all right yeah okay so share this one and here's what so if we look at how it's presented to the user they might look on the plug-in site for git client and what they see is this page of of documentation that describes parameters and various things like okay how do you what are the properties that are defined in the plug-in and how do you install portable git automatically these these kind of things so this is the place where i think what we want is we want a new section probably up very close to the top because the git plug-in does its document helps wrong one the git plug-in does its documentation and it has a section right here very early about pipelines and i would think we want something at the same roughly the same place to say oh we're going to right after the change logs thing put an entry here for pipelines or for credential mapping and maybe it's just credential mapping and then in there you insert several examples oh here's how you use with credentials to to do this operation and that operation so now what we're seeing here is what's presented to the user if we now open the github repository you can see where the doc where that documentation actually lives and it's right here in the read me oops sorry we want to get client read me so this is where that documentation resides and all you do is edit this adoc file and insert the section that you want to insert is is that clear enough harsher on what the expectation is there i hooked you up with some links mark for jelly stuff so i plugged a couple of links to the jelly files and github both for the example that you'd pointed out as well as a help file in the github oh good very good look at that yes yes here i'm going to stop sharing okay so you've you've got you just and you say you've got an example that you could show to harsher yeah let me i don't have embarrassed justin does not have a jenkins installation up but i can show you the code and what that really does one moment here so if you remember that help um this is all like jelly stuff and some of those help files are standards based so you typically put the help in the same path as the plugin class under source main resources so you see source main resources org jenkins ci plugins credential binding imple ssh user private key binding and there's a high level help dot html and if you remember there was a lot of text about like hey this copy is ssh key given the blah blah blah blah blah blah so that's kind of a convention based way of configuring the help at this higher level you'll see there's a few other things uh and so there's a help for the key file variable and that you'll see that corresponds to that field on the screen and you'll see this text there so this is kind of how that links together on the screen so that's the passphrase variable and what the help's going to look like for that and then the username variable and what the help will look like for that and justin would you be willing to open one more page to show this in yet another context sure so open up a new page to www dot jenkins.io and there go to the documentation pipeline see is it there jenkins pipeline yeah that one and then on this one scroll down a little bit because on the left hand side we want the pipeline steps reference all right now there look for with credentials brilliant because I think that same text you just described is also included here in the description of parameters now we got to see if we can find it okay so this is the this is the top level one and now if you go down into the okay what yes here we go oh sorry expand username yeah there we go there it is brilliant so this is what it will look like both on the jenkins screen and on the dock site so now we would not find this kind of a page yet for the get client plugin because it hasn't published anything yet that has a credential but when when the get client plugin publishes it will be added to the same list if I understand correctly because for instance here we see vault ssh user private key binding that thing and that one I think is provided by something isn't the credentials binding plugin it's from the hashi corp vault plugin yeah and that symbol that you provided will do this thingy oh right right so instead of dollar class and this yucky it's okay they're they're trying it'll look pretty like this right they don't mean anything bad by it so harsh it are you have will I'll publish publish the recording of this so that you can refer to it later if you need to but justin's just shown us how you put the help in there that was justin that was absolutely great thank you so much sure absolutely anything else I should show you're handed back that was it great does that make sense harsh it yeah thanks mom thanks justin so I'm a little confused here we don't need to raise a PR like at the Jenkins.io level in that repository for this to be added there correct we don't I know it's it's like black dark evil terrible magic but it is it is exactly that kind of magic it's fantastical magic so so what happens is there is a tool that runs periodically that surveys all Jenkins plugins and looks for all implementations of those extension points and extracts the documentation from those plugins and publishes it to that steps reference it's some work that Kristen, Kristen Whetstone did a year or two ago and and it's a thing of beauty it is it it basically runs a small Jenkins just long enough to load all the plugins and read their read their help and convert them into static HTML it really sounds like magic yeah and because all right harsh it's pull request we'll add one little file a help.html or maybe three files help.html and two more for some variable or something like that and magically it will appear in that pipeline steps reference it is visible in the Jenkins UI with the snippet generator yeah it really is quite elegant it sounds great now harsh it there was one item I had you had submitted a pull request so we've only got a few minutes left but maybe it'd be enough for us to get that pull request merged you'd submitted a pull request to Jenkins.io just a minute let me see if I can find it and I was going to offer if you're okay I can just apply the changes and merge the pull request but if you would prefer to to make the changes yourself you're welcome to do that also so mark it's up to you mark one one thing what seems best to you I am fine either way if if I've got permission so do you see the pull request now on your screen I'm not sure which screen I shared yes okay so this is this is the change and some of the changes I proposed the mandatory changes this oh let's make it big enough to read okay the mandatory changes this one it needs to I don't know is that right which one is the no no where was that there was one change that had to be made in order no maybe not no it looks like it's healthy even without any changes so question is do you want to let's see there was one here that broke it into two sentences another one that changed grammar relatively minor all of them do you want to accept those changes and or just want it merged as is I will accept the change oh oh here's the one okay here was the one I had a question about okay we've got a reference here to a gist for an image man and and generally we would prefer that there be a copy of the image locally so we don't have to rely on going to somebody else's server to get a picture okay but you're you would be okay with the other changes so let's I'm going to go ahead and boldly apply the other changes then add this suggestion to the batch add this one add this one nifty I haven't seen that one yet you haven't seen what adding yeah yeah for me that it's it's really kind of an elegant now let's see if I have permission to do it okay minor code review changes okay that worked so it will evaluate that are you comfortable with the change you need to well do you have time to make the change because given that I've got permission I had permission to do that harsh it I could actually make this change as well and get that image placed into the images directory so that you can stay focused on the code rather than on documentation where is the image directory I'm not sure I have not seen that I mean which server are we going to put the image on so what we would do is place the image inside the jankens.io slash content slash images directory okay so okay so that would be another the pf on the image and then we will reference that yeah what you would do is you would you would modify or extend this pull request to include to include that image as one more file I mean yeah here I can we we can talk through it if you can stand just a few more minutes I can show you the steps that I would use so this one is the one we want to check out and there they are okay and the thing we need is just this one so I download that image and then we need to find a location for it yeah so maybe we'd say so here's sort of what I was talking about now if I did that right make run should just work I was surprised that we don't have individual project folders in GSOC 2021 directory good question yeah I don't know I thought okay so the one I wanted to know that was not that we want maybe because students have they haven't published their blogs yet right maybe that is the reason it could be so if I look at let's see it was where was I this is the one we were just editing wasn't it get as credentials binding for SH yeah there's the picture good it worked okay good so the the thing that I quickly cobbled together seems to have worked and this is how the change looks it changes just the the location of the image and question is harsh it are you okay if I if I just go ahead and push that or would you like to do that yourself for the for the the education of it mark you can push that I have seen a lot I will try I will mark you can just push that this is just a very one you can great okay let's see if the push works it did very good okay so that resolved that one excellent okay well so when this when this build completes then harsh it I think it's ready for merge and so within the next 15 or 20 minutes I'll merge it and Justin and Risha know is that okay for the two of you do you want to do a code review before I do the merge I'm comfortable with it I could take a look if you'd like me to go I'm I'm I'm comfortable and confident with it if if you you I'd much rather we stay focused help stay keep focused on harsh it's code and the documentation is great it's it's more than good enough yeah we can we can adjust later we can always send more PRs exactly all right well that's all that I had sorry for going over time harsh it anything else from you so I just want to know like when should I shift to SSH binding so I I think we need to finish the documentation and I would like to finish the release of the of the username and password I would hope for that like next week if that if you think that's feasible so we need we need the online help we need documentation for the username password pair and and then I think a little more interactive testing and we're ready to release are you feeling like you're you're if you if you're feeling like you're ready to start on SSH you could certainly start a new pull request immediately okay I mean I think the priority would be to just you know get your PR ready for the view and merge eventually the user convention yeah I agree let's let me see so I had something that I said needed must have a change and I'm not not looking at that yet to see what it was okay I just need I need to go through the things that were exceptions for me previously to be sure that I believe they're all resolved so once the PR is up and ready then I think okay so Harshit for instance I see it looks like there's still a is the did the jelly file get removed that yeah I was reporting the changes yeah okay I was reporting the changes caused by the merge of test branch that I have created for the good user name password binding okay good so so then I should be able to see that change in further review so yeah so I guess documentation and online help are the only things between us and and more code review are the only things between us and a release of this functionality that's great so Harshit are you okay working on documentation and on online help on this pull ring for this pull request I'll do some more review of it Justin and Rishabh it's probably good for the two of you each to do another review of the current code just to be sure yes ma'am all right thanks everybody thanks thanks and Justin do you want to be the one to upload the recording since you've now got the special permissions I now have the power I can do that did I see that you did it for last week uh I hope so if you see that I forgot to if I failed to just send me an email and I'll upload it for last week yeah I'll cover it if it's not covered oh bless you that would be wonderful thank you thanks very much absolutely all right thanks everybody