It was a bad contract, but it was completed despite the various issues involved. I submitted the code and he made a claim that my code did something that is absolutely impossible to do: SQL is not going to affect the browser UI, especially not default settings within the browser. I asked for a screenshot of the "issue" and that never came in. The client also made changes to my code and kept demanding I fix it.
I closed down the contract and opened a case, thinking it would be obvious that I did the work as asked and they were very difficult to work with.
It was interesting to read the responses. They kept saying they needed more and more features before they agreed the work was done. I said that the contract, as specified in both the post and ensuing messages was done. I never heard these new requests.
Throughout the correspondence with upwork, the client kept changing their story, outright contradicting themselves over and over.
Upwork, of course, sided with the client over the new feature request they demanded. Apparently, upwork thinks that a contract is infinite work. I pointed out each lie, asked for a screenshot of the impossible bug, and explained the new features (which changed multiple times during the case) would take too long to complete.
I lost the case and ended up doing the job for half price. Upwork is optimized to client first, which is just wrong to the workers. I had to pay 20% of my earnings at $50/hr and up, so it's not like I had zero value to the company.
I closed down my account over that.