2.0.0 deleted all my fonts - is that a new feature?

All previously downloaded fonts used to power small oled screens, just got deleted after 2.0.0 updated library.
That sucks and is a time consuming set-back which I did not need.

Just a frustration relief (sorry) and a heads-up for you all before updating the library after installation.

Which library was updated ?

It doesn't seem to be a 2.0.0 issue.
If you edit local copies of libraries on your computer, all your changes will be lost when IDE updates the library.

Hmm, if this was the case, the issue should have accrued way before the updating of the libraries in 2.0.0. hence I also updated the libraries 1.8.xx version.
@UKHeliBob should said "libraries" and not "library" since a lot of updates happened - sorry.

Thanks for reply both.

IDE only updates if the library code has been changed. Perhaps the library with your fonts updated just recently.

I don't like such a surprises so I turned automatic updates off.

I don't know what you mean by this unless you have a different sketchbook, and hence different libraries folder, for the two different IDE versions

Yes, I think you are right, that make sense. I guess I learned not to have such files as fonts stored inside a folder, which are used to store a library. I this case I have stored my fonts in a library folder called Adafruit_GFX_Library.

By further investigating, it turns out, that all files (approx 4.500) has now been copied and added " 2" (space&2) at the end. That is not super convenient and I think that this is actually the issue messing with my compiling.

This is the error code I get from the fine IDE:

/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice 2.cpp:16:40: error: 'BitOrder' has not been declared
   16 |                                        BitOrder dataOrder, uint8_t dataMode,
      |                                        ^~~~~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_I2CDevice 2.cpp:69:6: error: no declaration matches 'bool Adafruit_I2CDevice::write(uint8_t*, size_t, bool, uint8_t*, size_t)'
   69 | bool Adafruit_I2CDevice::write(uint8_t *buffer, size_t len, bool stop,
      |      ^~~~~~~~~~~~~~~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice 2.cpp:15:1: error: no declaration matches 'Adafruit_SPIDevice::Adafruit_SPIDevice(int8_t, uint32_t, int, uint8_t, SPIClass*)'
   15 | Adafruit_SPIDevice::Adafruit_SPIDevice(int8_t cspin, uint32_t freq,
      | ^~~~~~~~~~~~~~~~~~
In file included from /Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_I2CDevice 2.cpp:1:
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_I2CDevice.h:17:8: note: candidate is: 'bool Adafruit_I2CDevice::write(const uint8_t*, size_t, bool, const uint8_t*, size_t)'
   17 |   bool write(const uint8_t *buffer, size_t len, bool stop = true,
      |        ^~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_I2CDevice.h:8:7: note: 'class Adafruit_I2CDevice' defined here
    8 | class Adafruit_I2CDevice {
      |       ^~~~~~~~~~~~~~~~~~
In file included from /Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice 2.cpp:1:
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice.h:78:7: note: candidates are: 'constexpr Adafruit_SPIDevice::Adafruit_SPIDevice(const Adafruit_SPIDevice&)'
   78 | class Adafruit_SPIDevice {
      |       ^~~~~~~~~~~~~~~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice.h:84:3: note:                 'Adafruit_SPIDevice::Adafruit_SPIDevice(int8_t, int8_t, int8_t, int8_t, uint32_t, BusIOBitOrder, uint8_t)'
   84 |   Adafruit_SPIDevice(int8_t cspin, int8_t sck, int8_t miso, int8_t mosi,
      |   ^~~~~~~~~~~~~~~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice.h:80:3: note:                 'Adafruit_SPIDevice::Adafruit_SPIDevice(int8_t, uint32_t, BusIOBitOrder, uint8_t, SPIClass*)'
   80 |   Adafruit_SPIDevice(int8_t cspin, uint32_t freq = 1000000,
      |   ^~~~~~~~~~~~~~~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice.h:78:7: note: 'class Adafruit_SPIDevice' defined here
   78 | class Adafruit_SPIDevice {
      |       ^~~~~~~~~~~~~~~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice 2.cpp:43:55: error: 'BitOrder' has not been declared
   43 |                                        uint32_t freq, BitOrder dataOrder,
      |                                                       ^~~~~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice 2.cpp:41:1: error: no declaration matches 'Adafruit_SPIDevice::Adafruit_SPIDevice(int8_t, int8_t, int8_t, int8_t, uint32_t, int, uint8_t)'
   41 | Adafruit_SPIDevice::Adafruit_SPIDevice(int8_t cspin, int8_t sckpin,
      | ^~~~~~~~~~~~~~~~~~
In file included from /Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice 2.cpp:1:
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice.h:78:7: note: candidates are: 'constexpr Adafruit_SPIDevice::Adafruit_SPIDevice(const Adafruit_SPIDevice&)'
   78 | class Adafruit_SPIDevice {
      |       ^~~~~~~~~~~~~~~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice.h:84:3: note:                 'Adafruit_SPIDevice::Adafruit_SPIDevice(int8_t, int8_t, int8_t, int8_t, uint32_t, BusIOBitOrder, uint8_t)'
   84 |   Adafruit_SPIDevice(int8_t cspin, int8_t sck, int8_t miso, int8_t mosi,
      |   ^~~~~~~~~~~~~~~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice.h:80:3: note:                 'Adafruit_SPIDevice::Adafruit_SPIDevice(int8_t, uint32_t, BusIOBitOrder, uint8_t, SPIClass*)'
   80 |   Adafruit_SPIDevice(int8_t cspin, uint32_t freq = 1000000,
      |   ^~~~~~~~~~~~~~~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice.h:78:7: note: 'class Adafruit_SPIDevice' defined here
   78 | class Adafruit_SPIDevice {
      |       ^~~~~~~~~~~~~~~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_I2CDevice 2.cpp:203:6: error: no declaration matches 'bool Adafruit_I2CDevice::write_then_read(uint8_t*, size_t, uint8_t*, size_t, bool)'
  203 | bool Adafruit_I2CDevice::write_then_read(uint8_t *write_buffer,
      |      ^~~~~~~~~~~~~~~~~~
In file included from /Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_I2CDevice 2.cpp:1:
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_I2CDevice.h:19:8: note: candidate is: 'bool Adafruit_I2CDevice::write_then_read(const uint8_t*, size_t, uint8_t*, size_t, bool)'
   19 |   bool write_then_read(const uint8_t *write_buffer, size_t write_len,
      |        ^~~~~~~~~~~~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_I2CDevice.h:8:7: note: 'class Adafruit_I2CDevice' defined here
    8 | class Adafruit_I2CDevice {
      |       ^~~~~~~~~~~~~~~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice 2.cpp:185:6: error: no declaration matches 'bool Adafruit_SPIDevice::write(uint8_t*, size_t, uint8_t*, size_t)'
  185 | bool Adafruit_SPIDevice::write(uint8_t *buffer, size_t len,
      |      ^~~~~~~~~~~~~~~~~~
In file included from /Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice 2.cpp:1:
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice.h:92:8: note: candidate is: 'bool Adafruit_SPIDevice::write(const uint8_t*, size_t, const uint8_t*, size_t)'
   92 |   bool write(const uint8_t *buffer, size_t len,
      |        ^~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice.h:78:7: note: 'class Adafruit_SPIDevice' defined here
   78 | class Adafruit_SPIDevice {
      |       ^~~~~~~~~~~~~~~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice 2.cpp:279:6: error: no declaration matches 'bool Adafruit_SPIDevice::write_then_read(uint8_t*, size_t, uint8_t*, size_t, uint8_t)'
  279 | bool Adafruit_SPIDevice::write_then_read(uint8_t *write_buffer,
      |      ^~~~~~~~~~~~~~~~~~
In file included from /Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice 2.cpp:1:
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice.h:94:8: note: candidate is: 'bool Adafruit_SPIDevice::write_then_read(const uint8_t*, size_t, uint8_t*, size_t, uint8_t)'
   94 |   bool write_then_read(const uint8_t *write_buffer, size_t write_len,
      |        ^~~~~~~~~~~~~~~
/Users/masslyngby/Documents/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice.h:78:7: note: 'class Adafruit_SPIDevice' defined here
   78 | class Adafruit_SPIDevice {
      |       ^~~~~~~~~~~~~~~~~~
Multiple libraries were found for "ESP8266WebServer.h"
 Used: /Users/masslyngby/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/libraries/ESP8266WebServer
 Not used: /Users/masslyngby/Documents/Arduino/libraries/WebServer-esp32
Multiple libraries were found for "DNSServer.h"
 Used: /Users/masslyngby/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/libraries/DNSServer
 Not used: /Users/masslyngby/Documents/Arduino/libraries/DNSServer---esp32
Multiple libraries were found for "Adafruit_SSD1306.h"
 Used: /Users/masslyngby/Documents/Arduino/libraries/Adafruit_SSD1306
 Not used: /Users/masslyngby/Documents/Arduino/libraries/Adafruit_NOT_SSD1306_Wemos_Mini_OLED
Multiple libraries were found for "ArduinoOTA.h"
 Used: /Users/masslyngby/Library/Arduino15/packages/esp8266/hardware/esp8266/3.0.2/libraries/ArduinoOTA
 Not used: /Users/masslyngby/Documents/Arduino/libraries/ArduinoOTA
exit status 1
Error compiling for board Generic ESP8266 Module.

Thank you for your answers above, guys.

You are probably already aware, but for the sake of others who may read this thread I should make it clear that the IDE never updates libraries without the consent of the user. The user has full control over the updates. The IDE will automatically check for newer versions of the installed libraries and offer to install them, but the update is only done if the user clicks a button telling the IDE to do it.

I don't know how to explain that. As b707 said, all the files in a library are replaced when it is updated. That is how it has always been, even in Arduino IDE 1.x. For this reason, any added files or modifications would need to be replaced manually after each update of a library. If you are going to do that, it is wise to back up your modifications in a safe location outside the libraries folder to make sure they will never be lost through an update.

On some rare occasions, the Arduino IDE 1.x Library Manager did install the new version of a library to a folder with a random name like arduino_34534 instead of replacing the previous library during the update. This might happen if the IDE was blocked from accomplishing that final replacement step by the antivirus or by a lock on the original library folder due to another application having it open. That is the only case I can think of where an update would not result in the loss of files added by the user to the library.

There was one previous report of a library update causing this problem where all the library's previous files were left behind, with this " 2" suffix added to the file names:

Since this would usually cause any sketch using the library to no longer compile, with perplexing errors, it is likely affected users would post here on the forum or submit a bug report on GitHub and I have not seen any other reports in either place. So it seems to only occur very rarely.

I am not experienced with macOS, but I asked a colleague who is about this and they suspect it is caused by iCloud. They have not been able to reproduce the problem though.

I am definitely keeping an eye out for reports of this problem, but it will be difficult to do any investigation without a better understanding of it. Please let us know if you learn anything more.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.