mirror of
https://github.com/penpot/penpot.git
synced 2026-10-29 22:10:34 +00:00
Files older than the feature components/text-overrides mark a copy text with :text-content-attribute (any style) or :text-content-structure (letters and styles). Migration 0034 compares each such copy with its near main and gives it the groups its old flags allowed where it differs; an old flag where nothing differs sets nothing. A copy whose near main cannot be reached keeps every group its flags allowed, so it loses no override. The migration adds the feature, so a client on the old code cannot write the old groups into a migrated file. Binfile import leaves the copies whose near main is in a library not linked yet, as it does with swap slots, and converts them once the libraries are linked: the deferred pass of the import now runs both conversions (convert-deferred!, *defer-unreachable*). Validation reports the old groups (:legacy-text-touched), and its repair recomputes them against the near main; a text override group without :content-group is still :invalid-text-touched. A shape with no letters in it and its main no longer counts as differing in its styles. Benchmark (lower quantile, ms; baseline / now / ratio): deepest-edit-through-three-levels 35.2 / 34.8 / 0.99 edit-through-a-chain-of-dependents 68.9 / 65.0 / 0.94 library-update-into-copies 83.1 / 86.9 / 1.05 main-edit-into-10-copies 1.8 / 1.5 / 0.86 main-edit-into-100-copies 15.4 / 15.0 / 0.97 main-edit-into-1000-copies 153.1 / 150.6 / 0.98 variant-switch-into-copies 32.1 / 26.8 / 0.84 AI-assisted-by: claude-opus-5-5