I have a small project I created in LibrePCB 1.0.0. That project has a local library with some custom components.
Today I upgraded LibrePCB to 1.1.0, and noticed a strange behavior. When I edit a symbol in library, save it, then go to schematic and click “Project” > “Update project library” - not all changes I made to symbol are applied to the components already on schematic. Look at the screenshot. In the top row the first component was already on schematic. I added {NAME} and {VALUE} to it, updated project library, and as you see - no changes were applied. Then I used “Add component” to add this component again, and new instance showed up with the changes (one in the middle). Then I did one more change to the same symbol - and it happened again (the last one on the top row). Then I picked another symbol and just added a random text to it, updated project library - with the same result (the bottom row - U6 is the one that was already in schematic, U8 was added after updating project library).
I don’t know if that’s a bug, or maybe I have to migrate my project somehow after upgrading LibrePCB.
What I do when adding/changing a library item is not only to save it, but (because sometimes the added or renamed item doesn’t show up in the library manager’s list) I also save the library itself.
After doing that the library item shows up in the list.
Maybe you have to do the same to get a more coherent experience.
Maybe this helps.
Text labels are not updated by intention because usually you want to retain their placement - it would be annoying to loose all the manual text placements every time updating the project library,
So on the symbols already added to the project, right-click them and choose “Reset All Texts” to reload the text placement from the library.
I’ll try it a bit later, and actually I anticipated that it may be related to that new feature that allows to change text placement on schematic. So when I add a component to schematic - editor immediately saves position of all text nodes somewhere, and later, when you update symbol, editor still uses that saved positions, am I right? This doesn’t sound quite right to me. Editor should save and use placements only when user has edited it. But if you add a component and didn’t manually move text nodes - it should use positions from the library
Okay, so “Reset all texts” apparently worked, but it’s still a very bad workaround. It works only if I select the only component, or components of the same type. When selection contains different components - “Reset all texts” is not available. So it means that I cannot just select all and reset text for everything - I have to click components one by one. Currently this my schematic contains ~100 components, and I have few other project I didn’t touch after LibrePCB upgrade
Well, this might not sound right to you because of your current use-case. But if for example we some day change the placement of texts of a common symbol like the resistor, I’m sure people will complain if updating the project library will modify all the existing schematics because schematics looked good before the update and might get worse after the update.
So it depends on the use-case which update behavior is desired. For your use-case, I think the only feature needed is to allow updating the texts of all components of the same type at once, e.g. in addition to “Reset all Texts”, a “Reset all Texts of all Identical Components”. Or provide a “Reset Text Placement” option in the project library updater, there are several possible solutions…
It’s not a good example at all. You still can change a shape of the component in the library, and after updating the schematic may not look good anymore. Even worse - imagine you changed a shape of the component and adjusted text labels to match it, and even maybe add a new text label for some reason. User updates the library, component shape changes, but - new label doesn’t show up, and existing labels are now misaligned, because they’re using old positions.
We can argue a lot about this behavior, but I’ll state this one more time. When I place a component and don’t customize it - it should have a default look from library, because that’s what I expect. When I customize it - only customized parts should be saved and applied later. So when I move only one text label - others should have a default position after library update. That’s a least suprising behavior from my point.
I never said you’re wrong and I never said we don’t want to change this behavior. I only said the preferred behavior depends on the use-case.
In any way, you need to respect that this is an open-source software project and we try to do our best to improve it but this will take time as we’re not a big software company with many developers and big budget.
Feel free to open a feature request in our issue tracker to ensure we keep it in mind.