Compare Footprint with Library, for whole PCB

I have a project where all footprints are from a project-specific library. A large number of the footprints in the PCB have been modified vs the library. I would like to fix this, so that the library has the exact footprint used on the PCB.

I cannot locate a way to report all footprints that differ.

  • The Inspect > Compare Footprint with Library tool only works for a single component at a time.
  • The Tools > Update Footprints from Library tool will run for the whole PCB, but does not indicate what the differences are / were (and its effects have to be undone).
  • The File > Export > Footprints to New Library... tool will run for the whole PCB, but it assumes that every instance with the same footprint name is identical. It clobbers any # of instances of the same footprint that have been modified differently - in such a situation, I think it ought to create # footprints. Using this tool will also not indicate what differences vs the original library existed.

Have I missed a setting or a solution? Is there a plugin that could help? Is a solution scriptable?

I am using KiCad v9.0.0.

I used KiCad (V8) last time 5…6 months ago.
I have never had a need like you.
I have never used any script in KiCad.

Whenever I change anything in library I always do Update (all) footprints from library. As I remember during it you get the information which footprints have been updated (I have never read it, but I think it was listed in update dialog box). So you should be able to find that way which footprints are different at PCB than in library.
Undone can be done by just saving PCB file before updating footprints.