The TIA would need a resistor at the input to isolate it from a capacitive input. The other point is to have a suitable parallel capacitor in the feedback to limit the BW to a little less than what the OP could provide. This should result in a reasonable well behaved impedance.
The TIA idea is good for the smaller currents (e.g. < 100 µA), so that the current from the OP does not have to be so large and one can tolerate some 100-1000 Ohms at the input for isolation. The shunt + amplifier solution is limited to small currents, as the shunt will have noise of it's own. So instead of a 10 K shunt, I would definitely prefer a TIA (e.g. with some 1 M in the feedback). The shunt + amplifier solution is limited by noise and the DC offset, especially with a small burden and using 1:1000 steps. With a maximum output of some +-2 V of the µCurrent one would have 20 mV max at the shunt and thus only some 20 µV at the shunt just before the step to the next larger shunt would be possible - this is really small with not much resolution left.
Perhaps the entire configuration of the amplifier can switch between TIA and Shunt mode, for different ranges?
Dave is talking about using +/-4.5V or even +/-9V in the new design, which would help the shunt amplifier solution generally? Perhaps the DC power jack could accept 12VDC, now the situation is 1 decade better...
If the amplifier could be switched between x100 and x1000, the range steps could be made smaller as well...
So many engineering compromises/design decisions to think about!
Even with a low drop, I am not so sure that automatic range switching is such a good idea. The change in shunt resistance will have an effect on the circuit and sometimes one would still need a manual mode to get the right range before an expected jump to a higher current.
Ideally there would not be any range switching at all, but that would require a logarithmic response... which seems surprisingly difficult, there isn't a simple/clean solution (other than an oven, which might be an energy pig) and even if the problems are resolved, it is harder to interpret the numbers afterwards...
Really we can live with selecting a range in advance, but somehow we have to dynamically "short circuit" the shunt if the DUT overdraws current for that range. I have used the "old" uCurrent with a diode across it to handle shunt overload, that worked well enough that it seems credible that range switching can be made to work - as long as it works as fast as a diode across the shunt would.
To get more dynamic range for the output with a limited supply, one can use an active output a little like a bridge driven amplifier instead of a simple fixed virtual ground. So if the output is positive the other output terminal and input side virtual ground could be closer to the negative side. This could nearly double the range, though with a slight limit for fast transients. There is no need to switch manually, it can be done with a not so critical inverter circuit.
That's a great idea - One problem is that the negative output would then float with respect to ground - sometimes, both the DUT and the measuring device (scope) are connected to the same ground. It would work great with a floating instrument or a floating source, of course. Perhaps it could be made a switchable x2 range extension feature, where the negative is plain ground unless range extension is engaged. With the 9V battery it would be an amazing range!