Peak detector is not working when voltage is changed
So let me see if I understand this.  You give it a peak of 1.0v and it detects it correctly.  Then you back it off to 0.5v and it still reports a 1.0v peak.  What's the problem?  0.5v is not the peak if the voltage also goes up to 1.0v.

I suspect that what you want is to detect a peak "over some amount of time", and not a peak "over an infinite amount of time".  

If I am following your schematics correctly, you need some way to discharge C1 so that it can detect the next pulse.  There are several ways to do that.

One way is to have a transistor/MOSFET/relay actually short C1 to GND.  Then have some circuit that will periodically trip that.

Another way is to simply put a resistor in parallel with C1.  This resistor would cause the peak value to decay over time.  Change the value of the resistor to change how fast it decays.  If the resistor is connected to GND then the decay will be a somewhat inverse-square curve.  Use a constant current source to make it more linear.