mirror of
https://github.com/penpot/penpot.git
synced 2026-10-29 22:10:34 +00:00
* ✨ Handle tokens libraries when exporting .penpot files Exporting a file that takes its tokens from an external library left the :tokens-source of the file pointing at a library that is not in the export, and the tokens lib of that library was not exported. With :detach-libraries, unset the :tokens-source and the tokens status in detach-external-references. The file is exported without any link to the library, and the shapes keep their applied tokens. With :merge-libraries, add cfo/absorb-tokens-lib, which copies the tokens lib of a library into a file and unsets its :tokens-source, so the file becomes its own tokens source. The tokens status of the file is kept; if it has none, the one of the library is copied. If the library has no tokens lib, only the source is unset. embed-assets calls it for the library that is the tokens source of the file, and ignores the other linked libraries. Add unit tests for absorb-tokens-lib, and binfile tests that export a file with tokens from an external library with both modes, checking the exported files, the tokens lib, the tokens source and the applied tokens. Also reformat the export-type docstring in binfile v3 and remove a leftover debug prn in the export dialog. AI-assisted-by: claude-sonnet-5-5 * 🐛 Preserve active token sets when importing linked libraries Cache each decoded tokens library for the duration of an import so files and their tokens source resolve active sets against the same generated IDs. Add a round-trip regression test for exports that include linked libraries. * 🐛 Preserve tokens when deleting or unpublishing libraries Absorb the tokens library into files that use it as their tokens source. Keep referencing file IDs in the deletion task before removing relations. Embed tokens from deleted, unlinked sources during export, and clear stale source and status data when the library no longer exists. Add regression tests for deletion, unpublishing, and exports with unavailable libraries. --------- Co-authored-by: alonso.torres <alonso.torres@kaleidos.net>